| Index: chrome/browser/devtools/device/android_device_manager.h
|
| diff --git a/chrome/browser/devtools/device/android_device_manager.h b/chrome/browser/devtools/device/android_device_manager.h
|
| index 27d1be809fa069e1330fe6e33d15bb07e2ef3fd4..0bb932b88f217074d7bf6eee415f7c515a63d15a 100644
|
| --- a/chrome/browser/devtools/device/android_device_manager.h
|
| +++ b/chrome/browser/devtools/device/android_device_manager.h
|
| @@ -23,6 +23,7 @@ class AndroidDeviceManager
|
| public:
|
| typedef base::Callback<void(int, const std::string&)> CommandCallback;
|
| typedef base::Callback<void(int result, net::StreamSocket*)> SocketCallback;
|
| + typedef base::Callback<void(const std::vector<std::string>&)> SerialsCallback;
|
|
|
| struct BrowserInfo {
|
| BrowserInfo();
|
| @@ -43,117 +44,170 @@ class AndroidDeviceManager
|
| ~DeviceInfo();
|
|
|
| std::string model;
|
| + bool connected;
|
| gfx::Size screen_size;
|
| std::vector<BrowserInfo> browser_info;
|
| };
|
|
|
| typedef base::Callback<void(const DeviceInfo&)> DeviceInfoCallback;
|
|
|
| - class Device : public base::RefCounted<Device>,
|
| - public base::NonThreadSafe {
|
| + class AndroidWebSocket : public base::RefCountedThreadSafe<AndroidWebSocket> {
|
| + public:
|
| + class Delegate {
|
| + public:
|
| + virtual void OnSocketOpened() = 0;
|
| + virtual void OnFrameRead(const std::string& message) = 0;
|
| + virtual void OnSocketClosed(bool closed_by_device) = 0;
|
| +
|
| + protected:
|
| + virtual ~Delegate() {}
|
| + };
|
| +
|
| + AndroidWebSocket() {}
|
| +
|
| + virtual void Connect() = 0;
|
| + virtual void Disconnect() = 0;
|
| + virtual void SendFrame(const std::string& message) = 0;
|
| + virtual void ClearDelegate() = 0;
|
| +
|
| protected:
|
| - friend class AndroidDeviceManager;
|
| + virtual ~AndroidWebSocket() {}
|
| +
|
| + private:
|
| + friend class base::RefCountedThreadSafe<AndroidWebSocket>;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AndroidWebSocket);
|
| + };
|
| +
|
| + class DeviceProvider;
|
|
|
| + class Device : public base::RefCountedThreadSafe<Device>,
|
| + public base::NonThreadSafe {
|
| + public:
|
| + typedef AndroidDeviceManager::DeviceInfoCallback DeviceInfoCallback;
|
| typedef AndroidDeviceManager::CommandCallback CommandCallback;
|
| typedef AndroidDeviceManager::SocketCallback SocketCallback;
|
| - typedef AndroidDeviceManager::DeviceInfoCallback DeviceInfoCallback;
|
|
|
| - Device(const std::string& serial, bool is_connected);
|
| + void QueryDeviceInfo(const DeviceInfoCallback& callback);
|
|
|
| - virtual void QueryDeviceInfo(const DeviceInfoCallback& callback) = 0;
|
| + void OpenSocket(const std::string& socket_name,
|
| + const SocketCallback& callback);
|
|
|
| - virtual void OpenSocket(const std::string& socket_name,
|
| - const SocketCallback& callback) = 0;
|
| + void SendJsonRequest(const std::string& socket_name,
|
| + const std::string& request,
|
| + const CommandCallback& callback);
|
| +
|
| + void HttpUpgrade(const std::string& socket_name,
|
| + const std::string& url,
|
| + const SocketCallback& callback);
|
|
|
| - virtual void HttpQuery(const std::string& socket_name,
|
| - const std::string& request,
|
| - const CommandCallback& callback);
|
| + scoped_refptr<AndroidWebSocket> CreateWebSocket(
|
| + const std::string& socket_name,
|
| + const std::string& url,
|
| + AndroidWebSocket::Delegate* delegate);
|
|
|
| std::string serial() { return serial_; }
|
| - bool is_connected() { return is_connected_; }
|
|
|
| - friend class base::RefCounted<Device>;
|
| + private:
|
| + friend class AndroidDeviceManager;
|
| + Device(scoped_refptr<base::MessageLoopProxy> device_message_loop,
|
| + scoped_refptr<DeviceProvider> provider,
|
| + const std::string& serial);
|
| +
|
| + friend class base::RefCountedThreadSafe<Device>;
|
| virtual ~Device();
|
|
|
| - private:
|
| - const std::string serial_;
|
| - const bool is_connected_;
|
| + scoped_refptr<base::MessageLoopProxy> device_message_loop_;
|
| + scoped_refptr<DeviceProvider> provider_;
|
| + std::string serial_;
|
| + base::WeakPtrFactory<Device> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(Device);
|
| };
|
|
|
| typedef std::vector<scoped_refptr<Device> > Devices;
|
| + typedef base::Callback<void(const Devices&)> DevicesCallback;
|
|
|
| - class DeviceProvider
|
| - : public base::RefCountedThreadSafe<
|
| - DeviceProvider,
|
| - content::BrowserThread::DeleteOnUIThread> {
|
| - protected:
|
| - friend class AndroidDeviceManager;
|
| + class DeviceProvider : public base::RefCountedThreadSafe<DeviceProvider> {
|
| + public:
|
| + typedef AndroidDeviceManager::SerialsCallback SerialsCallback;
|
| + typedef AndroidDeviceManager::DeviceInfoCallback DeviceInfoCallback;
|
| + typedef AndroidDeviceManager::SocketCallback SocketCallback;
|
| + typedef AndroidDeviceManager::CommandCallback CommandCallback;
|
|
|
| - typedef base::Callback<void(const Devices&)> QueryDevicesCallback;
|
| + virtual void QueryDevices(const SerialsCallback& callback) = 0;
|
|
|
| - virtual void QueryDevices(const QueryDevicesCallback& callback) = 0;
|
| + virtual void QueryDeviceInfo(const std::string& serial,
|
| + const DeviceInfoCallback& callback) = 0;
|
|
|
| - protected:
|
| - friend struct
|
| - content::BrowserThread::DeleteOnThread<content::BrowserThread::UI>;
|
| - friend class base::DeleteHelper<DeviceProvider>;
|
| + virtual void OpenSocket(const std::string& serial,
|
| + const std::string& socket_name,
|
| + const SocketCallback& callback) = 0;
|
| +
|
| + virtual void SendJsonRequest(const std::string& serial,
|
| + const std::string& socket_name,
|
| + const std::string& request,
|
| + const CommandCallback& callback);
|
|
|
| + virtual void HttpUpgrade(const std::string& serial,
|
| + const std::string& socket_name,
|
| + const std::string& url,
|
| + const SocketCallback& callback);
|
| +
|
| + virtual void ReleaseDevice(const std::string& serial);
|
| +
|
| + protected:
|
| + friend class base::RefCountedThreadSafe<DeviceProvider>;
|
| DeviceProvider();
|
| virtual ~DeviceProvider();
|
| };
|
|
|
| - public:
|
| - static scoped_refptr<AndroidDeviceManager> Create();
|
| -
|
| typedef std::vector<scoped_refptr<DeviceProvider> > DeviceProviders;
|
| - typedef base::Callback<void (const std::vector<std::string>&)>
|
| - QueryDevicesCallback;
|
|
|
| - void QueryDevices(const DeviceProviders& providers,
|
| - const QueryDevicesCallback& callback);
|
| -
|
| - void Stop();
|
| + static scoped_refptr<AndroidDeviceManager> Create();
|
|
|
| - bool IsConnected(const std::string& serial);
|
| + void SetDeviceProviders(const DeviceProviders& providers);
|
|
|
| - void QueryDeviceInfo(const std::string& serial,
|
| - const DeviceInfoCallback& callback);
|
| + void QueryDevices(const DevicesCallback& callback);
|
|
|
| - void OpenSocket(const std::string& serial,
|
| - const std::string& socket_name,
|
| - const SocketCallback& callback);
|
| + struct DeviceDescriptor {
|
| + DeviceDescriptor();
|
| + ~DeviceDescriptor();
|
|
|
| - void HttpQuery(const std::string& serial,
|
| - const std::string& socket_name,
|
| - const std::string& request,
|
| - const CommandCallback& callback);
|
| + scoped_refptr<DeviceProvider> provider;
|
| + std::string serial;
|
| + };
|
|
|
| - void HttpUpgrade(const std::string& serial,
|
| - const std::string& socket_name,
|
| - const std::string& url,
|
| - const SocketCallback& callback);
|
| + typedef std::vector<DeviceDescriptor> DeviceDescriptors;
|
|
|
| private:
|
| - AndroidDeviceManager();
|
| + class HandlerThread : public base::RefCountedThreadSafe<HandlerThread> {
|
| + public:
|
| + static scoped_refptr<HandlerThread> GetInstance();
|
| + scoped_refptr<base::MessageLoopProxy> message_loop();
|
|
|
| - friend class base::RefCountedThreadSafe<AndroidDeviceManager>;
|
| + private:
|
| + friend class base::RefCountedThreadSafe<HandlerThread>;
|
| + static HandlerThread* instance_;
|
| + static void StopThread(base::Thread* thread);
|
|
|
| - virtual ~AndroidDeviceManager();
|
| + HandlerThread();
|
| + virtual ~HandlerThread();
|
| + base::Thread* thread_;
|
| + };
|
|
|
| - void QueryNextProvider(
|
| - const QueryDevicesCallback& callback,
|
| - const DeviceProviders& providers,
|
| - const Devices& total_devices,
|
| - const Devices& new_devices);
|
| + friend class base::RefCountedThreadSafe<AndroidDeviceManager>;
|
| + AndroidDeviceManager();
|
| + virtual ~AndroidDeviceManager();
|
|
|
| - Device* FindDevice(const std::string& serial);
|
| + void UpdateDevices(const DevicesCallback& callback,
|
| + DeviceDescriptors* descriptors);
|
|
|
| - typedef std::map<std::string, scoped_refptr<Device> > DeviceMap;
|
| - DeviceMap devices_;
|
| + typedef std::map<std::string, base::WeakPtr<Device> > DeviceWeakMap;
|
|
|
| - bool stopped_;
|
| + scoped_refptr<HandlerThread> handler_thread_;
|
| + DeviceProviders providers_;
|
| + DeviceWeakMap devices_;
|
| };
|
|
|
| #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_ANDROID_DEVICE_MANAGER_H_
|
|
|