Index: content/browser/devtools/renderer_overrides_handler.cc |
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc |
index d700dee9459362adad5459477dd16d4503bf795a..b068a85f084a5cde0500aae2c2fc74aef4238658 100644 |
--- a/content/browser/devtools/renderer_overrides_handler.cc |
+++ b/content/browser/devtools/renderer_overrides_handler.cc |
@@ -67,9 +67,8 @@ static int kCaptureRetryLimit = 2; |
} // namespace |
-RendererOverridesHandler::RendererOverridesHandler(DevToolsAgentHost* agent) |
- : agent_(agent), |
- has_last_compositor_frame_metadata_(false), |
+RendererOverridesHandler::RendererOverridesHandler() |
+ : has_last_compositor_frame_metadata_(false), |
capture_retry_count_(0), |
weak_factory_(this) { |
RegisterCommandHandler( |
@@ -151,9 +150,8 @@ RendererOverridesHandler::RendererOverridesHandler(DevToolsAgentHost* agent) |
RendererOverridesHandler::~RendererOverridesHandler() {} |
void RendererOverridesHandler::OnClientDetached() { |
- RenderViewHostImpl* host = GetRenderViewHostImpl(); |
- if (screencast_command_ && host) |
- host->SetTouchEventEmulationEnabled(false, false); |
+ if (screencast_command_ && host_) |
+ host_->SetTouchEventEmulationEnabled(false, false); |
screencast_command_ = NULL; |
} |
@@ -172,12 +170,17 @@ void RendererOverridesHandler::OnVisibilityChanged(bool visible) { |
NotifyScreencastVisibility(visible); |
} |
-void RendererOverridesHandler::OnRenderViewHostChanged() { |
- RenderViewHostImpl* host = GetRenderViewHostImpl(); |
+void RendererOverridesHandler::SetRenderViewHost( |
+ RenderViewHostImpl* host) { |
+ host_ = host; |
if (screencast_command_ && host) |
host->SetTouchEventEmulationEnabled(true, true); |
} |
+void RendererOverridesHandler::ClearRenderViewHost() { |
+ host_ = NULL; |
+} |
+ |
bool RendererOverridesHandler::OnSetTouchEventEmulationEnabled() { |
return screencast_command_.get() != NULL; |
} |
@@ -188,14 +191,13 @@ void RendererOverridesHandler::InnerSwapCompositorFrame() { |
return; |
} |
- RenderViewHost* host = GetRenderViewHostImpl(); |
- if (!host->GetView()) |
+ if (!host_ || !host_->GetView()) |
return; |
last_frame_time_ = base::TimeTicks::Now(); |
RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
- host->GetView()); |
+ host_->GetView()); |
// TODO(vkuzkokov): do not use previous frame metadata. |
cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; |
@@ -270,8 +272,7 @@ RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( |
devtools::DOM::setFileInputFiles::kParamFiles; |
if (!params || !params->GetList(param, &file_list)) |
return command->InvalidParamResponse(param); |
- RenderViewHost* host = GetRenderViewHostImpl(); |
- if (!host) |
+ if (!host_) |
return NULL; |
for (size_t i = 0; i < file_list->GetSize(); ++i) { |
@@ -279,7 +280,7 @@ RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( |
if (!file_list->GetString(i, &file)) |
return command->InvalidParamResponse(param); |
ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadFile( |
- host->GetProcess()->GetID(), base::FilePath(file)); |
+ host_->GetProcess()->GetID(), base::FilePath(file)); |
} |
return NULL; |
} |
@@ -290,14 +291,14 @@ RendererOverridesHandler::GrantPermissionsForSetFileInputFiles( |
scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::ClearBrowserCache( |
scoped_refptr<DevToolsProtocol::Command> command) { |
- GetContentClient()->browser()->ClearCache(GetRenderViewHostImpl()); |
+ GetContentClient()->browser()->ClearCache(host_); |
return command->SuccessResponse(NULL); |
} |
scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::ClearBrowserCookies( |
scoped_refptr<DevToolsProtocol::Command> command) { |
- GetContentClient()->browser()->ClearCookies(GetRenderViewHostImpl()); |
+ GetContentClient()->browser()->ClearCookies(host_); |
return command->SuccessResponse(NULL); |
} |
@@ -307,9 +308,8 @@ RendererOverridesHandler::ClearBrowserCookies( |
scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::PageDisable( |
scoped_refptr<DevToolsProtocol::Command> command) { |
- RenderViewHostImpl* host = GetRenderViewHostImpl(); |
- if (screencast_command_ && host) |
- host->SetTouchEventEmulationEnabled(false, false); |
+ if (screencast_command_ && host_) |
+ host_->SetTouchEventEmulationEnabled(false, false); |
screencast_command_ = NULL; |
return NULL; |
} |
@@ -331,7 +331,10 @@ RendererOverridesHandler::PageHandleJavaScriptDialog( |
prompt_override_ptr = NULL; |
} |
- WebContents* web_contents = agent_->GetWebContents(); |
+ if (!host_) |
+ 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
|
+ |
+ WebContents* web_contents = WebContents::FromRenderViewHost(host_); |
if (web_contents) { |
JavaScriptDialogManager* manager = |
web_contents->GetDelegate()->GetJavaScriptDialogManager(); |
@@ -356,7 +359,10 @@ RendererOverridesHandler::PageNavigate( |
if (!gurl.is_valid()) |
return command->InternalErrorResponse("Cannot navigate to invalid URL"); |
- WebContents* web_contents = agent_->GetWebContents(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ |
+ WebContents* web_contents = WebContents::FromRenderViewHost(host_); |
if (web_contents) { |
web_contents->GetController() |
.LoadURL(gurl, Referrer(), PAGE_TRANSITION_TYPED, std::string()); |
@@ -370,7 +376,10 @@ RendererOverridesHandler::PageNavigate( |
scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::PageReload( |
scoped_refptr<DevToolsProtocol::Command> command) { |
- WebContents* web_contents = agent_->GetWebContents(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ |
+ WebContents* web_contents = WebContents::FromRenderViewHost(host_); |
if (web_contents) { |
// Override only if it is crashed. |
if (!web_contents->IsCrashed()) |
@@ -385,7 +394,9 @@ RendererOverridesHandler::PageReload( |
scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::PageGetNavigationHistory( |
scoped_refptr<DevToolsProtocol::Command> command) { |
- WebContents* web_contents = agent_->GetWebContents(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ WebContents* web_contents = WebContents::FromRenderViewHost(host_); |
if (web_contents) { |
base::DictionaryValue* result = new base::DictionaryValue(); |
NavigationController& controller = web_contents->GetController(); |
@@ -425,7 +436,10 @@ RendererOverridesHandler::PageNavigateToHistoryEntry( |
return command->InvalidParamResponse(param); |
} |
- WebContents* web_contents = agent_->GetWebContents(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ |
+ WebContents* web_contents = WebContents::FromRenderViewHost(host_); |
if (web_contents) { |
NavigationController& controller = web_contents->GetController(); |
for (int i = 0; i != controller.GetEntryCount(); ++i) { |
@@ -442,11 +456,10 @@ RendererOverridesHandler::PageNavigateToHistoryEntry( |
scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::PageCaptureScreenshot( |
scoped_refptr<DevToolsProtocol::Command> command) { |
- RenderViewHostImpl* host = GetRenderViewHostImpl(); |
- if (!host->GetView()) |
- return command->InternalErrorResponse("Unable to access the view"); |
+ if (!host_ || !host_->GetView()) |
+ return command->InternalErrorResponse("Could not connect to view"); |
- host->GetSnapshotFromBrowser( |
+ host_->GetSnapshotFromBrowser( |
base::Bind(&RendererOverridesHandler::ScreenshotCaptured, |
weak_factory_.GetWeakPtr(), command)); |
return command->AsyncResponsePromise(); |
@@ -490,15 +503,16 @@ scoped_refptr<DevToolsProtocol::Response> |
RendererOverridesHandler::PageStartScreencast( |
scoped_refptr<DevToolsProtocol::Command> command) { |
screencast_command_ = command; |
- RenderViewHostImpl* host = GetRenderViewHostImpl(); |
- host->SetTouchEventEmulationEnabled(true, true); |
- bool visible = !host->is_hidden(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ host_->SetTouchEventEmulationEnabled(true, true); |
+ bool visible = !host_->is_hidden(); |
NotifyScreencastVisibility(visible); |
if (visible) { |
if (has_last_compositor_frame_metadata_) |
InnerSwapCompositorFrame(); |
else |
- host->Send(new ViewMsg_ForceRedraw(host->GetRoutingID(), 0)); |
+ host_->Send(new ViewMsg_ForceRedraw(host_->GetRoutingID(), 0)); |
} |
return command->SuccessResponse(NULL); |
} |
@@ -508,9 +522,8 @@ RendererOverridesHandler::PageStopScreencast( |
scoped_refptr<DevToolsProtocol::Command> command) { |
last_frame_time_ = base::TimeTicks(); |
screencast_command_ = NULL; |
- RenderViewHostImpl* host = GetRenderViewHostImpl(); |
- if (host) |
- host->SetTouchEventEmulationEnabled(false, false); |
+ if (host_) |
+ host_->SetTouchEventEmulationEnabled(false, false); |
return command->SuccessResponse(NULL); |
} |
@@ -801,10 +814,11 @@ RendererOverridesHandler::PageQueryUsageAndQuota( |
weak_factory_.GetWeakPtr(), |
command); |
- scoped_refptr<quota::QuotaManager> quota_manager = GetRenderViewHostImpl() |
- ->GetProcess() |
- ->GetStoragePartition() |
- ->GetQuotaManager(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ |
+ scoped_refptr<quota::QuotaManager> quota_manager = |
+ host_->GetProcess()->GetStoragePartition()->GetQuotaManager(); |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
@@ -954,17 +968,14 @@ RendererOverridesHandler::InputEmulateTouchFromMouseEvent( |
devtools::Input::emulateTouchFromMouseEvent::kParamButton); |
} |
- RenderViewHost* host = GetRenderViewHostImpl(); |
+ if (!host_) |
+ return command->InternalErrorResponse("Could not connect to view"); |
+ |
if (event->type == WebInputEvent::MouseWheel) |
- host->ForwardWheelEvent(wheel_event); |
+ host_->ForwardWheelEvent(wheel_event); |
else |
- host->ForwardMouseEvent(mouse_event); |
+ host_->ForwardMouseEvent(mouse_event); |
return command->SuccessResponse(NULL); |
} |
-RenderViewHostImpl* RendererOverridesHandler::GetRenderViewHostImpl() { |
- return static_cast<RenderViewHostImpl*>( |
- agent_->GetWebContents()->GetRenderViewHost()); |
-} |
- |
} // namespace content |