| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ | 5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ |
| 6 #define CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ | 6 #define CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 }; | 100 }; |
| 101 | 101 |
| 102 class RemotePage { | 102 class RemotePage { |
| 103 public: | 103 public: |
| 104 virtual ~RemotePage() {} | 104 virtual ~RemotePage() {} |
| 105 virtual DevToolsTargetImpl* GetTarget() = 0; | 105 virtual DevToolsTargetImpl* GetTarget() = 0; |
| 106 virtual std::string GetFrontendURL() = 0; | 106 virtual std::string GetFrontendURL() = 0; |
| 107 }; | 107 }; |
| 108 | 108 |
| 109 typedef base::Callback<void(RemotePage*)> RemotePageCallback; | 109 typedef base::Callback<void(RemotePage*)> RemotePageCallback; |
| 110 typedef base::Callback<void(int, const std::string&)> JsonRequestCallback; |
| 111 |
| 112 class DeviceHandle : public base::RefCounted<DeviceHandle> { |
| 113 public: |
| 114 DeviceHandle(scoped_refptr<DevToolsAndroidBridge> android_bridge, |
| 115 const std::string& serial); |
| 116 |
| 117 std::string serial() const { return serial_; } |
| 118 |
| 119 void SendJsonRequest(const std::string& socket, |
| 120 const std::string& request, |
| 121 const JsonRequestCallback& callback); |
| 122 |
| 123 void OpenSocket(const std::string& socket_name, |
| 124 const AndroidDeviceManager::SocketCallback& callback); |
| 125 |
| 126 scoped_refptr<AndroidWebSocket> CreateWebSocket( |
| 127 const std::string& socket, |
| 128 const std::string& url, |
| 129 DevToolsAndroidBridge::AndroidWebSocket::Delegate* delegate); |
| 130 |
| 131 private: |
| 132 friend class base::RefCounted<DeviceHandle>; |
| 133 virtual ~DeviceHandle(); |
| 134 |
| 135 scoped_refptr<DevToolsAndroidBridge> android_bridge_; |
| 136 const std::string serial_; |
| 137 }; |
| 138 |
| 139 typedef std::map<std::string, scoped_refptr<DeviceHandle> > DeviceHandleMap; |
| 110 | 140 |
| 111 class RemoteBrowser : public base::RefCounted<RemoteBrowser> { | 141 class RemoteBrowser : public base::RefCounted<RemoteBrowser> { |
| 112 public: | 142 public: |
| 113 RemoteBrowser( | 143 RemoteBrowser( |
| 114 scoped_refptr<DevToolsAndroidBridge> android_bridge, | 144 scoped_refptr<DeviceHandle> device_handle, |
| 115 const std::string& serial, | |
| 116 const AndroidDeviceManager::BrowserInfo& browser_info); | 145 const AndroidDeviceManager::BrowserInfo& browser_info); |
| 117 | 146 |
| 118 std::string serial() { return serial_; } | 147 std::string serial() { return device_handle_->serial(); } |
| 119 std::string socket() { return socket_; } | 148 std::string socket() { return socket_; } |
| 120 | 149 |
| 121 std::string display_name() { return display_name_; } | 150 std::string display_name() { return display_name_; } |
| 122 void set_display_name(const std::string& name) { display_name_ = name; } | 151 void set_display_name(const std::string& name) { display_name_ = name; } |
| 123 | 152 |
| 124 std::string version() { return version_; } | 153 std::string version() { return version_; } |
| 125 void set_version(const std::string& version) { version_ = version; } | 154 void set_version(const std::string& version) { version_ = version; } |
| 126 | 155 |
| 127 bool IsChrome() const; | 156 bool IsChrome() const; |
| 128 bool IsWebView() const; | 157 bool IsWebView() const; |
| 129 | 158 |
| 130 typedef std::vector<int> ParsedVersion; | 159 typedef std::vector<int> ParsedVersion; |
| 131 ParsedVersion GetParsedVersion() const; | 160 ParsedVersion GetParsedVersion() const; |
| 132 | 161 |
| 133 std::vector<RemotePage*> CreatePages(); | 162 std::vector<RemotePage*> CreatePages(); |
| 134 void SetPageDescriptors(const base::ListValue&); | 163 void SetPageDescriptors(const base::ListValue&); |
| 135 | 164 |
| 136 typedef base::Callback<void(int, const std::string&)> JsonRequestCallback; | |
| 137 void SendJsonRequest(const std::string& request, | 165 void SendJsonRequest(const std::string& request, |
| 138 const JsonRequestCallback& callback); | 166 const JsonRequestCallback& callback); |
| 139 void SendProtocolCommand(const std::string& debug_url, | 167 void SendProtocolCommand(const std::string& debug_url, |
| 140 const std::string& method, | 168 const std::string& method, |
| 141 base::DictionaryValue* params, | 169 base::DictionaryValue* params, |
| 142 const base::Closure callback); | 170 const base::Closure callback); |
| 143 | 171 |
| 144 void Open(const std::string& url, | 172 void Open(const std::string& url, |
| 145 const RemotePageCallback& callback); | 173 const RemotePageCallback& callback); |
| 146 | 174 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 164 void NavigatePageOnUIThread(const JsonRequestCallback& callback, | 192 void NavigatePageOnUIThread(const JsonRequestCallback& callback, |
| 165 int result, | 193 int result, |
| 166 const std::string& response, | 194 const std::string& response, |
| 167 const std::string& url); | 195 const std::string& url); |
| 168 | 196 |
| 169 void RespondToOpenOnUIThread( | 197 void RespondToOpenOnUIThread( |
| 170 const DevToolsAndroidBridge::RemotePageCallback& callback, | 198 const DevToolsAndroidBridge::RemotePageCallback& callback, |
| 171 int result, | 199 int result, |
| 172 const std::string& response); | 200 const std::string& response); |
| 173 | 201 |
| 174 scoped_refptr<DevToolsAndroidBridge> android_bridge_; | 202 scoped_refptr<DeviceHandle> device_handle_; |
| 175 const std::string serial_; | |
| 176 const std::string socket_; | 203 const std::string socket_; |
| 177 std::string display_name_; | 204 std::string display_name_; |
| 178 const AndroidDeviceManager::BrowserInfo::Type type_; | 205 const AndroidDeviceManager::BrowserInfo::Type type_; |
| 179 std::string version_; | 206 std::string version_; |
| 180 scoped_ptr<base::ListValue> page_descriptors_; | 207 scoped_ptr<base::ListValue> page_descriptors_; |
| 181 | 208 |
| 182 DISALLOW_COPY_AND_ASSIGN(RemoteBrowser); | 209 DISALLOW_COPY_AND_ASSIGN(RemoteBrowser); |
| 183 }; | 210 }; |
| 184 | 211 |
| 185 typedef std::vector<scoped_refptr<RemoteBrowser> > RemoteBrowsers; | 212 typedef std::vector<scoped_refptr<RemoteBrowser> > RemoteBrowsers; |
| 186 | 213 |
| 187 class RemoteDevice : public base::RefCounted<RemoteDevice> { | 214 class RemoteDevice : public base::RefCounted<RemoteDevice> { |
| 188 public: | 215 public: |
| 189 RemoteDevice(scoped_refptr<DevToolsAndroidBridge> android_bridge, | 216 RemoteDevice(scoped_refptr<DeviceHandle> device_handle, |
| 190 const std::string& serial, | |
| 191 const AndroidDeviceManager::DeviceInfo& device_info, | 217 const AndroidDeviceManager::DeviceInfo& device_info, |
| 192 bool connected); | 218 bool connected); |
| 193 | 219 |
| 194 std::string serial() { return serial_; } | 220 std::string serial() { return device_handle_->serial(); } |
| 195 std::string model() { return model_; } | 221 std::string model() { return model_; } |
| 196 bool is_connected() { return connected_; } | 222 bool is_connected() { return connected_; } |
| 197 RemoteBrowsers& browsers() { return browsers_; } | 223 RemoteBrowsers& browsers() { return browsers_; } |
| 198 gfx::Size screen_size() { return screen_size_; } | 224 gfx::Size screen_size() { return screen_size_; } |
| 199 | 225 |
| 200 void OpenSocket(const std::string& socket_name, | 226 void OpenSocket(const std::string& socket_name, |
| 201 const AndroidDeviceManager::SocketCallback& callback); | 227 const AndroidDeviceManager::SocketCallback& callback); |
| 202 | 228 |
| 203 private: | 229 private: |
| 204 friend class base::RefCounted<RemoteDevice>; | 230 friend class base::RefCounted<RemoteDevice>; |
| 205 virtual ~RemoteDevice(); | 231 virtual ~RemoteDevice(); |
| 206 | 232 |
| 207 scoped_refptr<DevToolsAndroidBridge> android_bridge_; | 233 scoped_refptr<DeviceHandle> device_handle_; |
| 208 std::string serial_; | |
| 209 std::string model_; | 234 std::string model_; |
| 210 bool connected_; | 235 bool connected_; |
| 211 RemoteBrowsers browsers_; | 236 RemoteBrowsers browsers_; |
| 212 gfx::Size screen_size_; | 237 gfx::Size screen_size_; |
| 213 | 238 |
| 214 DISALLOW_COPY_AND_ASSIGN(RemoteDevice); | 239 DISALLOW_COPY_AND_ASSIGN(RemoteDevice); |
| 215 }; | 240 }; |
| 216 | 241 |
| 217 typedef std::vector<scoped_refptr<RemoteDevice> > RemoteDevices; | 242 typedef std::vector<scoped_refptr<RemoteDevice> > RemoteDevices; |
| 218 | 243 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 237 void AddDeviceCountListener(DeviceCountListener* listener); | 262 void AddDeviceCountListener(DeviceCountListener* listener); |
| 238 void RemoveDeviceCountListener(DeviceCountListener* listener); | 263 void RemoveDeviceCountListener(DeviceCountListener* listener); |
| 239 | 264 |
| 240 void set_device_providers_for_test( | 265 void set_device_providers_for_test( |
| 241 const AndroidDeviceManager::DeviceProviders& device_providers) { | 266 const AndroidDeviceManager::DeviceProviders& device_providers) { |
| 242 device_providers_ = device_providers; | 267 device_providers_ = device_providers; |
| 243 } | 268 } |
| 244 | 269 |
| 245 static bool HasDevToolsWindow(const std::string& agent_id); | 270 static bool HasDevToolsWindow(const std::string& agent_id); |
| 246 | 271 |
| 272 void IsConnectedForTest(const std::string& serial, |
| 273 const base::Callback<void(bool)>& callback); |
| 274 |
| 247 private: | 275 private: |
| 248 friend struct content::BrowserThread::DeleteOnThread< | 276 friend struct content::BrowserThread::DeleteOnThread< |
| 249 content::BrowserThread::UI>; | 277 content::BrowserThread::UI>; |
| 250 friend class base::DeleteHelper<DevToolsAndroidBridge>; | 278 friend class base::DeleteHelper<DevToolsAndroidBridge>; |
| 251 | 279 |
| 252 class HandlerThread : public base::RefCountedThreadSafe<HandlerThread> { | 280 class HandlerThread : public base::RefCountedThreadSafe<HandlerThread> { |
| 253 public: | 281 public: |
| 254 static scoped_refptr<HandlerThread> GetInstance(); | 282 static scoped_refptr<HandlerThread> GetInstance(); |
| 255 base::MessageLoop* message_loop(); | 283 base::MessageLoop* message_loop(); |
| 256 | 284 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 269 base::MessageLoop* device_message_loop() { | 297 base::MessageLoop* device_message_loop() { |
| 270 return handler_thread_->message_loop(); | 298 return handler_thread_->message_loop(); |
| 271 } | 299 } |
| 272 | 300 |
| 273 AndroidDeviceManager* device_manager() { | 301 AndroidDeviceManager* device_manager() { |
| 274 return device_manager_.get(); | 302 return device_manager_.get(); |
| 275 } | 303 } |
| 276 | 304 |
| 277 void CreatedDeviceManager(scoped_refptr<AndroidDeviceManager> device_manager); | 305 void CreatedDeviceManager(scoped_refptr<AndroidDeviceManager> device_manager); |
| 278 void RequestDeviceList(); | 306 void RequestDeviceList(); |
| 279 void ReceivedDeviceList(RemoteDevices* devices); | 307 void ReceivedDeviceList(RemoteDevices* devices, |
| 308 DeviceHandleMap* device_handles); |
| 280 | 309 |
| 281 void RequestDeviceCount(); | 310 void RequestDeviceCount(); |
| 282 void ReceivedDeviceCount(int count); | 311 void ReceivedDeviceCount(int count); |
| 283 | 312 |
| 284 void CreateDeviceProviders(); | 313 void CreateDeviceProviders(); |
| 285 | 314 |
| 286 Profile* profile_; | 315 Profile* profile_; |
| 287 scoped_refptr<HandlerThread> handler_thread_; | 316 scoped_refptr<HandlerThread> handler_thread_; |
| 288 scoped_refptr<AndroidDeviceManager> device_manager_; | 317 scoped_refptr<AndroidDeviceManager> device_manager_; |
| 289 | 318 |
| 290 typedef std::vector<DeviceListListener*> DeviceListListeners; | 319 typedef std::vector<DeviceListListener*> DeviceListListeners; |
| 291 DeviceListListeners device_list_listeners_; | 320 DeviceListListeners device_list_listeners_; |
| 321 DeviceHandleMap device_handles_; |
| 292 | 322 |
| 293 typedef std::vector<DeviceCountListener*> DeviceCountListeners; | 323 typedef std::vector<DeviceCountListener*> DeviceCountListeners; |
| 294 DeviceCountListeners device_count_listeners_; | 324 DeviceCountListeners device_count_listeners_; |
| 295 | 325 |
| 296 AndroidDeviceManager::DeviceProviders device_providers_; | 326 AndroidDeviceManager::DeviceProviders device_providers_; |
| 297 PrefChangeRegistrar pref_change_registrar_; | 327 PrefChangeRegistrar pref_change_registrar_; |
| 298 DISALLOW_COPY_AND_ASSIGN(DevToolsAndroidBridge); | 328 DISALLOW_COPY_AND_ASSIGN(DevToolsAndroidBridge); |
| 299 }; | 329 }; |
| 300 | 330 |
| 301 #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ | 331 #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ |
| OLD | NEW |