Index: chrome/browser/devtools/devtools_adb_bridge.h |
diff --git a/chrome/browser/devtools/devtools_adb_bridge.h b/chrome/browser/devtools/devtools_adb_bridge.h |
index 4f12770e8e3fc62967114046cf57f1ad2258b6c7..cb47eedd1a129ad7e71899c22ac9a6a6398aa5cc 100644 |
--- a/chrome/browser/devtools/devtools_adb_bridge.h |
+++ b/chrome/browser/devtools/devtools_adb_bridge.h |
@@ -12,14 +12,26 @@ |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
+#include "components/browser_context_keyed_service/browser_context_keyed_service.h" |
+#include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h" |
#include "net/socket/tcp_client_socket.h" |
+template<typename T> struct DefaultSingletonTraits; |
+ |
namespace base { |
class MessageLoop; |
class DictionaryValue; |
class Thread; |
} |
+namespace content { |
+class BrowserContext; |
+} |
+ |
+namespace crypto { |
+class RSAPrivateKey; |
+} |
+ |
class Profile; |
// The format used for constructing DevTools server socket names. |
@@ -28,10 +40,29 @@ extern const char kDevToolsChannelNameFormat[]; |
typedef base::Callback<void(int, const std::string&)> CommandCallback; |
typedef base::Callback<void(int result, net::StreamSocket*)> SocketCallback; |
-class DevToolsAdbBridge { |
+class DevToolsAdbBridge : public BrowserContextKeyedService { |
public: |
typedef base::Callback<void(int result, |
const std::string& response)> Callback; |
+ class Factory : public BrowserContextKeyedServiceFactory { |
+ public: |
+ // Returns singleton instance of DevToolsAdbBridge. |
+ static Factory* GetInstance(); |
+ |
+ // Returns DevToolsAdbBridge associated with |profile|. |
+ static DevToolsAdbBridge* GetForProfile(Profile* profile); |
+ |
+ private: |
+ friend struct DefaultSingletonTraits<Factory>; |
+ |
+ Factory(); |
+ virtual ~Factory(); |
+ |
+ // BrowserContextKeyedServiceFactory overrides: |
+ virtual BrowserContextKeyedService* BuildServiceInstanceFor( |
+ content::BrowserContext* context) const OVERRIDE; |
+ DISALLOW_COPY_AND_ASSIGN(Factory); |
+ }; |
class RemotePage : public base::RefCounted<RemotePage> { |
public: |
@@ -113,9 +144,13 @@ class DevToolsAdbBridge { |
DISALLOW_COPY_AND_ASSIGN(AndroidDevice); |
}; |
+ typedef std::vector<scoped_refptr<AndroidDevice> > AndroidDevices; |
+ typedef base::Callback<void(const AndroidDevices&)> AndroidDevicesCallback; |
+ |
explicit DevToolsAdbBridge(Profile* profile); |
- ~DevToolsAdbBridge(); |
+ virtual ~DevToolsAdbBridge(); |
+ void EnumerateDevices(const AndroidDevicesCallback& callback); |
void Query(const std::string query, const Callback& callback); |
void Pages(const PagesCallback& callback); |
void Attach(const std::string& serial, |
@@ -124,6 +159,8 @@ class DevToolsAdbBridge { |
const std::string& frontend_url); |
private: |
+ friend class base::RefCounted<DevToolsAdbBridge>; |
vsevik
2013/07/11 15:59:54
nuke
pfeldman
2013/07/11 16:26:51
Done.
|
+ |
friend class AdbAttachCommand; |
friend class AgentHostDelegate; |
@@ -142,10 +179,15 @@ class DevToolsAdbBridge { |
base::Thread* thread_; |
}; |
+ void ReceivedDevices(const AndroidDevicesCallback& callback, |
+ int result, |
+ const std::string& response); |
+ |
Profile* profile_; |
scoped_refptr<RefCountedAdbThread> adb_thread_; |
base::WeakPtrFactory<DevToolsAdbBridge> weak_factory_; |
bool has_message_loop_; |
+ scoped_ptr<crypto::RSAPrivateKey> rsa_key_; |
DISALLOW_COPY_AND_ASSIGN(DevToolsAdbBridge); |
}; |