fix: avoid IPC for renderer webFrame.getZoom...
APIs (#45499)
* fix: avoid IPC for renderer `webFrame.getZoom...` APIs * Remove `DoGetZoomLevel` IPC * Fix synchronous behavior & nullptr deref * Use local root
This commit is contained in:
parent
e055ce7c39
commit
f5025b6246
7 changed files with 22 additions and 34 deletions
|
@ -441,25 +441,34 @@ class WebFrameRenderer final : public gin::Wrappable<WebFrameRenderer>,
|
|||
if (!MaybeGetRenderFrame(isolate, "setZoomLevel", &render_frame))
|
||||
return;
|
||||
|
||||
// Update the zoom controller.
|
||||
mojo::AssociatedRemote<mojom::ElectronWebContentsUtility>
|
||||
web_contents_utility_remote;
|
||||
render_frame->GetRemoteAssociatedInterfaces()->GetInterface(
|
||||
&web_contents_utility_remote);
|
||||
web_contents_utility_remote->SetTemporaryZoomLevel(level);
|
||||
|
||||
// Update the local web frame for coherence with synchronous calls to
|
||||
// |GetZoomLevel|.
|
||||
if (blink::WebFrameWidget* web_frame =
|
||||
render_frame->GetWebFrame()->LocalRoot()->FrameWidget()) {
|
||||
web_frame->SetZoomLevel(level);
|
||||
}
|
||||
}
|
||||
|
||||
double GetZoomLevel(v8::Isolate* isolate) {
|
||||
double result = 0.0;
|
||||
content::RenderFrame* render_frame;
|
||||
if (!MaybeGetRenderFrame(isolate, "getZoomLevel", &render_frame))
|
||||
return result;
|
||||
if (!MaybeGetRenderFrame(isolate, "getZoomLevel", &render_frame)) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
mojo::AssociatedRemote<mojom::ElectronWebContentsUtility>
|
||||
web_contents_utility_remote;
|
||||
render_frame->GetRemoteAssociatedInterfaces()->GetInterface(
|
||||
&web_contents_utility_remote);
|
||||
web_contents_utility_remote->DoGetZoomLevel(&result);
|
||||
return result;
|
||||
blink::WebFrameWidget* web_frame =
|
||||
render_frame->GetWebFrame()->LocalRoot()->FrameWidget();
|
||||
if (!web_frame) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return web_frame->GetZoomLevel();
|
||||
}
|
||||
|
||||
void SetZoomFactor(gin_helper::ErrorThrower thrower, double factor) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue