diff options
author | tbarzic <tbarzic@chromium.org> | 2015-04-02 11:06:05 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-02 18:07:50 +0000 |
commit | 93e15e73465e5a3e692446129b20666a3d6662c4 (patch) | |
tree | b98f0fcebf3ce991983198ee154f5914c593e4cf | |
parent | 36c686ef6be7c9b5265717fc23c062ff0f8ee369 (diff) | |
download | chromium_src-93e15e73465e5a3e692446129b20666a3d6662c4.zip chromium_src-93e15e73465e5a3e692446129b20666a3d6662c4.tar.gz chromium_src-93e15e73465e5a3e692446129b20666a3d6662c4.tar.bz2 |
Revert of content: Delete some now-dead event related code. (patchset #2 id:20001 of https://codereview.chromium.org/1052063002/)
Reason for revert:
Breaking cros waterfalls.
e.g.
http://build.chromium.org/p/chromiumos.chromium/builders/Daisy%20%28chromium%29
chromeos-chrome-43.0.2356.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/content/browser/renderer_host/render_widget_host_view_aura.cc: In member function 'virtual void content::RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent*)':
chromeos-chrome-43.0.2356.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/content/browser/renderer_host/render_widget_host_view_aura.cc:2122:27: error: variable 'delegate' set but not used [-Werror=unused-but-set-variable]
chromeos-chrome-43.0.2356.0_alpha-r1: RenderViewHostDelegate* delegate = NULL;
chromeos-chrome-43.0.2356.0_alpha-r1: ^
Original issue's description:
> content: Delete some now-dead event related code.
>
> Some of the removed methods were never used, and the rest had no
> real implementations.
>
> BUG=None
> R=jam@chromium.org
>
> Committed: https://chromium.googlesource.com/chromium/src/+/3b4f45c0f82a245b6ae1da2492f75e0cef3c2301
TBR=jam@chromium.org,sadrul@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=None
Review URL: https://codereview.chromium.org/1053063002
Cr-Commit-Position: refs/heads/master@{#323539}
20 files changed, 175 insertions, 3 deletions
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 50b6506..55db7f5 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -1567,6 +1567,10 @@ void Browser::SetFocusToLocationBar(bool select_all) { window_->SetFocusToLocationBar(select_all); } +int Browser::GetExtraRenderViewHeight() const { + return window_->GetExtraRenderViewHeight(); +} + void Browser::ViewSourceForTab(WebContents* source, const GURL& page_url) { DCHECK(source); chrome::ViewSource(this, source); diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 49c3962..fcb711c 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h @@ -573,6 +573,7 @@ class Browser : public TabStripModelObserver, bool* proceed_to_fire_unload) override; bool ShouldFocusLocationBarByDefault(content::WebContents* source) override; void SetFocusToLocationBar(bool select_all) override; + int GetExtraRenderViewHeight() const override; void ViewSourceForTab(content::WebContents* source, const GURL& page_url) override; void ViewSourceForFrame(content::WebContents* source, diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h index 4dfce85..ea17ad5 100644 --- a/chrome/browser/ui/browser_window.h +++ b/chrome/browser/ui/browser_window.h @@ -298,6 +298,12 @@ class BrowserWindow : public ui::BaseWindow { // indicating that it's time to redraw everything. virtual void UserChangedTheme() = 0; + // Get extra vertical height that the render view should add to its requests + // to webkit. This can help prevent sending extraneous layout/repaint requests + // when the delegate is in the process of resizing the tab contents view (e.g. + // during infobar animations). + virtual int GetExtraRenderViewHeight() const = 0; + // Notification that |contents| got the focus through user action (click // on the page). virtual void WebContentsFocused(content::WebContents* contents) = 0; diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.h b/chrome/browser/ui/cocoa/browser_window_cocoa.h index 216cecd..a1ae062 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.h +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.h @@ -134,6 +134,7 @@ class BrowserWindowCocoa bool app_modal, const base::Callback<void(bool)>& callback) override; void UserChangedTheme() override; + int GetExtraRenderViewHeight() const override; void WebContentsFocused(content::WebContents* contents) override; void ShowWebsiteSettings(Profile* profile, content::WebContents* web_contents, diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm index 95c39c3..92fe33d 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm @@ -683,6 +683,11 @@ void BrowserWindowCocoa::UserChangedTheme() { [controller_ userChangedTheme]; } +int BrowserWindowCocoa::GetExtraRenderViewHeight() const { + // Currently this is only used on linux. + return 0; +} + void BrowserWindowCocoa::WebContentsFocused(WebContents* contents) { NOTIMPLEMENTED(); } diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index b42798c..eab84aa 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -1354,6 +1354,11 @@ void BrowserView::UserChangedTheme() { frame_->FrameTypeChanged(); } +int BrowserView::GetExtraRenderViewHeight() const { + // Currently this is only used on linux. + return 0; +} + void BrowserView::WebContentsFocused(WebContents* contents) { if (contents_web_view_->GetWebContents() == contents) contents_web_view_->OnWebContentsFocused(contents); diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index c1bcbbe..1a9a8df 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h @@ -335,6 +335,7 @@ class BrowserView : public BrowserWindow, bool app_modal, const base::Callback<void(bool)>& callback) override; void UserChangedTheme() override; + int GetExtraRenderViewHeight() const override; void WebContentsFocused(content::WebContents* contents) override; void ShowWebsiteSettings(Profile* profile, content::WebContents* web_contents, diff --git a/chrome/test/base/test_browser_window.cc b/chrome/test/base/test_browser_window.cc index 8bfc54c..62f9183 100644 --- a/chrome/test/base/test_browser_window.cc +++ b/chrome/test/base/test_browser_window.cc @@ -205,6 +205,10 @@ DownloadShelf* TestBrowserWindow::GetDownloadShelf() { return &download_shelf_; } +int TestBrowserWindow::GetExtraRenderViewHeight() const { + return 0; +} + WindowOpenDisposition TestBrowserWindow::GetDispositionForPopupBounds( const gfx::Rect& bounds) { return NEW_POPUP; diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h index 4735821..6ee00f2 100644 --- a/chrome/test/base/test_browser_window.h +++ b/chrome/test/base/test_browser_window.h @@ -130,6 +130,7 @@ class TestBrowserWindow : public BrowserWindow { bool app_modal, const base::Callback<void(bool)>& callback) override {} void UserChangedTheme() override {} + int GetExtraRenderViewHeight() const override; void WebContentsFocused(content::WebContents* contents) override {} void ShowWebsiteSettings(Profile* profile, content::WebContents* web_contents, diff --git a/content/browser/renderer_host/render_view_host_delegate.h b/content/browser/renderer_host/render_view_host_delegate.h index cee439c..b6e74b8 100644 --- a/content/browser/renderer_host/render_view_host_delegate.h +++ b/content/browser/renderer_host/render_view_host_delegate.h @@ -173,6 +173,16 @@ class CONTENT_EXPORT RenderViewHostDelegate { // Notification that the view has lost capture. virtual void LostCapture() {} + // Notifications about mouse events in this view. This is useful for + // implementing global 'on hover' features external to the view. + virtual void HandleMouseMove() {} + virtual void HandleMouseDown() {} + virtual void HandleMouseLeave() {} + virtual void HandleMouseUp() {} + virtual void HandlePointerActivate() {} + virtual void HandleGestureBegin() {} + virtual void HandleGestureEnd() {} + // Called when a file selection is to be done. virtual void RunFileChooser( RenderViewHost* render_view_host, diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index d0f06ff..cdc82e9 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc @@ -1202,9 +1202,36 @@ gfx::Rect RenderViewHostImpl::GetRootWindowResizerRect() const { void RenderViewHostImpl::ForwardMouseEvent( const blink::WebMouseEvent& mouse_event) { - RenderWidgetHostImpl::ForwardMouseEvent(mouse_event); - if (mouse_event.type == WebInputEvent::MouseWheel && ignore_input_events()) - delegate_->OnIgnoredUIEvent(); + + // We make a copy of the mouse event because + // RenderWidgetHost::ForwardMouseEvent will delete |mouse_event|. + blink::WebMouseEvent event_copy(mouse_event); + RenderWidgetHostImpl::ForwardMouseEvent(event_copy); + + switch (event_copy.type) { + case WebInputEvent::MouseMove: + delegate_->HandleMouseMove(); + break; + case WebInputEvent::MouseLeave: + delegate_->HandleMouseLeave(); + break; + case WebInputEvent::MouseDown: + delegate_->HandleMouseDown(); + break; + case WebInputEvent::MouseWheel: + if (ignore_input_events()) + delegate_->OnIgnoredUIEvent(); + break; + case WebInputEvent::MouseUp: + delegate_->HandleMouseUp(); + default: + // For now, we don't care about the rest. + break; + } +} + +void RenderViewHostImpl::OnPointerEventActivate() { + delegate_->HandlePointerActivate(); } void RenderViewHostImpl::ForwardKeyboardEvent( diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h index 15883b6..e655cc5 100644 --- a/content/browser/renderer_host/render_view_host_impl.h +++ b/content/browser/renderer_host/render_view_host_impl.h @@ -270,6 +270,7 @@ class CONTENT_EXPORT RenderViewHostImpl void LostMouseLock() override; void SetIsLoading(bool is_loading) override; void ForwardMouseEvent(const blink::WebMouseEvent& mouse_event) override; + void OnPointerEventActivate() override; void ForwardKeyboardEvent(const NativeWebKeyboardEvent& key_event) override; gfx::Rect GetRootWindowResizerRect() const override; diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index fe0203f..4aef7b8 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc @@ -917,6 +917,9 @@ void RenderWidgetHostImpl::ForwardMouseEventWithLatencyInfo( } } +void RenderWidgetHostImpl::OnPointerEventActivate() { +} + void RenderWidgetHostImpl::ForwardWheelEvent( const WebMouseWheelEvent& wheel_event) { ForwardWheelEventWithLatencyInfo(wheel_event, ui::LatencyInfo()); diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h index bea0bfa..617b547 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h @@ -311,6 +311,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl void CancelUpdateTextDirection(); + // Called when a mouse click/gesture tap activates the renderer. + virtual void OnPointerEventActivate(); + // Notifies the renderer whether or not the input method attached to this // process is activated. // When the input method is activated, a renderer process sends IPC messages diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index e9d6db7..839f62a 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -323,6 +323,19 @@ void GetScreenInfoForWindow(WebScreenInfo* results, aura::Window* window) { RenderWidgetHostViewBase::GetOrientationTypeForDesktop(display); } +bool PointerEventActivates(const ui::Event& event) { + if (event.type() == ui::ET_MOUSE_PRESSED) + return true; + + if (event.type() == ui::ET_GESTURE_BEGIN) { + const ui::GestureEvent& gesture = + static_cast<const ui::GestureEvent&>(event); + return gesture.details().touch_points() == 1; + } + + return false; +} + bool IsFractionalScaleFactor(float scale_factor) { return (scale_factor - static_cast<int>(scale_factor)) > 0; } @@ -448,6 +461,7 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host, window_observer_.reset(new WindowObserver(this)); aura::client::SetTooltipText(window_, &tooltip_); aura::client::SetActivationDelegate(window_, this); + aura::client::SetActivationChangeObserver(window_, this); aura::client::SetFocusChangeObserver(window_, this); window_->set_layer_owner_delegate(delegated_frame_host_.get()); gfx::Screen::GetScreenFor(window_)->AddObserver(this); @@ -2123,6 +2137,11 @@ void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { if (host_->IsRenderView()) delegate = RenderViewHost::From(host_)->GetDelegate(); + if (delegate && event->type() == ui::ET_GESTURE_BEGIN && + event->details().touch_points() == 1) { + delegate->HandleGestureBegin(); + } + blink::WebGestureEvent gesture = MakeWebGestureEvent(*event); if (event->type() == ui::ET_GESTURE_TAP_DOWN) { // Webkit does not stop a fling-scroll on tap-down. So explicitly send an @@ -2145,6 +2164,11 @@ void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { } } + if (delegate && event->type() == ui::ET_GESTURE_END && + event->details().touch_points() == 1) { + delegate->HandleGestureEnd(); + } + // If a gesture is not processed by the webpage, then WebKit processes it // (e.g. generates synthetic mouse events). event->SetHandled(); @@ -2164,6 +2188,20 @@ bool RenderWidgetHostViewAura::ShouldActivate() const { } //////////////////////////////////////////////////////////////////////////////// +// RenderWidgetHostViewAura, +// aura::client::ActivationChangeObserver implementation: + +void RenderWidgetHostViewAura::OnWindowActivated(aura::Window* gained_active, + aura::Window* lost_active) { + DCHECK(window_ == gained_active || window_ == lost_active); + if (window_ == gained_active) { + const ui::Event* event = window_->GetHost()->dispatcher()->current_event(); + if (event && PointerEventActivates(*event)) + host_->OnPointerEventActivate(); + } +} + +//////////////////////////////////////////////////////////////////////////////// // RenderWidgetHostViewAura, aura::client::CursorClientObserver implementation: void RenderWidgetHostViewAura::OnCursorVisibilityChanged(bool is_visible) { diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h index ab50d41..a2c24a1 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.h +++ b/content/browser/renderer_host/render_widget_host_view_aura.h @@ -35,6 +35,7 @@ #include "ui/gfx/display_observer.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/rect.h" +#include "ui/wm/public/activation_change_observer.h" #include "ui/wm/public/activation_delegate.h" namespace aura { @@ -85,6 +86,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAura public aura::WindowTreeHostObserver, public aura::WindowDelegate, public aura::client::ActivationDelegate, + public aura::client::ActivationChangeObserver, public aura::client::FocusChangeObserver, public aura::client::CursorClientObserver { public: @@ -301,6 +303,10 @@ class CONTENT_EXPORT RenderWidgetHostViewAura // Overridden from aura::client::ActivationDelegate: bool ShouldActivate() const override; + // Overridden from aura::client::ActivationChangeObserver: + void OnWindowActivated(aura::Window* gained_activation, + aura::Window* lost_activation) override; + // Overridden from aura::client::CursorClientObserver: void OnCursorVisibilityChanged(bool is_visible) override; diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 24122cd..6626ab0 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc @@ -1436,6 +1436,31 @@ bool WebContentsImpl::PreHandleGestureEvent( return delegate_ && delegate_->PreHandleGestureEvent(this, event); } +void WebContentsImpl::HandleMouseDown() { + if (delegate_) + delegate_->HandleMouseDown(); +} + +void WebContentsImpl::HandleMouseUp() { + if (delegate_) + delegate_->HandleMouseUp(); +} + +void WebContentsImpl::HandlePointerActivate() { + if (delegate_) + delegate_->HandlePointerActivate(); +} + +void WebContentsImpl::HandleGestureBegin() { + if (delegate_) + delegate_->HandleGestureBegin(); +} + +void WebContentsImpl::HandleGestureEnd() { + if (delegate_) + delegate_->HandleGestureEnd(); +} + void WebContentsImpl::EnterFullscreenMode(const GURL& origin) { // This method is being called to enter renderer-initiated fullscreen mode. // Make sure any existing fullscreen widget is shut down first. @@ -2380,6 +2405,8 @@ void WebContentsImpl::DidGetRedirectForResourceRequest( void WebContentsImpl::SystemDragEnded() { if (GetRenderViewHost()) GetRenderViewHostImpl()->DragSourceSystemDragEnded(); + if (delegate_) + delegate_->DragEnded(); if (browser_plugin_embedder_.get()) browser_plugin_embedder_->SystemDragEnded(); } diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h index 6753535..c4f908c 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h @@ -459,6 +459,11 @@ class CONTENT_EXPORT WebContentsImpl void Activate() override; void Deactivate() override; void LostCapture() override; + void HandleMouseDown() override; + void HandleMouseUp() override; + void HandlePointerActivate() override; + void HandleGestureBegin() override; + void HandleGestureEnd() override; void RunFileChooser(RenderViewHost* render_view_host, const FileChooserParams& params) override; bool IsFullscreenForCurrentTab() const override; diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc index 0e48d7c..461927c 100644 --- a/content/public/browser/web_contents_delegate.cc +++ b/content/public/browser/web_contents_delegate.cc @@ -67,6 +67,10 @@ bool WebContentsDelegate::TakeFocus(WebContents* source, bool reverse) { return false; } +int WebContentsDelegate::GetExtraRenderViewHeight() const { + return 0; +} + void WebContentsDelegate::CanDownload( RenderViewHost* render_view_host, const GURL& url, diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h index 1367f0b..d88b27c 100644 --- a/content/public/browser/web_contents_delegate.h +++ b/content/public/browser/web_contents_delegate.h @@ -56,6 +56,8 @@ class Size; namespace blink { class WebGestureEvent; +class WebLayer; +struct WebWindowFeatures; } namespace content { @@ -233,6 +235,11 @@ class CONTENT_EXPORT WebContentsDelegate { const std::string& request_method, const base::Callback<void(bool)>& callback); + // Return much extra vertical space should be allotted to the + // render view widget during various animations (e.g. infobar closing). + // This is used to make painting look smoother. + virtual int GetExtraRenderViewHeight() const; + // Returns true if the context menu operation was handled by the delegate. virtual bool HandleContextMenu(const content::ContextMenuParams& params); @@ -258,6 +265,13 @@ class CONTENT_EXPORT WebContentsDelegate { virtual void HandleKeyboardEvent(WebContents* source, const NativeWebKeyboardEvent& event) {} + virtual void HandleMouseDown() {} + virtual void HandleMouseUp() {} + + // Handles activation resulting from a pointer event (e.g. when mouse is + // pressed, or a touch-gesture begins). + virtual void HandlePointerActivate() {} + // Allows delegates to handle gesture events before sending to the renderer. // Returns true if the |event| was handled and thus shouldn't be processed // by the renderer's event handler. Note that the touch events that create @@ -267,6 +281,9 @@ class CONTENT_EXPORT WebContentsDelegate { WebContents* source, const blink::WebGestureEvent& event); + virtual void HandleGestureBegin() {} + virtual void HandleGestureEnd() {} + // Called when an external drag event enters the web contents window. Return // true to allow dragging and dropping on the web contents window or false to // cancel the operation. This method is used by Chromium Embedded Framework. @@ -274,6 +291,9 @@ class CONTENT_EXPORT WebContentsDelegate { const DropData& data, blink::WebDragOperationsMask operations_allowed); + // Render view drag n drop ended. + virtual void DragEnded() {} + // Shows the repost form confirmation dialog box. virtual void ShowRepostFormWarningDialog(WebContents* source) {} |