Index: content/renderer/render_widget_unittest.cc |
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc |
index 508ebc181b21d5c933cd3b6d08053955f34d2bbf..9211acac8199e10ff50b97e7323c1d4b3d922ccd 100644 |
--- a/content/renderer/render_widget_unittest.cc |
+++ b/content/renderer/render_widget_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "content/common/input/synthetic_web_input_event_builders.h" |
#include "content/common/input_messages.h" |
#include "content/public/test/mock_render_thread.h" |
+#include "content/test/fake_compositor_dependencies.h" |
#include "content/test/mock_render_process.h" |
#include "ipc/ipc_test_sink.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -17,22 +18,11 @@ |
namespace content { |
-class RenderWidgetUnittest : public testing::Test { |
- public: |
- RenderWidgetUnittest() {} |
- ~RenderWidgetUnittest() override {} |
- |
- private: |
- MockRenderProcess render_process_; |
- MockRenderThread render_thread_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RenderWidgetUnittest); |
-}; |
- |
class InteractiveRenderWidget : public RenderWidget { |
public: |
- InteractiveRenderWidget() |
- : RenderWidget(blink::WebPopupTypeNone, |
+ explicit InteractiveRenderWidget(CompositorDependencies* compositor_deps) |
+ : RenderWidget(compositor_deps, |
+ blink::WebPopupTypeNone, |
blink::WebScreenInfo(), |
false, |
false, |
@@ -96,89 +86,102 @@ class InteractiveRenderWidget : public RenderWidget { |
DISALLOW_COPY_AND_ASSIGN(InteractiveRenderWidget); |
}; |
-TEST_F(RenderWidgetUnittest, TouchHitTestSinglePoint) { |
- scoped_refptr<InteractiveRenderWidget> widget = new InteractiveRenderWidget(); |
+class RenderWidgetUnittest : public testing::Test { |
+ public: |
+ RenderWidgetUnittest() |
+ : widget_(new InteractiveRenderWidget(&compositor_deps_)) {} |
+ ~RenderWidgetUnittest() override {} |
+ |
+ InteractiveRenderWidget* widget() const { return widget_.get(); } |
+ |
+ private: |
+ MockRenderProcess render_process_; |
+ MockRenderThread render_thread_; |
+ FakeCompositorDependencies compositor_deps_; |
+ scoped_refptr<InteractiveRenderWidget> widget_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RenderWidgetUnittest); |
+}; |
+TEST_F(RenderWidgetUnittest, TouchHitTestSinglePoint) { |
SyntheticWebTouchEvent touch; |
touch.PressPoint(10, 10); |
- widget->SendInputEvent(touch); |
- ASSERT_EQ(1u, widget->sink()->message_count()); |
+ widget()->SendInputEvent(touch); |
+ ASSERT_EQ(1u, widget()->sink()->message_count()); |
// Since there's currently no touch-event handling region, the response should |
// be 'no consumer exists'. |
- const IPC::Message* message = widget->sink()->GetMessageAt(0); |
+ const IPC::Message* message = widget()->sink()->GetMessageAt(0); |
EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); |
InputHostMsg_HandleInputEvent_ACK::Param params; |
InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); |
InputEventAckState ack_state = base::get<0>(params).state; |
EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, ack_state); |
- widget->sink()->ClearMessages(); |
+ widget()->sink()->ClearMessages(); |
std::vector<gfx::Rect> rects; |
rects.push_back(gfx::Rect(0, 0, 20, 20)); |
rects.push_back(gfx::Rect(25, 0, 10, 10)); |
- widget->SetTouchRegion(rects); |
+ widget()->SetTouchRegion(rects); |
- widget->SendInputEvent(touch); |
- ASSERT_EQ(1u, widget->sink()->message_count()); |
- message = widget->sink()->GetMessageAt(0); |
+ widget()->SendInputEvent(touch); |
+ ASSERT_EQ(1u, widget()->sink()->message_count()); |
+ message = widget()->sink()->GetMessageAt(0); |
EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); |
InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); |
ack_state = base::get<0>(params).state; |
EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_state); |
- widget->sink()->ClearMessages(); |
+ widget()->sink()->ClearMessages(); |
} |
TEST_F(RenderWidgetUnittest, TouchHitTestMultiplePoints) { |
- scoped_refptr<InteractiveRenderWidget> widget = new InteractiveRenderWidget(); |
std::vector<gfx::Rect> rects; |
rects.push_back(gfx::Rect(0, 0, 20, 20)); |
rects.push_back(gfx::Rect(25, 0, 10, 10)); |
- widget->SetTouchRegion(rects); |
+ widget()->SetTouchRegion(rects); |
SyntheticWebTouchEvent touch; |
touch.PressPoint(25, 25); |
- widget->SendInputEvent(touch); |
- ASSERT_EQ(1u, widget->sink()->message_count()); |
+ widget()->SendInputEvent(touch); |
+ ASSERT_EQ(1u, widget()->sink()->message_count()); |
// Since there's currently no touch-event handling region, the response should |
// be 'no consumer exists'. |
- const IPC::Message* message = widget->sink()->GetMessageAt(0); |
+ const IPC::Message* message = widget()->sink()->GetMessageAt(0); |
EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); |
InputHostMsg_HandleInputEvent_ACK::Param params; |
InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); |
InputEventAckState ack_state = base::get<0>(params).state; |
EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, ack_state); |
- widget->sink()->ClearMessages(); |
+ widget()->sink()->ClearMessages(); |
// Press a second touch point. This time, on a touch-handling region. |
touch.PressPoint(10, 10); |
- widget->SendInputEvent(touch); |
- ASSERT_EQ(1u, widget->sink()->message_count()); |
- message = widget->sink()->GetMessageAt(0); |
+ widget()->SendInputEvent(touch); |
+ ASSERT_EQ(1u, widget()->sink()->message_count()); |
+ message = widget()->sink()->GetMessageAt(0); |
EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); |
InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); |
ack_state = base::get<0>(params).state; |
EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_state); |
- widget->sink()->ClearMessages(); |
+ widget()->sink()->ClearMessages(); |
} |
TEST_F(RenderWidgetUnittest, EventOverscroll) { |
- scoped_refptr<InteractiveRenderWidget> widget = new InteractiveRenderWidget(); |
- widget->set_always_overscroll(true); |
+ widget()->set_always_overscroll(true); |
blink::WebGestureEvent scroll; |
scroll.type = blink::WebInputEvent::GestureScrollUpdate; |
scroll.x = -10; |
scroll.data.scrollUpdate.deltaY = 10; |
- widget->SendInputEvent(scroll); |
+ widget()->SendInputEvent(scroll); |
// Overscroll notifications received while handling an input event should |
// be bundled with the event ack IPC. |
- ASSERT_EQ(1u, widget->sink()->message_count()); |
- const IPC::Message* message = widget->sink()->GetMessageAt(0); |
+ ASSERT_EQ(1u, widget()->sink()->message_count()); |
+ const IPC::Message* message = widget()->sink()->GetMessageAt(0); |
ASSERT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); |
InputHostMsg_HandleInputEvent_ACK::Param params; |
InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); |
@@ -189,18 +192,17 @@ TEST_F(RenderWidgetUnittest, EventOverscroll) { |
EXPECT_EQ(gfx::Vector2dF(0, 10), ack.overscroll->latest_overscroll_delta); |
EXPECT_EQ(gfx::Vector2dF(), ack.overscroll->current_fling_velocity); |
EXPECT_EQ(gfx::PointF(-10, 0), ack.overscroll->causal_event_viewport_point); |
- widget->sink()->ClearMessages(); |
+ widget()->sink()->ClearMessages(); |
} |
TEST_F(RenderWidgetUnittest, FlingOverscroll) { |
- scoped_refptr<InteractiveRenderWidget> widget = new InteractiveRenderWidget(); |
- |
// Overscroll notifications received outside of handling an input event should |
// be sent as a separate IPC. |
- widget->didOverscroll(blink::WebFloatSize(10, 5), blink::WebFloatSize(5, 5), |
- blink::WebFloatPoint(1, 1), blink::WebFloatSize(10, 5)); |
- ASSERT_EQ(1u, widget->sink()->message_count()); |
- const IPC::Message* message = widget->sink()->GetMessageAt(0); |
+ widget()->didOverscroll(blink::WebFloatSize(10, 5), blink::WebFloatSize(5, 5), |
+ blink::WebFloatPoint(1, 1), |
+ blink::WebFloatSize(10, 5)); |
+ ASSERT_EQ(1u, widget()->sink()->message_count()); |
+ const IPC::Message* message = widget()->sink()->GetMessageAt(0); |
ASSERT_EQ(InputHostMsg_DidOverscroll::ID, message->type()); |
InputHostMsg_DidOverscroll::Param params; |
InputHostMsg_DidOverscroll::Read(message, ¶ms); |
@@ -209,7 +211,7 @@ TEST_F(RenderWidgetUnittest, FlingOverscroll) { |
EXPECT_EQ(gfx::Vector2dF(5, 5), overscroll.accumulated_overscroll); |
EXPECT_EQ(gfx::PointF(1, 1), overscroll.causal_event_viewport_point); |
EXPECT_EQ(gfx::Vector2dF(-10, -5), overscroll.current_fling_velocity); |
- widget->sink()->ClearMessages(); |
+ widget()->sink()->ClearMessages(); |
} |
} // namespace content |