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

Side by Side Diff: content/browser/devtools/renderer_overrides_handler.cc

Issue 508973003: 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/devtools/renderer_overrides_handler.h" 5 #include "content/browser/devtools/renderer_overrides_handler.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/barrier_closure.h" 10 #include "base/barrier_closure.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 RegisterCommandHandler( 167 RegisterCommandHandler(
168 devtools::Page::queryUsageAndQuota::kName, 168 devtools::Page::queryUsageAndQuota::kName,
169 base::Bind( 169 base::Bind(
170 &RendererOverridesHandler::PageQueryUsageAndQuota, 170 &RendererOverridesHandler::PageQueryUsageAndQuota,
171 base::Unretained(this))); 171 base::Unretained(this)));
172 RegisterCommandHandler( 172 RegisterCommandHandler(
173 devtools::Page::setColorPickerEnabled::kName, 173 devtools::Page::setColorPickerEnabled::kName,
174 base::Bind( 174 base::Bind(
175 &RendererOverridesHandler::PageSetColorPickerEnabled, 175 &RendererOverridesHandler::PageSetColorPickerEnabled,
176 base::Unretained(this))); 176 base::Unretained(this)));
177 RegisterCommandHandler(
178 devtools::Input::emulateTouchFromMouseEvent::kName,
179 base::Bind(
180 &RendererOverridesHandler::InputEmulateTouchFromMouseEvent,
181 base::Unretained(this)));
182 mouse_event_callback_ = base::Bind( 177 mouse_event_callback_ = base::Bind(
183 &RendererOverridesHandler::HandleMouseEvent, 178 &RendererOverridesHandler::HandleMouseEvent,
184 base::Unretained(this)); 179 base::Unretained(this));
185 } 180 }
186 181
187 RendererOverridesHandler::~RendererOverridesHandler() {} 182 RendererOverridesHandler::~RendererOverridesHandler() {}
188 183
189 void RendererOverridesHandler::OnClientDetached() { 184 void RendererOverridesHandler::OnClientDetached() {
190 touch_emulation_enabled_ = false; 185 touch_emulation_enabled_ = false;
191 screencast_command_ = NULL; 186 screencast_command_ = NULL;
(...skipping 990 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 kHotspotOffset * device_scale_factor); 1177 kHotspotOffset * device_scale_factor);
1183 #if defined(OS_WIN) 1178 #if defined(OS_WIN)
1184 cursor_info.external_handle = 0; 1179 cursor_info.external_handle = 0;
1185 #endif 1180 #endif
1186 1181
1187 cursor.InitFromCursorInfo(cursor_info); 1182 cursor.InitFromCursorInfo(cursor_info);
1188 DCHECK(host_); 1183 DCHECK(host_);
1189 host_->SetCursor(cursor); 1184 host_->SetCursor(cursor);
1190 } 1185 }
1191 1186
1192 // Input agent handlers ------------------------------------------------------
1193
1194 scoped_refptr<DevToolsProtocol::Response>
1195 RendererOverridesHandler::InputEmulateTouchFromMouseEvent(
1196 scoped_refptr<DevToolsProtocol::Command> command) {
1197 if (!screencast_command_.get())
1198 return command->InternalErrorResponse("Screencast should be turned on");
1199
1200 base::DictionaryValue* params = command->params();
1201 if (!params)
1202 return command->NoSuchMethodErrorResponse();
1203
1204 std::string type;
1205 if (!params->GetString(
1206 devtools::Input::emulateTouchFromMouseEvent::kParamType,
1207 &type)) {
1208 return command->InvalidParamResponse(
1209 devtools::Input::emulateTouchFromMouseEvent::kParamType);
1210 }
1211
1212 blink::WebMouseWheelEvent wheel_event;
1213 blink::WebMouseEvent mouse_event;
1214 blink::WebMouseEvent* event = &mouse_event;
1215
1216 if (type ==
1217 devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMousePressed) {
1218 event->type = WebInputEvent::MouseDown;
1219 } else if (type ==
1220 devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMouseReleased) {
1221 event->type = WebInputEvent::MouseUp;
1222 } else if (type ==
1223 devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMouseMoved) {
1224 event->type = WebInputEvent::MouseMove;
1225 } else if (type ==
1226 devtools::Input::emulateTouchFromMouseEvent::Type::kEnumMouseWheel) {
1227 double deltaX = 0;
1228 double deltaY = 0;
1229 if (!params->GetDouble(
1230 devtools::Input::emulateTouchFromMouseEvent::kParamDeltaX,
1231 &deltaX)) {
1232 return command->InvalidParamResponse(
1233 devtools::Input::emulateTouchFromMouseEvent::kParamDeltaX);
1234 }
1235 if (!params->GetDouble(
1236 devtools::Input::emulateTouchFromMouseEvent::kParamDeltaY,
1237 &deltaY)) {
1238 return command->InvalidParamResponse(
1239 devtools::Input::emulateTouchFromMouseEvent::kParamDeltaY);
1240 }
1241 wheel_event.deltaX = static_cast<float>(deltaX);
1242 wheel_event.deltaY = static_cast<float>(deltaY);
1243 event = &wheel_event;
1244 event->type = WebInputEvent::MouseWheel;
1245 } else {
1246 return command->InvalidParamResponse(
1247 devtools::Input::emulateTouchFromMouseEvent::kParamType);
1248 }
1249
1250 int modifiers = 0;
1251 if (params->GetInteger(
1252 devtools::Input::emulateTouchFromMouseEvent::kParamModifiers,
1253 &modifiers)) {
1254 if (modifiers & 1)
1255 event->modifiers |= WebInputEvent::AltKey;
1256 if (modifiers & 2)
1257 event->modifiers |= WebInputEvent::ControlKey;
1258 if (modifiers & 4)
1259 event->modifiers |= WebInputEvent::MetaKey;
1260 if (modifiers & 8)
1261 event->modifiers |= WebInputEvent::ShiftKey;
1262 }
1263
1264 params->GetDouble(
1265 devtools::Input::emulateTouchFromMouseEvent::kParamTimestamp,
1266 &event->timeStampSeconds);
1267
1268 if (!params->GetInteger(devtools::Input::emulateTouchFromMouseEvent::kParamX,
1269 &event->x)) {
1270 return command->InvalidParamResponse(
1271 devtools::Input::emulateTouchFromMouseEvent::kParamX);
1272 }
1273
1274 if (!params->GetInteger(devtools::Input::emulateTouchFromMouseEvent::kParamY,
1275 &event->y)) {
1276 return command->InvalidParamResponse(
1277 devtools::Input::emulateTouchFromMouseEvent::kParamY);
1278 }
1279
1280 event->windowX = event->x;
1281 event->windowY = event->y;
1282 event->globalX = event->x;
1283 event->globalY = event->y;
1284
1285 params->GetInteger(
1286 devtools::Input::emulateTouchFromMouseEvent::kParamClickCount,
1287 &event->clickCount);
1288
1289 std::string button;
1290 if (!params->GetString(
1291 devtools::Input::emulateTouchFromMouseEvent::kParamButton,
1292 &button)) {
1293 return command->InvalidParamResponse(
1294 devtools::Input::emulateTouchFromMouseEvent::kParamButton);
1295 }
1296
1297 if (button == "none") {
1298 event->button = WebMouseEvent::ButtonNone;
1299 } else if (button == "left") {
1300 event->button = WebMouseEvent::ButtonLeft;
1301 event->modifiers |= WebInputEvent::LeftButtonDown;
1302 } else if (button == "middle") {
1303 event->button = WebMouseEvent::ButtonMiddle;
1304 event->modifiers |= WebInputEvent::MiddleButtonDown;
1305 } else if (button == "right") {
1306 event->button = WebMouseEvent::ButtonRight;
1307 event->modifiers |= WebInputEvent::RightButtonDown;
1308 } else {
1309 return command->InvalidParamResponse(
1310 devtools::Input::emulateTouchFromMouseEvent::kParamButton);
1311 }
1312
1313 if (!host_)
1314 return command->InternalErrorResponse("Could not connect to view");
1315
1316 if (event->type == WebInputEvent::MouseWheel)
1317 host_->ForwardWheelEvent(wheel_event);
1318 else
1319 host_->ForwardMouseEvent(mouse_event);
1320 return command->SuccessResponse(NULL);
1321 }
1322
1323 void RendererOverridesHandler::UpdateTouchEventEmulationState() { 1187 void RendererOverridesHandler::UpdateTouchEventEmulationState() {
1324 if (!host_) 1188 if (!host_)
1325 return; 1189 return;
1326 bool enabled = touch_emulation_enabled_ || screencast_command_.get(); 1190 bool enabled = touch_emulation_enabled_ || screencast_command_.get();
1327 host_->SetTouchEventEmulationEnabled(enabled); 1191 host_->SetTouchEventEmulationEnabled(enabled);
1328 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 1192 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>(
1329 WebContents::FromRenderViewHost(host_)); 1193 WebContents::FromRenderViewHost(host_));
1330 if (web_contents) 1194 if (web_contents)
1331 web_contents->SetForceDisableOverscrollContent(enabled); 1195 web_contents->SetForceDisableOverscrollContent(enabled);
1332 } 1196 }
1333 1197
1334 } // namespace content 1198 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698