Index: extensions/browser/guest_view/web_view/web_view_guest.cc |
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc |
index 453a7fd74a2902633e3727b22108ff2d3fd7ce5f..6e96b26870c0ee6ae77f44311966ffa2b9b301c8 100644 |
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc |
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc |
@@ -335,9 +335,6 @@ void WebViewGuest::DidAttachToEmbedder() { |
// We need to set the background opaque flag after navigation to ensure that |
// there is a RenderWidgetHostView available. |
SetAllowTransparency(allow_transparency); |
- |
- if (web_view_guest_delegate_) |
- web_view_guest_delegate_->OnDidAttachToEmbedder(); |
} |
void WebViewGuest::DidInitialize() { |
@@ -370,8 +367,7 @@ void WebViewGuest::DidStopLoading() { |
} |
void WebViewGuest::EmbedderWillBeDestroyed() { |
- if (web_view_guest_delegate_) |
- web_view_guest_delegate_->OnEmbedderWillBeDestroyed(); |
+ GuestViewBase::EmbedderWillBeDestroyed(); |
// Clean up rules registries for the webview. |
RulesRegistryService::Get(browser_context()) |
@@ -618,9 +614,7 @@ void WebViewGuest::Observe(int type, |
} |
double WebViewGuest::GetZoom() { |
Fady Samuel
2014/12/09 20:09:47
Now that this method is trivial I'd make this a si
wjmaclean
2014/12/09 20:50:04
Done.
|
- if (!web_view_guest_delegate_) |
- return 1.0; |
- return web_view_guest_delegate_->GetZoom(); |
+ return current_zoom_factor_; |
} |
void WebViewGuest::StartFinding( |
@@ -709,7 +703,8 @@ WebViewGuest::WebViewGuest(content::BrowserContext* browser_context, |
is_overriding_user_agent_(false), |
guest_opaque_(true), |
javascript_dialog_helper_(this), |
- weak_ptr_factory_(this) { |
+ weak_ptr_factory_(this), |
+ current_zoom_factor_(1.0) { |
Fady Samuel
2014/12/09 20:09:46
weak_ptr_factory_ must be the last member variable
wjmaclean
2014/12/09 20:50:04
Done.
|
web_view_guest_delegate_.reset( |
ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this)); |
} |
@@ -742,6 +737,14 @@ void WebViewGuest::DidCommitProvisionalLoadForFrame( |
new GuestViewBase::Event(webview::kEventLoadCommit, args.Pass())); |
find_helper_.CancelAllFindSessions(); |
+ |
+ // Update the current zoom factor for the new page. |
+ ui_zoom::ZoomController* zoom_controller = |
+ ui_zoom::ZoomController::FromWebContents(web_contents()); |
+ DCHECK(zoom_controller); |
+ current_zoom_factor_ = |
+ content::ZoomLevelToZoomFactor(zoom_controller->GetZoomLevel()); |
+ |
if (web_view_guest_delegate_) { |
web_view_guest_delegate_->OnDidCommitProvisionalLoadForFrame( |
!render_frame_host->GetParent()); |
@@ -1062,8 +1065,18 @@ void WebViewGuest::SetName(const std::string& name) { |
} |
void WebViewGuest::SetZoom(double zoom_factor) { |
- if (web_view_guest_delegate_) |
- web_view_guest_delegate_->OnSetZoom(zoom_factor); |
+ ui_zoom::ZoomController* zoom_controller = |
+ ui_zoom:: ZoomController::FromWebContents(web_contents()); |
+ DCHECK(zoom_controller); |
+ double zoom_level = content::ZoomFactorToZoomLevel(zoom_factor); |
+ zoom_controller->SetZoomLevel(zoom_level); |
+ |
+ scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
+ args->SetDouble(webview::kOldZoomFactor, current_zoom_factor_); |
+ args->SetDouble(webview::kNewZoomFactor, zoom_factor); |
+ DispatchEventToEmbedder( |
+ new GuestViewBase::Event(webview::kEventZoomChange, args.Pass())); |
+ current_zoom_factor_ = zoom_factor; |
} |
void WebViewGuest::SetAllowTransparency(bool allow) { |