Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / browser / renderer_host / input / touch_input_browsertest.cc
index 4889b49..3a9f2fd 100644 (file)
@@ -5,6 +5,7 @@
 #include "base/auto_reset.h"
 #include "base/command_line.h"
 #include "base/run_loop.h"
+#include "content/browser/gpu/compositor_util.h"
 #include "content/browser/renderer_host/render_widget_host_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/common/input/synthetic_web_input_event_builders.h"
@@ -13,9 +14,9 @@
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/render_widget_host_view.h"
 #include "content/public/common/content_switches.h"
+#include "content/public/test/content_browser_test.h"
+#include "content/public/test/content_browser_test_utils.h"
 #include "content/shell/browser/shell.h"
-#include "content/test/content_browser_test.h"
-#include "content/test/content_browser_test_utils.h"
 #include "third_party/WebKit/public/web/WebInputEvent.h"
 #include "ui/events/event_switches.h"
 #include "ui/events/latency_info.h"
@@ -82,7 +83,8 @@ namespace content {
 class InputEventMessageFilter : public BrowserMessageFilter {
  public:
   InputEventMessageFilter()
-      : type_(WebInputEvent::Undefined),
+      : BrowserMessageFilter(InputMsgStart),
+        type_(WebInputEvent::Undefined),
         state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {}
 
   void WaitForAck(WebInputEvent::Type type) {
@@ -95,7 +97,7 @@ class InputEventMessageFilter : public BrowserMessageFilter {
   InputEventAckState last_ack_state() const { return state_; }
 
  protected:
-  virtual ~InputEventMessageFilter() {}
+  ~InputEventMessageFilter() override {}
 
  private:
   void ReceivedEventAck(WebInputEvent::Type type, InputEventAckState state) {
@@ -106,13 +108,12 @@ class InputEventMessageFilter : public BrowserMessageFilter {
   }
 
   // BrowserMessageFilter:
-  virtual bool OnMessageReceived(const IPC::Message& message,
-                                 bool* message_was_ok) OVERRIDE {
+  bool OnMessageReceived(const IPC::Message& message) override {
     if (message.type() == InputHostMsg_HandleInputEvent_ACK::ID) {
-      ui::LatencyInfo latency;
-      WebInputEvent::Type type = WebInputEvent::Undefined;
-      InputEventAckState ack = INPUT_EVENT_ACK_STATE_UNKNOWN;
-      InputHostMsg_HandleInputEvent_ACK::Read(&message, &type, &ack, &latency);
+      InputHostMsg_HandleInputEvent_ACK::Param params;
+      InputHostMsg_HandleInputEvent_ACK::Read(&message, &params);
+      WebInputEvent::Type type = params.a.type;
+      InputEventAckState ack = params.a.state;
       BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
           base::Bind(&InputEventMessageFilter::ReceivedEventAck,
                      this, type, ack));
@@ -127,11 +128,10 @@ class InputEventMessageFilter : public BrowserMessageFilter {
   DISALLOW_COPY_AND_ASSIGN(InputEventMessageFilter);
 };
 
-class TouchInputBrowserTest : public ContentBrowserTest,
-                              public testing::WithParamInterface<std::string> {
+class TouchInputBrowserTest : public ContentBrowserTest {
  public:
   TouchInputBrowserTest() {}
-  virtual ~TouchInputBrowserTest() {}
+  ~TouchInputBrowserTest() override {}
 
   RenderWidgetHostImpl* GetWidgetHost() {
     return RenderWidgetHostImpl::From(shell()->web_contents()->
@@ -156,27 +156,24 @@ class TouchInputBrowserTest : public ContentBrowserTest,
       GiveItSomeTime();
 
     filter_ = new InputEventMessageFilter();
-    host->GetProcess()->AddFilter(filter_);
+    host->GetProcess()->AddFilter(filter_.get());
   }
 
-  virtual void SetUpCommandLine(CommandLine* cmd) OVERRIDE {
+  void SetUpCommandLine(CommandLine* cmd) override {
     cmd->AppendSwitchASCII(switches::kTouchEvents,
                            switches::kTouchEventsEnabled);
-    cmd->AppendSwitch(GetParam());
   }
 
   scoped_refptr<InputEventMessageFilter> filter_;
 };
 
-// Touch input event tests don't work on Mac with the legacy software renderer.
-// These can be enabled when software compositing is enabled.
-// http://crbug.com/268038
 #if defined(OS_MACOSX)
+// TODO(ccameron): Failing on mac: crbug.com/346363
 #define MAYBE_TouchNoHandler DISABLED_TouchNoHandler
 #else
 #define MAYBE_TouchNoHandler TouchNoHandler
 #endif
-IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
+IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
   LoadURLAndAddFilter();
   SyntheticWebTouchEvent touch;
 
@@ -186,14 +183,8 @@ IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
   GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
   filter()->WaitForAck(WebInputEvent::TouchStart);
 
-  if (GetParam() == std::string(switches::kEnableThreadedCompositing)) {
-    EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
-              filter()->last_ack_state());
-  } else {
-    // http://crbug.com/326232: This should be NO_CONSUMER_EXISTS once
-    // WebViewImpl::hasTouchEventHandlersAt() is implemented.
-    EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, filter()->last_ack_state());
-  }
+  EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
+            filter()->last_ack_state());
 
   // If a touch-press is acked with NO_CONSUMER_EXISTS, then subsequent
   // touch-points don't need to be dispatched until the touch point is released.
@@ -202,15 +193,7 @@ IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
   touch.ResetPoints();
 }
 
-// Touch input event tests don't work on Mac with the legacy software renderer.
-// These can be enabled when software compositing is enabled.
-// http://crbug.com/268038
-#if defined(OS_MACOSX)
-#define MAYBE_TouchHandlerNoConsume DISABLED_TouchHandlerNoConsume
-#else
-#define MAYBE_TouchHandlerNoConsume TouchHandlerNoConsume
-#endif
-IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchHandlerNoConsume) {
+IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, TouchHandlerNoConsume) {
   LoadURLAndAddFilter();
   SyntheticWebTouchEvent touch;
 
@@ -227,15 +210,7 @@ IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchHandlerNoConsume) {
   touch.ResetPoints();
 }
 
-// Touch input event tests don't work on Mac with the legacy software renderer.
-// These can be enabled when software compositing is enabled.
-// http://crbug.com/268038
-#if defined(OS_MACOSX)
-#define MAYBE_TouchHandlerConsume DISABLED_TouchHandlerConsume
-#else
-#define MAYBE_TouchHandlerConsume TouchHandlerConsume
-#endif
-IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchHandlerConsume) {
+IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, TouchHandlerConsume) {
   LoadURLAndAddFilter();
   SyntheticWebTouchEvent touch;
 
@@ -251,15 +226,13 @@ IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_TouchHandlerConsume) {
   filter()->WaitForAck(WebInputEvent::TouchEnd);
 }
 
-// Touch input event tests don't work on Mac with the legacy software renderer.
-// These can be enabled when software compositing is enabled.
-// http://crbug.com/268038
 #if defined(OS_MACOSX)
+// TODO(ccameron): Failing on mac: crbug.com/346363
 #define MAYBE_MultiPointTouchPress DISABLED_MultiPointTouchPress
 #else
 #define MAYBE_MultiPointTouchPress MultiPointTouchPress
 #endif
-IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_MultiPointTouchPress) {
+IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_MultiPointTouchPress) {
   LoadURLAndAddFilter();
   SyntheticWebTouchEvent touch;
 
@@ -268,14 +241,8 @@ IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_MultiPointTouchPress) {
   touch.PressPoint(25, 25);
   GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
   filter()->WaitForAck(WebInputEvent::TouchStart);
-  if (GetParam() == std::string(switches::kEnableThreadedCompositing)) {
-    EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
-              filter()->last_ack_state());
-  } else {
-    // http://crbug.com/326232: This should be NO_CONSUMER_EXISTS once
-    // WebViewImpl::hasTouchEventHandlersAt() is implemented.
-    EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, filter()->last_ack_state());
-  }
+  EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
+            filter()->last_ack_state());
 
   touch.PressPoint(25, 125);
   GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
@@ -283,12 +250,4 @@ IN_PROC_BROWSER_TEST_P(TouchInputBrowserTest, MAYBE_MultiPointTouchPress) {
   EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, filter()->last_ack_state());
 }
 
-INSTANTIATE_TEST_CASE_P(WithoutInputHandlerProxy, TouchInputBrowserTest,
-    ::testing::Values(std::string(switches::kDisableThreadedCompositing)));
-
-#if !defined(OS_MACOSX)
-INSTANTIATE_TEST_CASE_P(WithInputHandlerProxy, TouchInputBrowserTest,
-    ::testing::Values(std::string(switches::kEnableThreadedCompositing)));
-#endif
-
 }  // namespace content