Commit 8ba70513 authored by ericu@chromium.org's avatar ericu@chromium.org

Revert 271026 "[DevTools] Interactive test for DevTools touch em..."

This closed the tree: http://build.chromium.org/p/chromium.linux/builders/Linux%20Tests/builds/11008/steps/interactive_ui_tests/logs/stdio

> [DevTools] Interactive test for DevTools touch emulation.
> 
> BUG=337142
> 
> Review URL: https://codereview.chromium.org/249613002

TBR=dgozman@chromium.org

Review URL: https://codereview.chromium.org/287153007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271032 0039d316-1c4b-4281-b951-d872f2087c98
parent 59b1fa09
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/compiler_specific.h"
#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/interactive_test_utils.h"
#include "content/public/browser/devtools_manager.h"
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
using content::RenderViewHost;
using content::WebContents;
namespace {
const char kTouchEmulationPage[] = "files/devtools/touch_emulation.html";
} // namespace
class DevToolsInteractiveTest : public InProcessBrowserTest {
public:
DevToolsInteractiveTest()
: devtools_window_(NULL) {}
protected:
void LoadTestPage(const std::string& test_page) {
GURL url = test_server()->GetURL(test_page);
ui_test_utils::NavigateToURL(browser(), url);
}
void OpenDevToolsWindow(const std::string& test_page, bool is_docked) {
ASSERT_TRUE(test_server()->Start());
LoadTestPage(test_page);
devtools_window_ = DevToolsWindow::OpenDevToolsWindowForTest(
GetInspectedTab()->GetRenderViewHost(), is_docked);
ui_test_utils::WaitUntilDevToolsWindowLoaded(devtools_window_);
}
WebContents* GetInspectedTab() {
return browser()->tab_strip_model()->GetWebContentsAt(0);
}
void CloseDevToolsWindow() {
content::DevToolsManager* devtools_manager =
content::DevToolsManager::GetInstance();
content::WindowedNotificationObserver close_observer(
content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<content::WebContents>(
devtools_window_->web_contents()));
devtools_manager->CloseAllClientHosts();
close_observer.Wait();
}
DevToolsWindow* devtools_window_;
};
// SendMouseMoseSync only reliably works on Linux.
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
#define MAYBE_TouchEmulation TouchEmulation
#else
#define MAYBE_TouchEmulation DISABLED_TouchEmulation
#endif
IN_PROC_BROWSER_TEST_F(DevToolsInteractiveTest, MAYBE_TouchEmulation) {
OpenDevToolsWindow(kTouchEmulationPage, false);
ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
std::string result;
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
devtools_window_->web_contents()->GetRenderViewHost(),
"uiTests.runTest('enableTouchEmulation')",
&result));
EXPECT_EQ("[OK]", result);
// Clear dirty events before touch emulation.
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"getEventNames(0)",
&result));
gfx::Rect bounds = GetInspectedTab()->GetContainerBounds();
gfx::Point position = bounds.origin();
// Simple touch sequence.
position.Offset(10, 10);
ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(position));
ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(
ui_controls::LEFT, ui_controls::DOWN));
position.Offset(30, 0);
ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(position));
ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(
ui_controls::LEFT, ui_controls::UP));
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"getEventNames(3)",
&result));
EXPECT_EQ("touchstart touchmove touchend", result);
// If mouse is not pressed - no touches.
position.Offset(-30, 0);
ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(position));
position.Offset(30, 0);
ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(position));
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"getEventNames(0)",
&result));
EXPECT_EQ("", result);
// Don't prevent default to get click sequence.
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"preventDefault = false; window.domAutomationController.send('OK')",
&result));
// Click.
ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(
ui_controls::LEFT, ui_controls::DOWN));
ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(
ui_controls::LEFT, ui_controls::UP));
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"getEventNames(6)",
&result));
EXPECT_EQ(
"touchstart touchend mousemove mousedown mouseup click",
result);
CloseDevToolsWindow();
// Touch emulation is off - mouse events should come.
position.Offset(-30, 0);
ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(position));
position.Offset(30, 0);
ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(position));
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"getEventNames(2)",
&result));
EXPECT_EQ("mousemove mousemove", result);
// Ensure no extra events.
base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(200));
content::RunAllPendingInMessageLoop();
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
GetInspectedTab()->GetRenderViewHost(),
"getEventNames(0)",
&result));
EXPECT_EQ("", result);
}
......@@ -56,7 +56,6 @@
'browser/apps/web_view_interactive_browsertest.cc',
'browser/autofill/autofill_interactive_uitest.cc',
'browser/browser_keyevents_browsertest.cc',
'browser/devtools/devtools_interactive_uitest.cc',
'browser/extensions/api/extension_action/browser_action_interactive_test.cc',
'browser/extensions/api/omnibox/omnibox_api_interactive_test.cc',
'browser/extensions/api/tabs/tabs_interactive_test.cc',
......
<head>
<style>
div {
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<div></div>
<script>
var events = [];
var expectedEventsCount = null;
// Prevent default to disable gestures.
var preventDefault = true;
function maybeSendEvents() {
if (expectedEventsCount === null)
return;
if (events.length < expectedEventsCount)
return;
var result = events.join(" ");
events = [];
expectedEventsCount = null;
window.domAutomationController.send(result);
}
function getEventNames(count) {
expectedEventsCount = count;
maybeSendEvents();
}
function onEvent(name, event) {
events.push(name);
if (preventDefault)
event.preventDefault();
setTimeout(maybeSendEvents, 0);
}
var names = [
"touchstart",
"touchmove",
"touchend",
"touchcancel",
"mousedown",
"mouseup",
"mousemove",
"click"
];
for (var i = 0; i < names.length; ++i) {
document.querySelector("div").addEventListener(
names[i],
onEvent.bind(null, names[i]),
false);
}
</script>
</body>
\ No newline at end of file
......@@ -131,8 +131,7 @@ bool TouchEmulator::HandleMouseEvent(const WebMouseEvent& mouse_event) {
if (mouse_event.button != WebMouseEvent::ButtonLeft)
return true;
if (mouse_event.type == WebInputEvent::MouseMove &&
mouse_event.timeStampSeconds) {
if (mouse_event.type == WebInputEvent::MouseMove) {
if (last_mouse_event_was_move_ &&
mouse_event.timeStampSeconds < last_mouse_move_timestamp_ +
kMouseMoveDropIntervalSeconds)
......@@ -317,7 +316,7 @@ void TouchEmulator::PinchEnd(const WebGestureEvent& event) {
client_->ForwardGestureEvent(pinch_event_);
}
void TouchEmulator::FillPinchEvent(const WebGestureEvent& event) {
void TouchEmulator::FillPinchEvent(const WebInputEvent& event) {
pinch_event_.timeStampSeconds = event.timeStampSeconds;
pinch_event_.modifiers = event.modifiers;
pinch_event_.sourceDevice = blink::WebGestureEvent::Touchscreen;
......@@ -363,12 +362,6 @@ bool TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) {
WebTouchEventTraits::ResetTypeAndTouchStates(
eventType, mouse_event.timeStampSeconds, &touch_event_);
if (!touch_event_.timeStampSeconds) {
// Gesture detector does not tolerate null timestamps generated in tests.
touch_event_.timeStampSeconds =
(base::TimeTicks::Now() - base::TimeTicks()).InSecondsF();
}
WebTouchPoint& point = touch_event_.touches[0];
point.id = 0;
point.radiusX = point.radiusY = 1.f;
......
......@@ -48,7 +48,7 @@ class CONTENT_EXPORT TouchEmulator : public ui::GestureProviderClient {
bool InPinchGestureMode() const;
bool FillTouchEventAndPoint(const blink::WebMouseEvent& mouse_event);
void FillPinchEvent(const blink::WebGestureEvent& event);
void FillPinchEvent(const blink::WebInputEvent& event);
// The following methods generate and pass gesture events to the renderer.
void PinchBegin(const blink::WebGestureEvent& event);
......
......@@ -551,7 +551,6 @@ bool GestureProvider::OnTouchEvent(const MotionEvent& event) {
"action", GetMotionEventActionName(event.GetAction()));
DCHECK_NE(0u, event.GetPointerCount());
DCHECK(!event.GetEventTime().is_null());
if (!CanHandle(event))
return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment