| 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 |