Crates.io | darwin-webkit |
lib.rs | darwin-webkit |
version | 0.2.0 |
source | src |
created_at | 2020-10-31 04:35:25.730006 |
updated_at | 2023-11-15 10:40:51.486723 |
description | Bindings to some of the WebKit's API on MacOS for Rust |
homepage | |
repository | https://github.com/yamadapc/rust-darwin-webkit |
max_upload_size | |
id | 307167 |
size | 211,285 |
darwin_webkit exposes bindings to some of the WebKit's API on MacOS for
Rust. It uses the objc
and cocoa
crates to bind with Objective-C.
This has not been tested properly yet.
Can be embedded onto audio plug-ins by getting the native webview handle and
adding it to a plug-ins native NSWindowView
handle.
Closure captures are unsafe as we'll just pass pointers around.
cargo add darwin-webkit
extern crate cocoa;
extern crate darwin_webkit;
use darwin_webkit::helpers::dwk_app::DarwinWKApp;
fn main() {
unsafe {
let app = DarwinWKApp::new("Simple WebView");
let webview = app.create_webview();
webview.load_url("https://www.google.com.br");
app.set_webview(&webview);
app.run();
}
}
extern crate cocoa;
extern crate darwin_webkit;
use cocoa::base::id;
use darwin_webkit::helpers::dwk_app::DarwinWKApp;
use std::rc::Rc;
fn main() {
unsafe {
let app = DarwinWKApp::new("Host an app");
let webview = Rc::new(app.create_webview());
let callback = Box::into_raw(Box::new(Box::new(|_: id, _: id| {
println!("JavaScript called rust!");
webview.evaluate_javascript("document.body.innerHTML += ' -> response from rust';");
})));
webview.add_message_handler("hello", callback);
webview.load_html_string(
"
<script>
document.body.innerHTML += 'start';
window.webkit.messageHandlers.hello.postMessage('hello');
document.body.innerHTML += ' -> success';
</script>
",
"",
);
app.set_webview(&webview);
app.run();
}
}
serverTrust
in WKWebView
NSURLRequest
cargo clippy