refactor: implement <webview> using contextBridge (#29037)
* refactor: implement <webview> using contextBridge * chore: address PR feedback * chore: address PR feedback * fix: check for HTMLIFrameElement instance in attachGuest
This commit is contained in:
parent
5e6f8349ec
commit
c68c65f383
17 changed files with 220 additions and 214 deletions
|
@ -241,34 +241,6 @@ void ElectronSandboxedRendererClient::DidCreateScriptContext(
|
|||
InvokeHiddenCallback(context, kLifecycleKey, "onLoaded");
|
||||
}
|
||||
|
||||
void ElectronSandboxedRendererClient::SetupMainWorldOverrides(
|
||||
v8::Handle<v8::Context> context,
|
||||
content::RenderFrame* render_frame) {
|
||||
auto prefs = render_frame->GetBlinkPreferences();
|
||||
// We only need to run the isolated bundle if webview is enabled
|
||||
if (!prefs.webview_tag)
|
||||
return;
|
||||
|
||||
// Setup window overrides in the main world context
|
||||
// Wrap the bundle into a function that receives the isolatedWorld as
|
||||
// an argument.
|
||||
auto* isolate = context->GetIsolate();
|
||||
|
||||
gin_helper::Dictionary process = gin::Dictionary::CreateEmpty(isolate);
|
||||
process.SetMethod("_linkedBinding", GetBinding);
|
||||
|
||||
std::vector<v8::Local<v8::String>> isolated_bundle_params = {
|
||||
node::FIXED_ONE_BYTE_STRING(isolate, "nodeProcess"),
|
||||
node::FIXED_ONE_BYTE_STRING(isolate, "isolatedWorld")};
|
||||
|
||||
std::vector<v8::Local<v8::Value>> isolated_bundle_args = {
|
||||
process.GetHandle(),
|
||||
GetContext(render_frame->GetWebFrame(), isolate)->Global()};
|
||||
|
||||
util::CompileAndCall(context, "electron/js2c/isolated_bundle",
|
||||
&isolated_bundle_params, &isolated_bundle_args, nullptr);
|
||||
}
|
||||
|
||||
void ElectronSandboxedRendererClient::WillReleaseScriptContext(
|
||||
v8::Handle<v8::Context> context,
|
||||
content::RenderFrame* render_frame) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue