| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" | 
| 6 #include "base/bind.h" | 6 #include "base/bind.h" | 
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" | 
| 8 #include "base/memory/shared_memory.h" | 8 #include "base/memory/shared_memory.h" | 
| 9 #include "base/timer/timer.h" | 9 #include "base/timer/timer.h" | 
| 10 #include "content/browser/browser_thread_impl.h" | 10 #include "content/browser/browser_thread_impl.h" | 
| 11 #include "content/browser/renderer_host/backing_store.h" | 11 #include "content/browser/renderer_host/backing_store.h" | 
| 12 #include "content/browser/renderer_host/input/gesture_event_queue.h" | 12 #include "content/browser/renderer_host/input/gesture_event_queue.h" | 
| 13 #include "content/browser/renderer_host/input/input_router_impl.h" | 13 #include "content/browser/renderer_host/input/input_router_impl.h" | 
| 14 #include "content/browser/renderer_host/input/tap_suppression_controller.h" | 14 #include "content/browser/renderer_host/input/tap_suppression_controller.h" | 
| 15 #include "content/browser/renderer_host/input/tap_suppression_controller_client.
      h" | 15 #include "content/browser/renderer_host/input/tap_suppression_controller_client.
      h" | 
| 16 #include "content/browser/renderer_host/input/touch_event_queue.h" | 16 #include "content/browser/renderer_host/input/touch_event_queue.h" | 
| 17 #include "content/browser/renderer_host/overscroll_controller.h" | 17 #include "content/browser/renderer_host/overscroll_controller.h" | 
| 18 #include "content/browser/renderer_host/overscroll_controller_delegate.h" | 18 #include "content/browser/renderer_host/overscroll_controller_delegate.h" | 
| 19 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 19 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 
| 20 #include "content/common/input/synthetic_web_input_event_builders.h" | 20 #include "content/common/input/synthetic_web_input_event_builders.h" | 
| 21 #include "content/common/input_messages.h" | 21 #include "content/common/input_messages.h" | 
| 22 #include "content/common/view_messages.h" | 22 #include "content/common/view_messages.h" | 
| 23 #include "content/port/browser/render_widget_host_view_port.h" | 23 #include "content/port/browser/render_widget_host_view_port.h" | 
| 24 #include "content/public/browser/notification_details.h" |  | 
| 25 #include "content/public/browser/notification_observer.h" |  | 
| 26 #include "content/public/browser/notification_registrar.h" |  | 
| 27 #include "content/public/browser/notification_source.h" |  | 
| 28 #include "content/public/browser/notification_types.h" |  | 
| 29 #include "content/public/test/mock_render_process_host.h" | 24 #include "content/public/test/mock_render_process_host.h" | 
| 30 #include "content/public/test/test_browser_context.h" | 25 #include "content/public/test/test_browser_context.h" | 
| 31 #include "content/test/test_render_view_host.h" | 26 #include "content/test/test_render_view_host.h" | 
| 32 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" | 
| 33 #include "ui/events/keycodes/keyboard_codes.h" | 28 #include "ui/events/keycodes/keyboard_codes.h" | 
| 34 #include "ui/gfx/canvas.h" | 29 #include "ui/gfx/canvas.h" | 
| 35 #include "ui/gfx/screen.h" | 30 #include "ui/gfx/screen.h" | 
| 36 | 31 | 
| 37 #if defined(USE_AURA) | 32 #if defined(USE_AURA) | 
| 38 #include "content/browser/compositor/image_transport_factory.h" | 33 #include "content/browser/compositor/image_transport_factory.h" | 
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 198   MockRenderWidgetHost( | 193   MockRenderWidgetHost( | 
| 199       RenderWidgetHostDelegate* delegate, | 194       RenderWidgetHostDelegate* delegate, | 
| 200       RenderProcessHost* process, | 195       RenderProcessHost* process, | 
| 201       int routing_id) | 196       int routing_id) | 
| 202       : RenderWidgetHostImpl(delegate, process, routing_id, false), | 197       : RenderWidgetHostImpl(delegate, process, routing_id, false), | 
| 203         unresponsive_timer_fired_(false) { | 198         unresponsive_timer_fired_(false) { | 
| 204     input_router_impl_ = static_cast<InputRouterImpl*>(input_router_.get()); | 199     input_router_impl_ = static_cast<InputRouterImpl*>(input_router_.get()); | 
| 205   } | 200   } | 
| 206 | 201 | 
| 207   // Allow poking at a few private members. | 202   // Allow poking at a few private members. | 
| 208   using RenderWidgetHostImpl::OnPaintAtSizeAck; |  | 
| 209   using RenderWidgetHostImpl::OnUpdateRect; | 203   using RenderWidgetHostImpl::OnUpdateRect; | 
| 210   using RenderWidgetHostImpl::RendererExited; | 204   using RenderWidgetHostImpl::RendererExited; | 
| 211   using RenderWidgetHostImpl::last_requested_size_; | 205   using RenderWidgetHostImpl::last_requested_size_; | 
| 212   using RenderWidgetHostImpl::is_hidden_; | 206   using RenderWidgetHostImpl::is_hidden_; | 
| 213   using RenderWidgetHostImpl::resize_ack_pending_; | 207   using RenderWidgetHostImpl::resize_ack_pending_; | 
| 214   using RenderWidgetHostImpl::input_router_; | 208   using RenderWidgetHostImpl::input_router_; | 
| 215 | 209 | 
| 216   bool unresponsive_timer_fired() const { | 210   bool unresponsive_timer_fired() const { | 
| 217     return unresponsive_timer_fired_; | 211     return unresponsive_timer_fired_; | 
| 218   } | 212   } | 
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 552 | 546 | 
| 553  private: | 547  private: | 
| 554   bool prehandle_keyboard_event_; | 548   bool prehandle_keyboard_event_; | 
| 555   bool prehandle_keyboard_event_called_; | 549   bool prehandle_keyboard_event_called_; | 
| 556   WebInputEvent::Type prehandle_keyboard_event_type_; | 550   WebInputEvent::Type prehandle_keyboard_event_type_; | 
| 557 | 551 | 
| 558   bool unhandled_keyboard_event_called_; | 552   bool unhandled_keyboard_event_called_; | 
| 559   WebInputEvent::Type unhandled_keyboard_event_type_; | 553   WebInputEvent::Type unhandled_keyboard_event_type_; | 
| 560 }; | 554 }; | 
| 561 | 555 | 
| 562 // MockPaintingObserver -------------------------------------------------------- |  | 
| 563 |  | 
| 564 class MockPaintingObserver : public NotificationObserver { |  | 
| 565  public: |  | 
| 566   void WidgetDidReceivePaintAtSizeAck(RenderWidgetHostImpl* host, |  | 
| 567                                       int tag, |  | 
| 568                                       const gfx::Size& size) { |  | 
| 569     host_ = reinterpret_cast<MockRenderWidgetHost*>(host); |  | 
| 570     tag_ = tag; |  | 
| 571     size_ = size; |  | 
| 572   } |  | 
| 573 |  | 
| 574   virtual void Observe(int type, |  | 
| 575                        const NotificationSource& source, |  | 
| 576                        const NotificationDetails& details) OVERRIDE { |  | 
| 577     if (type == NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK) { |  | 
| 578       std::pair<int, gfx::Size>* size_ack_details = |  | 
| 579           Details<std::pair<int, gfx::Size> >(details).ptr(); |  | 
| 580       WidgetDidReceivePaintAtSizeAck( |  | 
| 581           RenderWidgetHostImpl::From(Source<RenderWidgetHost>(source).ptr()), |  | 
| 582           size_ack_details->first, |  | 
| 583           size_ack_details->second); |  | 
| 584     } |  | 
| 585   } |  | 
| 586 |  | 
| 587   MockRenderWidgetHost* host() const { return host_; } |  | 
| 588   int tag() const { return tag_; } |  | 
| 589   gfx::Size size() const { return size_; } |  | 
| 590 |  | 
| 591  private: |  | 
| 592   MockRenderWidgetHost* host_; |  | 
| 593   int tag_; |  | 
| 594   gfx::Size size_; |  | 
| 595 }; |  | 
| 596 |  | 
| 597 // RenderWidgetHostTest -------------------------------------------------------- | 556 // RenderWidgetHostTest -------------------------------------------------------- | 
| 598 | 557 | 
| 599 class RenderWidgetHostTest : public testing::Test { | 558 class RenderWidgetHostTest : public testing::Test { | 
| 600  public: | 559  public: | 
| 601   RenderWidgetHostTest() | 560   RenderWidgetHostTest() | 
| 602       : process_(NULL), | 561       : process_(NULL), | 
| 603         handle_key_press_event_(false), | 562         handle_key_press_event_(false), | 
| 604         handle_mouse_event_(false) { | 563         handle_mouse_event_(false) { | 
| 605   } | 564   } | 
| 606   virtual ~RenderWidgetHostTest() { | 565   virtual ~RenderWidgetHostTest() { | 
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1111 | 1070 | 
| 1112   // It should have sent out a restored message with a request to paint. | 1071   // It should have sent out a restored message with a request to paint. | 
| 1113   const IPC::Message* restored = process_->sink().GetUniqueMessageMatching( | 1072   const IPC::Message* restored = process_->sink().GetUniqueMessageMatching( | 
| 1114       ViewMsg_WasShown::ID); | 1073       ViewMsg_WasShown::ID); | 
| 1115   ASSERT_TRUE(restored); | 1074   ASSERT_TRUE(restored); | 
| 1116   Tuple1<bool> needs_repaint; | 1075   Tuple1<bool> needs_repaint; | 
| 1117   ViewMsg_WasShown::Read(restored, &needs_repaint); | 1076   ViewMsg_WasShown::Read(restored, &needs_repaint); | 
| 1118   EXPECT_TRUE(needs_repaint.a); | 1077   EXPECT_TRUE(needs_repaint.a); | 
| 1119 } | 1078 } | 
| 1120 | 1079 | 
| 1121 TEST_F(RenderWidgetHostTest, PaintAtSize) { |  | 
| 1122   const int kPaintAtSizeTag = 42; |  | 
| 1123   host_->PaintAtSize(TransportDIB::GetFakeHandleForTest(), kPaintAtSizeTag, |  | 
| 1124                      gfx::Size(40, 60), gfx::Size(20, 30)); |  | 
| 1125   EXPECT_TRUE( |  | 
| 1126       process_->sink().GetUniqueMessageMatching(ViewMsg_PaintAtSize::ID)); |  | 
| 1127 |  | 
| 1128   NotificationRegistrar registrar; |  | 
| 1129   MockPaintingObserver observer; |  | 
| 1130   registrar.Add( |  | 
| 1131       &observer, |  | 
| 1132       NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK, |  | 
| 1133       Source<RenderWidgetHost>(host_.get())); |  | 
| 1134 |  | 
| 1135   host_->OnPaintAtSizeAck(kPaintAtSizeTag, gfx::Size(20, 30)); |  | 
| 1136   EXPECT_EQ(host_.get(), observer.host()); |  | 
| 1137   EXPECT_EQ(kPaintAtSizeTag, observer.tag()); |  | 
| 1138   EXPECT_EQ(20, observer.size().width()); |  | 
| 1139   EXPECT_EQ(30, observer.size().height()); |  | 
| 1140 } |  | 
| 1141 |  | 
| 1142 TEST_F(RenderWidgetHostTest, IgnoreKeyEventsHandledByRenderer) { | 1080 TEST_F(RenderWidgetHostTest, IgnoreKeyEventsHandledByRenderer) { | 
| 1143   // Simulate a keyboard event. | 1081   // Simulate a keyboard event. | 
| 1144   SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 1082   SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 
| 1145 | 1083 | 
| 1146   // Make sure we sent the input event to the renderer. | 1084   // Make sure we sent the input event to the renderer. | 
| 1147   EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 1085   EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 
| 1148                   InputMsg_HandleInputEvent::ID)); | 1086                   InputMsg_HandleInputEvent::ID)); | 
| 1149   process_->sink().ClearMessages(); | 1087   process_->sink().ClearMessages(); | 
| 1150 | 1088 | 
| 1151   // Send the simulated response from the renderer back. | 1089   // Send the simulated response from the renderer back. | 
| (...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2616 | 2554 | 
| 2617   // Tests RWHI::ForwardTouchEventWithLatencyInfo(). | 2555   // Tests RWHI::ForwardTouchEventWithLatencyInfo(). | 
| 2618   PressTouchPoint(0, 1); | 2556   PressTouchPoint(0, 1); | 
| 2619   SendTouchEvent(); | 2557   SendTouchEvent(); | 
| 2620   CheckLatencyInfoComponentInMessage( | 2558   CheckLatencyInfoComponentInMessage( | 
| 2621       process_, GetLatencyComponentId(), WebInputEvent::TouchStart); | 2559       process_, GetLatencyComponentId(), WebInputEvent::TouchStart); | 
| 2622   SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); | 2560   SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); | 
| 2623 } | 2561 } | 
| 2624 | 2562 | 
| 2625 }  // namespace content | 2563 }  // namespace content | 
| OLD | NEW | 
|---|