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

Unified Diff: chrome/browser/devtools/device/android_device_manager.h

Issue 287643002: DevTools: Partially redesigned DevToolsAndroidBridge and AndroidDeviceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed unused include Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
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..a57a60993ad2d35121f238c440f033ea1d382c42 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,147 @@ 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 {
- protected:
- friend class AndroidDeviceManager;
-
- typedef AndroidDeviceManager::CommandCallback CommandCallback;
- typedef AndroidDeviceManager::SocketCallback SocketCallback;
+ class DeviceProvider : public base::RefCountedThreadSafe<DeviceProvider> {
+ public:
+ typedef AndroidDeviceManager::SerialsCallback SerialsCallback;
typedef AndroidDeviceManager::DeviceInfoCallback DeviceInfoCallback;
+ typedef AndroidDeviceManager::SocketCallback SocketCallback;
+ typedef AndroidDeviceManager::CommandCallback CommandCallback;
- Device(const std::string& serial, bool is_connected);
+ virtual void QueryDevices(const SerialsCallback& callback) = 0;
- virtual void QueryDeviceInfo(const DeviceInfoCallback& callback) = 0;
+ virtual void QueryDeviceInfo(const std::string& serial,
+ const DeviceInfoCallback& callback) = 0;
- virtual void OpenSocket(const std::string& socket_name,
+ virtual void OpenSocket(const std::string& serial,
+ const std::string& socket_name,
const SocketCallback& callback) = 0;
- virtual void HttpQuery(const std::string& socket_name,
- const std::string& request,
- const CommandCallback& callback);
+ virtual void SendJsonRequest(const std::string& serial,
+ const std::string& socket_name,
+ const std::string& request,
+ const CommandCallback& callback);
- std::string serial() { return serial_; }
- bool is_connected() { return is_connected_; }
+ virtual void HttpUpgrade(const std::string& serial,
+ const std::string& socket_name,
+ const std::string& url,
+ const SocketCallback& callback);
- friend class base::RefCounted<Device>;
- virtual ~Device();
+ virtual void ReleaseDevice(const std::string& serial);
- private:
- const std::string serial_;
- const bool is_connected_;
-
- DISALLOW_COPY_AND_ASSIGN(Device);
+ protected:
+ friend class base::RefCountedThreadSafe<DeviceProvider>;
+ DeviceProvider();
+ virtual ~DeviceProvider();
};
- typedef std::vector<scoped_refptr<Device> > Devices;
+ typedef std::vector<scoped_refptr<DeviceProvider> > DeviceProviders;
- class DeviceProvider
- : public base::RefCountedThreadSafe<
- DeviceProvider,
- content::BrowserThread::DeleteOnUIThread> {
- protected:
- friend class AndroidDeviceManager;
+ 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;
- typedef base::Callback<void(const Devices&)> QueryDevicesCallback;
+ protected:
+ virtual ~Delegate() {}
+ };
- virtual void QueryDevices(const QueryDevicesCallback& callback) = 0;
+ AndroidWebSocket() {}
+
+ virtual void Connect() = 0;
+ virtual void Disconnect() = 0;
+ virtual void SendFrame(const std::string& message) = 0;
protected:
- friend struct
- content::BrowserThread::DeleteOnThread<content::BrowserThread::UI>;
- friend class base::DeleteHelper<DeviceProvider>;
+ virtual ~AndroidWebSocket() {}
- DeviceProvider();
- virtual ~DeviceProvider();
+ private:
+ friend class base::RefCountedThreadSafe<AndroidWebSocket>;
+
+ DISALLOW_COPY_AND_ASSIGN(AndroidWebSocket);
};
- public:
- static scoped_refptr<AndroidDeviceManager> Create();
+ class Device : public base::RefCountedThreadSafe<Device>,
pfeldman 2014/05/26 09:57:14 Lets swap them back for better diff.
vkuzkokov 2014/05/26 10:54:03 Done.
+ public base::NonThreadSafe {
+ public:
+ typedef AndroidDeviceManager::DeviceInfoCallback DeviceInfoCallback;
+ typedef AndroidDeviceManager::CommandCallback CommandCallback;
+ typedef AndroidDeviceManager::SocketCallback SocketCallback;
- typedef std::vector<scoped_refptr<DeviceProvider> > DeviceProviders;
- typedef base::Callback<void (const std::vector<std::string>&)>
- QueryDevicesCallback;
+ void QueryDeviceInfo(const DeviceInfoCallback& callback);
- void QueryDevices(const DeviceProviders& providers,
- const QueryDevicesCallback& callback);
+ void OpenSocket(const std::string& socket_name,
+ const SocketCallback& callback);
- void Stop();
+ void SendJsonRequest(const std::string& socket_name,
+ const std::string& request,
+ const CommandCallback& callback);
- bool IsConnected(const std::string& serial);
+ void HttpUpgrade(const std::string& socket_name,
+ const std::string& url,
+ const SocketCallback& callback);
- void QueryDeviceInfo(const std::string& serial,
- const DeviceInfoCallback& callback);
+ scoped_refptr<AndroidWebSocket> CreateWebSocket(
+ const std::string& socket_name,
+ const std::string& url,
+ AndroidWebSocket::Delegate* delegate);
- void OpenSocket(const std::string& serial,
- const std::string& socket_name,
- const SocketCallback& callback);
+ std::string serial() { return serial_; }
- void HttpQuery(const std::string& serial,
- const std::string& socket_name,
- const std::string& request,
- const CommandCallback& callback);
+ private:
+ friend class AndroidDeviceManager;
+ Device(scoped_refptr<base::MessageLoopProxy> device_message_loop,
+ const scoped_refptr<DeviceProvider>& provider,
+ const std::string& serial);
- void HttpUpgrade(const std::string& serial,
- const std::string& socket_name,
- const std::string& url,
- const SocketCallback& callback);
+ friend class base::RefCountedThreadSafe<Device>;
+ virtual ~Device();
- private:
- AndroidDeviceManager();
+ scoped_refptr<base::MessageLoopProxy> device_message_loop_;
+ scoped_refptr<DeviceProvider> provider_;
pfeldman 2014/05/26 09:57:14 On what thread will this be released?
vkuzkokov 2014/05/26 10:54:03 UI. Same way as in DevToolsAndroidBridge. It does
+ std::string serial_;
+ base::WeakPtrFactory<Device> weak_factory_;
- friend class base::RefCountedThreadSafe<AndroidDeviceManager>;
+ DISALLOW_COPY_AND_ASSIGN(Device);
+ };
- virtual ~AndroidDeviceManager();
+ typedef std::vector<scoped_refptr<Device> > Devices;
+ typedef base::Callback<void(const Devices&)> DevicesCallback;
- void QueryNextProvider(
- const QueryDevicesCallback& callback,
- const DeviceProviders& providers,
- const Devices& total_devices,
- const Devices& new_devices);
+ static scoped_refptr<AndroidDeviceManager> Create();
+
+ void QueryDevices(scoped_refptr<base::MessageLoopProxy> device_message_loop,
+ const DeviceProviders& providers,
+ const DevicesCallback& callback);
- Device* FindDevice(const std::string& serial);
+ struct DeviceDescriptor {
+ scoped_refptr<DeviceProvider> provider;
+ std::string serial;
+ };
+
+ typedef std::vector<DeviceDescriptor> DeviceDescriptors;
+
+ private:
+ friend class base::RefCountedThreadSafe<AndroidDeviceManager>;
+ AndroidDeviceManager();
+ virtual ~AndroidDeviceManager();
- typedef std::map<std::string, scoped_refptr<Device> > DeviceMap;
- DeviceMap devices_;
+ void UpdateDevices(scoped_refptr<base::MessageLoopProxy> device_message_loop,
+ const DevicesCallback& callback,
+ const DeviceDescriptors& descriptors);
- bool stopped_;
+ typedef std::map<std::string, base::WeakPtr<Device> > DeviceWeakMap;
+ DeviceWeakMap devices_;
};
#endif // CHROME_BROWSER_DEVTOOLS_DEVICE_ANDROID_DEVICE_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698