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 #include "chrome/browser/devtools/device/devtools_android_bridge.h" | 5 #include "chrome/browser/devtools/device/devtools_android_bridge.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
50 const char kBrowserTargetSocket[] = "/devtools/browser"; | 50 const char kBrowserTargetSocket[] = "/devtools/browser"; |
51 const int kAdbPollingIntervalMs = 1000; | 51 const int kAdbPollingIntervalMs = 1000; |
52 | 52 |
53 const char kUrlParam[] = "url"; | 53 const char kUrlParam[] = "url"; |
54 const char kPageReloadCommand[] = "Page.reload"; | 54 const char kPageReloadCommand[] = "Page.reload"; |
55 const char kPageNavigateCommand[] = "Page.navigate"; | 55 const char kPageNavigateCommand[] = "Page.navigate"; |
56 | 56 |
57 const int kMinVersionNewWithURL = 32; | 57 const int kMinVersionNewWithURL = 32; |
58 const int kNewPageNavigateDelayMs = 500; | 58 const int kNewPageNavigateDelayMs = 500; |
59 | 59 |
60 static int last_remote_browser_id_ = 1; | |
61 | |
60 // DiscoveryRequest ----------------------------------------------------- | 62 // DiscoveryRequest ----------------------------------------------------- |
61 | 63 |
62 class DiscoveryRequest : public base::RefCountedThreadSafe< | 64 class DiscoveryRequest : public base::RefCountedThreadSafe< |
63 DiscoveryRequest, | 65 DiscoveryRequest, |
64 BrowserThread::DeleteOnUIThread> { | 66 BrowserThread::DeleteOnUIThread> { |
65 public: | 67 public: |
66 typedef AndroidDeviceManager::Device Device; | 68 typedef AndroidDeviceManager::Device Device; |
67 typedef AndroidDeviceManager::Devices Devices; | 69 typedef AndroidDeviceManager::Devices Devices; |
68 typedef AndroidDeviceManager::DeviceInfo DeviceInfo; | 70 typedef AndroidDeviceManager::DeviceInfo DeviceInfo; |
69 typedef DevToolsAndroidBridge::RemoteDevice RemoteDevice; | 71 typedef DevToolsAndroidBridge::RemoteDevice RemoteDevice; |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
402 virtual std::string GetId() const OVERRIDE; | 404 virtual std::string GetId() const OVERRIDE; |
403 virtual bool IsAttached() const OVERRIDE; | 405 virtual bool IsAttached() const OVERRIDE; |
404 virtual bool Activate() const OVERRIDE; | 406 virtual bool Activate() const OVERRIDE; |
405 virtual bool Close() const OVERRIDE; | 407 virtual bool Close() const OVERRIDE; |
406 virtual void Inspect(Profile* profile) const OVERRIDE; | 408 virtual void Inspect(Profile* profile) const OVERRIDE; |
407 virtual void Reload() const OVERRIDE; | 409 virtual void Reload() const OVERRIDE; |
408 | 410 |
409 void Navigate(const std::string& url, base::Closure callback) const; | 411 void Navigate(const std::string& url, base::Closure callback) const; |
410 | 412 |
411 private: | 413 private: |
412 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser_; | 414 const scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser_; |
413 std::string debug_url_; | 415 const std::string debug_url_; |
414 std::string frontend_url_; | 416 std::string frontend_url_; |
415 std::string remote_id_; | 417 const std::string remote_id_; |
416 std::string remote_type_; | 418 const std::string local_id_; |
419 const std::string remote_type_; | |
417 DISALLOW_COPY_AND_ASSIGN(RemotePageTarget); | 420 DISALLOW_COPY_AND_ASSIGN(RemotePageTarget); |
418 }; | 421 }; |
419 | 422 |
420 static std::string GetStringProperty(const base::DictionaryValue& value, | 423 static std::string GetStringProperty(const base::DictionaryValue& value, |
421 const std::string& name) { | 424 const std::string& name) { |
422 std::string result; | 425 std::string result; |
423 value.GetString(name, &result); | 426 value.GetString(name, &result); |
424 return result; | 427 return result; |
425 } | 428 } |
426 | 429 |
(...skipping 14 matching lines...) Expand all Loading... | |
441 return debug_url; | 444 return debug_url; |
442 } | 445 } |
443 | 446 |
444 RemotePageTarget::RemotePageTarget( | 447 RemotePageTarget::RemotePageTarget( |
445 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser, | 448 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser, |
446 const base::DictionaryValue& value) | 449 const base::DictionaryValue& value) |
447 : DevToolsTargetImpl(AgentHostDelegate::GetOrCreateAgentHost( | 450 : DevToolsTargetImpl(AgentHostDelegate::GetOrCreateAgentHost( |
448 BuildUniqueTargetId(browser.get(), value), | 451 BuildUniqueTargetId(browser.get(), value), |
449 browser, GetDebugURL(value))), | 452 browser, GetDebugURL(value))), |
450 browser_(browser), | 453 browser_(browser), |
451 debug_url_(GetDebugURL(value)), | 454 debug_url_(GetDebugURL(value)), |
SeRya
2014/08/29 07:04:41
Initialized twice.
| |
452 remote_id_(GetStringProperty(value, "id")), | 455 remote_id_(GetStringProperty(value, "id")), |
456 local_id_(base::IntToString(browser->GetId()) + ":" + remote_id_), | |
453 remote_type_(GetStringProperty(value, "type")) { | 457 remote_type_(GetStringProperty(value, "type")) { |
454 set_type("adb_page"); | 458 set_type("adb_page"); |
455 set_url(GURL(GetStringProperty(value, "url"))); | 459 set_url(GURL(GetStringProperty(value, "url"))); |
456 set_title(base::UTF16ToUTF8(net::UnescapeForHTML(base::UTF8ToUTF16( | 460 set_title(base::UTF16ToUTF8(net::UnescapeForHTML(base::UTF8ToUTF16( |
457 GetStringProperty(value, "title"))))); | 461 GetStringProperty(value, "title"))))); |
458 set_description(GetStringProperty(value, "description")); | 462 set_description(GetStringProperty(value, "description")); |
459 set_favicon_url(GURL(GetStringProperty(value, "faviconUrl"))); | 463 set_favicon_url(GURL(GetStringProperty(value, "faviconUrl"))); |
460 debug_url_ = GetDebugURL(value); | |
461 frontend_url_ = GetStringProperty(value, "devtoolsFrontendUrl"); | 464 frontend_url_ = GetStringProperty(value, "devtoolsFrontendUrl"); |
462 | 465 |
463 size_t ws_param = frontend_url_.find("?ws"); | 466 size_t ws_param = frontend_url_.find("?ws"); |
464 if (ws_param != std::string::npos) | 467 if (ws_param != std::string::npos) |
465 frontend_url_ = frontend_url_.substr(0, ws_param); | 468 frontend_url_ = frontend_url_.substr(0, ws_param); |
466 if (frontend_url_.find("http:") == 0) | 469 if (frontend_url_.find("http:") == 0) |
467 frontend_url_ = "https:" + frontend_url_.substr(5); | 470 frontend_url_ = "https:" + frontend_url_.substr(5); |
468 } | 471 } |
469 | 472 |
470 RemotePageTarget::~RemotePageTarget() { | 473 RemotePageTarget::~RemotePageTarget() { |
471 } | 474 } |
472 | 475 |
473 DevToolsTargetImpl* RemotePageTarget::GetTarget() { | 476 DevToolsTargetImpl* RemotePageTarget::GetTarget() { |
474 return this; | 477 return this; |
475 } | 478 } |
476 | 479 |
477 std::string RemotePageTarget::GetFrontendURL() { | 480 std::string RemotePageTarget::GetFrontendURL() { |
478 return frontend_url_; | 481 return frontend_url_; |
479 } | 482 } |
480 | 483 |
481 std::string RemotePageTarget::GetId() const { | 484 std::string RemotePageTarget::GetId() const { |
482 return remote_id_; | 485 return local_id_; |
483 } | 486 } |
484 | 487 |
485 bool RemotePageTarget::IsAttached() const { | 488 bool RemotePageTarget::IsAttached() const { |
486 return debug_url_.empty(); | 489 return debug_url_.empty(); |
487 } | 490 } |
488 | 491 |
489 static void NoOp(int, const std::string&) {} | 492 static void NoOp(int, const std::string&) {} |
490 | 493 |
491 void RemotePageTarget::Inspect(Profile* profile) const { | 494 void RemotePageTarget::Inspect(Profile* profile) const { |
492 Activate(); | 495 Activate(); |
(...skipping 28 matching lines...) Expand all Loading... | |
521 params.SetString(kUrlParam, url); | 524 params.SetString(kUrlParam, url); |
522 browser_->SendProtocolCommand(debug_url_, kPageNavigateCommand, ¶ms, | 525 browser_->SendProtocolCommand(debug_url_, kPageNavigateCommand, ¶ms, |
523 callback); | 526 callback); |
524 } | 527 } |
525 | 528 |
526 // DevToolsAndroidBridge::RemoteBrowser --------------------------------------- | 529 // DevToolsAndroidBridge::RemoteBrowser --------------------------------------- |
527 | 530 |
528 DevToolsAndroidBridge::RemoteBrowser::RemoteBrowser( | 531 DevToolsAndroidBridge::RemoteBrowser::RemoteBrowser( |
529 scoped_refptr<Device> device, | 532 scoped_refptr<Device> device, |
530 const AndroidDeviceManager::BrowserInfo& browser_info) | 533 const AndroidDeviceManager::BrowserInfo& browser_info) |
531 : device_(device), | 534 : id_(last_remote_browser_id_++), |
535 device_(device), | |
532 socket_(browser_info.socket_name), | 536 socket_(browser_info.socket_name), |
533 display_name_(browser_info.display_name), | 537 display_name_(browser_info.display_name), |
534 type_(browser_info.type), | 538 type_(browser_info.type), |
535 page_descriptors_(new base::ListValue()) { | 539 page_descriptors_(new base::ListValue()) { |
536 } | 540 } |
537 | 541 |
538 bool DevToolsAndroidBridge::RemoteBrowser::IsChrome() const { | 542 bool DevToolsAndroidBridge::RemoteBrowser::IsChrome() const { |
539 return type_ == AndroidDeviceManager::BrowserInfo::kTypeChrome; | 543 return type_ == AndroidDeviceManager::BrowserInfo::kTypeChrome; |
540 } | 544 } |
541 | 545 |
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
894 bool enabled; | 898 bool enabled; |
895 if (pref_value->GetAsBoolean(&enabled) && enabled) { | 899 if (pref_value->GetAsBoolean(&enabled) && enabled) { |
896 device_providers.push_back(new UsbDeviceProvider(profile_)); | 900 device_providers.push_back(new UsbDeviceProvider(profile_)); |
897 } | 901 } |
898 device_manager_->SetDeviceProviders(device_providers); | 902 device_manager_->SetDeviceProviders(device_providers); |
899 if (!device_list_listeners_.empty()) { | 903 if (!device_list_listeners_.empty()) { |
900 StopDeviceListPolling(); | 904 StopDeviceListPolling(); |
901 StartDeviceListPolling(); | 905 StartDeviceListPolling(); |
902 } | 906 } |
903 } | 907 } |
OLD | NEW |