Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: content/browser/renderer_host/input/touch_input_browsertest.cc

Issue 1631963002: Plumb firing passive event listeners. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_wheel_passive_listeners_2a
Patch Set: Fix windows build Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/input/touch_input_browsertest.cc
diff --git a/content/browser/renderer_host/input/touch_input_browsertest.cc b/content/browser/renderer_host/input/touch_input_browsertest.cc
index 2c68ac71ac2cc8cce45edd39e47f20b7602279c3..6ee737ae4a3c9c66733b17d295a3fdc8d8e8311c 100644
--- a/content/browser/renderer_host/input/touch_input_browsertest.cc
+++ b/content/browser/renderer_host/input/touch_input_browsertest.cc
@@ -19,6 +19,7 @@
#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/browser_test_utils.h"
#include "content/public/test/content_browser_test.h"
#include "content/public/test/content_browser_test_utils.h"
#include "content/shell/browser/shell.h"
@@ -88,54 +89,6 @@ const char kTouchEventDataURL[] =
namespace content {
-class InputEventMessageFilter : public BrowserMessageFilter {
- public:
- InputEventMessageFilter()
- : BrowserMessageFilter(InputMsgStart),
- type_(WebInputEvent::Undefined),
- state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {}
-
- void WaitForAck(WebInputEvent::Type type) {
- base::RunLoop run_loop;
- base::AutoReset<base::Closure> reset_quit(&quit_, run_loop.QuitClosure());
- base::AutoReset<WebInputEvent::Type> reset_type(&type_, type);
- run_loop.Run();
- }
-
- InputEventAckState last_ack_state() const { return state_; }
-
- protected:
- ~InputEventMessageFilter() override {}
-
- private:
- void ReceivedEventAck(WebInputEvent::Type type, InputEventAckState state) {
- if (type_ == type) {
- state_ = state;
- quit_.Run();
- }
- }
-
- // BrowserMessageFilter:
- bool OnMessageReceived(const IPC::Message& message) override {
- if (message.type() == InputHostMsg_HandleInputEvent_ACK::ID) {
- InputHostMsg_HandleInputEvent_ACK::Param params;
- InputHostMsg_HandleInputEvent_ACK::Read(&message, &params);
- WebInputEvent::Type type = base::get<0>(params).type;
- InputEventAckState ack = base::get<0>(params).state;
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&InputEventMessageFilter::ReceivedEventAck,
- this, type, ack));
- }
- return false;
- }
-
- base::Closure quit_;
- WebInputEvent::Type type_;
- InputEventAckState state_;
-
- DISALLOW_COPY_AND_ASSIGN(InputEventMessageFilter);
-};
-
class TouchInputBrowserTest : public ContentBrowserTest {
public:
TouchInputBrowserTest() {}
@@ -146,33 +99,27 @@ class TouchInputBrowserTest : public ContentBrowserTest {
shell()->web_contents()->GetRenderViewHost()->GetWidget());
}
- InputEventMessageFilter* filter() { return filter_.get(); }
+ scoped_refptr<InputMsgWatcher> AddFilter(blink::WebInputEvent::Type type) {
+ return new InputMsgWatcher(GetWidgetHost(), type);
+ }
protected:
- void LoadURLAndAddFilter() {
+ void LoadURL() {
const GURL data_url(kTouchEventDataURL);
NavigateToURL(shell(), data_url);
- WebContentsImpl* web_contents =
- static_cast<WebContentsImpl*>(shell()->web_contents());
- RenderWidgetHostImpl* host = RenderWidgetHostImpl::From(
- web_contents->GetRenderViewHost()->GetWidget());
+ RenderWidgetHostImpl* host = GetWidgetHost();
host->GetView()->SetSize(gfx::Size(400, 400));
// The page is loaded in the renderer, wait for a new frame to arrive.
while (!host->ScheduleComposite())
GiveItSomeTime();
-
- filter_ = new InputEventMessageFilter();
- host->GetProcess()->AddFilter(filter_.get());
}
void SetUpCommandLine(base::CommandLine* cmd) override {
cmd->AppendSwitchASCII(switches::kTouchEvents,
switches::kTouchEventsEnabled);
}
-
- scoped_refptr<InputEventMessageFilter> filter_;
};
#if defined(OS_MACOSX)
@@ -182,17 +129,16 @@ class TouchInputBrowserTest : public ContentBrowserTest {
#define MAYBE_TouchNoHandler TouchNoHandler
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
- LoadURLAndAddFilter();
+ LoadURL();
SyntheticWebTouchEvent touch;
// A press on |first| should be acked with NO_CONSUMER_EXISTS since there is
// no touch-handler on it.
touch.PressPoint(25, 25);
+ scoped_refptr<InputMsgWatcher> filter = AddFilter(WebInputEvent::TouchStart);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchStart);
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
- filter()->last_ack_state());
+ EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, filter->Wait());
// 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.
@@ -208,20 +154,21 @@ IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
#define MAYBE_TouchHandlerNoConsume TouchHandlerNoConsume
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerNoConsume) {
- LoadURLAndAddFilter();
+ LoadURL();
SyntheticWebTouchEvent touch;
// Press on |second| should be acked with NOT_CONSUMED since there is a
// touch-handler on |second|, but it doesn't consume the event.
touch.PressPoint(125, 25);
+ scoped_refptr<InputMsgWatcher> filter = AddFilter(WebInputEvent::TouchStart);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchStart);
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, filter()->last_ack_state());
+ EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, filter->Wait());
+ filter = AddFilter(WebInputEvent::TouchEnd);
touch.ReleasePoint(0);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchEnd);
touch.ResetPoints();
+ filter->Wait();
}
#if defined(OS_CHROMEOS)
@@ -231,19 +178,20 @@ IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerNoConsume) {
#define MAYBE_TouchHandlerConsume TouchHandlerConsume
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerConsume) {
- LoadURLAndAddFilter();
+ LoadURL();
SyntheticWebTouchEvent touch;
// Press on |third| should be acked with CONSUMED since the touch-handler on
// |third| consimes the event.
touch.PressPoint(25, 125);
+ scoped_refptr<InputMsgWatcher> filter = AddFilter(WebInputEvent::TouchStart);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchStart);
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, filter()->last_ack_state());
+ EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, filter->Wait());
touch.ReleasePoint(0);
+ filter = AddFilter(WebInputEvent::TouchEnd);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchEnd);
+ filter->Wait();
}
#if defined(OS_CHROMEOS)
@@ -256,21 +204,20 @@ IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerConsume) {
#define MAYBE_MultiPointTouchPress MultiPointTouchPress
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_MultiPointTouchPress) {
- LoadURLAndAddFilter();
+ LoadURL();
SyntheticWebTouchEvent touch;
// Press on |first|, which sould be acked with NO_CONSUMER_EXISTS. Then press
// on |third|. That point should be acked with CONSUMED.
touch.PressPoint(25, 25);
+ scoped_refptr<InputMsgWatcher> filter = AddFilter(WebInputEvent::TouchStart);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchStart);
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
- filter()->last_ack_state());
+ EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, filter->Wait());
touch.PressPoint(25, 125);
+ filter = AddFilter(WebInputEvent::TouchStart);
GetWidgetHost()->ForwardTouchEventWithLatencyInfo(touch, ui::LatencyInfo());
- filter()->WaitForAck(WebInputEvent::TouchStart);
- EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, filter()->last_ack_state());
+ EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, filter->Wait());
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698