summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-21 04:36:15 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-21 04:36:15 +0000
commitb59dc438a7417bbe89f1c8e88a655e737283392f (patch)
tree01b9cd48d325efd26ea3798e9428c31a237bbfad
parent28463e89cc3824b2f3af6c9cf545d153293d0430 (diff)
downloadchromium_src-b59dc438a7417bbe89f1c8e88a655e737283392f.zip
chromium_src-b59dc438a7417bbe89f1c8e88a655e737283392f.tar.gz
chromium_src-b59dc438a7417bbe89f1c8e88a655e737283392f.tar.bz2
DevTools: support Input.dispatchGestureEvent for automation.
Review URL: https://chromiumcodereview.appspot.com/22929013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218645 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/devtools/devtools_protocol_constants.cc11
-rw-r--r--content/browser/devtools/devtools_protocol_constants.h9
-rw-r--r--content/browser/devtools/renderer_overrides_handler.cc87
-rw-r--r--content/browser/devtools/renderer_overrides_handler.h2
4 files changed, 105 insertions, 4 deletions
diff --git a/content/browser/devtools/devtools_protocol_constants.cc b/content/browser/devtools/devtools_protocol_constants.cc
index cf495e1..b25c5c8 100644
--- a/content/browser/devtools/devtools_protocol_constants.cc
+++ b/content/browser/devtools/devtools_protocol_constants.cc
@@ -22,15 +22,22 @@ const char kParamType[] = "type";
const char kParamModifiers[] = "modifiers";
const char kParamTimestamp[] = "timestamp";
const char kParamDeviceSpace[] = "deviceSpace";
+const char kParamX[] = "x";
+const char kParamY[] = "y";
namespace dispatchMouseEvent {
const char kName[] = "Input.dispatchMouseEvent";
- const char kParamX[] = "x";
- const char kParamY[] = "y";
const char kParamButton[] = "button";
const char kParamClickCount[] = "clickCount";
} // dispatchMouseEvent
+namespace dispatchGestureEvent {
+ const char kName[] = "Input.dispatchGestureEvent";
+ const char kParamDeltaX[] = "deltaX";
+ const char kParamDeltaY[] = "deltaY";
+ const char kParamPinchScale[] = "pinchScale";
+} // dispatchGestureEvent
+
} // Input
namespace Inspector {
diff --git a/content/browser/devtools/devtools_protocol_constants.h b/content/browser/devtools/devtools_protocol_constants.h
index 6b96ca5..7d06add 100644
--- a/content/browser/devtools/devtools_protocol_constants.h
+++ b/content/browser/devtools/devtools_protocol_constants.h
@@ -29,6 +29,8 @@ namespace Input {
extern const char kParamModifiers[];
extern const char kParamTimestamp[];
extern const char kParamDeviceSpace[];
+ extern const char kParamX[];
+ extern const char kParamY[];
namespace dispatchMouseEvent {
extern const char kName[];
@@ -38,6 +40,13 @@ namespace Input {
extern const char kParamClickCount[];
} // dispatchMouseEvent
+ namespace dispatchGestureEvent {
+ extern const char kName[];
+ extern const char kParamDeltaX[];
+ extern const char kParamDeltaY[];
+ extern const char kParamPinchScale[];
+ } // dispatchGestureEvent
+
} // Input
namespace Inspector {
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc
index 3b75e98..3e9ffc3 100644
--- a/content/browser/devtools/renderer_overrides_handler.cc
+++ b/content/browser/devtools/renderer_overrides_handler.cc
@@ -17,6 +17,7 @@
#include "content/browser/devtools/devtools_tracing_handler.h"
#include "content/browser/renderer_host/dip_util.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
+#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/port/browser/render_widget_host_view_port.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/devtools_agent_host.h"
@@ -134,6 +135,11 @@ RendererOverridesHandler::RendererOverridesHandler(DevToolsAgentHost* agent)
base::Bind(
&RendererOverridesHandler::InputDispatchMouseEvent,
base::Unretained(this)));
+ RegisterCommandHandler(
+ devtools::Input::dispatchGestureEvent::kName,
+ base::Bind(
+ &RendererOverridesHandler::InputDispatchGestureEvent,
+ base::Unretained(this)));
}
RendererOverridesHandler::~RendererOverridesHandler() {}
@@ -424,8 +430,8 @@ RendererOverridesHandler::InputDispatchMouseEvent(
int x;
int y;
- if (!params->GetInteger(devtools::Input::dispatchMouseEvent::kParamX, &x) ||
- !params->GetInteger(devtools::Input::dispatchMouseEvent::kParamY, &y)) {
+ if (!params->GetInteger(devtools::Input::kParamX, &x) ||
+ !params->GetInteger(devtools::Input::kParamY, &y)) {
return NULL;
}
@@ -463,7 +469,84 @@ RendererOverridesHandler::InputDispatchMouseEvent(
}
host->ForwardMouseEvent(mouse_event);
+ return command->SuccessResponse(NULL);
+}
+
+scoped_refptr<DevToolsProtocol::Response>
+RendererOverridesHandler::InputDispatchGestureEvent(
+ scoped_refptr<DevToolsProtocol::Command> command) {
+ base::DictionaryValue* params = command->params();
+ if (!params)
+ return NULL;
+
+ RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>(
+ agent_->GetRenderViewHost());
+ WebKit::WebGestureEvent event;
+ ParseGenericInputParams(params, &event);
+
+ std::string type;
+ if (params->GetString(devtools::Input::kParamType,
+ &type)) {
+ if (type == "scrollBegin")
+ event.type = WebInputEvent::GestureScrollBegin;
+ else if (type == "scrollUpdate")
+ event.type = WebInputEvent::GestureScrollUpdate;
+ else if (type == "scrollEnd")
+ event.type = WebInputEvent::GestureScrollEnd;
+ else if (type == "tapDown")
+ event.type = WebInputEvent::GestureTapDown;
+ else if (type == "tap")
+ event.type = WebInputEvent::GestureTap;
+ else if (type == "pinchBegin")
+ event.type = WebInputEvent::GesturePinchBegin;
+ else if (type == "pinchUpdate")
+ event.type = WebInputEvent::GesturePinchUpdate;
+ else if (type == "pinchEnd")
+ event.type = WebInputEvent::GesturePinchEnd;
+ else
+ return NULL;
+ } else {
+ return NULL;
+ }
+
+ float device_scale_factor = ui::GetScaleFactorScale(
+ GetScaleFactorForView(host->GetView()));
+
+ int x;
+ int y;
+ if (!params->GetInteger(devtools::Input::kParamX, &x) ||
+ !params->GetInteger(devtools::Input::kParamY, &y)) {
+ return NULL;
+ }
+ event.x = floor(x / device_scale_factor);
+ event.y = floor(y / device_scale_factor);
+ event.globalX = event.x;
+ event.globalY = event.y;
+
+ if (type == "scrollUpdate") {
+ int dx;
+ int dy;
+ if (!params->GetInteger(
+ devtools::Input::dispatchGestureEvent::kParamDeltaX, &dx) ||
+ !params->GetInteger(
+ devtools::Input::dispatchGestureEvent::kParamDeltaY, &dy)) {
+ return NULL;
+ }
+ event.data.scrollUpdate.deltaX = floor(dx / device_scale_factor);
+ event.data.scrollUpdate.deltaY = floor(dy / device_scale_factor);
+ }
+
+ if (type == "pinchUpdate") {
+ double scale;
+ if (!params->GetDouble(
+ devtools::Input::dispatchGestureEvent::kParamPinchScale,
+ &scale)) {
+ return NULL;
+ }
+ event.data.pinchUpdate.scale = static_cast<float>(scale);
+ }
+ host->ForwardGestureEvent(event);
return command->SuccessResponse(NULL);
}
diff --git a/content/browser/devtools/renderer_overrides_handler.h b/content/browser/devtools/renderer_overrides_handler.h
index d131a5f..d369ccd 100644
--- a/content/browser/devtools/renderer_overrides_handler.h
+++ b/content/browser/devtools/renderer_overrides_handler.h
@@ -61,6 +61,8 @@ class RendererOverridesHandler : public DevToolsProtocol::Handler {
// Input domain.
scoped_refptr<DevToolsProtocol::Response> InputDispatchMouseEvent(
scoped_refptr<DevToolsProtocol::Command> command);
+ scoped_refptr<DevToolsProtocol::Response> InputDispatchGestureEvent(
+ scoped_refptr<DevToolsProtocol::Command> command);
DevToolsAgentHost* agent_;
base::WeakPtrFactory<RendererOverridesHandler> weak_factory_;