Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Unified Diff: extensions/browser/guest_view/web_view/web_view_guest.cc

Issue 787813004: Move ZoomController out of ChromeWebViewGuestDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix attach logic in GuestViewBase::DidAttach(). Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698