Reset embedder_zoom_controller_ before assigning new one

This commit is contained in:
Ales Pergl 2017-11-30 16:09:05 +01:00
parent fd7af5c1d9
commit dadfbd3a4f
2 changed files with 14 additions and 4 deletions

View file

@ -41,10 +41,7 @@ void WebViewGuestDelegate::Initialize(api::WebContents* api_web_contents) {
void WebViewGuestDelegate::Destroy() {
// Give the content module an opportunity to perform some cleanup.
if (embedder_zoom_controller_) {
embedder_zoom_controller_->RemoveObserver(this);
embedder_zoom_controller_ = nullptr;
}
ResetZoomController();
guest_host_->WillDestroy();
guest_host_ = nullptr;
}
@ -113,11 +110,15 @@ void WebViewGuestDelegate::DidFinishNavigation(
void WebViewGuestDelegate::DidDetach() {
attached_ = false;
ResetZoomController();
}
void WebViewGuestDelegate::DidAttach(int guest_proxy_routing_id) {
attached_ = true;
api_web_contents_->Emit("did-attach");
ResetZoomController();
embedder_zoom_controller_ =
WebContentsZoomController::FromWebContents(embedder_web_contents_);
auto zoom_controller = api_web_contents_->GetZoomController();
@ -183,6 +184,13 @@ gfx::Size WebViewGuestDelegate::GetDefaultSize() const {
}
}
void WebViewGuestDelegate::ResetZoomController() {
if (embedder_zoom_controller_) {
embedder_zoom_controller_->RemoveObserver(this);
embedder_zoom_controller_ = nullptr;
}
}
bool WebViewGuestDelegate::CanBeEmbeddedInsideCrossProcessFrames() {
return true;
}

View file

@ -88,6 +88,8 @@ class WebViewGuestDelegate : public content::BrowserPluginGuestDelegate,
// Returns the default size of the guestview.
gfx::Size GetDefaultSize() const;
void ResetZoomController();
// The WebContents that attaches this guest view.
content::WebContents* embedder_web_contents_ = nullptr;