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

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

Issue 482503002: DevTools: follow up to r288297, check rvh for being null in all branches. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « content/browser/devtools/renderer_overrides_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 namespace { 60 namespace {
61 61
62 static const char kPng[] = "png"; 62 static const char kPng[] = "png";
63 static const char kJpeg[] = "jpeg"; 63 static const char kJpeg[] = "jpeg";
64 static int kDefaultScreenshotQuality = 80; 64 static int kDefaultScreenshotQuality = 80;
65 static int kFrameRateThresholdMs = 100; 65 static int kFrameRateThresholdMs = 100;
66 static int kCaptureRetryLimit = 2; 66 static int kCaptureRetryLimit = 2;
67 67
68 } // namespace 68 } // namespace
69 69
70 RendererOverridesHandler::RendererOverridesHandler(DevToolsAgentHost* agent) 70 RendererOverridesHandler::RendererOverridesHandler()
71 : agent_(agent), 71 : has_last_compositor_frame_metadata_(false),
72 has_last_compositor_frame_metadata_(false),
73 capture_retry_count_(0), 72 capture_retry_count_(0),
74 weak_factory_(this) { 73 weak_factory_(this) {
75 RegisterCommandHandler( 74 RegisterCommandHandler(
76 devtools::DOM::setFileInputFiles::kName, 75 devtools::DOM::setFileInputFiles::kName,
77 base::Bind( 76 base::Bind(
78 &RendererOverridesHandler::GrantPermissionsForSetFileInputFiles, 77 &RendererOverridesHandler::GrantPermissionsForSetFileInputFiles,
79 base::Unretained(this))); 78 base::Unretained(this)));
80 RegisterCommandHandler( 79 RegisterCommandHandler(
81 devtools::Network::clearBrowserCache::kName, 80 devtools::Network::clearBrowserCache::kName,
82 base::Bind( 81 base::Bind(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 RegisterCommandHandler( 143 RegisterCommandHandler(
145 devtools::Input::emulateTouchFromMouseEvent::kName, 144 devtools::Input::emulateTouchFromMouseEvent::kName,
146 base::Bind( 145 base::Bind(
147 &RendererOverridesHandler::InputEmulateTouchFromMouseEvent, 146 &RendererOverridesHandler::InputEmulateTouchFromMouseEvent,
148 base::Unretained(this))); 147 base::Unretained(this)));
149 } 148 }
150 149
151 RendererOverridesHandler::~RendererOverridesHandler() {} 150 RendererOverridesHandler::~RendererOverridesHandler() {}
152 151
153 void RendererOverridesHandler::OnClientDetached() { 152 void RendererOverridesHandler::OnClientDetached() {
154 RenderViewHostImpl* host = GetRenderViewHostImpl(); 153 if (screencast_command_ && host_)
155 if (screencast_command_ && host) 154 host_->SetTouchEventEmulationEnabled(false, false);
156 host->SetTouchEventEmulationEnabled(false, false);
157 screencast_command_ = NULL; 155 screencast_command_ = NULL;
158 } 156 }
159 157
160 void RendererOverridesHandler::OnSwapCompositorFrame( 158 void RendererOverridesHandler::OnSwapCompositorFrame(
161 const cc::CompositorFrameMetadata& frame_metadata) { 159 const cc::CompositorFrameMetadata& frame_metadata) {
162 last_compositor_frame_metadata_ = frame_metadata; 160 last_compositor_frame_metadata_ = frame_metadata;
163 has_last_compositor_frame_metadata_ = true; 161 has_last_compositor_frame_metadata_ = true;
164 162
165 if (screencast_command_) 163 if (screencast_command_)
166 InnerSwapCompositorFrame(); 164 InnerSwapCompositorFrame();
167 } 165 }
168 166
169 void RendererOverridesHandler::OnVisibilityChanged(bool visible) { 167 void RendererOverridesHandler::OnVisibilityChanged(bool visible) {
170 if (!screencast_command_) 168 if (!screencast_command_)
171 return; 169 return;
172 NotifyScreencastVisibility(visible); 170 NotifyScreencastVisibility(visible);
173 } 171 }
174 172
175 void RendererOverridesHandler::OnRenderViewHostChanged() { 173 void RendererOverridesHandler::SetRenderViewHost(
176 RenderViewHostImpl* host = GetRenderViewHostImpl(); 174 RenderViewHostImpl* host) {
175 host_ = host;
177 if (screencast_command_ && host) 176 if (screencast_command_ && host)
178 host->SetTouchEventEmulationEnabled(true, true); 177 host->SetTouchEventEmulationEnabled(true, true);
179 } 178 }
180 179
180 void RendererOverridesHandler::ClearRenderViewHost() {
181 host_ = NULL;
182 }
183
181 bool RendererOverridesHandler::OnSetTouchEventEmulationEnabled() { 184 bool RendererOverridesHandler::OnSetTouchEventEmulationEnabled() {
182 return screencast_command_.get() != NULL; 185 return screencast_command_.get() != NULL;
183 } 186 }
184 187
185 void RendererOverridesHandler::InnerSwapCompositorFrame() { 188 void RendererOverridesHandler::InnerSwapCompositorFrame() {
186 if ((base::TimeTicks::Now() - last_frame_time_).InMilliseconds() < 189 if ((base::TimeTicks::Now() - last_frame_time_).InMilliseconds() <
187 kFrameRateThresholdMs) { 190 kFrameRateThresholdMs) {
188 return; 191 return;
189 } 192 }
190 193
191 RenderViewHost* host = GetRenderViewHostImpl(); 194 if (!host_ || !host_->GetView())
192 if (!host->GetView())
193 return; 195 return;
194 196
195 last_frame_time_ = base::TimeTicks::Now(); 197 last_frame_time_ = base::TimeTicks::Now();
196 198
197 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( 199 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>(
198 host->GetView()); 200 host_->GetView());
199 // TODO(vkuzkokov): do not use previous frame metadata. 201 // TODO(vkuzkokov): do not use previous frame metadata.
200 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; 202 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_;
201 203
202 float page_scale = metadata.page_scale_factor; 204 float page_scale = metadata.page_scale_factor;
203 gfx::SizeF viewport_size_dip = gfx::ScaleSize( 205 gfx::SizeF viewport_size_dip = gfx::ScaleSize(
204 metadata.scrollable_viewport_size, page_scale); 206 metadata.scrollable_viewport_size, page_scale);
205 207
206 float total_bar_height_dip = metadata.location_bar_content_translation.y() + 208 float total_bar_height_dip = metadata.location_bar_content_translation.y() +
207 metadata.overdraw_bottom_height; 209 metadata.overdraw_bottom_height;
208 gfx::SizeF screen_size_dip(viewport_size_dip.width(), 210 gfx::SizeF screen_size_dip(viewport_size_dip.width(),
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 265
264 scoped_refptr<DevToolsProtocol::Response> 266 scoped_refptr<DevToolsProtocol::Response>
265 RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( 267 RendererOverridesHandler::GrantPermissionsForSetFileInputFiles(
266 scoped_refptr<DevToolsProtocol::Command> command) { 268 scoped_refptr<DevToolsProtocol::Command> command) {
267 base::DictionaryValue* params = command->params(); 269 base::DictionaryValue* params = command->params();
268 base::ListValue* file_list = NULL; 270 base::ListValue* file_list = NULL;
269 const char* param = 271 const char* param =
270 devtools::DOM::setFileInputFiles::kParamFiles; 272 devtools::DOM::setFileInputFiles::kParamFiles;
271 if (!params || !params->GetList(param, &file_list)) 273 if (!params || !params->GetList(param, &file_list))
272 return command->InvalidParamResponse(param); 274 return command->InvalidParamResponse(param);
273 RenderViewHost* host = GetRenderViewHostImpl(); 275 if (!host_)
274 if (!host)
275 return NULL; 276 return NULL;
276 277
277 for (size_t i = 0; i < file_list->GetSize(); ++i) { 278 for (size_t i = 0; i < file_list->GetSize(); ++i) {
278 base::FilePath::StringType file; 279 base::FilePath::StringType file;
279 if (!file_list->GetString(i, &file)) 280 if (!file_list->GetString(i, &file))
280 return command->InvalidParamResponse(param); 281 return command->InvalidParamResponse(param);
281 ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadFile( 282 ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadFile(
282 host->GetProcess()->GetID(), base::FilePath(file)); 283 host_->GetProcess()->GetID(), base::FilePath(file));
283 } 284 }
284 return NULL; 285 return NULL;
285 } 286 }
286 287
287 288
288 // Network agent handlers ---------------------------------------------------- 289 // Network agent handlers ----------------------------------------------------
289 290
290 scoped_refptr<DevToolsProtocol::Response> 291 scoped_refptr<DevToolsProtocol::Response>
291 RendererOverridesHandler::ClearBrowserCache( 292 RendererOverridesHandler::ClearBrowserCache(
292 scoped_refptr<DevToolsProtocol::Command> command) { 293 scoped_refptr<DevToolsProtocol::Command> command) {
293 GetContentClient()->browser()->ClearCache(GetRenderViewHostImpl()); 294 GetContentClient()->browser()->ClearCache(host_);
294 return command->SuccessResponse(NULL); 295 return command->SuccessResponse(NULL);
295 } 296 }
296 297
297 scoped_refptr<DevToolsProtocol::Response> 298 scoped_refptr<DevToolsProtocol::Response>
298 RendererOverridesHandler::ClearBrowserCookies( 299 RendererOverridesHandler::ClearBrowserCookies(
299 scoped_refptr<DevToolsProtocol::Command> command) { 300 scoped_refptr<DevToolsProtocol::Command> command) {
300 GetContentClient()->browser()->ClearCookies(GetRenderViewHostImpl()); 301 GetContentClient()->browser()->ClearCookies(host_);
301 return command->SuccessResponse(NULL); 302 return command->SuccessResponse(NULL);
302 } 303 }
303 304
304 305
305 // Page agent handlers ------------------------------------------------------- 306 // Page agent handlers -------------------------------------------------------
306 307
307 scoped_refptr<DevToolsProtocol::Response> 308 scoped_refptr<DevToolsProtocol::Response>
308 RendererOverridesHandler::PageDisable( 309 RendererOverridesHandler::PageDisable(
309 scoped_refptr<DevToolsProtocol::Command> command) { 310 scoped_refptr<DevToolsProtocol::Command> command) {
310 RenderViewHostImpl* host = GetRenderViewHostImpl(); 311 if (screencast_command_ && host_)
311 if (screencast_command_ && host) 312 host_->SetTouchEventEmulationEnabled(false, false);
312 host->SetTouchEventEmulationEnabled(false, false);
313 screencast_command_ = NULL; 313 screencast_command_ = NULL;
314 return NULL; 314 return NULL;
315 } 315 }
316 316
317 scoped_refptr<DevToolsProtocol::Response> 317 scoped_refptr<DevToolsProtocol::Response>
318 RendererOverridesHandler::PageHandleJavaScriptDialog( 318 RendererOverridesHandler::PageHandleJavaScriptDialog(
319 scoped_refptr<DevToolsProtocol::Command> command) { 319 scoped_refptr<DevToolsProtocol::Command> command) {
320 base::DictionaryValue* params = command->params(); 320 base::DictionaryValue* params = command->params();
321 const char* paramAccept = 321 const char* paramAccept =
322 devtools::Page::handleJavaScriptDialog::kParamAccept; 322 devtools::Page::handleJavaScriptDialog::kParamAccept;
323 bool accept = false; 323 bool accept = false;
324 if (!params || !params->GetBoolean(paramAccept, &accept)) 324 if (!params || !params->GetBoolean(paramAccept, &accept))
325 return command->InvalidParamResponse(paramAccept); 325 return command->InvalidParamResponse(paramAccept);
326 base::string16 prompt_override; 326 base::string16 prompt_override;
327 base::string16* prompt_override_ptr = &prompt_override; 327 base::string16* prompt_override_ptr = &prompt_override;
328 if (!params || !params->GetString( 328 if (!params || !params->GetString(
329 devtools::Page::handleJavaScriptDialog::kParamPromptText, 329 devtools::Page::handleJavaScriptDialog::kParamPromptText,
330 prompt_override_ptr)) { 330 prompt_override_ptr)) {
331 prompt_override_ptr = NULL; 331 prompt_override_ptr = NULL;
332 } 332 }
333 333
334 WebContents* web_contents = agent_->GetWebContents(); 334 if (!host_)
335 return command->InternalErrorResponse("Could not connect to view");
dgozman 2014/08/16 10:06:20 typo here and below: Could not connect to host
pfeldman 2014/08/16 11:12:40 I actually made them all consistent on purpose. It
336
337 WebContents* web_contents = WebContents::FromRenderViewHost(host_);
335 if (web_contents) { 338 if (web_contents) {
336 JavaScriptDialogManager* manager = 339 JavaScriptDialogManager* manager =
337 web_contents->GetDelegate()->GetJavaScriptDialogManager(); 340 web_contents->GetDelegate()->GetJavaScriptDialogManager();
338 if (manager && manager->HandleJavaScriptDialog( 341 if (manager && manager->HandleJavaScriptDialog(
339 web_contents, accept, prompt_override_ptr)) { 342 web_contents, accept, prompt_override_ptr)) {
340 return command->SuccessResponse(new base::DictionaryValue()); 343 return command->SuccessResponse(new base::DictionaryValue());
341 } 344 }
342 } 345 }
343 return command->InternalErrorResponse("No JavaScript dialog to handle"); 346 return command->InternalErrorResponse("No JavaScript dialog to handle");
344 } 347 }
345 348
346 scoped_refptr<DevToolsProtocol::Response> 349 scoped_refptr<DevToolsProtocol::Response>
347 RendererOverridesHandler::PageNavigate( 350 RendererOverridesHandler::PageNavigate(
348 scoped_refptr<DevToolsProtocol::Command> command) { 351 scoped_refptr<DevToolsProtocol::Command> command) {
349 base::DictionaryValue* params = command->params(); 352 base::DictionaryValue* params = command->params();
350 std::string url; 353 std::string url;
351 const char* param = devtools::Page::navigate::kParamUrl; 354 const char* param = devtools::Page::navigate::kParamUrl;
352 if (!params || !params->GetString(param, &url)) 355 if (!params || !params->GetString(param, &url))
353 return command->InvalidParamResponse(param); 356 return command->InvalidParamResponse(param);
354 357
355 GURL gurl(url); 358 GURL gurl(url);
356 if (!gurl.is_valid()) 359 if (!gurl.is_valid())
357 return command->InternalErrorResponse("Cannot navigate to invalid URL"); 360 return command->InternalErrorResponse("Cannot navigate to invalid URL");
358 361
359 WebContents* web_contents = agent_->GetWebContents(); 362 if (!host_)
363 return command->InternalErrorResponse("Could not connect to view");
364
365 WebContents* web_contents = WebContents::FromRenderViewHost(host_);
360 if (web_contents) { 366 if (web_contents) {
361 web_contents->GetController() 367 web_contents->GetController()
362 .LoadURL(gurl, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 368 .LoadURL(gurl, Referrer(), PAGE_TRANSITION_TYPED, std::string());
363 // Fall through into the renderer. 369 // Fall through into the renderer.
364 return NULL; 370 return NULL;
365 } 371 }
366 372
367 return command->InternalErrorResponse("No WebContents to navigate"); 373 return command->InternalErrorResponse("No WebContents to navigate");
368 } 374 }
369 375
370 scoped_refptr<DevToolsProtocol::Response> 376 scoped_refptr<DevToolsProtocol::Response>
371 RendererOverridesHandler::PageReload( 377 RendererOverridesHandler::PageReload(
372 scoped_refptr<DevToolsProtocol::Command> command) { 378 scoped_refptr<DevToolsProtocol::Command> command) {
373 WebContents* web_contents = agent_->GetWebContents(); 379 if (!host_)
380 return command->InternalErrorResponse("Could not connect to view");
381
382 WebContents* web_contents = WebContents::FromRenderViewHost(host_);
374 if (web_contents) { 383 if (web_contents) {
375 // Override only if it is crashed. 384 // Override only if it is crashed.
376 if (!web_contents->IsCrashed()) 385 if (!web_contents->IsCrashed())
377 return NULL; 386 return NULL;
378 387
379 web_contents->GetController().Reload(false); 388 web_contents->GetController().Reload(false);
380 return command->SuccessResponse(NULL); 389 return command->SuccessResponse(NULL);
381 } 390 }
382 return command->InternalErrorResponse("No WebContents to reload"); 391 return command->InternalErrorResponse("No WebContents to reload");
383 } 392 }
384 393
385 scoped_refptr<DevToolsProtocol::Response> 394 scoped_refptr<DevToolsProtocol::Response>
386 RendererOverridesHandler::PageGetNavigationHistory( 395 RendererOverridesHandler::PageGetNavigationHistory(
387 scoped_refptr<DevToolsProtocol::Command> command) { 396 scoped_refptr<DevToolsProtocol::Command> command) {
388 WebContents* web_contents = agent_->GetWebContents(); 397 if (!host_)
398 return command->InternalErrorResponse("Could not connect to view");
399 WebContents* web_contents = WebContents::FromRenderViewHost(host_);
389 if (web_contents) { 400 if (web_contents) {
390 base::DictionaryValue* result = new base::DictionaryValue(); 401 base::DictionaryValue* result = new base::DictionaryValue();
391 NavigationController& controller = web_contents->GetController(); 402 NavigationController& controller = web_contents->GetController();
392 result->SetInteger( 403 result->SetInteger(
393 devtools::Page::getNavigationHistory::kResponseCurrentIndex, 404 devtools::Page::getNavigationHistory::kResponseCurrentIndex,
394 controller.GetCurrentEntryIndex()); 405 controller.GetCurrentEntryIndex());
395 base::ListValue* entries = new base::ListValue(); 406 base::ListValue* entries = new base::ListValue();
396 for (int i = 0; i != controller.GetEntryCount(); ++i) { 407 for (int i = 0; i != controller.GetEntryCount(); ++i) {
397 const NavigationEntry* entry = controller.GetEntryAtIndex(i); 408 const NavigationEntry* entry = controller.GetEntryAtIndex(i);
398 base::DictionaryValue* entry_value = new base::DictionaryValue(); 409 base::DictionaryValue* entry_value = new base::DictionaryValue();
(...skipping 19 matching lines...) Expand all
418 scoped_refptr<DevToolsProtocol::Response> 429 scoped_refptr<DevToolsProtocol::Response>
419 RendererOverridesHandler::PageNavigateToHistoryEntry( 430 RendererOverridesHandler::PageNavigateToHistoryEntry(
420 scoped_refptr<DevToolsProtocol::Command> command) { 431 scoped_refptr<DevToolsProtocol::Command> command) {
421 base::DictionaryValue* params = command->params(); 432 base::DictionaryValue* params = command->params();
422 const char* param = devtools::Page::navigateToHistoryEntry::kParamEntryId; 433 const char* param = devtools::Page::navigateToHistoryEntry::kParamEntryId;
423 int entry_id = 0; 434 int entry_id = 0;
424 if (!params || !params->GetInteger(param, &entry_id)) { 435 if (!params || !params->GetInteger(param, &entry_id)) {
425 return command->InvalidParamResponse(param); 436 return command->InvalidParamResponse(param);
426 } 437 }
427 438
428 WebContents* web_contents = agent_->GetWebContents(); 439 if (!host_)
440 return command->InternalErrorResponse("Could not connect to view");
441
442 WebContents* web_contents = WebContents::FromRenderViewHost(host_);
429 if (web_contents) { 443 if (web_contents) {
430 NavigationController& controller = web_contents->GetController(); 444 NavigationController& controller = web_contents->GetController();
431 for (int i = 0; i != controller.GetEntryCount(); ++i) { 445 for (int i = 0; i != controller.GetEntryCount(); ++i) {
432 if (controller.GetEntryAtIndex(i)->GetUniqueID() == entry_id) { 446 if (controller.GetEntryAtIndex(i)->GetUniqueID() == entry_id) {
433 controller.GoToIndex(i); 447 controller.GoToIndex(i);
434 return command->SuccessResponse(new base::DictionaryValue()); 448 return command->SuccessResponse(new base::DictionaryValue());
435 } 449 }
436 } 450 }
437 return command->InvalidParamResponse(param); 451 return command->InvalidParamResponse(param);
438 } 452 }
439 return command->InternalErrorResponse("No WebContents to navigate"); 453 return command->InternalErrorResponse("No WebContents to navigate");
440 } 454 }
441 455
442 scoped_refptr<DevToolsProtocol::Response> 456 scoped_refptr<DevToolsProtocol::Response>
443 RendererOverridesHandler::PageCaptureScreenshot( 457 RendererOverridesHandler::PageCaptureScreenshot(
444 scoped_refptr<DevToolsProtocol::Command> command) { 458 scoped_refptr<DevToolsProtocol::Command> command) {
445 RenderViewHostImpl* host = GetRenderViewHostImpl(); 459 if (!host_ || !host_->GetView())
446 if (!host->GetView()) 460 return command->InternalErrorResponse("Could not connect to view");
447 return command->InternalErrorResponse("Unable to access the view");
448 461
449 host->GetSnapshotFromBrowser( 462 host_->GetSnapshotFromBrowser(
450 base::Bind(&RendererOverridesHandler::ScreenshotCaptured, 463 base::Bind(&RendererOverridesHandler::ScreenshotCaptured,
451 weak_factory_.GetWeakPtr(), command)); 464 weak_factory_.GetWeakPtr(), command));
452 return command->AsyncResponsePromise(); 465 return command->AsyncResponsePromise();
453 } 466 }
454 467
455 void RendererOverridesHandler::ScreenshotCaptured( 468 void RendererOverridesHandler::ScreenshotCaptured(
456 scoped_refptr<DevToolsProtocol::Command> command, 469 scoped_refptr<DevToolsProtocol::Command> command,
457 const unsigned char* png_data, 470 const unsigned char* png_data,
458 size_t png_size) { 471 size_t png_size) {
459 if (!png_data || !png_size) { 472 if (!png_data || !png_size) {
(...skipping 23 matching lines...) Expand all
483 #else 496 #else
484 result->SetBoolean(devtools::kResult, false); 497 result->SetBoolean(devtools::kResult, false);
485 #endif // defined(OS_ANDROID) 498 #endif // defined(OS_ANDROID)
486 return command->SuccessResponse(result); 499 return command->SuccessResponse(result);
487 } 500 }
488 501
489 scoped_refptr<DevToolsProtocol::Response> 502 scoped_refptr<DevToolsProtocol::Response>
490 RendererOverridesHandler::PageStartScreencast( 503 RendererOverridesHandler::PageStartScreencast(
491 scoped_refptr<DevToolsProtocol::Command> command) { 504 scoped_refptr<DevToolsProtocol::Command> command) {
492 screencast_command_ = command; 505 screencast_command_ = command;
493 RenderViewHostImpl* host = GetRenderViewHostImpl(); 506 if (!host_)
494 host->SetTouchEventEmulationEnabled(true, true); 507 return command->InternalErrorResponse("Could not connect to view");
495 bool visible = !host->is_hidden(); 508 host_->SetTouchEventEmulationEnabled(true, true);
509 bool visible = !host_->is_hidden();
496 NotifyScreencastVisibility(visible); 510 NotifyScreencastVisibility(visible);
497 if (visible) { 511 if (visible) {
498 if (has_last_compositor_frame_metadata_) 512 if (has_last_compositor_frame_metadata_)
499 InnerSwapCompositorFrame(); 513 InnerSwapCompositorFrame();
500 else 514 else
501 host->Send(new ViewMsg_ForceRedraw(host->GetRoutingID(), 0)); 515 host_->Send(new ViewMsg_ForceRedraw(host_->GetRoutingID(), 0));
502 } 516 }
503 return command->SuccessResponse(NULL); 517 return command->SuccessResponse(NULL);
504 } 518 }
505 519
506 scoped_refptr<DevToolsProtocol::Response> 520 scoped_refptr<DevToolsProtocol::Response>
507 RendererOverridesHandler::PageStopScreencast( 521 RendererOverridesHandler::PageStopScreencast(
508 scoped_refptr<DevToolsProtocol::Command> command) { 522 scoped_refptr<DevToolsProtocol::Command> command) {
509 last_frame_time_ = base::TimeTicks(); 523 last_frame_time_ = base::TimeTicks();
510 screencast_command_ = NULL; 524 screencast_command_ = NULL;
511 RenderViewHostImpl* host = GetRenderViewHostImpl(); 525 if (host_)
512 if (host) 526 host_->SetTouchEventEmulationEnabled(false, false);
513 host->SetTouchEventEmulationEnabled(false, false);
514 return command->SuccessResponse(NULL); 527 return command->SuccessResponse(NULL);
515 } 528 }
516 529
517 void RendererOverridesHandler::ScreencastFrameCaptured( 530 void RendererOverridesHandler::ScreencastFrameCaptured(
518 const std::string& format, 531 const std::string& format,
519 int quality, 532 int quality,
520 const cc::CompositorFrameMetadata& metadata, 533 const cc::CompositorFrameMetadata& metadata,
521 bool success, 534 bool success,
522 const SkBitmap& bitmap) { 535 const SkBitmap& bitmap) {
523 if (!success) { 536 if (!success) {
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 &security_origin)) { 807 &security_origin)) {
795 return command->InvalidParamResponse( 808 return command->InvalidParamResponse(
796 devtools::Page::queryUsageAndQuota::kParamSecurityOrigin); 809 devtools::Page::queryUsageAndQuota::kParamSecurityOrigin);
797 } 810 }
798 811
799 ResponseCallback callback = base::Bind( 812 ResponseCallback callback = base::Bind(
800 &RendererOverridesHandler::PageQueryUsageAndQuotaCompleted, 813 &RendererOverridesHandler::PageQueryUsageAndQuotaCompleted,
801 weak_factory_.GetWeakPtr(), 814 weak_factory_.GetWeakPtr(),
802 command); 815 command);
803 816
804 scoped_refptr<quota::QuotaManager> quota_manager = GetRenderViewHostImpl() 817 if (!host_)
805 ->GetProcess() 818 return command->InternalErrorResponse("Could not connect to view");
806 ->GetStoragePartition() 819
807 ->GetQuotaManager(); 820 scoped_refptr<quota::QuotaManager> quota_manager =
821 host_->GetProcess()->GetStoragePartition()->GetQuotaManager();
808 822
809 BrowserThread::PostTask( 823 BrowserThread::PostTask(
810 BrowserThread::IO, FROM_HERE, 824 BrowserThread::IO, FROM_HERE,
811 base::Bind( 825 base::Bind(
812 &QueryUsageAndQuotaOnIOThread, 826 &QueryUsageAndQuotaOnIOThread,
813 quota_manager, 827 quota_manager,
814 GURL(security_origin), 828 GURL(security_origin),
815 callback)); 829 callback));
816 830
817 return command->AsyncResponsePromise(); 831 return command->AsyncResponsePromise();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 event->button = WebMouseEvent::ButtonMiddle; 961 event->button = WebMouseEvent::ButtonMiddle;
948 event->modifiers |= WebInputEvent::MiddleButtonDown; 962 event->modifiers |= WebInputEvent::MiddleButtonDown;
949 } else if (button == "right") { 963 } else if (button == "right") {
950 event->button = WebMouseEvent::ButtonRight; 964 event->button = WebMouseEvent::ButtonRight;
951 event->modifiers |= WebInputEvent::RightButtonDown; 965 event->modifiers |= WebInputEvent::RightButtonDown;
952 } else { 966 } else {
953 return command->InvalidParamResponse( 967 return command->InvalidParamResponse(
954 devtools::Input::emulateTouchFromMouseEvent::kParamButton); 968 devtools::Input::emulateTouchFromMouseEvent::kParamButton);
955 } 969 }
956 970
957 RenderViewHost* host = GetRenderViewHostImpl(); 971 if (!host_)
972 return command->InternalErrorResponse("Could not connect to view");
973
958 if (event->type == WebInputEvent::MouseWheel) 974 if (event->type == WebInputEvent::MouseWheel)
959 host->ForwardWheelEvent(wheel_event); 975 host_->ForwardWheelEvent(wheel_event);
960 else 976 else
961 host->ForwardMouseEvent(mouse_event); 977 host_->ForwardMouseEvent(mouse_event);
962 return command->SuccessResponse(NULL); 978 return command->SuccessResponse(NULL);
963 } 979 }
964 980
965 RenderViewHostImpl* RendererOverridesHandler::GetRenderViewHostImpl() {
966 return static_cast<RenderViewHostImpl*>(
967 agent_->GetWebContents()->GetRenderViewHost());
968 }
969
970 } // namespace content 981 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/devtools/renderer_overrides_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698