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() { void WebViewGuestDelegate::Destroy() {
// Give the content module an opportunity to perform some cleanup. // Give the content module an opportunity to perform some cleanup.
if (embedder_zoom_controller_) { ResetZoomController();
embedder_zoom_controller_->RemoveObserver(this);
embedder_zoom_controller_ = nullptr;
}
guest_host_->WillDestroy(); guest_host_->WillDestroy();
guest_host_ = nullptr; guest_host_ = nullptr;
} }
@ -113,11 +110,15 @@ void WebViewGuestDelegate::DidFinishNavigation(
void WebViewGuestDelegate::DidDetach() { void WebViewGuestDelegate::DidDetach() {
attached_ = false; attached_ = false;
ResetZoomController();
} }
void WebViewGuestDelegate::DidAttach(int guest_proxy_routing_id) { void WebViewGuestDelegate::DidAttach(int guest_proxy_routing_id) {
attached_ = true; attached_ = true;
api_web_contents_->Emit("did-attach"); api_web_contents_->Emit("did-attach");
ResetZoomController();
embedder_zoom_controller_ = embedder_zoom_controller_ =
WebContentsZoomController::FromWebContents(embedder_web_contents_); WebContentsZoomController::FromWebContents(embedder_web_contents_);
auto zoom_controller = api_web_contents_->GetZoomController(); 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() { bool WebViewGuestDelegate::CanBeEmbeddedInsideCrossProcessFrames() {
return true; return true;
} }

View file

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