Index: chrome/browser/devtools/devtools_window.cc |
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
index f3c189c5b82d8615e021f3621d2962281e9f2442..2a01777cfe3f43aa4dd9e0980a37971ccb6c0e4d 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -394,7 +394,8 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
DevToolsWindow* window = FindDevToolsWindow(worker_agent.get()); |
if (!window) { |
window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); |
- window->bindings_->AttachTo(worker_agent); |
+ if (window) |
+ window->bindings_->AttachTo(worker_agent); |
} |
window->ScheduleShow(DevToolsToggleAction::Show()); |
return window; |
@@ -445,9 +446,10 @@ void DevToolsWindow::OpenExternalFrontend( |
bool isWorker) { |
DevToolsWindow* window = FindDevToolsWindow(agent_host.get()); |
if (!window) { |
- window = Create(profile, GURL(), NULL, isWorker, |
+ window = Create(profile, GURL(), nullptr, isWorker, |
DevToolsUI::GetProxyURL(frontend_url).spec(), false, ""); |
- window->bindings_->AttachTo(agent_host); |
+ if (window) |
dgozman
2015/01/29 15:50:35
Let's only |if (window)| in this method, and |DCHE
vkuzkokov
2015/01/30 12:44:15
Done.
|
+ window->bindings_->AttachTo(agent_host); |
} |
window->ScheduleShow(DevToolsToggleAction::Show()); |
dgozman
2015/01/29 15:50:35
This |window| may be nullptr.
vkuzkokov
2015/01/30 12:44:15
Done.
|
} |
@@ -469,6 +471,8 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
base::UserMetricsAction("DevTools_InspectRenderer")); |
window = Create(profile, GURL(), inspected_web_contents, |
false, std::string(), true, settings); |
+ if (!window) |
+ return nullptr; |
window->bindings_->AttachTo(agent.get()); |
do_open = true; |
} |
@@ -499,7 +503,7 @@ void DevToolsWindow::InspectElement( |
// TODO(loislo): we should initiate DevTools window opening from within |
// renderer. Otherwise, we still can hit a race condition here. |
DevToolsWindow* window = OpenDevToolsWindow(inspected_web_contents); |
- if (should_measure_time) |
+ if (window && should_measure_time) |
window->inspect_element_start_time_ = start_time; |
} |
@@ -672,7 +676,8 @@ DevToolsWindow::DevToolsWindow(Profile* profile, |
ui::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()); |
bindings_ = DevToolsUIBindings::ForWebContents(main_web_contents_); |
- DCHECK(bindings_); |
+ if (!bindings_) |
+ return; |
// Bindings take ownership over devtools as its delegate. |
bindings_->SetDelegate(this); |
@@ -727,7 +732,13 @@ DevToolsWindow* DevToolsWindow::Create( |
shared_worker_frontend, |
remote_frontend, |
can_dock, settings)); |
- return new DevToolsWindow(profile, url, inspected_web_contents, can_dock); |
+ DevToolsWindow* window = |
+ new DevToolsWindow(profile, url, inspected_web_contents, can_dock); |
+ if (!window->bindings_) { |
pfeldman
2015/01/29 16:09:59
Why is this happening? It makes code so much more
vkuzkokov
2015/01/30 12:44:14
DevToolsUI might be not created for some reason. B
|
+ delete window; |
+ window = nullptr; |
+ } |
+ return window; |
} |
// static |