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

Unified Diff: content/browser/devtools/renderer_overrides_handler.cc

Issue 607913004: Revert of DevTools: Protocol handler generator for content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « content/browser/devtools/renderer_overrides_handler.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/renderer_overrides_handler.cc
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc
index 941a30a40f20fd0bada733d2bab2754ddc7c62ba..8ef5323bda611a29f43146f2c83f7d93f884d6d3 100644
--- a/content/browser/devtools/renderer_overrides_handler.cc
+++ b/content/browser/devtools/renderer_overrides_handler.cc
@@ -135,6 +135,11 @@
&RendererOverridesHandler::PageNavigateToHistoryEntry,
base::Unretained(this)));
RegisterCommandHandler(
+ devtools::Page::captureScreenshot::kName,
+ base::Bind(
+ &RendererOverridesHandler::PageCaptureScreenshot,
+ base::Unretained(this)));
+ RegisterCommandHandler(
devtools::Page::setTouchEmulationEnabled::kName,
base::Bind(
&RendererOverridesHandler::PageSetTouchEmulationEnabled,
@@ -168,6 +173,11 @@
devtools::Page::setColorPickerEnabled::kName,
base::Bind(
&RendererOverridesHandler::PageSetColorPickerEnabled,
+ base::Unretained(this)));
+ RegisterCommandHandler(
+ devtools::Input::emulateTouchFromMouseEvent::kName,
+ base::Bind(
+ &RendererOverridesHandler::InputEmulateTouchFromMouseEvent,
base::Unretained(this)));
mouse_event_callback_ = base::Bind(
&RendererOverridesHandler::HandleMouseEvent,
@@ -508,6 +518,40 @@
}
scoped_refptr<DevToolsProtocol::Response>
+RendererOverridesHandler::PageCaptureScreenshot(
+ scoped_refptr<DevToolsProtocol::Command> command) {
+ if (!host_ || !host_->GetView())
+ return command->InternalErrorResponse("Could not connect to view");
+
+ host_->GetSnapshotFromBrowser(
+ base::Bind(&RendererOverridesHandler::ScreenshotCaptured,
+ weak_factory_.GetWeakPtr(), command));
+ return command->AsyncResponsePromise();
+}
+
+void RendererOverridesHandler::ScreenshotCaptured(
+ scoped_refptr<DevToolsProtocol::Command> command,
+ const unsigned char* png_data,
+ size_t png_size) {
+ if (!png_data || !png_size) {
+ SendAsyncResponse(
+ command->InternalErrorResponse("Unable to capture screenshot"));
+ return;
+ }
+
+ std::string base_64_data;
+ base::Base64Encode(
+ base::StringPiece(reinterpret_cast<const char*>(png_data), png_size),
+ &base_64_data);
+
+ base::DictionaryValue* response = new base::DictionaryValue();
+ response->SetString(devtools::Page::screencastFrame::kParamData,
+ base_64_data);
+
+ SendAsyncResponse(command->SuccessResponse(response));
+}
+
+scoped_refptr<DevToolsProtocol::Response>
RendererOverridesHandler::PageSetTouchEmulationEnabled(
scoped_refptr<DevToolsProtocol::Command> command) {
base::DictionaryValue* params = command->params();
@@ -1145,6 +1189,137 @@
host_->SetCursor(cursor);
}
+// Input agent handlers ------------------------------------------------------
+
+scoped_refptr<DevToolsProtocol::Response>
+RendererOverridesHandler::InputEmulateTouchFromMouseEvent(
+ scoped_refptr<DevToolsProtocol::Command> command) {
+ if (!screencast_command_.get())
+ return command->InternalErrorResponse("Screencast should be turned on");
+
+ base::DictionaryValue* params = command->params();
+ if (!params)
+ return command->NoSuchMethodErrorResponse();
+
+ std::string type;
+ if (!params->GetString(
+ devtools::Input::emulateTouchFromMouseEvent::kParamType,
+ &type)) {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamType);
+ }
+
+ blink::WebMouseWheelEvent wheel_event;
+ blink::WebMouseEvent mouse_event;
+ blink::WebMouseEvent* event = &mouse_event;
+
+ if (type ==
+ devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMousePressed) {
+ event->type = WebInputEvent::MouseDown;
+ } else if (type ==
+ devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMouseReleased) {
+ event->type = WebInputEvent::MouseUp;
+ } else if (type ==
+ devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMouseMoved) {
+ event->type = WebInputEvent::MouseMove;
+ } else if (type ==
+ devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMouseWheel) {
+ double deltaX = 0;
+ double deltaY = 0;
+ if (!params->GetDouble(
+ devtools::Input::emulateTouchFromMouseEvent::kParamDeltaX,
+ &deltaX)) {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamDeltaX);
+ }
+ if (!params->GetDouble(
+ devtools::Input::emulateTouchFromMouseEvent::kParamDeltaY,
+ &deltaY)) {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamDeltaY);
+ }
+ wheel_event.deltaX = static_cast<float>(deltaX);
+ wheel_event.deltaY = static_cast<float>(deltaY);
+ event = &wheel_event;
+ event->type = WebInputEvent::MouseWheel;
+ } else {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamType);
+ }
+
+ int modifiers = 0;
+ if (params->GetInteger(
+ devtools::Input::emulateTouchFromMouseEvent::kParamModifiers,
+ &modifiers)) {
+ if (modifiers & 1)
+ event->modifiers |= WebInputEvent::AltKey;
+ if (modifiers & 2)
+ event->modifiers |= WebInputEvent::ControlKey;
+ if (modifiers & 4)
+ event->modifiers |= WebInputEvent::MetaKey;
+ if (modifiers & 8)
+ event->modifiers |= WebInputEvent::ShiftKey;
+ }
+
+ params->GetDouble(
+ devtools::Input::emulateTouchFromMouseEvent::kParamTimestamp,
+ &event->timeStampSeconds);
+
+ if (!params->GetInteger(devtools::Input::emulateTouchFromMouseEvent::kParamX,
+ &event->x)) {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamX);
+ }
+
+ if (!params->GetInteger(devtools::Input::emulateTouchFromMouseEvent::kParamY,
+ &event->y)) {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamY);
+ }
+
+ event->windowX = event->x;
+ event->windowY = event->y;
+ event->globalX = event->x;
+ event->globalY = event->y;
+
+ params->GetInteger(
+ devtools::Input::emulateTouchFromMouseEvent::kParamClickCount,
+ &event->clickCount);
+
+ std::string button;
+ if (!params->GetString(
+ devtools::Input::emulateTouchFromMouseEvent::kParamButton,
+ &button)) {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamButton);
+ }
+
+ if (button == "none") {
+ event->button = WebMouseEvent::ButtonNone;
+ } else if (button == "left") {
+ event->button = WebMouseEvent::ButtonLeft;
+ event->modifiers |= WebInputEvent::LeftButtonDown;
+ } else if (button == "middle") {
+ event->button = WebMouseEvent::ButtonMiddle;
+ event->modifiers |= WebInputEvent::MiddleButtonDown;
+ } else if (button == "right") {
+ event->button = WebMouseEvent::ButtonRight;
+ event->modifiers |= WebInputEvent::RightButtonDown;
+ } else {
+ return command->InvalidParamResponse(
+ devtools::Input::emulateTouchFromMouseEvent::kParamButton);
+ }
+
+ if (!host_)
+ return command->InternalErrorResponse("Could not connect to view");
+
+ if (event->type == WebInputEvent::MouseWheel)
+ host_->ForwardWheelEvent(wheel_event);
+ else
+ host_->ForwardMouseEvent(mouse_event);
+ return command->SuccessResponse(NULL);
+}
+
void RendererOverridesHandler::UpdateTouchEventEmulationState() {
if (!host_)
return;
« no previous file with comments | « content/browser/devtools/renderer_overrides_handler.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698