summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcsharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-25 16:26:26 +0000
committercsharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-25 16:26:26 +0000
commit2b942c335ed41df16205713d9a6749a8bda556c9 (patch)
tree51770a02979575ea6b6a17acc8c8d24254a13b09
parent5784bd14417a7d68a23ec2c1f8c5d0f4e4df872c (diff)
downloadchromium_src-2b942c335ed41df16205713d9a6749a8bda556c9.zip
chromium_src-2b942c335ed41df16205713d9a6749a8bda556c9.tar.gz
chromium_src-2b942c335ed41df16205713d9a6749a8bda556c9.tar.bz2
Add ZoomLevelChanged and DidChangeScrollOffset to RenderViewObserver
Add ZoomLevelChanged and DidChangeScrollOffset to RenderViewObserver and setup the new Autofill UI to use them to detect when the why content on a page has shifted and any visible popup should be hidden. BUG=103564 TEST=When using the new Autofill UI scrolling will now cause any visible popups to disappear Review URL: http://codereview.chromium.org/10218001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133924 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/renderer/autofill/autofill_agent.cc14
-rw-r--r--chrome/renderer/autofill/autofill_agent.h2
-rw-r--r--content/public/renderer/render_view_observer.h4
-rw-r--r--content/renderer/render_view_impl.cc9
4 files changed, 27 insertions, 2 deletions
diff --git a/chrome/renderer/autofill/autofill_agent.cc b/chrome/renderer/autofill/autofill_agent.cc
index f250e4f..0b28d45 100644
--- a/chrome/renderer/autofill/autofill_agent.cc
+++ b/chrome/renderer/autofill/autofill_agent.cc
@@ -155,6 +155,20 @@ void AutofillAgent::WillSubmitForm(WebFrame* frame,
}
}
+void AutofillAgent::ZoomLevelChanged() {
+ // Any time the zoom level changes, the page's content moves, so any Autofill
+ // popups should be hidden. This is only needed for the new Autofill UI
+ // because WebKit already knows to hide the old UI when this occurs.
+ Send(new AutofillHostMsg_HideAutofillPopup(routing_id()));
+}
+
+void AutofillAgent::DidChangeScrollOffset(WebKit::WebFrame*) {
+ // Any time the scroll offset changes, the page's content moves, so Autofill
+ // popups should be hidden. This is only needed for the new Autofill UI
+ // because WebKit already knows to hide the old UI when this occurs.
+ Send(new AutofillHostMsg_HideAutofillPopup(routing_id()));
+}
+
bool AutofillAgent::InputElementClicked(const WebInputElement& element,
bool was_focused,
bool is_focused) {
diff --git a/chrome/renderer/autofill/autofill_agent.h b/chrome/renderer/autofill/autofill_agent.h
index f9b0364..f0f5173 100644
--- a/chrome/renderer/autofill/autofill_agent.h
+++ b/chrome/renderer/autofill/autofill_agent.h
@@ -65,6 +65,8 @@ class AutofillAgent : public content::RenderViewObserver,
virtual void FrameWillClose(WebKit::WebFrame* frame) OVERRIDE;
virtual void WillSubmitForm(WebKit::WebFrame* frame,
const WebKit::WebFormElement& form) OVERRIDE;
+ virtual void ZoomLevelChanged() OVERRIDE;
+ virtual void DidChangeScrollOffset(WebKit::WebFrame* frame) OVERRIDE;
// PageClickListener:
virtual bool InputElementClicked(const WebKit::WebInputElement& element,
diff --git a/content/public/renderer/render_view_observer.h b/content/public/renderer/render_view_observer.h
index 471ce14..5495613 100644
--- a/content/public/renderer/render_view_observer.h
+++ b/content/public/renderer/render_view_observer.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -68,6 +68,8 @@ class CONTENT_EXPORT RenderViewObserver : public IPC::Channel::Listener,
virtual void FocusedNodeChanged(const WebKit::WebNode& node) {}
virtual void WillCreateMediaPlayer(WebKit::WebFrame* frame,
WebKit::WebMediaPlayerClient* client) {}
+ virtual void ZoomLevelChanged() {};
+ virtual void DidChangeScrollOffset(WebKit::WebFrame* frame) {}
// These match the RenderView methods.
virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event) {}
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 0d6467d..7a507ac 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -226,6 +226,7 @@ using WebKit::WebIntentServiceInfo;
using WebKit::WebMediaPlayer;
using WebKit::WebMediaPlayerAction;
using WebKit::WebMediaPlayerClient;
+using WebKit::WebMouseEvent;
using WebKit::WebNavigationPolicy;
using WebKit::WebNavigationType;
using WebKit::WebNode;
@@ -3353,6 +3354,9 @@ void RenderViewImpl::didChangeScrollOffset(WebFrame* frame) {
if (webview()->mainFrame() == frame)
UpdateScrollState(frame);
+
+ FOR_EACH_OBSERVER(
+ RenderViewObserver, observers_, DidChangeScrollOffset(frame));
}
void RenderViewImpl::numberOfWheelEventHandlersChanged(unsigned num_handlers) {
@@ -4747,7 +4751,7 @@ bool RenderViewImpl::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) {
return mouse_lock_dispatcher_->WillHandleMouseEvent(event);
}
-void RenderViewImpl::DidHandleMouseEvent(const WebKit::WebMouseEvent& event) {
+void RenderViewImpl::DidHandleMouseEvent(const WebMouseEvent& event) {
FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleMouseEvent(event));
}
@@ -5122,6 +5126,9 @@ void RenderViewImpl::zoomLimitsChanged(double minimum_level,
void RenderViewImpl::zoomLevelChanged() {
bool remember = !webview()->mainFrame()->document().isPluginDocument();
float zoom_level = webview()->zoomLevel();
+
+ FOR_EACH_OBSERVER(RenderViewObserver, observers_, ZoomLevelChanged());
+
// Tell the browser which url got zoomed so it can update the menu and the
// saved values if necessary
Send(new ViewHostMsg_DidZoomURL(