Chromium Code Reviews| 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 |