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

Side by Side Diff: chrome/browser/devtools/devtools_window.cc

Issue 13305002: Remove redundant DevToolsManager methods and clean up its clients. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 // static 133 // static
134 DevToolsWindow* DevToolsWindow::GetDockedInstanceForInspectedTab( 134 DevToolsWindow* DevToolsWindow::GetDockedInstanceForInspectedTab(
135 WebContents* inspected_web_contents) { 135 WebContents* inspected_web_contents) {
136 if (!inspected_web_contents) 136 if (!inspected_web_contents)
137 return NULL; 137 return NULL;
138 138
139 if (!DevToolsAgentHost::HasFor(inspected_web_contents->GetRenderViewHost())) 139 if (!DevToolsAgentHost::HasFor(inspected_web_contents->GetRenderViewHost()))
140 return NULL; 140 return NULL;
141 scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetOrCreateFor( 141 scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetOrCreateFor(
142 inspected_web_contents->GetRenderViewHost())); 142 inspected_web_contents->GetRenderViewHost()));
143 DevToolsManager* manager = DevToolsManager::GetInstance(); 143 DevToolsWindow* window = AsDevToolsWindow(agent);
144 DevToolsClientHost* client_host = manager->GetDevToolsClientHostFor(agent);
145 DevToolsWindow* window = AsDevToolsWindow(client_host);
146 return window && window->IsDocked() ? window : NULL; 144 return window && window->IsDocked() ? window : NULL;
147 } 145 }
148 146
149 // static 147 // static
150 bool DevToolsWindow::IsDevToolsWindow(RenderViewHost* window_rvh) { 148 bool DevToolsWindow::IsDevToolsWindow(RenderViewHost* window_rvh) {
151 return AsDevToolsWindow(window_rvh) != NULL; 149 return AsDevToolsWindow(window_rvh) != NULL;
152 } 150 }
153 151
154 // static 152 // static
155 DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( 153 DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker(
156 Profile* profile, 154 Profile* profile,
157 DevToolsAgentHost* worker_agent) { 155 DevToolsAgentHost* worker_agent) {
158 DevToolsWindow* window; 156 DevToolsWindow* window = AsDevToolsWindow(worker_agent);
159 DevToolsClientHost* client = content::DevToolsManager::GetInstance()-> 157 if (!window) {
160 GetDevToolsClientHostFor(worker_agent);
161 if (client) {
162 window = AsDevToolsWindow(client);
163 if (!window)
164 return NULL;
165 } else {
166 window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); 158 window = DevToolsWindow::CreateDevToolsWindowForWorker(profile);
159 // Will disconnect the current client host if there is one.
167 DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( 160 DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
168 worker_agent, 161 worker_agent,
169 window->frontend_host_.get()); 162 window->frontend_host_.get());
170 } 163 }
171 window->Show(DEVTOOLS_TOGGLE_ACTION_SHOW); 164 window->Show(DEVTOOLS_TOGGLE_ACTION_SHOW);
172 return window; 165 return window;
173 } 166 }
174 167
175 // static 168 // static
176 DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker( 169 DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker(
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 instances.erase(it); 279 instances.erase(it);
287 } 280 }
288 281
289 content::WebContents* DevToolsWindow::GetInspectedWebContents() { 282 content::WebContents* DevToolsWindow::GetInspectedWebContents() {
290 if (!inspected_contents_observer_) 283 if (!inspected_contents_observer_)
291 return NULL; 284 return NULL;
292 return inspected_contents_observer_->Get(); 285 return inspected_contents_observer_->Get();
293 } 286 }
294 287
295 void DevToolsWindow::InspectedContentsClosing() { 288 void DevToolsWindow::InspectedContentsClosing() {
289 Hide();
290 }
291
292 void DevToolsWindow::Hide() {
pfeldman 2013/03/29 14:59:23 Public method that deletes this is dangerous.
Vladislav Kaznacheev 2013/03/29 15:15:35 Made private On 2013/03/29 14:59:23, pfeldman wrot
296 if (IsDocked()) { 293 if (IsDocked()) {
297 // Update dev tools to reflect removed dev tools window. 294 // Update dev tools to reflect removed dev tools window.
298 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); 295 BrowserWindow* inspected_window = GetInspectedBrowserWindow();
299 if (inspected_window) 296 if (inspected_window)
300 inspected_window->UpdateDevTools(); 297 inspected_window->UpdateDevTools();
301 // In case of docked web_contents_, we own it so delete here. 298 // In case of docked web_contents_, we own it so delete here.
302 delete web_contents_; 299 delete web_contents_;
303 300
304 delete this; 301 delete this;
305 } else { 302 } else {
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 } 704 }
708 705
709 // static 706 // static
710 DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( 707 DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow(
711 RenderViewHost* inspected_rvh, 708 RenderViewHost* inspected_rvh,
712 bool force_open, 709 bool force_open,
713 DevToolsToggleAction action) { 710 DevToolsToggleAction action) {
714 scoped_refptr<DevToolsAgentHost> agent( 711 scoped_refptr<DevToolsAgentHost> agent(
715 DevToolsAgentHost::GetOrCreateFor(inspected_rvh)); 712 DevToolsAgentHost::GetOrCreateFor(inspected_rvh));
716 DevToolsManager* manager = DevToolsManager::GetInstance(); 713 DevToolsManager* manager = DevToolsManager::GetInstance();
717 DevToolsClientHost* host = manager->GetDevToolsClientHostFor(agent); 714 DevToolsWindow* window = AsDevToolsWindow(agent);
718 DevToolsWindow* window = AsDevToolsWindow(host);
719 if (host && !window) {
720 // Break remote debugging / extension debugging session.
721 host->ReplacedWithAnotherClient();
pfeldman 2013/03/29 14:59:23 Why did this go away?
Vladislav Kaznacheev 2013/03/29 15:15:35 Register... now takes care of that. On 2013/03/29
722 manager->UnregisterDevToolsClientHostFor(agent);
723 }
724
725 bool do_open = force_open; 715 bool do_open = force_open;
726 if (!window) { 716 if (!window) {
727 Profile* profile = Profile::FromBrowserContext( 717 Profile* profile = Profile::FromBrowserContext(
728 inspected_rvh->GetProcess()->GetBrowserContext()); 718 inspected_rvh->GetProcess()->GetBrowserContext());
729 DevToolsDockSide dock_side = GetDockSideFromPrefs(profile); 719 DevToolsDockSide dock_side = GetDockSideFromPrefs(profile);
730 window = Create(profile, inspected_rvh, dock_side, false); 720 window = Create(profile, inspected_rvh, dock_side, false);
721 // Will disconnect the current client host if there is one.
731 manager->RegisterDevToolsClientHostFor(agent, window->frontend_host_.get()); 722 manager->RegisterDevToolsClientHostFor(agent, window->frontend_host_.get());
732 do_open = true; 723 do_open = true;
733 } 724 }
734 725
735 // Update toolbar to reflect DevTools changes. 726 // Update toolbar to reflect DevTools changes.
736 window->UpdateBrowserToolbar(); 727 window->UpdateBrowserToolbar();
737 728
738 // If window is docked and visible, we hide it on toggle. If window is 729 // If window is docked and visible, we hide it on toggle. If window is
739 // undocked, we show (activate) it. 730 // undocked, we show (activate) it.
740 if (!window->IsDocked() || do_open) 731 if (!window->IsDocked() || do_open)
741 window->Show(action); 732 window->Show(action);
742 else 733 else
743 manager->UnregisterDevToolsClientHostFor(agent); 734 window->CloseWindow();
744 735
745 return window; 736 return window;
746 } 737 }
747 738
748 // static 739 // static
749 DevToolsWindow* DevToolsWindow::AsDevToolsWindow( 740 DevToolsWindow* DevToolsWindow::AsDevToolsWindow(
750 DevToolsClientHost* client_host) { 741 DevToolsAgentHost* agent_host) {
751 if (!client_host || g_instances == NULL) 742 DevToolsManager* manager = DevToolsManager::GetInstance();
752 return NULL;
753 DevToolsWindowList& instances = g_instances.Get(); 743 DevToolsWindowList& instances = g_instances.Get();
754 for (DevToolsWindowList::iterator it = instances.begin(); 744 for (DevToolsWindowList::iterator it = instances.begin();
755 it != instances.end(); ++it) { 745 it != instances.end(); ++it) {
756 if ((*it)->frontend_host_.get() == client_host) 746 if (manager->GetDevToolsAgentHostFor((*it)->frontend_host_.get()) ==
747 agent_host)
757 return *it; 748 return *it;
758 } 749 }
759 return NULL; 750 return NULL;
760 } 751 }
761 752
762 // static 753 // static
763 DevToolsWindow* DevToolsWindow::AsDevToolsWindow(RenderViewHost* window_rvh) { 754 DevToolsWindow* DevToolsWindow::AsDevToolsWindow(RenderViewHost* window_rvh) {
764 if (g_instances == NULL) 755 if (g_instances == NULL)
765 return NULL; 756 return NULL;
766 DevToolsWindowList& instances = g_instances.Get(); 757 DevToolsWindowList& instances = g_instances.Get();
(...skipping 24 matching lines...) Expand all
791 SetHeight(height); 782 SetHeight(height);
792 // Update inspected window to adjust heights. 783 // Update inspected window to adjust heights.
793 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); 784 BrowserWindow* inspected_window = GetInspectedBrowserWindow();
794 if (inspected_window) 785 if (inspected_window)
795 inspected_window->UpdateDevTools(); 786 inspected_window->UpdateDevTools();
796 } 787 }
797 788
798 void DevToolsWindow::CloseWindow() { 789 void DevToolsWindow::CloseWindow() {
799 DCHECK(IsDocked()); 790 DCHECK(IsDocked());
800 DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_.get()); 791 DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_.get());
801 InspectedContentsClosing(); 792 Hide();
802 } 793 }
803 794
804 void DevToolsWindow::MoveWindow(int x, int y) { 795 void DevToolsWindow::MoveWindow(int x, int y) {
805 if (!IsDocked()) { 796 if (!IsDocked()) {
806 gfx::Rect bounds = browser_->window()->GetBounds(); 797 gfx::Rect bounds = browser_->window()->GetBounds();
807 bounds.Offset(x, y); 798 bounds.Offset(x, y);
808 browser_->window()->SetBounds(bounds); 799 browser_->window()->SetBounds(bounds);
809 } 800 }
810 } 801 }
811 802
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 1032
1042 // static 1033 // static
1043 DevToolsDockSide DevToolsWindow::SideFromString( 1034 DevToolsDockSide DevToolsWindow::SideFromString(
1044 const std::string& dock_side) { 1035 const std::string& dock_side) {
1045 if (dock_side == kDockSideRight) 1036 if (dock_side == kDockSideRight)
1046 return DEVTOOLS_DOCK_SIDE_RIGHT; 1037 return DEVTOOLS_DOCK_SIDE_RIGHT;
1047 if (dock_side == kDockSideBottom) 1038 if (dock_side == kDockSideBottom)
1048 return DEVTOOLS_DOCK_SIDE_BOTTOM; 1039 return DEVTOOLS_DOCK_SIDE_BOTTOM;
1049 return DEVTOOLS_DOCK_SIDE_UNDOCKED; 1040 return DEVTOOLS_DOCK_SIDE_UNDOCKED;
1050 } 1041 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698