OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "chrome/browser/devtools/devtools_targets_ui.h" | 5 #include "chrome/browser/devtools/devtools_targets_ui.h" |
6 | 6 |
7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
285 const DevToolsTargetsUIHandler::TargetCallback&) OVERRIDE; | 285 const DevToolsTargetsUIHandler::TargetCallback&) OVERRIDE; |
286 | 286 |
287 virtual scoped_refptr<content::DevToolsAgentHost> GetBrowserAgentHost( | 287 virtual scoped_refptr<content::DevToolsAgentHost> GetBrowserAgentHost( |
288 const std::string& browser_id) OVERRIDE; | 288 const std::string& browser_id) OVERRIDE; |
289 | 289 |
290 private: | 290 private: |
291 // DevToolsAndroidBridge::Listener overrides. | 291 // DevToolsAndroidBridge::Listener overrides. |
292 virtual void DeviceListChanged( | 292 virtual void DeviceListChanged( |
293 const DevToolsAndroidBridge::RemoteDevices& devices) OVERRIDE; | 293 const DevToolsAndroidBridge::RemoteDevices& devices) OVERRIDE; |
294 | 294 |
295 DevToolsAndroidBridge* GetAndroidBridge(); | |
296 | |
295 Profile* profile_; | 297 Profile* profile_; |
298 scoped_refptr<DevToolsAndroidBridge> android_bridge_; | |
296 | 299 |
297 typedef std::map<std::string, | 300 typedef std::map<std::string, |
298 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> > RemoteBrowsers; | 301 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> > RemoteBrowsers; |
299 RemoteBrowsers remote_browsers_; | 302 RemoteBrowsers remote_browsers_; |
300 }; | 303 }; |
301 | 304 |
302 AdbTargetsUIHandler::AdbTargetsUIHandler(const Callback& callback, | 305 AdbTargetsUIHandler::AdbTargetsUIHandler(const Callback& callback, |
303 Profile* profile) | 306 Profile* profile) |
304 : DevToolsTargetsUIHandler(kTargetSourceRemote, callback), | 307 : DevToolsTargetsUIHandler(kTargetSourceRemote, callback), |
305 profile_(profile) { | 308 profile_(profile), |
306 DevToolsAndroidBridge* android_bridge = | 309 android_bridge_( |
307 DevToolsAndroidBridge::Factory::GetForProfile(profile_); | 310 DevToolsAndroidBridge::Factory::GetForProfile(profile_)) { |
308 if (android_bridge) | 311 android_bridge_->AddDeviceListListener(this); |
dgozman
2014/10/02 13:21:48
You still need all the |if (android_bridge_)| chec
vkuzkokov
2014/10/03 10:53:32
Added DCHECK instead.
| |
309 android_bridge->AddDeviceListListener(this); | |
310 } | 312 } |
311 | 313 |
312 AdbTargetsUIHandler::~AdbTargetsUIHandler() { | 314 AdbTargetsUIHandler::~AdbTargetsUIHandler() { |
313 DevToolsAndroidBridge* android_bridge = | 315 android_bridge_->RemoveDeviceListListener(this); |
314 DevToolsAndroidBridge::Factory::GetForProfile(profile_); | |
315 if (android_bridge) | |
316 android_bridge->RemoveDeviceListListener(this); | |
317 } | 316 } |
318 | 317 |
319 static void CallOnTarget( | 318 static void CallOnTarget( |
320 const DevToolsTargetsUIHandler::TargetCallback& callback, | 319 const DevToolsTargetsUIHandler::TargetCallback& callback, |
321 DevToolsAndroidBridge::RemotePage* page) { | 320 DevToolsAndroidBridge::RemotePage* page) { |
322 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page); | 321 scoped_ptr<DevToolsAndroidBridge::RemotePage> my_page(page); |
323 callback.Run(my_page ? my_page->GetTarget() : NULL); | 322 callback.Run(my_page ? my_page->GetTarget() : NULL); |
324 } | 323 } |
325 | 324 |
326 void AdbTargetsUIHandler::Open( | 325 void AdbTargetsUIHandler::Open( |
327 const std::string& browser_id, | 326 const std::string& browser_id, |
328 const std::string& url, | 327 const std::string& url, |
329 const DevToolsTargetsUIHandler::TargetCallback& callback) { | 328 const DevToolsTargetsUIHandler::TargetCallback& callback) { |
330 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); | 329 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); |
331 if (it != remote_browsers_.end()) | 330 if (it == remote_browsers_.end()) |
332 it->second->Open(url, base::Bind(&CallOnTarget, callback)); | 331 return; |
332 | |
333 android_bridge_->OpenRemotePage(it->second, url, | |
334 base::Bind(&CallOnTarget, callback)); | |
333 } | 335 } |
334 | 336 |
335 scoped_refptr<content::DevToolsAgentHost> | 337 scoped_refptr<content::DevToolsAgentHost> |
336 AdbTargetsUIHandler::GetBrowserAgentHost( | 338 AdbTargetsUIHandler::GetBrowserAgentHost( |
337 const std::string& browser_id) { | 339 const std::string& browser_id) { |
338 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); | 340 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); |
339 return it != remote_browsers_.end() ? it->second->GetAgentHost() : NULL; | 341 if (it == remote_browsers_.end()) |
342 return NULL; | |
343 | |
344 return android_bridge_->GetBrowserAgentHost(it->second); | |
340 } | 345 } |
341 | 346 |
342 void AdbTargetsUIHandler::DeviceListChanged( | 347 void AdbTargetsUIHandler::DeviceListChanged( |
343 const DevToolsAndroidBridge::RemoteDevices& devices) { | 348 const DevToolsAndroidBridge::RemoteDevices& devices) { |
344 remote_browsers_.clear(); | 349 remote_browsers_.clear(); |
345 STLDeleteValues(&targets_); | 350 STLDeleteValues(&targets_); |
346 | 351 |
347 base::ListValue device_list; | 352 base::ListValue device_list; |
348 for (DevToolsAndroidBridge::RemoteDevices::const_iterator dit = | 353 for (DevToolsAndroidBridge::RemoteDevices::const_iterator dit = |
349 devices.begin(); dit != devices.end(); ++dit) { | 354 devices.begin(); dit != devices.end(); ++dit) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
382 base::Version local_version(version_info.Version()); | 387 base::Version local_version(version_info.Version()); |
383 | 388 |
384 browser_data->SetBoolean(kCompatibleVersion, | 389 browser_data->SetBoolean(kCompatibleVersion, |
385 (!remote_version.IsValid()) || (!local_version.IsValid()) || | 390 (!remote_version.IsValid()) || (!local_version.IsValid()) || |
386 remote_version.components()[0] <= local_version.components()[0]); | 391 remote_version.components()[0] <= local_version.components()[0]); |
387 | 392 |
388 base::ListValue* page_list = new base::ListValue(); | 393 base::ListValue* page_list = new base::ListValue(); |
389 remote_browsers_[browser_id] = browser; | 394 remote_browsers_[browser_id] = browser; |
390 browser_data->Set(kAdbPagesList, page_list); | 395 browser_data->Set(kAdbPagesList, page_list); |
391 std::vector<DevToolsAndroidBridge::RemotePage*> pages = | 396 std::vector<DevToolsAndroidBridge::RemotePage*> pages = |
392 browser->CreatePages(); | 397 android_bridge_->CreatePages(browser); |
393 for (std::vector<DevToolsAndroidBridge::RemotePage*>::iterator it = | 398 for (std::vector<DevToolsAndroidBridge::RemotePage*>::iterator it = |
394 pages.begin(); it != pages.end(); ++it) { | 399 pages.begin(); it != pages.end(); ++it) { |
395 DevToolsAndroidBridge::RemotePage* page = *it; | 400 DevToolsAndroidBridge::RemotePage* page = *it; |
396 DevToolsTargetImpl* target = page->GetTarget(); | 401 DevToolsTargetImpl* target = page->GetTarget(); |
397 base::DictionaryValue* target_data = Serialize(*target); | 402 base::DictionaryValue* target_data = Serialize(*target); |
398 target_data->SetBoolean( | 403 target_data->SetBoolean( |
399 kAdbAttachedForeignField, | 404 kAdbAttachedForeignField, |
400 target->IsAttached() && | 405 target->IsAttached() && |
401 !DevToolsAndroidBridge::HasDevToolsWindow(target->GetId())); | 406 !android_bridge_->HasDevToolsWindow(target->GetId())); |
402 // Pass the screen size in the target object to make sure that | 407 // Pass the screen size in the target object to make sure that |
403 // the caching logic does not prevent the target item from updating | 408 // the caching logic does not prevent the target item from updating |
404 // when the screen size changes. | 409 // when the screen size changes. |
405 gfx::Size screen_size = device->screen_size(); | 410 gfx::Size screen_size = device->screen_size(); |
406 target_data->SetInteger(kAdbScreenWidthField, screen_size.width()); | 411 target_data->SetInteger(kAdbScreenWidthField, screen_size.width()); |
407 target_data->SetInteger(kAdbScreenHeightField, screen_size.height()); | 412 target_data->SetInteger(kAdbScreenHeightField, screen_size.height()); |
408 targets_[target->GetId()] = target; | 413 targets_[target->GetId()] = target; |
409 page_list->Append(target_data); | 414 page_list->Append(target_data); |
410 } | 415 } |
411 browser_list->Append(browser_data); | 416 browser_list->Append(browser_data); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
525 device_status_dict->SetString(kPortForwardingBrowserId, | 530 device_status_dict->SetString(kPortForwardingBrowserId, |
526 SerializeBrowserId(sit->first)); | 531 SerializeBrowserId(sit->first)); |
527 | 532 |
528 std::string device_id = base::StringPrintf( | 533 std::string device_id = base::StringPrintf( |
529 kAdbDeviceIdFormat, | 534 kAdbDeviceIdFormat, |
530 sit->first->serial().c_str()); | 535 sit->first->serial().c_str()); |
531 result.Set(device_id, device_status_dict); | 536 result.Set(device_id, device_status_dict); |
532 } | 537 } |
533 callback_.Run(result); | 538 callback_.Run(result); |
534 } | 539 } |
OLD | NEW |