summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-16 15:31:38 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-16 15:31:38 +0000
commit85b70863c59d2306d2c8fb5353d99c8a5bb779f0 (patch)
treeb98d7a43df5a5e2dadf81520c9863705a7c3b969 /content
parentf0e222a9f23b7717b6442b65c64e1d30e533a893 (diff)
downloadchromium_src-85b70863c59d2306d2c8fb5353d99c8a5bb779f0.zip
chromium_src-85b70863c59d2306d2c8fb5353d99c8a5bb779f0.tar.gz
chromium_src-85b70863c59d2306d2c8fb5353d99c8a5bb779f0.tar.bz2
DevTools: follow up to r288297, check rvh for being null in all branches.
Review URL: https://codereview.chromium.org/482503002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290151 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/devtools/render_view_devtools_agent_host.cc11
-rw-r--r--content/browser/devtools/render_view_devtools_agent_host.h3
-rw-r--r--content/browser/devtools/renderer_overrides_handler.cc105
-rw-r--r--content/browser/devtools/renderer_overrides_handler.h10
4 files changed, 70 insertions, 59 deletions
diff --git a/content/browser/devtools/render_view_devtools_agent_host.cc b/content/browser/devtools/render_view_devtools_agent_host.cc
index f0c9c8f..86c0867 100644
--- a/content/browser/devtools/render_view_devtools_agent_host.cc
+++ b/content/browser/devtools/render_view_devtools_agent_host.cc
@@ -107,7 +107,7 @@ void RenderViewDevToolsAgentHost::OnCancelPendingNavigation(
RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh)
: render_view_host_(NULL),
- overrides_handler_(new RendererOverridesHandler(this)),
+ overrides_handler_(new RendererOverridesHandler()),
tracing_handler_(
new DevToolsTracingHandler(DevToolsTracingHandler::Renderer)),
power_handler_(new DevToolsPowerHandler()),
@@ -254,8 +254,8 @@ void RenderViewDevToolsAgentHost::AboutToNavigateRenderView(
if (!render_view_host_)
return;
- if (render_view_host_ == dest_rvh && static_cast<RenderViewHostImpl*>(
- render_view_host_)->render_view_termination_status() ==
+ if (render_view_host_ == dest_rvh &&
+ render_view_host_->render_view_termination_status() ==
base::TERMINATION_STATUS_STILL_RUNNING)
return;
ReattachToRenderViewHost(dest_rvh);
@@ -342,10 +342,10 @@ void RenderViewDevToolsAgentHost::Observe(int type,
void RenderViewDevToolsAgentHost::SetRenderViewHost(RenderViewHost* rvh) {
DCHECK(!render_view_host_);
- render_view_host_ = rvh;
+ render_view_host_ = static_cast<RenderViewHostImpl*>(rvh);
WebContentsObserver::Observe(WebContents::FromRenderViewHost(rvh));
- overrides_handler_->OnRenderViewHostChanged();
+ overrides_handler_->SetRenderViewHost(render_view_host_);
registrar_.Add(
this,
@@ -360,6 +360,7 @@ void RenderViewDevToolsAgentHost::ClearRenderViewHost() {
content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
content::Source<RenderWidgetHost>(render_view_host_));
render_view_host_ = NULL;
+ overrides_handler_->ClearRenderViewHost();
}
void RenderViewDevToolsAgentHost::DisconnectWebContents() {
diff --git a/content/browser/devtools/render_view_devtools_agent_host.h b/content/browser/devtools/render_view_devtools_agent_host.h
index b1f3e07..5a9d5b4 100644
--- a/content/browser/devtools/render_view_devtools_agent_host.h
+++ b/content/browser/devtools/render_view_devtools_agent_host.h
@@ -26,6 +26,7 @@ class DevToolsPowerHandler;
class DevToolsTracingHandler;
class RendererOverridesHandler;
class RenderViewHost;
+class RenderViewHostImpl;
#if defined(OS_ANDROID)
class PowerSaveBlockerImpl;
@@ -96,7 +97,7 @@ class CONTENT_EXPORT RenderViewDevToolsAgentHost
void InnerOnClientAttached();
void InnerClientDetachedFromRenderer();
- RenderViewHost* render_view_host_;
+ RenderViewHostImpl* render_view_host_;
scoped_ptr<RendererOverridesHandler> overrides_handler_;
scoped_ptr<DevToolsTracingHandler> tracing_handler_;
scoped_ptr<DevToolsPowerHandler> power_handler_;
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc
index d700dee..b068a85 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");
+
+ 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
diff --git a/content/browser/devtools/renderer_overrides_handler.h b/content/browser/devtools/renderer_overrides_handler.h
index 4f5076e..774a683 100644
--- a/content/browser/devtools/renderer_overrides_handler.h
+++ b/content/browser/devtools/renderer_overrides_handler.h
@@ -23,7 +23,6 @@ class Message;
namespace content {
-class DevToolsAgentHost;
class DevToolsTracingHandler;
class RenderViewHostImpl;
@@ -33,13 +32,14 @@ class RenderViewHostImpl;
class CONTENT_EXPORT RendererOverridesHandler
: public DevToolsProtocol::Handler {
public:
- explicit RendererOverridesHandler(DevToolsAgentHost* agent);
+ RendererOverridesHandler();
virtual ~RendererOverridesHandler();
void OnClientDetached();
void OnSwapCompositorFrame(const cc::CompositorFrameMetadata& frame_metadata);
void OnVisibilityChanged(bool visible);
- void OnRenderViewHostChanged();
+ void SetRenderViewHost(RenderViewHostImpl* host);
+ void ClearRenderViewHost();
bool OnSetTouchEventEmulationEnabled();
private:
@@ -102,9 +102,7 @@ class CONTENT_EXPORT RendererOverridesHandler
scoped_refptr<DevToolsProtocol::Response> InputEmulateTouchFromMouseEvent(
scoped_refptr<DevToolsProtocol::Command> command);
- RenderViewHostImpl* GetRenderViewHostImpl();
-
- DevToolsAgentHost* agent_;
+ RenderViewHostImpl* host_;
scoped_refptr<DevToolsProtocol::Command> screencast_command_;
bool has_last_compositor_frame_metadata_;
cc::CompositorFrameMetadata last_compositor_frame_metadata_;