fix: crash when unloading some WebViews (#40400)

This commit is contained in:
Shelley Vohr 2023-11-03 10:36:25 -04:00 committed by GitHub
parent f501dabc80
commit 5b18d90597
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -40,10 +40,6 @@ void WebViewGuestDelegate::AttachToIframe(
content::WebContents* guest_web_contents = api_web_contents_->web_contents(); content::WebContents* guest_web_contents = api_web_contents_->web_contents();
// Force a refresh of the webPreferences so that OverrideWebkitPrefs runs on
// the new web contents before the renderer process initializes.
// guest_web_contents->NotifyPreferencesChanged();
// Attach this inner WebContents |guest_web_contents| to the outer // Attach this inner WebContents |guest_web_contents| to the outer
// WebContents |embedder_web_contents|. The outer WebContents's // WebContents |embedder_web_contents|. The outer WebContents's
// frame |embedder_frame| hosts the inner WebContents. // frame |embedder_frame| hosts the inner WebContents.
@ -76,15 +72,18 @@ content::WebContents* WebViewGuestDelegate::GetOwnerWebContents() {
void WebViewGuestDelegate::OnZoomChanged( void WebViewGuestDelegate::OnZoomChanged(
const WebContentsZoomController::ZoomChangedEventData& data) { const WebContentsZoomController::ZoomChangedEventData& data) {
if (data.web_contents == GetOwnerWebContents()) { if (data.web_contents == GetOwnerWebContents()) {
auto* zoom_controller = api_web_contents_->GetZoomController();
if (data.temporary) { if (data.temporary) {
api_web_contents_->GetZoomController()->SetTemporaryZoomLevel( zoom_controller->SetTemporaryZoomLevel(data.new_zoom_level);
data.new_zoom_level);
} else { } else {
api_web_contents_->GetZoomController()->SetZoomLevel(data.new_zoom_level); if (blink::PageZoomValuesEqual(data.new_zoom_level,
zoom_controller->GetZoomLevel()))
return;
zoom_controller->SetZoomLevel(data.new_zoom_level);
} }
// Change the default zoom factor to match the embedders' new zoom level. // Change the default zoom factor to match the embedders' new zoom level.
double zoom_factor = blink::PageZoomLevelToZoomFactor(data.new_zoom_level); double zoom_factor = blink::PageZoomLevelToZoomFactor(data.new_zoom_level);
api_web_contents_->GetZoomController()->SetDefaultZoomFactor(zoom_factor); zoom_controller->SetDefaultZoomFactor(zoom_factor);
} }
} }