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

Side by Side Diff: chrome/browser/devtools/device/devtools_android_bridge.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 unified diff | Download patch
OLDNEW
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 Factory(); 66 Factory();
67 virtual ~Factory(); 67 virtual ~Factory();
68 68
69 // BrowserContextKeyedServiceFactory overrides: 69 // BrowserContextKeyedServiceFactory overrides:
70 virtual KeyedService* BuildServiceInstanceFor( 70 virtual KeyedService* BuildServiceInstanceFor(
71 content::BrowserContext* context) const OVERRIDE; 71 content::BrowserContext* context) const OVERRIDE;
72 DISALLOW_COPY_AND_ASSIGN(Factory); 72 DISALLOW_COPY_AND_ASSIGN(Factory);
73 }; 73 };
74 74
75 class AndroidWebSocket : public base::RefCountedThreadSafe<AndroidWebSocket> {
76 public:
77 class Delegate {
78 public:
79 virtual void OnSocketOpened() = 0;
80 virtual void OnFrameRead(const std::string& message) = 0;
81 virtual void OnSocketClosed(bool closed_by_device) = 0;
82
83 protected:
84 virtual ~Delegate() {}
85 };
86
87 AndroidWebSocket() {}
88
89 virtual void Connect() = 0;
90 virtual void Disconnect() = 0;
91 virtual void SendFrame(const std::string& message) = 0;
92
93 protected:
94 virtual ~AndroidWebSocket() {}
95
96 private:
97 friend class base::RefCountedThreadSafe<AndroidWebSocket>;
98
99 DISALLOW_COPY_AND_ASSIGN(AndroidWebSocket);
100 };
101
102 class RemotePage { 75 class RemotePage {
103 public: 76 public:
104 virtual ~RemotePage() {} 77 virtual ~RemotePage() {}
105 virtual DevToolsTargetImpl* GetTarget() = 0; 78 virtual DevToolsTargetImpl* GetTarget() = 0;
106 virtual std::string GetFrontendURL() = 0; 79 virtual std::string GetFrontendURL() = 0;
107 }; 80 };
108 81
109 typedef base::Callback<void(RemotePage*)> RemotePageCallback; 82 typedef base::Callback<void(RemotePage*)> RemotePageCallback;
83 typedef base::Callback<void(int, const std::string&)> JsonRequestCallback;
84 typedef AndroidDeviceManager::Device Device;
85 typedef AndroidDeviceManager::AndroidWebSocket AndroidWebSocket;
110 86
111 class RemoteBrowser : public base::RefCounted<RemoteBrowser> { 87 class RemoteBrowser : public base::RefCounted<RemoteBrowser> {
112 public: 88 public:
113 RemoteBrowser( 89 RemoteBrowser(scoped_refptr<Device> device,
114 scoped_refptr<DevToolsAndroidBridge> android_bridge, 90 const AndroidDeviceManager::BrowserInfo& browser_info);
115 const std::string& serial,
116 const AndroidDeviceManager::BrowserInfo& browser_info);
117 91
118 std::string serial() { return serial_; } 92 std::string serial() { return device_->serial(); }
119 std::string socket() { return socket_; } 93 std::string socket() { return socket_; }
120 94
121 std::string display_name() { return display_name_; } 95 std::string display_name() { return display_name_; }
122 void set_display_name(const std::string& name) { display_name_ = name; } 96 void set_display_name(const std::string& name) { display_name_ = name; }
123 97
124 std::string version() { return version_; } 98 std::string version() { return version_; }
125 void set_version(const std::string& version) { version_ = version; } 99 void set_version(const std::string& version) { version_ = version; }
126 100
127 bool IsChrome() const; 101 bool IsChrome() const;
128 bool IsWebView() const; 102 bool IsWebView() const;
129 103
130 typedef std::vector<int> ParsedVersion; 104 typedef std::vector<int> ParsedVersion;
131 ParsedVersion GetParsedVersion() const; 105 ParsedVersion GetParsedVersion() const;
132 106
133 std::vector<RemotePage*> CreatePages(); 107 std::vector<RemotePage*> CreatePages();
134 void SetPageDescriptors(const base::ListValue&); 108 void SetPageDescriptors(const base::ListValue&);
135 109
136 typedef base::Callback<void(int, const std::string&)> JsonRequestCallback;
137 void SendJsonRequest(const std::string& request, 110 void SendJsonRequest(const std::string& request,
138 const JsonRequestCallback& callback); 111 const JsonRequestCallback& callback);
112
139 void SendProtocolCommand(const std::string& debug_url, 113 void SendProtocolCommand(const std::string& debug_url,
140 const std::string& method, 114 const std::string& method,
141 base::DictionaryValue* params, 115 base::DictionaryValue* params,
142 const base::Closure callback); 116 const base::Closure callback);
143 117
144 void Open(const std::string& url, 118 void Open(const std::string& url,
145 const RemotePageCallback& callback); 119 const RemotePageCallback& callback);
146 120
147 scoped_refptr<content::DevToolsAgentHost> GetAgentHost(); 121 scoped_refptr<content::DevToolsAgentHost> GetAgentHost();
148 122
(...skipping 15 matching lines...) Expand all
164 void NavigatePageOnUIThread(const JsonRequestCallback& callback, 138 void NavigatePageOnUIThread(const JsonRequestCallback& callback,
165 int result, 139 int result,
166 const std::string& response, 140 const std::string& response,
167 const std::string& url); 141 const std::string& url);
168 142
169 void RespondToOpenOnUIThread( 143 void RespondToOpenOnUIThread(
170 const DevToolsAndroidBridge::RemotePageCallback& callback, 144 const DevToolsAndroidBridge::RemotePageCallback& callback,
171 int result, 145 int result,
172 const std::string& response); 146 const std::string& response);
173 147
174 scoped_refptr<DevToolsAndroidBridge> android_bridge_; 148 scoped_refptr<Device> device_;
175 const std::string serial_;
176 const std::string socket_; 149 const std::string socket_;
177 std::string display_name_; 150 std::string display_name_;
178 const AndroidDeviceManager::BrowserInfo::Type type_; 151 const AndroidDeviceManager::BrowserInfo::Type type_;
179 std::string version_; 152 std::string version_;
180 scoped_ptr<base::ListValue> page_descriptors_; 153 scoped_ptr<base::ListValue> page_descriptors_;
181 154
182 DISALLOW_COPY_AND_ASSIGN(RemoteBrowser); 155 DISALLOW_COPY_AND_ASSIGN(RemoteBrowser);
183 }; 156 };
184 157
185 typedef std::vector<scoped_refptr<RemoteBrowser> > RemoteBrowsers; 158 typedef std::vector<scoped_refptr<RemoteBrowser> > RemoteBrowsers;
186 159
187 class RemoteDevice : public base::RefCounted<RemoteDevice> { 160 class RemoteDevice : public base::RefCounted<RemoteDevice> {
188 public: 161 public:
189 RemoteDevice(scoped_refptr<DevToolsAndroidBridge> android_bridge, 162 RemoteDevice(scoped_refptr<Device> device,
190 const std::string& serial, 163 const AndroidDeviceManager::DeviceInfo& device_info);
191 const AndroidDeviceManager::DeviceInfo& device_info,
192 bool connected);
193 164
194 std::string serial() { return serial_; } 165 std::string serial() { return device_->serial(); }
195 std::string model() { return model_; } 166 std::string model() { return model_; }
196 bool is_connected() { return connected_; } 167 bool is_connected() { return connected_; }
197 RemoteBrowsers& browsers() { return browsers_; } 168 RemoteBrowsers& browsers() { return browsers_; }
198 gfx::Size screen_size() { return screen_size_; } 169 gfx::Size screen_size() { return screen_size_; }
199 170
200 void OpenSocket(const std::string& socket_name, 171 void OpenSocket(const std::string& socket_name,
201 const AndroidDeviceManager::SocketCallback& callback); 172 const AndroidDeviceManager::SocketCallback& callback);
202 173
203 private: 174 private:
204 friend class base::RefCounted<RemoteDevice>; 175 friend class base::RefCounted<RemoteDevice>;
205 virtual ~RemoteDevice(); 176 virtual ~RemoteDevice();
206 177
207 scoped_refptr<DevToolsAndroidBridge> android_bridge_; 178 scoped_refptr<Device> device_;
208 std::string serial_;
209 std::string model_; 179 std::string model_;
210 bool connected_; 180 bool connected_;
211 RemoteBrowsers browsers_; 181 RemoteBrowsers browsers_;
212 gfx::Size screen_size_; 182 gfx::Size screen_size_;
213 183
214 DISALLOW_COPY_AND_ASSIGN(RemoteDevice); 184 DISALLOW_COPY_AND_ASSIGN(RemoteDevice);
215 }; 185 };
216 186
217 typedef std::vector<scoped_refptr<RemoteDevice> > RemoteDevices; 187 typedef std::vector<scoped_refptr<RemoteDevice> > RemoteDevices;
218 188
(...skipping 26 matching lines...) Expand all
245 static bool HasDevToolsWindow(const std::string& agent_id); 215 static bool HasDevToolsWindow(const std::string& agent_id);
246 216
247 private: 217 private:
248 friend struct content::BrowserThread::DeleteOnThread< 218 friend struct content::BrowserThread::DeleteOnThread<
249 content::BrowserThread::UI>; 219 content::BrowserThread::UI>;
250 friend class base::DeleteHelper<DevToolsAndroidBridge>; 220 friend class base::DeleteHelper<DevToolsAndroidBridge>;
251 221
252 class HandlerThread : public base::RefCountedThreadSafe<HandlerThread> { 222 class HandlerThread : public base::RefCountedThreadSafe<HandlerThread> {
253 public: 223 public:
254 static scoped_refptr<HandlerThread> GetInstance(); 224 static scoped_refptr<HandlerThread> GetInstance();
255 base::MessageLoop* message_loop(); 225 scoped_refptr<base::MessageLoopProxy> message_loop();
256 226
257 private: 227 private:
258 friend class base::RefCountedThreadSafe<HandlerThread>; 228 friend class base::RefCountedThreadSafe<HandlerThread>;
259 static HandlerThread* instance_; 229 static HandlerThread* instance_;
260 static void StopThread(base::Thread* thread); 230 static void StopThread(base::Thread* thread);
261 231
262 HandlerThread(); 232 HandlerThread();
263 virtual ~HandlerThread(); 233 virtual ~HandlerThread();
264 base::Thread* thread_; 234 base::Thread* thread_;
265 }; 235 };
266 236
267 virtual ~DevToolsAndroidBridge(); 237 virtual ~DevToolsAndroidBridge();
268 238
269 base::MessageLoop* device_message_loop() { 239 scoped_refptr<base::MessageLoopProxy> device_message_loop() {
270 return handler_thread_->message_loop(); 240 return handler_thread_->message_loop();
271 } 241 }
272 242
273 AndroidDeviceManager* device_manager() { 243 AndroidDeviceManager* device_manager() {
274 return device_manager_.get(); 244 return device_manager_.get();
275 } 245 }
276 246
277 void CreatedDeviceManager(scoped_refptr<AndroidDeviceManager> device_manager); 247 void CreatedDeviceManager(scoped_refptr<AndroidDeviceManager> device_manager);
278 void RequestDeviceList(); 248 void RequestDeviceList();
279 void ReceivedDeviceList(RemoteDevices* devices); 249 void ReceivedDeviceList(scoped_ptr<RemoteDevices> devices);
280
281 void RequestDeviceCount(); 250 void RequestDeviceCount();
282 void ReceivedDeviceCount(int count); 251 void ReceivedDeviceCount(int count);
283 252
284 void CreateDeviceProviders(); 253 void CreateDeviceProviders();
285 254
286 Profile* profile_; 255 Profile* profile_;
287 scoped_refptr<HandlerThread> handler_thread_; 256 scoped_refptr<HandlerThread> handler_thread_;
288 scoped_refptr<AndroidDeviceManager> device_manager_; 257 scoped_refptr<AndroidDeviceManager> device_manager_;
258 RemoteDevices devices_;
289 259
290 typedef std::vector<DeviceListListener*> DeviceListListeners; 260 typedef std::vector<DeviceListListener*> DeviceListListeners;
291 DeviceListListeners device_list_listeners_; 261 DeviceListListeners device_list_listeners_;
292 262
293 typedef std::vector<DeviceCountListener*> DeviceCountListeners; 263 typedef std::vector<DeviceCountListener*> DeviceCountListeners;
294 DeviceCountListeners device_count_listeners_; 264 DeviceCountListeners device_count_listeners_;
295 265
296 AndroidDeviceManager::DeviceProviders device_providers_; 266 AndroidDeviceManager::DeviceProviders device_providers_;
297 PrefChangeRegistrar pref_change_registrar_; 267 PrefChangeRegistrar pref_change_registrar_;
298 DISALLOW_COPY_AND_ASSIGN(DevToolsAndroidBridge); 268 DISALLOW_COPY_AND_ASSIGN(DevToolsAndroidBridge);
299 }; 269 };
300 270
301 #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_ 271 #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_DEVTOOLS_ANDROID_BRIDGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698