OLD | NEW |
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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 RegisterCommandHandler( | 144 RegisterCommandHandler( |
145 devtools::Input::emulateTouchFromMouseEvent::kName, | 145 devtools::Input::emulateTouchFromMouseEvent::kName, |
146 base::Bind( | 146 base::Bind( |
147 &RendererOverridesHandler::InputEmulateTouchFromMouseEvent, | 147 &RendererOverridesHandler::InputEmulateTouchFromMouseEvent, |
148 base::Unretained(this))); | 148 base::Unretained(this))); |
149 } | 149 } |
150 | 150 |
151 RendererOverridesHandler::~RendererOverridesHandler() {} | 151 RendererOverridesHandler::~RendererOverridesHandler() {} |
152 | 152 |
153 void RendererOverridesHandler::OnClientDetached() { | 153 void RendererOverridesHandler::OnClientDetached() { |
154 RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>( | 154 RenderViewHostImpl* host = GetRenderViewHostImpl(); |
155 agent_->GetRenderViewHost()); | |
156 if (screencast_command_ && host) | 155 if (screencast_command_ && host) |
157 host->SetTouchEventEmulationEnabled(false, false); | 156 host->SetTouchEventEmulationEnabled(false, false); |
158 screencast_command_ = NULL; | 157 screencast_command_ = NULL; |
159 } | 158 } |
160 | 159 |
161 void RendererOverridesHandler::OnSwapCompositorFrame( | 160 void RendererOverridesHandler::OnSwapCompositorFrame( |
162 const cc::CompositorFrameMetadata& frame_metadata) { | 161 const cc::CompositorFrameMetadata& frame_metadata) { |
163 last_compositor_frame_metadata_ = frame_metadata; | 162 last_compositor_frame_metadata_ = frame_metadata; |
164 has_last_compositor_frame_metadata_ = true; | 163 has_last_compositor_frame_metadata_ = true; |
165 | 164 |
166 if (screencast_command_) | 165 if (screencast_command_) |
167 InnerSwapCompositorFrame(); | 166 InnerSwapCompositorFrame(); |
168 } | 167 } |
169 | 168 |
170 void RendererOverridesHandler::OnVisibilityChanged(bool visible) { | 169 void RendererOverridesHandler::OnVisibilityChanged(bool visible) { |
171 if (!screencast_command_) | 170 if (!screencast_command_) |
172 return; | 171 return; |
173 NotifyScreencastVisibility(visible); | 172 NotifyScreencastVisibility(visible); |
174 } | 173 } |
175 | 174 |
176 void RendererOverridesHandler::OnRenderViewHostChanged() { | 175 void RendererOverridesHandler::OnRenderViewHostChanged() { |
177 RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>( | 176 RenderViewHostImpl* host = GetRenderViewHostImpl(); |
178 agent_->GetRenderViewHost()); | |
179 if (screencast_command_ && host) | 177 if (screencast_command_ && host) |
180 host->SetTouchEventEmulationEnabled(true, true); | 178 host->SetTouchEventEmulationEnabled(true, true); |
181 } | 179 } |
182 | 180 |
183 bool RendererOverridesHandler::OnSetTouchEventEmulationEnabled() { | 181 bool RendererOverridesHandler::OnSetTouchEventEmulationEnabled() { |
184 return screencast_command_.get() != NULL; | 182 return screencast_command_.get() != NULL; |
185 } | 183 } |
186 | 184 |
187 void RendererOverridesHandler::InnerSwapCompositorFrame() { | 185 void RendererOverridesHandler::InnerSwapCompositorFrame() { |
188 if ((base::TimeTicks::Now() - last_frame_time_).InMilliseconds() < | 186 if ((base::TimeTicks::Now() - last_frame_time_).InMilliseconds() < |
189 kFrameRateThresholdMs) { | 187 kFrameRateThresholdMs) { |
190 return; | 188 return; |
191 } | 189 } |
192 | 190 |
193 RenderViewHost* host = agent_->GetRenderViewHost(); | 191 RenderViewHost* host = GetRenderViewHostImpl(); |
194 if (!host->GetView()) | 192 if (!host->GetView()) |
195 return; | 193 return; |
196 | 194 |
197 last_frame_time_ = base::TimeTicks::Now(); | 195 last_frame_time_ = base::TimeTicks::Now(); |
198 | 196 |
199 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | 197 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
200 host->GetView()); | 198 host->GetView()); |
201 // TODO(vkuzkokov): do not use previous frame metadata. | 199 // TODO(vkuzkokov): do not use previous frame metadata. |
202 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; | 200 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; |
203 | 201 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 | 263 |
266 scoped_refptr<DevToolsProtocol::Response> | 264 scoped_refptr<DevToolsProtocol::Response> |
267 RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( | 265 RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( |
268 scoped_refptr<DevToolsProtocol::Command> command) { | 266 scoped_refptr<DevToolsProtocol::Command> command) { |
269 base::DictionaryValue* params = command->params(); | 267 base::DictionaryValue* params = command->params(); |
270 base::ListValue* file_list = NULL; | 268 base::ListValue* file_list = NULL; |
271 const char* param = | 269 const char* param = |
272 devtools::DOM::setFileInputFiles::kParamFiles; | 270 devtools::DOM::setFileInputFiles::kParamFiles; |
273 if (!params || !params->GetList(param, &file_list)) | 271 if (!params || !params->GetList(param, &file_list)) |
274 return command->InvalidParamResponse(param); | 272 return command->InvalidParamResponse(param); |
275 RenderViewHost* host = agent_->GetRenderViewHost(); | 273 RenderViewHost* host = GetRenderViewHostImpl(); |
276 if (!host) | 274 if (!host) |
277 return NULL; | 275 return NULL; |
278 | 276 |
279 for (size_t i = 0; i < file_list->GetSize(); ++i) { | 277 for (size_t i = 0; i < file_list->GetSize(); ++i) { |
280 base::FilePath::StringType file; | 278 base::FilePath::StringType file; |
281 if (!file_list->GetString(i, &file)) | 279 if (!file_list->GetString(i, &file)) |
282 return command->InvalidParamResponse(param); | 280 return command->InvalidParamResponse(param); |
283 ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadFile( | 281 ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadFile( |
284 host->GetProcess()->GetID(), base::FilePath(file)); | 282 host->GetProcess()->GetID(), base::FilePath(file)); |
285 } | 283 } |
286 return NULL; | 284 return NULL; |
287 } | 285 } |
288 | 286 |
289 | 287 |
290 // Network agent handlers ---------------------------------------------------- | 288 // Network agent handlers ---------------------------------------------------- |
291 | 289 |
292 scoped_refptr<DevToolsProtocol::Response> | 290 scoped_refptr<DevToolsProtocol::Response> |
293 RendererOverridesHandler::ClearBrowserCache( | 291 RendererOverridesHandler::ClearBrowserCache( |
294 scoped_refptr<DevToolsProtocol::Command> command) { | 292 scoped_refptr<DevToolsProtocol::Command> command) { |
295 GetContentClient()->browser()->ClearCache(agent_->GetRenderViewHost()); | 293 GetContentClient()->browser()->ClearCache(GetRenderViewHostImpl()); |
296 return command->SuccessResponse(NULL); | 294 return command->SuccessResponse(NULL); |
297 } | 295 } |
298 | 296 |
299 scoped_refptr<DevToolsProtocol::Response> | 297 scoped_refptr<DevToolsProtocol::Response> |
300 RendererOverridesHandler::ClearBrowserCookies( | 298 RendererOverridesHandler::ClearBrowserCookies( |
301 scoped_refptr<DevToolsProtocol::Command> command) { | 299 scoped_refptr<DevToolsProtocol::Command> command) { |
302 GetContentClient()->browser()->ClearCookies(agent_->GetRenderViewHost()); | 300 GetContentClient()->browser()->ClearCookies(GetRenderViewHostImpl()); |
303 return command->SuccessResponse(NULL); | 301 return command->SuccessResponse(NULL); |
304 } | 302 } |
305 | 303 |
306 | 304 |
307 // Page agent handlers ------------------------------------------------------- | 305 // Page agent handlers ------------------------------------------------------- |
308 | 306 |
309 scoped_refptr<DevToolsProtocol::Response> | 307 scoped_refptr<DevToolsProtocol::Response> |
310 RendererOverridesHandler::PageDisable( | 308 RendererOverridesHandler::PageDisable( |
311 scoped_refptr<DevToolsProtocol::Command> command) { | 309 scoped_refptr<DevToolsProtocol::Command> command) { |
312 RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>( | 310 RenderViewHostImpl* host = GetRenderViewHostImpl(); |
313 agent_->GetRenderViewHost()); | |
314 if (screencast_command_ && host) | 311 if (screencast_command_ && host) |
315 host->SetTouchEventEmulationEnabled(false, false); | 312 host->SetTouchEventEmulationEnabled(false, false); |
316 screencast_command_ = NULL; | 313 screencast_command_ = NULL; |
317 return NULL; | 314 return NULL; |
318 } | 315 } |
319 | 316 |
320 scoped_refptr<DevToolsProtocol::Response> | 317 scoped_refptr<DevToolsProtocol::Response> |
321 RendererOverridesHandler::PageHandleJavaScriptDialog( | 318 RendererOverridesHandler::PageHandleJavaScriptDialog( |
322 scoped_refptr<DevToolsProtocol::Command> command) { | 319 scoped_refptr<DevToolsProtocol::Command> command) { |
323 base::DictionaryValue* params = command->params(); | 320 base::DictionaryValue* params = command->params(); |
324 const char* paramAccept = | 321 const char* paramAccept = |
325 devtools::Page::handleJavaScriptDialog::kParamAccept; | 322 devtools::Page::handleJavaScriptDialog::kParamAccept; |
326 bool accept = false; | 323 bool accept = false; |
327 if (!params || !params->GetBoolean(paramAccept, &accept)) | 324 if (!params || !params->GetBoolean(paramAccept, &accept)) |
328 return command->InvalidParamResponse(paramAccept); | 325 return command->InvalidParamResponse(paramAccept); |
329 base::string16 prompt_override; | 326 base::string16 prompt_override; |
330 base::string16* prompt_override_ptr = &prompt_override; | 327 base::string16* prompt_override_ptr = &prompt_override; |
331 if (!params || !params->GetString( | 328 if (!params || !params->GetString( |
332 devtools::Page::handleJavaScriptDialog::kParamPromptText, | 329 devtools::Page::handleJavaScriptDialog::kParamPromptText, |
333 prompt_override_ptr)) { | 330 prompt_override_ptr)) { |
334 prompt_override_ptr = NULL; | 331 prompt_override_ptr = NULL; |
335 } | 332 } |
336 | 333 |
337 RenderViewHost* host = agent_->GetRenderViewHost(); | 334 WebContents* web_contents = agent_->GetWebContents(); |
338 if (host) { | 335 if (web_contents) { |
339 WebContents* web_contents = host->GetDelegate()->GetAsWebContents(); | 336 JavaScriptDialogManager* manager = |
340 if (web_contents) { | 337 web_contents->GetDelegate()->GetJavaScriptDialogManager(); |
341 JavaScriptDialogManager* manager = | 338 if (manager && manager->HandleJavaScriptDialog( |
342 web_contents->GetDelegate()->GetJavaScriptDialogManager(); | 339 web_contents, accept, prompt_override_ptr)) { |
343 if (manager && manager->HandleJavaScriptDialog( | 340 return command->SuccessResponse(new base::DictionaryValue()); |
344 web_contents, accept, prompt_override_ptr)) { | |
345 return command->SuccessResponse(new base::DictionaryValue()); | |
346 } | |
347 } | 341 } |
348 } | 342 } |
349 return command->InternalErrorResponse("No JavaScript dialog to handle"); | 343 return command->InternalErrorResponse("No JavaScript dialog to handle"); |
350 } | 344 } |
351 | 345 |
352 scoped_refptr<DevToolsProtocol::Response> | 346 scoped_refptr<DevToolsProtocol::Response> |
353 RendererOverridesHandler::PageNavigate( | 347 RendererOverridesHandler::PageNavigate( |
354 scoped_refptr<DevToolsProtocol::Command> command) { | 348 scoped_refptr<DevToolsProtocol::Command> command) { |
355 base::DictionaryValue* params = command->params(); | 349 base::DictionaryValue* params = command->params(); |
356 std::string url; | 350 std::string url; |
357 const char* param = devtools::Page::navigate::kParamUrl; | 351 const char* param = devtools::Page::navigate::kParamUrl; |
358 if (!params || !params->GetString(param, &url)) | 352 if (!params || !params->GetString(param, &url)) |
359 return command->InvalidParamResponse(param); | 353 return command->InvalidParamResponse(param); |
| 354 |
360 GURL gurl(url); | 355 GURL gurl(url); |
361 if (!gurl.is_valid()) { | 356 if (!gurl.is_valid()) |
362 return command->InternalErrorResponse("Cannot navigate to invalid URL"); | 357 return command->InternalErrorResponse("Cannot navigate to invalid URL"); |
| 358 |
| 359 WebContents* web_contents = agent_->GetWebContents(); |
| 360 if (web_contents) { |
| 361 web_contents->GetController() |
| 362 .LoadURL(gurl, Referrer(), PAGE_TRANSITION_TYPED, std::string()); |
| 363 // Fall through into the renderer. |
| 364 return NULL; |
363 } | 365 } |
364 RenderViewHost* host = agent_->GetRenderViewHost(); | 366 |
365 if (host) { | |
366 WebContents* web_contents = host->GetDelegate()->GetAsWebContents(); | |
367 if (web_contents) { | |
368 web_contents->GetController() | |
369 .LoadURL(gurl, Referrer(), PAGE_TRANSITION_TYPED, std::string()); | |
370 // Fall through into the renderer. | |
371 return NULL; | |
372 } | |
373 } | |
374 return command->InternalErrorResponse("No WebContents to navigate"); | 367 return command->InternalErrorResponse("No WebContents to navigate"); |
375 } | 368 } |
376 | 369 |
377 scoped_refptr<DevToolsProtocol::Response> | 370 scoped_refptr<DevToolsProtocol::Response> |
378 RendererOverridesHandler::PageReload( | 371 RendererOverridesHandler::PageReload( |
379 scoped_refptr<DevToolsProtocol::Command> command) { | 372 scoped_refptr<DevToolsProtocol::Command> command) { |
380 RenderViewHost* host = agent_->GetRenderViewHost(); | 373 WebContents* web_contents = agent_->GetWebContents(); |
381 if (host) { | 374 if (web_contents) { |
382 WebContents* web_contents = host->GetDelegate()->GetAsWebContents(); | 375 // Override only if it is crashed. |
383 if (web_contents) { | 376 if (!web_contents->IsCrashed()) |
384 // Override only if it is crashed. | 377 return NULL; |
385 if (!web_contents->IsCrashed()) | |
386 return NULL; | |
387 | 378 |
388 web_contents->GetController().Reload(false); | 379 web_contents->GetController().Reload(false); |
389 return command->SuccessResponse(NULL); | 380 return command->SuccessResponse(NULL); |
390 } | |
391 } | 381 } |
392 return command->InternalErrorResponse("No WebContents to reload"); | 382 return command->InternalErrorResponse("No WebContents to reload"); |
393 } | 383 } |
394 | 384 |
395 scoped_refptr<DevToolsProtocol::Response> | 385 scoped_refptr<DevToolsProtocol::Response> |
396 RendererOverridesHandler::PageGetNavigationHistory( | 386 RendererOverridesHandler::PageGetNavigationHistory( |
397 scoped_refptr<DevToolsProtocol::Command> command) { | 387 scoped_refptr<DevToolsProtocol::Command> command) { |
398 RenderViewHost* host = agent_->GetRenderViewHost(); | 388 WebContents* web_contents = agent_->GetWebContents(); |
399 if (host) { | 389 if (web_contents) { |
400 WebContents* web_contents = host->GetDelegate()->GetAsWebContents(); | 390 base::DictionaryValue* result = new base::DictionaryValue(); |
401 if (web_contents) { | 391 NavigationController& controller = web_contents->GetController(); |
402 base::DictionaryValue* result = new base::DictionaryValue(); | 392 result->SetInteger( |
403 NavigationController& controller = web_contents->GetController(); | 393 devtools::Page::getNavigationHistory::kResponseCurrentIndex, |
404 result->SetInteger( | 394 controller.GetCurrentEntryIndex()); |
405 devtools::Page::getNavigationHistory::kResponseCurrentIndex, | 395 base::ListValue* entries = new base::ListValue(); |
406 controller.GetCurrentEntryIndex()); | 396 for (int i = 0; i != controller.GetEntryCount(); ++i) { |
407 base::ListValue* entries = new base::ListValue(); | 397 const NavigationEntry* entry = controller.GetEntryAtIndex(i); |
408 for (int i = 0; i != controller.GetEntryCount(); ++i) { | 398 base::DictionaryValue* entry_value = new base::DictionaryValue(); |
409 const NavigationEntry* entry = controller.GetEntryAtIndex(i); | 399 entry_value->SetInteger( |
410 base::DictionaryValue* entry_value = new base::DictionaryValue(); | 400 devtools::Page::NavigationEntry::kParamId, |
411 entry_value->SetInteger( | 401 entry->GetUniqueID()); |
412 devtools::Page::NavigationEntry::kParamId, | 402 entry_value->SetString( |
413 entry->GetUniqueID()); | 403 devtools::Page::NavigationEntry::kParamUrl, |
414 entry_value->SetString( | 404 entry->GetURL().spec()); |
415 devtools::Page::NavigationEntry::kParamUrl, | 405 entry_value->SetString( |
416 entry->GetURL().spec()); | 406 devtools::Page::NavigationEntry::kParamTitle, |
417 entry_value->SetString( | 407 entry->GetTitle()); |
418 devtools::Page::NavigationEntry::kParamTitle, | 408 entries->Append(entry_value); |
419 entry->GetTitle()); | |
420 entries->Append(entry_value); | |
421 } | |
422 result->Set( | |
423 devtools::Page::getNavigationHistory::kResponseEntries, | |
424 entries); | |
425 return command->SuccessResponse(result); | |
426 } | 409 } |
| 410 result->Set( |
| 411 devtools::Page::getNavigationHistory::kResponseEntries, |
| 412 entries); |
| 413 return command->SuccessResponse(result); |
427 } | 414 } |
428 return command->InternalErrorResponse("No WebContents to navigate"); | 415 return command->InternalErrorResponse("No WebContents to navigate"); |
429 } | 416 } |
430 | 417 |
431 scoped_refptr<DevToolsProtocol::Response> | 418 scoped_refptr<DevToolsProtocol::Response> |
432 RendererOverridesHandler::PageNavigateToHistoryEntry( | 419 RendererOverridesHandler::PageNavigateToHistoryEntry( |
433 scoped_refptr<DevToolsProtocol::Command> command) { | 420 scoped_refptr<DevToolsProtocol::Command> command) { |
434 base::DictionaryValue* params = command->params(); | 421 base::DictionaryValue* params = command->params(); |
435 const char* param = devtools::Page::navigateToHistoryEntry::kParamEntryId; | 422 const char* param = devtools::Page::navigateToHistoryEntry::kParamEntryId; |
436 int entry_id = 0; | 423 int entry_id = 0; |
437 if (!params || !params->GetInteger(param, &entry_id)) { | 424 if (!params || !params->GetInteger(param, &entry_id)) { |
438 return command->InvalidParamResponse(param); | 425 return command->InvalidParamResponse(param); |
439 } | 426 } |
440 | 427 |
441 RenderViewHost* host = agent_->GetRenderViewHost(); | 428 WebContents* web_contents = agent_->GetWebContents(); |
442 if (host) { | 429 if (web_contents) { |
443 WebContents* web_contents = host->GetDelegate()->GetAsWebContents(); | 430 NavigationController& controller = web_contents->GetController(); |
444 if (web_contents) { | 431 for (int i = 0; i != controller.GetEntryCount(); ++i) { |
445 NavigationController& controller = web_contents->GetController(); | 432 if (controller.GetEntryAtIndex(i)->GetUniqueID() == entry_id) { |
446 for (int i = 0; i != controller.GetEntryCount(); ++i) { | 433 controller.GoToIndex(i); |
447 if (controller.GetEntryAtIndex(i)->GetUniqueID() == entry_id) { | 434 return command->SuccessResponse(new base::DictionaryValue()); |
448 controller.GoToIndex(i); | |
449 return command->SuccessResponse(new base::DictionaryValue()); | |
450 } | |
451 } | 435 } |
452 return command->InvalidParamResponse(param); | |
453 } | 436 } |
| 437 return command->InvalidParamResponse(param); |
454 } | 438 } |
455 return command->InternalErrorResponse("No WebContents to navigate"); | 439 return command->InternalErrorResponse("No WebContents to navigate"); |
456 } | 440 } |
457 | 441 |
458 scoped_refptr<DevToolsProtocol::Response> | 442 scoped_refptr<DevToolsProtocol::Response> |
459 RendererOverridesHandler::PageCaptureScreenshot( | 443 RendererOverridesHandler::PageCaptureScreenshot( |
460 scoped_refptr<DevToolsProtocol::Command> command) { | 444 scoped_refptr<DevToolsProtocol::Command> command) { |
461 RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>( | 445 RenderViewHostImpl* host = GetRenderViewHostImpl(); |
462 agent_->GetRenderViewHost()); | |
463 if (!host->GetView()) | 446 if (!host->GetView()) |
464 return command->InternalErrorResponse("Unable to access the view"); | 447 return command->InternalErrorResponse("Unable to access the view"); |
465 | 448 |
466 host->GetSnapshotFromBrowser( | 449 host->GetSnapshotFromBrowser( |
467 base::Bind(&RendererOverridesHandler::ScreenshotCaptured, | 450 base::Bind(&RendererOverridesHandler::ScreenshotCaptured, |
468 weak_factory_.GetWeakPtr(), command)); | 451 weak_factory_.GetWeakPtr(), command)); |
469 return command->AsyncResponsePromise(); | 452 return command->AsyncResponsePromise(); |
470 } | 453 } |
471 | 454 |
472 void RendererOverridesHandler::ScreenshotCaptured( | 455 void RendererOverridesHandler::ScreenshotCaptured( |
(...skipping 27 matching lines...) Expand all Loading... |
500 #else | 483 #else |
501 result->SetBoolean(devtools::kResult, false); | 484 result->SetBoolean(devtools::kResult, false); |
502 #endif // defined(OS_ANDROID) | 485 #endif // defined(OS_ANDROID) |
503 return command->SuccessResponse(result); | 486 return command->SuccessResponse(result); |
504 } | 487 } |
505 | 488 |
506 scoped_refptr<DevToolsProtocol::Response> | 489 scoped_refptr<DevToolsProtocol::Response> |
507 RendererOverridesHandler::PageStartScreencast( | 490 RendererOverridesHandler::PageStartScreencast( |
508 scoped_refptr<DevToolsProtocol::Command> command) { | 491 scoped_refptr<DevToolsProtocol::Command> command) { |
509 screencast_command_ = command; | 492 screencast_command_ = command; |
510 RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>( | 493 RenderViewHostImpl* host = GetRenderViewHostImpl(); |
511 agent_->GetRenderViewHost()); | |
512 host->SetTouchEventEmulationEnabled(true, true); | 494 host->SetTouchEventEmulationEnabled(true, true); |
513 bool visible = !host->is_hidden(); | 495 bool visible = !host->is_hidden(); |
514 NotifyScreencastVisibility(visible); | 496 NotifyScreencastVisibility(visible); |
515 if (visible) { | 497 if (visible) { |
516 if (has_last_compositor_frame_metadata_) | 498 if (has_last_compositor_frame_metadata_) |
517 InnerSwapCompositorFrame(); | 499 InnerSwapCompositorFrame(); |
518 else | 500 else |
519 host->Send(new ViewMsg_ForceRedraw(host->GetRoutingID(), 0)); | 501 host->Send(new ViewMsg_ForceRedraw(host->GetRoutingID(), 0)); |
520 } | 502 } |
521 return command->SuccessResponse(NULL); | 503 return command->SuccessResponse(NULL); |
522 } | 504 } |
523 | 505 |
524 scoped_refptr<DevToolsProtocol::Response> | 506 scoped_refptr<DevToolsProtocol::Response> |
525 RendererOverridesHandler::PageStopScreencast( | 507 RendererOverridesHandler::PageStopScreencast( |
526 scoped_refptr<DevToolsProtocol::Command> command) { | 508 scoped_refptr<DevToolsProtocol::Command> command) { |
527 last_frame_time_ = base::TimeTicks(); | 509 last_frame_time_ = base::TimeTicks(); |
528 screencast_command_ = NULL; | 510 screencast_command_ = NULL; |
529 RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>( | 511 RenderViewHostImpl* host = GetRenderViewHostImpl(); |
530 agent_->GetRenderViewHost()); | |
531 if (host) | 512 if (host) |
532 host->SetTouchEventEmulationEnabled(false, false); | 513 host->SetTouchEventEmulationEnabled(false, false); |
533 return command->SuccessResponse(NULL); | 514 return command->SuccessResponse(NULL); |
534 } | 515 } |
535 | 516 |
536 void RendererOverridesHandler::ScreencastFrameCaptured( | 517 void RendererOverridesHandler::ScreencastFrameCaptured( |
537 const std::string& format, | 518 const std::string& format, |
538 int quality, | 519 int quality, |
539 const cc::CompositorFrameMetadata& metadata, | 520 const cc::CompositorFrameMetadata& metadata, |
540 bool success, | 521 bool success, |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 &security_origin)) { | 794 &security_origin)) { |
814 return command->InvalidParamResponse( | 795 return command->InvalidParamResponse( |
815 devtools::Page::queryUsageAndQuota::kParamSecurityOrigin); | 796 devtools::Page::queryUsageAndQuota::kParamSecurityOrigin); |
816 } | 797 } |
817 | 798 |
818 ResponseCallback callback = base::Bind( | 799 ResponseCallback callback = base::Bind( |
819 &RendererOverridesHandler::PageQueryUsageAndQuotaCompleted, | 800 &RendererOverridesHandler::PageQueryUsageAndQuotaCompleted, |
820 weak_factory_.GetWeakPtr(), | 801 weak_factory_.GetWeakPtr(), |
821 command); | 802 command); |
822 | 803 |
823 scoped_refptr<quota::QuotaManager> quota_manager = | 804 scoped_refptr<quota::QuotaManager> quota_manager = GetRenderViewHostImpl() |
824 agent_->GetRenderViewHost()->GetProcess()-> | 805 ->GetProcess() |
825 GetStoragePartition()->GetQuotaManager(); | 806 ->GetStoragePartition() |
| 807 ->GetQuotaManager(); |
826 | 808 |
827 BrowserThread::PostTask( | 809 BrowserThread::PostTask( |
828 BrowserThread::IO, FROM_HERE, | 810 BrowserThread::IO, FROM_HERE, |
829 base::Bind( | 811 base::Bind( |
830 &QueryUsageAndQuotaOnIOThread, | 812 &QueryUsageAndQuotaOnIOThread, |
831 quota_manager, | 813 quota_manager, |
832 GURL(security_origin), | 814 GURL(security_origin), |
833 callback)); | 815 callback)); |
834 | 816 |
835 return command->AsyncResponsePromise(); | 817 return command->AsyncResponsePromise(); |
(...skipping 20 matching lines...) Expand all Loading... |
856 scoped_refptr<DevToolsProtocol::Response> | 838 scoped_refptr<DevToolsProtocol::Response> |
857 RendererOverridesHandler::InputEmulateTouchFromMouseEvent( | 839 RendererOverridesHandler::InputEmulateTouchFromMouseEvent( |
858 scoped_refptr<DevToolsProtocol::Command> command) { | 840 scoped_refptr<DevToolsProtocol::Command> command) { |
859 if (!screencast_command_) | 841 if (!screencast_command_) |
860 return command->InternalErrorResponse("Screencast should be turned on"); | 842 return command->InternalErrorResponse("Screencast should be turned on"); |
861 | 843 |
862 base::DictionaryValue* params = command->params(); | 844 base::DictionaryValue* params = command->params(); |
863 if (!params) | 845 if (!params) |
864 return command->NoSuchMethodErrorResponse(); | 846 return command->NoSuchMethodErrorResponse(); |
865 | 847 |
866 RenderViewHost* host = agent_->GetRenderViewHost(); | |
867 | |
868 std::string type; | 848 std::string type; |
869 if (!params->GetString( | 849 if (!params->GetString( |
870 devtools::Input::emulateTouchFromMouseEvent::kParamType, | 850 devtools::Input::emulateTouchFromMouseEvent::kParamType, |
871 &type)) { | 851 &type)) { |
872 return command->InvalidParamResponse( | 852 return command->InvalidParamResponse( |
873 devtools::Input::emulateTouchFromMouseEvent::kParamType); | 853 devtools::Input::emulateTouchFromMouseEvent::kParamType); |
874 } | 854 } |
875 | 855 |
876 blink::WebMouseWheelEvent wheel_event; | 856 blink::WebMouseWheelEvent wheel_event; |
877 blink::WebMouseEvent mouse_event; | 857 blink::WebMouseEvent mouse_event; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
967 event->button = WebMouseEvent::ButtonMiddle; | 947 event->button = WebMouseEvent::ButtonMiddle; |
968 event->modifiers |= WebInputEvent::MiddleButtonDown; | 948 event->modifiers |= WebInputEvent::MiddleButtonDown; |
969 } else if (button == "right") { | 949 } else if (button == "right") { |
970 event->button = WebMouseEvent::ButtonRight; | 950 event->button = WebMouseEvent::ButtonRight; |
971 event->modifiers |= WebInputEvent::RightButtonDown; | 951 event->modifiers |= WebInputEvent::RightButtonDown; |
972 } else { | 952 } else { |
973 return command->InvalidParamResponse( | 953 return command->InvalidParamResponse( |
974 devtools::Input::emulateTouchFromMouseEvent::kParamButton); | 954 devtools::Input::emulateTouchFromMouseEvent::kParamButton); |
975 } | 955 } |
976 | 956 |
| 957 RenderViewHost* host = GetRenderViewHostImpl(); |
977 if (event->type == WebInputEvent::MouseWheel) | 958 if (event->type == WebInputEvent::MouseWheel) |
978 host->ForwardWheelEvent(wheel_event); | 959 host->ForwardWheelEvent(wheel_event); |
979 else | 960 else |
980 host->ForwardMouseEvent(mouse_event); | 961 host->ForwardMouseEvent(mouse_event); |
981 return command->SuccessResponse(NULL); | 962 return command->SuccessResponse(NULL); |
982 } | 963 } |
983 | 964 |
| 965 RenderViewHostImpl* RendererOverridesHandler::GetRenderViewHostImpl() { |
| 966 return static_cast<RenderViewHostImpl*>( |
| 967 agent_->GetWebContents()->GetRenderViewHost()); |
| 968 } |
| 969 |
984 } // namespace content | 970 } // namespace content |
OLD | NEW |