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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/devtools/renderer_overrides_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« 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