summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser.cc3
-rw-r--r--chrome/browser/browser_process.h2
-rw-r--r--chrome/browser/browser_process_impl.cc8
-rw-r--r--chrome/browser/browser_process_impl.h11
-rw-r--r--chrome/browser/debugger/debugger.scons22
-rw-r--r--chrome/browser/debugger/debugger.vcproj20
-rw-r--r--chrome/browser/debugger/dev_tools_window.cc52
-rw-r--r--chrome/browser/debugger/dev_tools_window.h45
-rw-r--r--chrome/browser/debugger/devtools_manager.cc202
-rw-r--r--chrome/browser/debugger/devtools_manager.h102
-rw-r--r--chrome/browser/debugger/devtools_view.cc (renamed from chrome/browser/debugger/dev_tools_view.cc)26
-rw-r--r--chrome/browser/debugger/devtools_view.h (renamed from chrome/browser/debugger/dev_tools_view.h)17
-rw-r--r--chrome/browser/debugger/devtools_window.h28
-rw-r--r--chrome/browser/debugger/devtools_window_gtk.cc13
-rw-r--r--chrome/browser/debugger/devtools_window_mac.cc13
-rw-r--r--chrome/browser/debugger/devtools_window_win.cc70
-rw-r--r--chrome/browser/debugger/devtools_window_win.h44
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc23
-rw-r--r--chrome/browser/renderer_host/render_view_host.h11
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h5
-rw-r--r--chrome/browser/tab_contents/interstitial_page.cc6
-rw-r--r--chrome/browser/tab_contents/web_contents_view.h7
-rw-r--r--chrome/browser/tab_contents/web_contents_view_gtk.cc9
-rw-r--r--chrome/browser/tab_contents/web_contents_view_gtk.h2
-rw-r--r--chrome/browser/tab_contents/web_contents_view_mac.h2
-rw-r--r--chrome/browser/tab_contents/web_contents_view_mac.mm9
-rw-r--r--chrome/browser/tab_contents/web_contents_view_win.cc21
-rw-r--r--chrome/browser/tab_contents/web_contents_view_win.h6
-rw-r--r--chrome/chrome.gyp20
-rw-r--r--chrome/test/testing_browser_process.h4
30 files changed, 561 insertions, 242 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index 452e94d..baf46a6 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/browser_shutdown.h"
#include "chrome/browser/browser_window.h"
#include "chrome/browser/character_encoding.h"
+#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/dom_ui/downloads_ui.h"
#include "chrome/browser/dom_ui/history_ui.h"
#include "chrome/browser/dom_ui/new_tab_ui.h"
@@ -941,7 +942,7 @@ void Browser::OpenDebuggerWindow() {
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableOutOfProcessDevTools)) {
WebContents* wc = current_tab->AsWebContents();
- wc->view()->OpenDeveloperTools();
+ g_browser_process->devtools_manager()->ShowDevToolsForWebContents(wc);
} else {
// Only one debugger instance can exist at a time right now.
// TODO(erikkay): need an alert, dialog, something
diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
index 6eee7a7..d5758f0 100644
--- a/chrome/browser/browser_process.h
+++ b/chrome/browser/browser_process.h
@@ -17,6 +17,7 @@
class AutomationProviderList;
class ClipboardService;
+class DevToolsManager;
class DownloadRequestManager;
class GoogleURLTracker;
class IconManager;
@@ -77,6 +78,7 @@ class BrowserProcess {
virtual ProfileManager* profile_manager() = 0;
virtual PrefService* local_state() = 0;
virtual DebuggerWrapper* debugger_wrapper() = 0;
+ virtual DevToolsManager* devtools_manager() = 0;
virtual ClipboardService* clipboard_service() = 0;
// Returns the thread that we perform I/O coordination on (network requests,
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 4730c93..d11ae1d 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/browser_trial.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/debugger/debugger_wrapper.h"
+#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/download/download_file.h"
#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/google_url_tracker.h"
@@ -105,6 +106,7 @@ BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line)
broker_services_(NULL),
created_icon_manager_(false),
created_debugger_wrapper_(false),
+ created_devtools_manager_(false),
module_ref_count_(0),
memory_model_(MEDIUM_MEMORY_MODEL),
checked_for_new_frames_(false),
@@ -358,6 +360,12 @@ void BrowserProcessImpl::CreateDebuggerWrapper(int port) {
debugger_wrapper_ = new DebuggerWrapper(port);
}
+void BrowserProcessImpl::CreateDevToolsManager() {
+ DCHECK(!devtools_manager_.get());
+ created_devtools_manager_ = true;
+ devtools_manager_.reset(new DevToolsManager());
+}
+
void BrowserProcessImpl::CreateAcceleratorHandler() {
#if defined(OS_WIN)
DCHECK(accelerator_handler_.get() == NULL);
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
index 882b890..313abad 100644
--- a/chrome/browser/browser_process_impl.h
+++ b/chrome/browser/browser_process_impl.h
@@ -102,6 +102,13 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe {
return debugger_wrapper_.get();
}
+ virtual DevToolsManager* devtools_manager() {
+ DCHECK(CalledOnValidThread());
+ if (!created_devtools_manager_)
+ CreateDevToolsManager();
+ return devtools_manager_.get();
+ }
+
virtual ClipboardService* clipboard_service() {
DCHECK(CalledOnValidThread());
return clipboard_service_.get();
@@ -191,6 +198,7 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe {
void CreateViewedPageTracker();
void CreateIconManager();
void CreateDebuggerWrapper(int port);
+ void CreateDevToolsManager();
void CreateAcceleratorHandler();
void CreateGoogleURLTracker();
@@ -226,6 +234,9 @@ class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe {
bool created_debugger_wrapper_;
scoped_refptr<DebuggerWrapper> debugger_wrapper_;
+ bool created_devtools_manager_;
+ scoped_ptr<DevToolsManager> devtools_manager_;
+
scoped_ptr<ClipboardService> clipboard_service_;
scoped_ptr<AutomationProviderList> automation_provider_list_;
diff --git a/chrome/browser/debugger/debugger.scons b/chrome/browser/debugger/debugger.scons
index 3b0cb2f..adcc4a7 100644
--- a/chrome/browser/debugger/debugger.scons
+++ b/chrome/browser/debugger/debugger.scons
@@ -53,10 +53,11 @@ input_files = ChromeFileList([
'debugger_window.h',
'debugger_wrapper.cc',
'debugger_wrapper.h',
- 'dev_tools_view.cc',
- 'dev_tools_view.h',
- 'dev_tools_window.cc',
- 'dev_tools_window.h',
+ 'devtools_manager.h',
+ 'devtools_manager.cc',
+ 'devtools_view.cc',
+ 'devtools_view.h',
+ 'devtools_window.h',
])
if env.Bit('linux'):
@@ -64,8 +65,10 @@ if env.Bit('linux'):
input_files.Remove(
'debugger_view.cc',
'debugger_window.cc',
- 'dev_tools_view.cc',
- 'dev_tools_window.cc',
+ 'devtools_view.cc',
+ )
+ input_files.Append(
+ 'devtools_window_gtk.cc',
)
if env.Bit('mac'):
@@ -76,10 +79,13 @@ if env.Bit('mac'):
'debugger_node.cc',
'debugger_view.cc',
'debugger_window.cc',
- 'dev_tools_view.cc',
- 'dev_tools_window.cc',
+ 'devtools_view.cc',
+ )
+ input_files.Append(
+ 'devtools_window_mac.cc',
)
+
if not env.Bit('mac'):
# TODO(port): Enable for Mac.
env.ChromeLibrary('debugger', input_files)
diff --git a/chrome/browser/debugger/debugger.vcproj b/chrome/browser/debugger/debugger.vcproj
index 3cd3e16..8fdb2f5 100644
--- a/chrome/browser/debugger/debugger.vcproj
+++ b/chrome/browser/debugger/debugger.vcproj
@@ -206,19 +206,31 @@
>
</File>
<File
- RelativePath=".\dev_tools_view.cc"
+ RelativePath=".\devtools_manager.cc"
>
</File>
<File
- RelativePath=".\dev_tools_view.h"
+ RelativePath=".\devtools_manager.h"
>
</File>
<File
- RelativePath=".\dev_tools_window.cc"
+ RelativePath=".\devtools_view.cc"
>
</File>
<File
- RelativePath=".\dev_tools_window.h"
+ RelativePath=".\devtools_view.h"
+ >
+ </File>
+ <File
+ RelativePath=".\devtools_window.h"
+ >
+ </File>
+ <File
+ RelativePath=".\devtools_window_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\devtools_window_win.h"
>
</File>
</Files>
diff --git a/chrome/browser/debugger/dev_tools_window.cc b/chrome/browser/debugger/dev_tools_window.cc
deleted file mode 100644
index 9add6d0..0000000
--- a/chrome/browser/debugger/dev_tools_window.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/debugger/dev_tools_window.h"
-
-#include "chrome/browser/debugger/dev_tools_view.h"
-#include "chrome/views/window.h"
-
-DevToolsWindow::DevToolsWindow() : window_(NULL), tools_view_(NULL) {
-}
-
-DevToolsWindow::~DevToolsWindow() {
-}
-
-void DevToolsWindow::Show(int inspected_process_id,
- int inspected_view_id) {
- if (window_) {
- window_->Show();
- return;
- }
-
- tools_view_ = new DevToolsView(inspected_process_id, inspected_view_id);
- window_ = views::Window::CreateChromeWindow(NULL, gfx::Rect(), this);
- window_->Show();
-}
-
-void DevToolsWindow::SendDevToolsClientMessage(const IPC::Message& message) {
- if (!tools_view_)
- return;
- tools_view_->SendDevToolsClientMessage(message);
-}
-
-std::wstring DevToolsWindow::GetWindowTitle() const {
- return L"Developer Tools";
-}
-
-void DevToolsWindow::WindowClosing() {
- if (tools_view_) {
- tools_view_->OnWindowClosing();
- tools_view_ = NULL;
- window_ = NULL;
- }
-}
-
-bool DevToolsWindow::CanResize() const {
- return true;
-}
-
-views::View* DevToolsWindow::GetContentsView() {
- return tools_view_;
-}
diff --git a/chrome/browser/debugger/dev_tools_window.h b/chrome/browser/debugger/dev_tools_window.h
deleted file mode 100644
index d20a801..0000000
--- a/chrome/browser/debugger/dev_tools_window.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_
-#define CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_
-
-#include "base/basictypes.h"
-
-#include "chrome/views/window_delegate.h"
-
-namespace IPC {
-class Message;
-}
-namespace views {
-class Window;
-}
-class DevToolsView;
-class TabContents;
-
-class DevToolsWindow : public views::WindowDelegate {
- public:
- DevToolsWindow();
- virtual ~DevToolsWindow();
-
- // Show inspector window for the tab
- void Show(int inspected_process_id,
- int inspected_view_id);
-
- void SendDevToolsClientMessage(const IPC::Message& message);
-
- private:
- // views::WindowDelegate methods:
- virtual std::wstring GetWindowTitle() const;
- virtual void WindowClosing();
- virtual bool CanResize() const;
- virtual views::View* GetContentsView();
-
- views::Window* window_;
- DevToolsView* tools_view_;
-
- DISALLOW_COPY_AND_ASSIGN(DevToolsWindow);
-};
-
-#endif // CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_
diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc
new file mode 100644
index 0000000..41d0f7a
--- /dev/null
+++ b/chrome/browser/debugger/devtools_manager.cc
@@ -0,0 +1,202 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/debugger/devtools_manager.h"
+
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/debugger/devtools_window.h"
+#include "chrome/browser/renderer_host/render_view_host.h"
+#include "chrome/browser/tab_contents/render_view_host_manager.h"
+#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/tab_contents/web_contents.h"
+#include "chrome/common/notification_registrar.h"
+#include "chrome/common/notification_type.h"
+
+
+class DevToolsInstanceDescriptorImpl : public DevToolsInstanceDescriptor {
+ public:
+ explicit DevToolsInstanceDescriptorImpl(
+ NavigationController* navigation_controller)
+ : navigation_controller_(navigation_controller),
+ devtools_host_(NULL),
+ devtools_window_(NULL) {
+ }
+ virtual ~DevToolsInstanceDescriptorImpl() {}
+
+ virtual void SetDevToolsHost(RenderViewHost* render_view_host) {
+ devtools_host_ = render_view_host;
+ }
+
+ virtual void SetDevToolsWindow(DevToolsWindow* window) {
+ devtools_window_ = window;
+ }
+
+ virtual void Destroy() {
+ DevToolsManager* manager = g_browser_process->devtools_manager();
+ DCHECK(manager);
+ if (manager) {
+ manager->RemoveDescriptor(this);
+ }
+ delete this;
+ }
+
+ RenderViewHost* devtools_host() const {
+ return devtools_host_;
+ }
+
+ DevToolsWindow* devtools_window() const {
+ return devtools_window_;
+ }
+
+ NavigationController* navigation_controller() const {
+ return navigation_controller_;
+ }
+
+ private:
+ NavigationController* navigation_controller_;
+ RenderViewHost* devtools_host_;
+ DevToolsWindow* devtools_window_;
+
+ DISALLOW_COPY_AND_ASSIGN(DevToolsInstanceDescriptorImpl);
+};
+
+DevToolsManager::DevToolsManager() : web_contents_listeners_(NULL) {
+}
+
+DevToolsManager::~DevToolsManager() {
+ DCHECK(!web_contents_listeners_.get()) <<
+ "All devtools windows must alredy have been closed.";
+}
+
+void DevToolsManager::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ DCHECK(type == NotificationType::WEB_CONTENTS_DISCONNECTED);
+ Source<WebContents> src(source);
+ NavigationController* controller = src->controller();
+ DescriptorMap::const_iterator it =
+ navcontroller_to_descriptor_.find(controller);
+ if (it == navcontroller_to_descriptor_.end()) {
+ return;
+ }
+ bool active = (controller->active_contents() == src.ptr());
+ if (!active) {
+ return;
+ }
+ // Active tab contents disconnecting from its renderer means that the tab
+ // is closing so we are closing devtools as well.
+ it->second->devtools_window()->Close();
+}
+
+void DevToolsManager::ShowDevToolsForWebContents(WebContents* web_contents) {
+ NavigationController* navigation_controller = web_contents->controller();
+
+ DevToolsWindow* window(NULL);
+ DevToolsInstanceDescriptorImpl* desc(NULL);
+ DescriptorMap::const_iterator it =
+ navcontroller_to_descriptor_.find(navigation_controller);
+ if (it != navcontroller_to_descriptor_.end()) {
+ desc = it->second;
+ window = desc->devtools_window();
+ } else {
+ desc = new DevToolsInstanceDescriptorImpl(navigation_controller);
+ navcontroller_to_descriptor_[navigation_controller] = desc;
+
+ StartListening(navigation_controller);
+
+ window = DevToolsWindow::Create(desc);
+ }
+
+ window->Show();
+}
+
+void DevToolsManager::ForwardToDevToolsAgent(RenderViewHost* from,
+ const IPC::Message& message) {
+ NavigationController* nav_controller(NULL);
+ for (DescriptorMap::const_iterator it = navcontroller_to_descriptor_.begin();
+ it != navcontroller_to_descriptor_.end();
+ ++it) {
+ if (it->second->devtools_host() == from) {
+ nav_controller = it->second->navigation_controller();
+ break;
+ }
+ }
+
+ if (!nav_controller) {
+ NOTREACHED();
+ return;
+ }
+
+ // TODO(yurys): notify client that the agent is no longer available
+ TabContents* tc = nav_controller->active_contents();
+ if (!tc) {
+ return;
+ }
+ WebContents* wc = tc->AsWebContents();
+ if (!wc) {
+ return;
+ }
+ RenderViewHost* target_host = wc->render_view_host();
+ if (!target_host) {
+ return;
+ }
+
+ IPC::Message* m = new IPC::Message(message);
+ m->set_routing_id(target_host->routing_id());
+ target_host->Send(m);
+}
+
+void DevToolsManager::ForwardToDevToolsClient(RenderViewHost* from,
+ const IPC::Message& message) {
+ WebContents* wc = from->delegate()->GetAsWebContents();
+ if (!wc) {
+ NOTREACHED();
+ return;
+ }
+
+ NavigationController* navigation_controller = wc->controller();
+
+ DescriptorMap::const_iterator it =
+ navcontroller_to_descriptor_.find(navigation_controller);
+ if (it == navcontroller_to_descriptor_.end()) {
+ NOTREACHED();
+ return;
+ }
+
+ RenderViewHost* target_host = it->second->devtools_host();
+ IPC::Message* m = new IPC::Message(message);
+ m->set_routing_id(target_host->routing_id());
+ target_host->Send(m);
+}
+
+void DevToolsManager::RemoveDescriptor(
+ DevToolsInstanceDescriptorImpl* descriptor) {
+ NavigationController* navigation_controller =
+ descriptor->navigation_controller();
+ // This should be done before StopListening as the latter checks number of
+ // alive devtools instances.
+ navcontroller_to_descriptor_.erase(navigation_controller);
+ StopListening(navigation_controller);
+}
+
+
+void DevToolsManager::StartListening(
+ NavigationController* navigation_controller) {
+ // TODO(yurys): add render host change listener
+ if (!web_contents_listeners_.get()) {
+ web_contents_listeners_.reset(new NotificationRegistrar);
+ web_contents_listeners_->Add(
+ this,
+ NotificationType::WEB_CONTENTS_DISCONNECTED,
+ NotificationService::AllSources());
+ }
+}
+
+void DevToolsManager::StopListening(
+ NavigationController* navigation_controller) {
+ DCHECK(web_contents_listeners_.get());
+ if (navcontroller_to_descriptor_.empty()) {
+ web_contents_listeners_.reset();
+ }
+}
diff --git a/chrome/browser/debugger/devtools_manager.h b/chrome/browser/debugger/devtools_manager.h
new file mode 100644
index 0000000..ebacc5e
--- /dev/null
+++ b/chrome/browser/debugger/devtools_manager.h
@@ -0,0 +1,102 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_H_
+#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_H_
+
+#include <map>
+
+#include "base/basictypes.h"
+#include "base/scoped_ptr.h"
+#include "chrome/common/notification_service.h"
+
+namespace IPC {
+class Message;
+}
+
+class DevToolsInstanceDescriptorImpl;
+class DevToolsWindow;
+class NavigationController;
+class NotificationRegistrar;
+class RenderViewHost;
+class WebContents;
+
+// This class is a singleton that manages DevToolsWindow instances and routes
+// messages between developer tools clients and agents.
+class DevToolsManager : public NotificationObserver {
+ public:
+ DevToolsManager();
+ virtual ~DevToolsManager();
+
+ // Opend developer tools window for |web_contents|. If there is already
+ // one it will be revealed otherwise a new instance will be created. The
+ // devtools window is actually opened for the tab owning |web_contents|. If
+ // navigation occurs in it causing change of contents in the tab the devtools
+ // window will attach to the new contents. When the tab is closed the manager
+ // will close related devtools window.
+ void ShowDevToolsForWebContents(WebContents* web_contents);
+
+ void ForwardToDevToolsAgent(RenderViewHost* from,
+ const IPC::Message& message);
+ void ForwardToDevToolsClient(RenderViewHost* from,
+ const IPC::Message& message);
+
+ private:
+ // NotificationObserver override.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ friend class DevToolsInstanceDescriptorImpl;
+
+ // This method is called by DevToolsInstanceDescriptorImpl when it's about
+ // to be destroyed. It will remove all references from the manager to the
+ // descriptor and unregister all listeners related to the descriptor.
+ void RemoveDescriptor(DevToolsInstanceDescriptorImpl* descriptor);
+
+ void StartListening(NavigationController* navigation_controller);
+ void StopListening(NavigationController* navigation_controller);
+
+ // This object is not NULL iff there is at least one open DevToolsWindow.
+ scoped_ptr<NotificationRegistrar> web_contents_listeners_;
+
+ // This maps is for tracking devtools instances opened for browser tabs. It
+ // allows us to have at most one devtools window per tab.
+ // We use NavigationController* as key because it survives crosee-site
+ // navigation in cases when tab contents may change.
+ //
+ // This map doesn't own its values but DevToolsInstanceDescriptorImpl is
+ // expected to call RemoveDescriptor before dying to remove itself from the
+ // map.
+ typedef std::map<NavigationController*,
+ DevToolsInstanceDescriptorImpl*> DescriptorMap;
+ DescriptorMap navcontroller_to_descriptor_;
+
+ DISALLOW_COPY_AND_ASSIGN(DevToolsManager);
+};
+
+
+// Incapsulates information about devtools window instance necessary for
+// routing devtools messages and managing the window. It should be initialized
+// by DevToolsWindow concrete implementation.
+class DevToolsInstanceDescriptor {
+ public:
+ DevToolsInstanceDescriptor() {}
+
+ virtual void SetDevToolsHost(RenderViewHost* render_view_host) = 0;
+ virtual void SetDevToolsWindow(DevToolsWindow* window) = 0;
+
+ // This method is called when DevToolsWindow is closing and the descriptor
+ // becomes invalid. It will clean up DevToolsManager and delete this instance.
+ virtual void Destroy() = 0;
+
+ protected:
+ // This method should be called from Destroy only.
+ virtual ~DevToolsInstanceDescriptor() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DevToolsInstanceDescriptor);
+};
+
+#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_H_
diff --git a/chrome/browser/debugger/dev_tools_view.cc b/chrome/browser/debugger/devtools_view.cc
index f0f6234..8305f2a 100644
--- a/chrome/browser/debugger/dev_tools_view.cc
+++ b/chrome/browser/debugger/devtools_view.cc
@@ -2,11 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/debugger/dev_tools_view.h"
+#include "chrome/browser/debugger/devtools_view.h"
#include <string>
#include "chrome/browser/browser_list.h"
+#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/web_contents.h"
#include "chrome/browser/views/tab_contents_container_view.h"
@@ -14,9 +15,8 @@
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
-DevToolsView::DevToolsView(int inspected_process_id, int inspected_view_id)
- : inspected_process_id_(inspected_process_id),
- inspected_view_id_(inspected_view_id),
+DevToolsView::DevToolsView(DevToolsInstanceDescriptor* descriptor)
+ : descriptor_(descriptor),
web_contents_(NULL) {
web_container_ = new TabContentsContainerView();
AddChildView(web_container_);
@@ -25,16 +25,6 @@ DevToolsView::DevToolsView(int inspected_process_id, int inspected_view_id)
DevToolsView::~DevToolsView() {
}
-void DevToolsView::SendDevToolsClientMessage(const IPC::Message& message) {
- if (!web_contents_) {
- NOTREACHED();
- return;
- }
- IPC::Message* copy = new IPC::Message(message);
- copy->set_routing_id(web_contents_->render_view_host()->routing_id());
- web_contents_->render_view_host()->Send(copy);
-}
-
std::string DevToolsView::GetClassName() const {
return "DevToolsView";
}
@@ -68,8 +58,7 @@ void DevToolsView::Init() {
web_contents_->set_delegate(this);
web_container_->SetTabContents(web_contents_);
web_contents_->render_view_host()->AllowDOMUIBindings();
- web_contents_->render_view_host()->SetInspectedView(inspected_process_id_,
- inspected_view_id_);
+ descriptor_->SetDevToolsHost(web_contents_->render_view_host());
// chrome-ui://devtools/tools.html
GURL contents(std::string(chrome::kChromeUIScheme) + "://" +
@@ -81,6 +70,11 @@ void DevToolsView::Init() {
}
void DevToolsView::OnWindowClosing() {
+ DCHECK(descriptor_) << "OnWindowClosing is called twice";
+ if (descriptor_) {
+ descriptor_->Destroy();
+ descriptor_ = NULL;
+ }
web_container_->SetTabContents(NULL); // detach last (and only) tab
web_contents_->CloseContents(); // destroy the tab and navigation controller
}
diff --git a/chrome/browser/debugger/dev_tools_view.h b/chrome/browser/debugger/devtools_view.h
index 2ab0a37..2dc956c 100644
--- a/chrome/browser/debugger/dev_tools_view.h
+++ b/chrome/browser/debugger/devtools_view.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_DEBUGGER_DEV_TOOLS_VIEW_H_
-#define CHROME_BROWSER_DEBUGGER_DEV_TOOLS_VIEW_H_
+#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_VIEW_H_
+#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_VIEW_H_
#include <string>
@@ -12,20 +12,16 @@
#include "chrome/browser/tab_contents/tab_contents_delegate.h"
#include "chrome/views/view.h"
-namespace IPC {
-class Message;
-}
+class DevToolsInstanceDescriptor;
class TabContentsContainerView;
class WebContents;
class DevToolsView : public views::View,
public TabContentsDelegate {
public:
- explicit DevToolsView(int inspected_process_id, int inspected_view_id);
+ explicit DevToolsView(DevToolsInstanceDescriptor* descriptor);
virtual ~DevToolsView();
- void SendDevToolsClientMessage(const IPC::Message& message);
-
// Destroy content views when the window is closing.
void OnWindowClosing();
@@ -67,12 +63,11 @@ class DevToolsView : public views::View,
void Init();
- const int inspected_process_id_;
- const int inspected_view_id_;
+ DevToolsInstanceDescriptor* descriptor_;
WebContents* web_contents_;
TabContentsContainerView* web_container_;
DISALLOW_COPY_AND_ASSIGN(DevToolsView);
};
-#endif // CHROME_BROWSER_DEBUGGER_DEV_TOOLS_VIEW_H_
+#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_VIEW_H_
diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h
new file mode 100644
index 0000000..fb6379bca
--- /dev/null
+++ b/chrome/browser/debugger/devtools_window.h
@@ -0,0 +1,28 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_
+#define CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_
+
+#include "base/basictypes.h"
+
+class DevToolsInstanceDescriptor;
+
+class DevToolsWindow {
+ public:
+ static DevToolsWindow* Create(DevToolsInstanceDescriptor* descriptor);
+ virtual ~DevToolsWindow() {}
+
+ // Show developer tools window.
+ virtual void Show() = 0;
+ virtual void Close() = 0;
+
+ protected:
+ DevToolsWindow() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DevToolsWindow);
+};
+
+#endif // CHROME_BROWSER_DEBUGGER_DEV_TOOLS_WINDOW_H_
diff --git a/chrome/browser/debugger/devtools_window_gtk.cc b/chrome/browser/debugger/devtools_window_gtk.cc
new file mode 100644
index 0000000..be7096d
--- /dev/null
+++ b/chrome/browser/debugger/devtools_window_gtk.cc
@@ -0,0 +1,13 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/debugger/devtools_window.h"
+
+#include "base/logging.h"
+
+// static
+DevToolsWindow* DevToolsWindow::Create(DevToolsInstanceDescriptor* descriptor) {
+ NOTIMPLEMENTED();
+ return NULL;
+}
diff --git a/chrome/browser/debugger/devtools_window_mac.cc b/chrome/browser/debugger/devtools_window_mac.cc
new file mode 100644
index 0000000..be7096d
--- /dev/null
+++ b/chrome/browser/debugger/devtools_window_mac.cc
@@ -0,0 +1,13 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/debugger/devtools_window.h"
+
+#include "base/logging.h"
+
+// static
+DevToolsWindow* DevToolsWindow::Create(DevToolsInstanceDescriptor* descriptor) {
+ NOTIMPLEMENTED();
+ return NULL;
+}
diff --git a/chrome/browser/debugger/devtools_window_win.cc b/chrome/browser/debugger/devtools_window_win.cc
new file mode 100644
index 0000000..4b258e7
--- /dev/null
+++ b/chrome/browser/debugger/devtools_window_win.cc
@@ -0,0 +1,70 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/debugger/devtools_window_win.h"
+
+#include "chrome/browser/debugger/devtools_manager.h"
+#include "chrome/browser/debugger/devtools_view.h"
+#include "chrome/views/window.h"
+
+
+// static
+DevToolsWindow* DevToolsWindow::Create(DevToolsInstanceDescriptor* descriptor) {
+ DevToolsView* view = new DevToolsView(descriptor);
+ DevToolsWindowWin* window = new DevToolsWindowWin(view);
+ descriptor->SetDevToolsWindow(window);
+ views::Window::CreateChromeWindow(NULL, gfx::Rect(), window);
+ return window;
+}
+
+DevToolsWindowWin::DevToolsWindowWin(DevToolsView* view)
+ : tools_view_(view) {
+}
+
+DevToolsWindowWin::~DevToolsWindowWin() {
+ DCHECK(!tools_view_);
+}
+
+void DevToolsWindowWin::Show() {
+ if (window()) {
+ window()->Show();
+ } else {
+ NOTREACHED();
+ }
+}
+
+void DevToolsWindowWin::Close() {
+ if (window()) {
+ window()->Close();
+ } else {
+ NOTREACHED();
+ }
+}
+
+std::wstring DevToolsWindowWin::GetWindowTitle() const {
+ return L"Developer Tools";
+}
+
+void DevToolsWindowWin::WindowClosing() {
+ if (tools_view_) {
+ ReleaseWindow();
+ tools_view_->OnWindowClosing();
+ tools_view_ = NULL;
+ } else {
+ NOTREACHED() << "WindowClosing called twice.";
+ }
+}
+
+bool DevToolsWindowWin::CanResize() const {
+ return true;
+}
+
+views::View* DevToolsWindowWin::GetContentsView() {
+ return tools_view_;
+}
+
+void DevToolsWindowWin::DeleteDelegate() {
+ DCHECK(!tools_view_) << "WindowClosing should have been called.";
+ delete this;
+}
diff --git a/chrome/browser/debugger/devtools_window_win.h b/chrome/browser/debugger/devtools_window_win.h
new file mode 100644
index 0000000..f7be1aa
--- /dev/null
+++ b/chrome/browser/debugger/devtools_window_win.h
@@ -0,0 +1,44 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_WINDOW_WIN_H_
+#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_WINDOW_WIN_H_
+
+#include "base/basictypes.h"
+#include "chrome/browser/debugger/devtools_window.h"
+#include "chrome/views/window_delegate.h"
+
+namespace views {
+class Window;
+}
+class DevToolsInstanceDescriptor;
+class DevToolsView;
+class TabContents;
+
+class DevToolsWindowWin : public DevToolsWindow,
+ public views::WindowDelegate {
+ public:
+ virtual ~DevToolsWindowWin();
+
+ // Show developer tools window.
+ virtual void Show();
+ virtual void Close();
+
+ private:
+ friend class DevToolsWindow;
+ explicit DevToolsWindowWin(DevToolsView* view);
+
+ // views::WindowDelegate methods:
+ virtual std::wstring GetWindowTitle() const;
+ virtual void WindowClosing();
+ virtual bool CanResize() const;
+ virtual views::View* GetContentsView();
+ virtual void DeleteDelegate();
+
+ DevToolsView* tools_view_;
+
+ DISALLOW_COPY_AND_ASSIGN(DevToolsWindowWin);
+};
+
+#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_WINDOW_WIN_H_
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 8e2beec..04855e4 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/cross_site_request_manager.h"
#include "chrome/browser/debugger/debugger_wrapper.h"
+#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/metrics/user_metrics.h"
#include "chrome/browser/renderer_host/renderer_security_policy.h"
@@ -97,9 +98,7 @@ RenderViewHost::RenderViewHost(SiteInstance* instance,
run_modal_reply_msg_(NULL),
has_unload_listener_(false),
is_waiting_for_unload_ack_(false),
- are_javascript_messages_suppressed_(false),
- inspected_process_id_(-1),
- inspected_view_id_(-1) {
+ are_javascript_messages_suppressed_(false) {
DCHECK(instance_);
DCHECK(delegate_);
if (modal_dialog_event == NULL)
@@ -1188,26 +1187,12 @@ void RenderViewHost::DidDebugAttach() {
}
}
-void RenderViewHost::SetInspectedView(int inspected_process_id,
- int inspected_view_id) {
- inspected_process_id_ = inspected_process_id;
- inspected_view_id_ = inspected_view_id;
-}
-
void RenderViewHost::OnForwardToDevToolsAgent(const IPC::Message& message) {
- RenderViewHost* host = RenderViewHost::FromID(inspected_process_id_,
- inspected_view_id_);
- if (!host)
- return;
- IPC::Message* m = new IPC::Message(message);
- m->set_routing_id(inspected_view_id_);
- host->Send(m);
+ g_browser_process->devtools_manager()->ForwardToDevToolsAgent(this, message);
}
void RenderViewHost::OnForwardToDevToolsClient(const IPC::Message& message) {
- RenderViewHostDelegate::View* view = delegate_->GetViewDelegate();
- if (view)
- view->ForwardMessageToDevToolsClient(message);
+ g_browser_process->devtools_manager()->ForwardToDevToolsClient(this, message);
}
void RenderViewHost::OnUserMetricsRecordAction(const std::wstring& action) {
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index a050a63..0ac63f8 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -326,11 +326,6 @@ class RenderViewHost : public RenderWidgetHost {
// Must be called before CreateRenderView().
void AllowExtensionBindings();
- // Tells the renderer which render view should be inspected by developer
- // tools loaded in it. This method should be called before renderer is
- // created.
- void SetInspectedView(int inspected_process_id, int inspected_view_id);
-
// Sets a property with the given name and value on the DOM UI binding object.
// Must call AllowDOMUIBindings() on this renderer first.
void SetDOMUIProperty(const std::string& name, const std::string& value);
@@ -628,12 +623,6 @@ class RenderViewHost : public RenderWidgetHost {
bool are_javascript_messages_suppressed_;
- // When this renderer hosts developer tools this two fields contain rerndeder
- // process id and render view id of the page being inspected. Both fieldes
- // are -1 if the content of this renderer is not developer tools frontend.
- int inspected_process_id_;
- int inspected_view_id_;
-
DISALLOW_EVIL_CONSTRUCTORS(RenderViewHost);
};
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index ebd9202..9215f6a 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -115,11 +115,6 @@ class RenderViewHostDelegate {
// specified events. This gives an opportunity to the browser to process the
// event (used for keyboard shortcuts).
virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event) = 0;
-
- // Forwards message to DevToolsClient in developer tools window open for
- // this page.
- virtual void ForwardMessageToDevToolsClient(
- const IPC::Message& message) = 0;
};
// Interface for saving web pages.
diff --git a/chrome/browser/tab_contents/interstitial_page.cc b/chrome/browser/tab_contents/interstitial_page.cc
index a4e4f5b..2a63a41 100644
--- a/chrome/browser/tab_contents/interstitial_page.cc
+++ b/chrome/browser/tab_contents/interstitial_page.cc
@@ -84,7 +84,6 @@ class InterstitialPage::InterstitialPageRVHViewDelegate
virtual void UpdateDragCursor(bool is_drop_target);
virtual void TakeFocus(bool reverse);
virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
- virtual void ForwardMessageToDevToolsClient(const IPC::Message& message);
virtual void OnFindReply(int request_id,
int number_of_matches,
const gfx::Rect& selection_rect,
@@ -486,11 +485,6 @@ void InterstitialPage::InterstitialPageRVHViewDelegate::HandleKeyboardEvent(
interstitial_page_->tab()->GetViewDelegate()->HandleKeyboardEvent(event);
}
-void InterstitialPage::InterstitialPageRVHViewDelegate::
- ForwardMessageToDevToolsClient(const IPC::Message& message) {
- NOTREACHED() << "InterstitialPage does not support developer tools content.";
-}
-
void InterstitialPage::InterstitialPageRVHViewDelegate::OnFindReply(
int request_id, int number_of_matches, const gfx::Rect& selection_rect,
int active_match_ordinal, bool final_update) {
diff --git a/chrome/browser/tab_contents/web_contents_view.h b/chrome/browser/tab_contents/web_contents_view.h
index 52fceba..f63a3ee 100644
--- a/chrome/browser/tab_contents/web_contents_view.h
+++ b/chrome/browser/tab_contents/web_contents_view.h
@@ -108,13 +108,6 @@ class WebContentsView : public RenderViewHostDelegate::View {
// RenderWidgetHost is deleted. Removes |host| from internal maps.
void RenderWidgetHostDestroyed(RenderWidgetHost* host);
- // Opens developer tools window for the page.
- virtual void OpenDeveloperTools() = 0;
-
- // Forwards message to DevToolsClient in developer tools window open for this
- // page.
- virtual void ForwardMessageToDevToolsClient(const IPC::Message& message) = 0;
-
// Sets focus to the appropriate element when the tab contents is shown the
// first time.
virtual void SetInitialFocus() = 0;
diff --git a/chrome/browser/tab_contents/web_contents_view_gtk.cc b/chrome/browser/tab_contents/web_contents_view_gtk.cc
index e550174..7b6cf18 100644
--- a/chrome/browser/tab_contents/web_contents_view_gtk.cc
+++ b/chrome/browser/tab_contents/web_contents_view_gtk.cc
@@ -121,15 +121,6 @@ void WebContentsViewGtk::SizeContents(const gfx::Size& size) {
NOTIMPLEMENTED();
}
-void WebContentsViewGtk::OpenDeveloperTools() {
- NOTIMPLEMENTED();
-}
-
-void WebContentsViewGtk::ForwardMessageToDevToolsClient(
- const IPC::Message& message) {
- NOTIMPLEMENTED();
-}
-
void WebContentsViewGtk::FindInPage(const Browser& browser,
bool find_next, bool forward_direction) {
NOTIMPLEMENTED();
diff --git a/chrome/browser/tab_contents/web_contents_view_gtk.h b/chrome/browser/tab_contents/web_contents_view_gtk.h
index ec71c49..f218fee 100644
--- a/chrome/browser/tab_contents/web_contents_view_gtk.h
+++ b/chrome/browser/tab_contents/web_contents_view_gtk.h
@@ -33,8 +33,6 @@ class WebContentsViewGtk : public WebContentsView {
virtual void SetPageTitle(const std::wstring& title);
virtual void Invalidate();
virtual void SizeContents(const gfx::Size& size);
- virtual void OpenDeveloperTools();
- virtual void ForwardMessageToDevToolsClient(const IPC::Message& message);
virtual void FindInPage(const Browser& browser,
bool find_next, bool forward_direction);
virtual void HideFindBar(bool end_session);
diff --git a/chrome/browser/tab_contents/web_contents_view_mac.h b/chrome/browser/tab_contents/web_contents_view_mac.h
index e7bffac..352f5bc 100644
--- a/chrome/browser/tab_contents/web_contents_view_mac.h
+++ b/chrome/browser/tab_contents/web_contents_view_mac.h
@@ -50,8 +50,6 @@ class WebContentsViewMac : public WebContentsView,
virtual void SetPageTitle(const std::wstring& title);
virtual void Invalidate();
virtual void SizeContents(const gfx::Size& size);
- virtual void OpenDeveloperTools();
- virtual void ForwardMessageToDevToolsClient(const IPC::Message& message);
virtual void FindInPage(const Browser& browser,
bool find_next, bool forward_direction);
virtual void HideFindBar(bool end_session);
diff --git a/chrome/browser/tab_contents/web_contents_view_mac.mm b/chrome/browser/tab_contents/web_contents_view_mac.mm
index b607697..efde5a5 100644
--- a/chrome/browser/tab_contents/web_contents_view_mac.mm
+++ b/chrome/browser/tab_contents/web_contents_view_mac.mm
@@ -104,15 +104,6 @@ void WebContentsViewMac::SizeContents(const gfx::Size& size) {
NOTIMPLEMENTED(); // Leaving the hack unimplemented.
}
-void WebContentsViewMac::OpenDeveloperTools() {
- NOTIMPLEMENTED();
-}
-
-void WebContentsViewMac::ForwardMessageToDevToolsClient(
- const IPC::Message& message) {
- NOTIMPLEMENTED();
-}
-
void WebContentsViewMac::FindInPage(const Browser& browser,
bool find_next, bool forward_direction) {
if (!find_bar_.get()) {
diff --git a/chrome/browser/tab_contents/web_contents_view_win.cc b/chrome/browser/tab_contents/web_contents_view_win.cc
index 927f612..f087a2c 100644
--- a/chrome/browser/tab_contents/web_contents_view_win.cc
+++ b/chrome/browser/tab_contents/web_contents_view_win.cc
@@ -9,7 +9,6 @@
#include "chrome/browser/bookmarks/bookmark_drag_data.h"
#include "chrome/browser/browser.h" // TODO(beng): this dependency is awful.
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/debugger/dev_tools_window.h"
#include "chrome/browser/dom_ui/dom_ui_host.h"
#include "chrome/browser/download/download_request_manager.h"
#include "chrome/browser/renderer_host/render_process_host.h"
@@ -224,26 +223,6 @@ void WebContentsViewWin::SizeContents(const gfx::Size& size) {
WasSized(size);
}
-void WebContentsViewWin::OpenDeveloperTools() {
- if (!dev_tools_window_.get())
- dev_tools_window_.reset(new DevToolsWindow);
-
- RenderViewHost* host = web_contents_->render_view_host();
- if (!host)
- return;
-
- dev_tools_window_->Show(host->process()->pid(), host->routing_id());
-}
-
-void WebContentsViewWin::ForwardMessageToDevToolsClient(
- const IPC::Message& message) {
- if (!dev_tools_window_.get()) {
- NOTREACHED() << "Developer tools window is not open.";
- return;
- }
- dev_tools_window_->SendDevToolsClientMessage(message);
-}
-
void WebContentsViewWin::SetInitialFocus() {
if (web_contents_->AsDOMUIContents())
web_contents_->AsDOMUIContents()->SetInitialFocus();
diff --git a/chrome/browser/tab_contents/web_contents_view_win.h b/chrome/browser/tab_contents/web_contents_view_win.h
index cd26bb7..e4f9e45 100644
--- a/chrome/browser/tab_contents/web_contents_view_win.h
+++ b/chrome/browser/tab_contents/web_contents_view_win.h
@@ -10,7 +10,6 @@
#include "chrome/browser/tab_contents/web_contents_view.h"
#include "chrome/views/widget_win.h"
-class DevToolsWindow;
class SadTabView;
struct WebDropData;
class WebDropTarget;
@@ -41,8 +40,6 @@ class WebContentsViewWin : public WebContentsView,
virtual void SetPageTitle(const std::wstring& title);
virtual void Invalidate();
virtual void SizeContents(const gfx::Size& size);
- virtual void OpenDeveloperTools();
- virtual void ForwardMessageToDevToolsClient(const IPC::Message& message);
virtual void SetInitialFocus();
virtual void StoreFocus();
virtual void RestoreFocus();
@@ -103,9 +100,6 @@ class WebContentsViewWin : public WebContentsView,
WebContents* web_contents_;
- // Allows to show exactly one developer tools window for this page.
- scoped_ptr<DevToolsWindow> dev_tools_window_;
-
// A drop target object that handles drags over this WebContents.
scoped_refptr<WebDropTarget> drop_target_;
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index f8990f4..a11cccc 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -528,10 +528,14 @@
'browser/debugger/debugger_window.h',
'browser/debugger/debugger_wrapper.cc',
'browser/debugger/debugger_wrapper.h',
- 'browser/debugger/dev_tools_window.cc',
- 'browser/debugger/dev_tools_window.h',
- 'browser/debugger/dev_tools_view.cc',
- 'browser/debugger/dev_tools_view.h',
+ 'browser/debugger/devtools_manager.h',
+ 'browser/debugger/devtools_manager.cc',
+ 'browser/debugger/devtools_window.h',
+ 'browser/debugger/devtools_window_gtk.cc',
+ 'browser/debugger/devtools_window_mac.cc',
+ 'browser/debugger/devtools_window_win.cc',
+ 'browser/debugger/devtools_view.cc',
+ 'browser/debugger/devtools_view.h',
'browser/dock_info.cc',
'browser/dock_info.h',
'browser/dom_operation_notification_details.h',
@@ -1269,10 +1273,10 @@
'browser/browser_accessibility_manager.cc',
'browser/debugger/debugger_view.cc',
'browser/debugger/debugger_window.cc',
- 'browser/debugger/dev_tools_view.cc',
- 'browser/debugger/dev_tools_view.h',
- 'browser/debugger/dev_tools_window.cc',
- 'browser/debugger/dev_tools_window.h',
+ 'browser/debugger/devtools_view.cc',
+ 'browser/debugger/devtools_view.h',
+ 'browser/debugger/devtools_window_gtk.cc',
+ 'browser/debugger/devtools_window_win.cc',
'browser/dock_info.cc',
'browser/dom_ui/html_dialog_contents.cc',
'browser/drag_utils.cc',
diff --git a/chrome/test/testing_browser_process.h b/chrome/test/testing_browser_process.h
index 0cbe91b..e2fff16 100644
--- a/chrome/test/testing_browser_process.h
+++ b/chrome/test/testing_browser_process.h
@@ -75,6 +75,10 @@ class TestingBrowserProcess : public BrowserProcess {
return NULL;
}
+ virtual DevToolsManager* devtools_manager() {
+ return NULL;
+ }
+
virtual ClipboardService* clipboard_service() {
return NULL;
}