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

Unified Diff: content/browser/debugger/devtools_manager_impl.h

Issue 8549022: Define DevTools content API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DevToolsManager -> DevToolsManagerImpl, moved client to public Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/debugger/devtools_manager_impl.h
diff --git a/content/browser/debugger/devtools_manager.h b/content/browser/debugger/devtools_manager_impl.h
similarity index 60%
rename from content/browser/debugger/devtools_manager.h
rename to content/browser/debugger/devtools_manager_impl.h
index 1801d0c1eb5638bd7772d52b6a4a1a33ec1caf3f..1bb4d0e2f14cccb1c2b10d7b4f9037aa5e271820 100644
--- a/content/browser/debugger/devtools_manager.h
+++ b/content/browser/debugger/devtools_manager_impl.h
@@ -2,19 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CONTENT_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_H_
-#define CONTENT_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_H_
+#ifndef CONTENT_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_IMPL_H_
+#define CONTENT_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_IMPL_H_
#pragma once
#include <map>
#include <string>
#include "base/compiler_specific.h"
+#include "base/memory/singleton.h"
#include "content/browser/debugger/devtools_agent_host.h"
-#include "content/browser/debugger/devtools_client_host.h"
#include "content/common/content_export.h"
+#include "content/public/browser/devtools/devtools_client_host.h"
+#include "content/public/browser/devtools/devtools_manager.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
-class DevToolsAgentHost;
class GURL;
class RenderViewHost;
class TabContents;
@@ -23,33 +26,31 @@ namespace IPC {
class Message;
}
+namespace content {
+
+class DevToolsAgentHost;
+
// This class is a singleton that manages DevToolsClientHost instances and
// routes messages between developer tools clients and agents.
//
// Methods below that accept inspected RenderViewHost as a parameter are
// just convenience methods that call corresponding methods accepting
// DevToolAgentHost.
-class CONTENT_EXPORT DevToolsManager
+class CONTENT_EXPORT DevToolsManagerImpl
: public DevToolsClientHost::CloseListener,
- public DevToolsAgentHost::CloseListener {
+ public DevToolsAgentHost::CloseListener,
+ public NotificationObserver,
+ public DevToolsManager {
public:
- static DevToolsManager* GetInstance();
-
- DevToolsManager();
- virtual ~DevToolsManager();
+ // Returns single instance of this class. The instance is destroyed on the
+ // browser main loop exit so this method MUST NOT be called after that point.
+ static DevToolsManagerImpl* GetInstance();
- // Returns DevToolsClientHost registered for |inspected_rvh| or NULL if
- // there is no alive DevToolsClientHost registered for |inspected_rvh|.
- DevToolsClientHost* GetDevToolsClientHostFor(RenderViewHost* inspected_rvh);
+ DevToolsManagerImpl();
+ virtual ~DevToolsManagerImpl();
- // Registers new DevToolsClientHost for |inspected_rvh|. There must be no
- // other DevToolsClientHosts registered for the RenderViewHost at the moment.
- void RegisterDevToolsClientHostFor(RenderViewHost* inspected_rvh,
- DevToolsClientHost* client_host);
- void UnregisterDevToolsClientHostFor(RenderViewHost* inspected_rvh);
-
- bool ForwardToDevToolsAgent(DevToolsClientHost* from,
- const IPC::Message& message);
+ virtual bool ForwardToDevToolsAgent(DevToolsClientHost* from,
+ const IPC::Message& message) OVERRIDE;
void ForwardToDevToolsClient(DevToolsAgentHost* agent_host,
const IPC::Message& message);
@@ -66,28 +67,25 @@ class CONTENT_EXPORT DevToolsManager
// Invoked when a tab is replaced by another tab. This is triggered by
// TabStripModel::ReplaceTabContentsAt.
- void TabReplaced(TabContents* old_tab, TabContents* new_tab);
-
- // Detaches client host and returns cookie that can be used in
- // AttachClientHost.
- int DetachClientHost(RenderViewHost* from_rvh);
-
- // Attaches orphan client host to new render view host.
- void AttachClientHost(int client_host_cookie,
- RenderViewHost* to_rvh);
+ virtual void TabReplaced(TabContents* old_tab, TabContents* new_tab) OVERRIDE;
// Closes all open developer tools windows.
- void CloseAllClientHosts();
-
- void AttachClientHost(int client_host_cookie,
- DevToolsAgentHost* to_agent);
- DevToolsClientHost* GetDevToolsClientHostFor(DevToolsAgentHost* agent_host);
- void RegisterDevToolsClientHostFor(DevToolsAgentHost* agent_host,
- DevToolsClientHost* client_host);
- void UnregisterDevToolsClientHostFor(DevToolsAgentHost* agent_host);
- int DetachClientHost(DevToolsAgentHost* from_agent);
+ virtual void CloseAllClientHosts() OVERRIDE;
+
+ virtual void AttachClientHost(int client_host_cookie,
+ DevToolsAgentHost* to_agent) OVERRIDE;
+ virtual DevToolsClientHost* GetDevToolsClientHostFor(
+ DevToolsAgentHost* agent_host) OVERRIDE;
+ virtual void RegisterDevToolsClientHostFor(
+ DevToolsAgentHost* agent_host,
+ DevToolsClientHost* client_host) OVERRIDE;
+ virtual void UnregisterDevToolsClientHostFor(
+ DevToolsAgentHost* agent_host) OVERRIDE;
+ virtual int DetachClientHost(DevToolsAgentHost* from_agent) OVERRIDE;
private:
+ friend struct DefaultSingletonTraits<DevToolsManagerImpl>;
+
// DevToolsClientHost::CloseListener override.
// This method will remove all references from the manager to the
// DevToolsClientHost and unregister all listeners related to the
@@ -97,6 +95,11 @@ class CONTENT_EXPORT DevToolsManager
// DevToolsAgentHost::CloseListener implementation.
virtual void AgentHostClosing(DevToolsAgentHost* host) OVERRIDE;
+ // NotificationObserver implementation.
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
// Returns DevToolsAgentHost inspected by the DevToolsClientHost.
DevToolsAgentHost* GetAgentHost(DevToolsClientHost* client_host);
@@ -105,12 +108,16 @@ class CONTENT_EXPORT DevToolsManager
void UnbindClientHost(DevToolsAgentHost* agent_host,
DevToolsClientHost* client_host);
+ int DetachClientHost(RenderViewHost* from_rvh);
pfeldman 2011/11/21 14:52:21 Could you leave comments to these methods?
yurys 2011/11/21 15:07:14 Done.
+ void AttachClientHost(int client_host_cookie,
+ RenderViewHost* to_rvh);
+
// These two maps are for tracking dependencies between inspected tabs and
// their DevToolsClientHosts. They are useful for routing devtools messages
// and allow us to have at most one devtools client host per tab.
//
- // DevToolsManager start listening to DevToolsClientHosts when they are put
- // into these maps and removes them when they are closing.
+ // DevToolsManagerImpl starts listening to DevToolsClientHosts when they are
+ // put into these maps and removes them when they are closing.
typedef std::map<DevToolsAgentHost*, DevToolsClientHost*>
AgentToClientHostMap;
AgentToClientHostMap agent_to_client_host_;
@@ -126,8 +133,11 @@ class CONTENT_EXPORT DevToolsManager
OrphanClientHosts;
OrphanClientHosts orphan_client_hosts_;
int last_orphan_cookie_;
+ content::NotificationRegistrar notification_registrar_;
- DISALLOW_COPY_AND_ASSIGN(DevToolsManager);
+ DISALLOW_COPY_AND_ASSIGN(DevToolsManagerImpl);
};
-#endif // CONTENT_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_H_
+} // namespace content
+
+#endif // CONTENT_BROWSER_DEBUGGER_DEVTOOLS_MANAGER_IMPL_H_

Powered by Google App Engine
This is Rietveld 408576698