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

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

Issue 596253003: DevTools: RemoteDevice and RemoteBrowser are now value types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pfc3
Patch Set: Rebased. Addressed comments Created 6 years, 2 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/devtools_android_bridge.h
diff --git a/chrome/browser/devtools/device/devtools_android_bridge.h b/chrome/browser/devtools/device/devtools_android_bridge.h
index d9fd837e25e42aaf6f57db30107bc2969eb1e3b2..ba1da4908405e59881bbe359944a4db6055aad79 100644
--- a/chrome/browser/devtools/device/devtools_android_bridge.h
+++ b/chrome/browser/devtools/device/devtools_android_bridge.h
@@ -41,9 +41,6 @@ class DevToolsAndroidBridge
DevToolsAndroidBridge,
content::BrowserThread::DeleteOnUIThread> {
public:
- typedef base::Callback<void(int result,
- const std::string& response)> Callback;
-
class Wrapper : public KeyedService {
public:
explicit Wrapper(content::BrowserContext* context);
@@ -81,73 +78,33 @@ class DevToolsAndroidBridge
virtual std::string GetFrontendURL() = 0;
};
- typedef base::Callback<void(RemotePage*)> RemotePageCallback;
typedef base::Callback<void(int, const std::string&)> JsonRequestCallback;
- typedef AndroidDeviceManager::Device Device;
- typedef AndroidDeviceManager::AndroidWebSocket AndroidWebSocket;
class RemoteBrowser : public base::RefCounted<RemoteBrowser> {
public:
- RemoteBrowser(scoped_refptr<Device> device,
- const AndroidDeviceManager::BrowserInfo& browser_info);
-
- std::string serial() { return device_->serial(); }
- std::string socket() { return socket_; }
-
- std::string display_name() { return display_name_; }
- void set_display_name(const std::string& name) { display_name_ = name; }
+ const std::string& serial() { return serial_; }
+ const std::string& socket() { return socket_; }
+ const std::string& display_name() { return display_name_; }
+ const std::string& version() { return version_; }
- std::string version() { return version_; }
- void set_version(const std::string& version) { version_ = version; }
-
- bool IsChrome() const;
- bool IsWebView() const;
+ bool IsChrome();
dgozman 2014/10/02 12:19:34 Why removed const?
vkuzkokov 2014/10/02 13:07:46 for consistency.
+ bool IsWebView();
dgozman 2014/10/02 12:19:34 ditto
typedef std::vector<int> ParsedVersion;
- ParsedVersion GetParsedVersion() const;
-
- std::vector<RemotePage*> CreatePages();
- void SetPageDescriptors(const base::ListValue&);
-
- void SendJsonRequest(const std::string& request,
- const JsonRequestCallback& callback);
-
- void SendProtocolCommand(const std::string& debug_url,
- const std::string& method,
- base::DictionaryValue* params,
- const base::Closure callback);
+ ParsedVersion GetParsedVersion();
- void Open(const std::string& url,
- const RemotePageCallback& callback);
-
- scoped_refptr<content::DevToolsAgentHost> GetAgentHost();
-
- AndroidWebSocket* CreateWebSocket(
- const std::string& url,
- DevToolsAndroidBridge::AndroidWebSocket::Delegate* delegate);
+ const base::ListValue& page_descriptors();
private:
friend class base::RefCounted<RemoteBrowser>;
- virtual ~RemoteBrowser();
-
- void InnerOpen(const std::string& url,
- const JsonRequestCallback& callback);
+ friend class DevToolsAndroidBridge;
- void PageCreatedOnUIThread(
- const JsonRequestCallback& callback,
- const std::string& url, int result, const std::string& response);
-
- void NavigatePageOnUIThread(const JsonRequestCallback& callback,
- int result,
- const std::string& response,
- const std::string& url);
+ RemoteBrowser(const std::string& serial,
+ const AndroidDeviceManager::BrowserInfo& browser_info);
- void RespondToOpenOnUIThread(
- const DevToolsAndroidBridge::RemotePageCallback& callback,
- int result,
- const std::string& response);
+ virtual ~RemoteBrowser();
- scoped_refptr<Device> device_;
+ std::string serial_;
const std::string socket_;
std::string display_name_;
const AndroidDeviceManager::BrowserInfo::Type type_;
@@ -161,23 +118,22 @@ class DevToolsAndroidBridge
class RemoteDevice : public base::RefCounted<RemoteDevice> {
public:
- RemoteDevice(scoped_refptr<Device> device,
- const AndroidDeviceManager::DeviceInfo& device_info);
-
- std::string serial() { return device_->serial(); }
+ std::string serial() { return serial_; }
std::string model() { return model_; }
bool is_connected() { return connected_; }
RemoteBrowsers& browsers() { return browsers_; }
gfx::Size screen_size() { return screen_size_; }
- void OpenSocket(const std::string& socket_name,
- const AndroidDeviceManager::SocketCallback& callback);
-
private:
friend class base::RefCounted<RemoteDevice>;
+ friend class DevToolsAndroidBridge;
+
+ RemoteDevice(const std::string& serial,
+ const AndroidDeviceManager::DeviceInfo& device_info);
+
virtual ~RemoteDevice();
- scoped_refptr<Device> device_;
+ std::string serial_;
std::string model_;
bool connected_;
RemoteBrowsers browsers_;
@@ -239,21 +195,42 @@ class DevToolsAndroidBridge
task_scheduler_ = scheduler;
}
- static bool HasDevToolsWindow(const std::string& agent_id);
+ bool HasDevToolsWindow(const std::string& agent_id);
+
+ std::vector<RemotePage*> CreatePages(scoped_refptr<RemoteBrowser> browser);
+
+ typedef base::Callback<void(RemotePage*)> RemotePageCallback;
+ void Open(scoped_refptr<RemoteBrowser> browser,
dgozman 2014/10/02 12:19:34 OpenRemotePage
vkuzkokov 2014/10/02 13:07:46 Done.
+ const std::string& url,
+ const RemotePageCallback& callback);
+
+ scoped_refptr<content::DevToolsAgentHost> GetBrowserAgentHost(
+ scoped_refptr<RemoteBrowser> browser);
private:
friend struct content::BrowserThread::DeleteOnThread<
content::BrowserThread::UI>;
friend class base::DeleteHelper<DevToolsAndroidBridge>;
+ friend class PortForwardingController;
+
+ class AgentHostDelegate;
+ class DiscoveryRequest;
+ class RemotePageTarget;
virtual ~DevToolsAndroidBridge();
void StartDeviceListPolling();
void StopDeviceListPolling();
bool NeedsDeviceListPolling();
- void RequestDeviceList(
- const base::Callback<void(const RemoteDevices&)>& callback);
- void ReceivedDeviceList(const RemoteDevices& devices);
+
+ typedef std::pair<scoped_refptr<AndroidDeviceManager::Device>,
+ scoped_refptr<RemoteDevice>> CompleteDevice;
+ typedef std::vector<CompleteDevice> CompleteDevices;
+ typedef base::Callback<void(const CompleteDevices&)> DeviceListCallback;
+ void RequestDeviceList(const DeviceListCallback& callback);
dgozman 2014/10/02 12:19:34 We should simplify this in a follow-up and remove
+
+ void ReceivedDeviceList(const CompleteDevices& complete_devices);
+
void StartDeviceCountPolling();
void StopDeviceCountPolling();
void RequestDeviceCount(const base::Callback<void(int)>& callback);
@@ -263,13 +240,51 @@ class DevToolsAndroidBridge
void CreateDeviceProviders();
+ void SendJsonRequest(scoped_refptr<RemoteBrowser> browser,
+ const std::string& url,
+ const JsonRequestCallback& callback);
+
+ void SendProtocolCommand(scoped_refptr<RemoteBrowser> browser,
+ const std::string& debug_url,
+ const std::string& method,
+ base::DictionaryValue* params,
+ const base::Closure callback);
+
+ AndroidDeviceManager::AndroidWebSocket* CreateWebSocket(
+ scoped_refptr<RemoteBrowser> browser,
+ const std::string& url,
+ AndroidDeviceManager::AndroidWebSocket::Delegate* delegate);
+
+ void PageCreatedOnUIThread(scoped_refptr<RemoteBrowser> browser,
+ const RemotePageCallback& callback,
+ const std::string& url,
+ int result,
+ const std::string& response);
+
+ void NavigatePageOnUIThread(scoped_refptr<RemoteBrowser> browser,
+ const RemotePageCallback& callback,
+ int result,
+ const std::string& response,
+ const std::string& url);
+
+ void RespondToOpenOnUIThread(scoped_refptr<RemoteBrowser> browser,
+ const RemotePageCallback& callback,
+ int result,
+ const std::string& response);
+
Profile* profile_;
scoped_refptr<AndroidDeviceManager> device_manager_;
- RemoteDevices devices_;
+
+ typedef std::map<std::string, scoped_refptr<AndroidDeviceManager::Device>>
+ DeviceMap;
+ DeviceMap device_map_;
+
+ typedef std::map<std::string, AgentHostDelegate*> AgentHostDelegates;
+ AgentHostDelegates host_delegates_;
typedef std::vector<DeviceListListener*> DeviceListListeners;
DeviceListListeners device_list_listeners_;
- base::CancelableCallback<void(const RemoteDevices&)> device_list_callback_;
+ base::CancelableCallback<void(const CompleteDevices&)> device_list_callback_;
typedef std::vector<DeviceCountListener*> DeviceCountListeners;
DeviceCountListeners device_count_listeners_;

Powered by Google App Engine
This is Rietveld 408576698