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

Side by Side Diff: chrome/browser/devtools/device/devtools_android_bridge.cc

Issue 1030263002: favor DCHECK_CURRENTLY_ON for better logs in chrome/browser/devtools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 #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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 const std::string& response); 107 const std::string& response);
108 108
109 DeviceListCallback callback_; 109 DeviceListCallback callback_;
110 CompleteDevices complete_devices_; 110 CompleteDevices complete_devices_;
111 }; 111 };
112 112
113 DevToolsAndroidBridge::DiscoveryRequest::DiscoveryRequest( 113 DevToolsAndroidBridge::DiscoveryRequest::DiscoveryRequest(
114 AndroidDeviceManager* device_manager, 114 AndroidDeviceManager* device_manager,
115 const DeviceListCallback& callback) 115 const DeviceListCallback& callback)
116 : callback_(callback) { 116 : callback_(callback) {
117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 117 DCHECK_CURRENTLY_ON(BrowserThread::UI);
118 device_manager->QueryDevices( 118 device_manager->QueryDevices(
119 base::Bind(&DiscoveryRequest::ReceivedDevices, this)); 119 base::Bind(&DiscoveryRequest::ReceivedDevices, this));
120 } 120 }
121 121
122 DevToolsAndroidBridge::DiscoveryRequest::~DiscoveryRequest() { 122 DevToolsAndroidBridge::DiscoveryRequest::~DiscoveryRequest() {
123 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 123 DCHECK_CURRENTLY_ON(BrowserThread::UI);
124 callback_.Run(complete_devices_); 124 callback_.Run(complete_devices_);
125 } 125 }
126 126
127 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedDevices( 127 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedDevices(
128 const AndroidDeviceManager::Devices& devices) { 128 const AndroidDeviceManager::Devices& devices) {
129 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 129 DCHECK_CURRENTLY_ON(BrowserThread::UI);
130 for (const auto& device : devices) { 130 for (const auto& device : devices) {
131 device->QueryDeviceInfo( 131 device->QueryDeviceInfo(
132 base::Bind(&DiscoveryRequest::ReceivedDeviceInfo, this, device)); 132 base::Bind(&DiscoveryRequest::ReceivedDeviceInfo, this, device));
133 } 133 }
134 } 134 }
135 135
136 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedDeviceInfo( 136 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedDeviceInfo(
137 scoped_refptr<AndroidDeviceManager::Device> device, 137 scoped_refptr<AndroidDeviceManager::Device> device,
138 const AndroidDeviceManager::DeviceInfo& device_info) { 138 const AndroidDeviceManager::DeviceInfo& device_info) {
139 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 139 DCHECK_CURRENTLY_ON(BrowserThread::UI);
140 scoped_refptr<RemoteDevice> remote_device = 140 scoped_refptr<RemoteDevice> remote_device =
141 new RemoteDevice(device->serial(), device_info); 141 new RemoteDevice(device->serial(), device_info);
142 complete_devices_.push_back(std::make_pair(device, remote_device)); 142 complete_devices_.push_back(std::make_pair(device, remote_device));
143 for (RemoteBrowsers::iterator it = remote_device->browsers().begin(); 143 for (RemoteBrowsers::iterator it = remote_device->browsers().begin();
144 it != remote_device->browsers().end(); ++it) { 144 it != remote_device->browsers().end(); ++it) {
145 device->SendJsonRequest( 145 device->SendJsonRequest(
146 (*it)->socket(), 146 (*it)->socket(),
147 kVersionRequest, 147 kVersionRequest,
148 base::Bind(&DiscoveryRequest::ReceivedVersion, this, *it)); 148 base::Bind(&DiscoveryRequest::ReceivedVersion, this, *it));
149 device->SendJsonRequest( 149 device->SendJsonRequest(
150 (*it)->socket(), 150 (*it)->socket(),
151 kPageListRequest, 151 kPageListRequest,
152 base::Bind(&DiscoveryRequest::ReceivedPages, this, *it)); 152 base::Bind(&DiscoveryRequest::ReceivedPages, this, *it));
153 } 153 }
154 } 154 }
155 155
156 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedVersion( 156 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedVersion(
157 scoped_refptr<RemoteBrowser> browser, 157 scoped_refptr<RemoteBrowser> browser,
158 int result, 158 int result,
159 const std::string& response) { 159 const std::string& response) {
160 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 160 DCHECK_CURRENTLY_ON(BrowserThread::UI);
161 if (result < 0) 161 if (result < 0)
162 return; 162 return;
163 // Parse version, append to package name if available, 163 // Parse version, append to package name if available,
164 scoped_ptr<base::Value> value(base::JSONReader::Read(response)); 164 scoped_ptr<base::Value> value(base::JSONReader::Read(response));
165 base::DictionaryValue* dict; 165 base::DictionaryValue* dict;
166 if (value && value->GetAsDictionary(&dict)) { 166 if (value && value->GetAsDictionary(&dict)) {
167 std::string browser_name; 167 std::string browser_name;
168 if (dict->GetString("Browser", &browser_name)) { 168 if (dict->GetString("Browser", &browser_name)) {
169 std::vector<std::string> parts; 169 std::vector<std::string> parts;
170 Tokenize(browser_name, "/", &parts); 170 Tokenize(browser_name, "/", &parts);
171 if (parts.size() == 2) 171 if (parts.size() == 2)
172 browser->version_ = parts[1]; 172 browser->version_ = parts[1];
173 else 173 else
174 browser->version_ = browser_name; 174 browser->version_ = browser_name;
175 } 175 }
176 std::string package; 176 std::string package;
177 if (dict->GetString("Android-Package", &package)) { 177 if (dict->GetString("Android-Package", &package)) {
178 browser->display_name_ = 178 browser->display_name_ =
179 AndroidDeviceManager::GetBrowserName(browser->socket(), package); 179 AndroidDeviceManager::GetBrowserName(browser->socket(), package);
180 } 180 }
181 } 181 }
182 } 182 }
183 183
184 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedPages( 184 void DevToolsAndroidBridge::DiscoveryRequest::ReceivedPages(
185 scoped_refptr<RemoteBrowser> browser, 185 scoped_refptr<RemoteBrowser> browser,
186 int result, 186 int result,
187 const std::string& response) { 187 const std::string& response) {
188 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 188 DCHECK_CURRENTLY_ON(BrowserThread::UI);
189 if (result < 0) 189 if (result < 0)
190 return; 190 return;
191 scoped_ptr<base::Value> value(base::JSONReader::Read(response)); 191 scoped_ptr<base::Value> value(base::JSONReader::Read(response));
192 base::ListValue* list_value; 192 base::ListValue* list_value;
193 if (value && value->GetAsList(&list_value)) { 193 if (value && value->GetAsList(&list_value)) {
194 for (const auto& page_value : *list_value) { 194 for (const auto& page_value : *list_value) {
195 base::DictionaryValue* dict; 195 base::DictionaryValue* dict;
196 if (page_value->GetAsDictionary(&dict)) { 196 if (page_value->GetAsDictionary(&dict)) {
197 browser->pages_.push_back( 197 browser->pages_.push_back(
198 new RemotePage(browser->browser_id_, *dict, browser->IsWebView())); 198 new RemotePage(browser->browser_id_, *dict, browser->IsWebView()));
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 }; 341 };
342 342
343 // static 343 // static
344 scoped_refptr<content::DevToolsAgentHost> 344 scoped_refptr<content::DevToolsAgentHost>
345 DevToolsAndroidBridge::AgentHostDelegate::GetOrCreateAgentHost( 345 DevToolsAndroidBridge::AgentHostDelegate::GetOrCreateAgentHost(
346 DevToolsAndroidBridge* bridge, 346 DevToolsAndroidBridge* bridge,
347 const std::string& id, 347 const std::string& id,
348 const BrowserId& browser_id, 348 const BrowserId& browser_id,
349 const std::string& debug_url, 349 const std::string& debug_url,
350 bool is_web_view) { 350 bool is_web_view) {
351 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 351 DCHECK_CURRENTLY_ON(BrowserThread::UI);
352 AgentHostDelegates::iterator it = bridge->host_delegates_.find(id); 352 AgentHostDelegates::iterator it = bridge->host_delegates_.find(id);
353 if (it != bridge->host_delegates_.end()) 353 if (it != bridge->host_delegates_.end())
354 return it->second->agent_host_; 354 return it->second->agent_host_;
355 355
356 AgentHostDelegate* delegate = 356 AgentHostDelegate* delegate =
357 new AgentHostDelegate(bridge, id, browser_id, debug_url, is_web_view); 357 new AgentHostDelegate(bridge, id, browser_id, debug_url, is_web_view);
358 scoped_refptr<content::DevToolsAgentHost> result = 358 scoped_refptr<content::DevToolsAgentHost> result =
359 content::DevToolsAgentHost::Create(delegate); 359 content::DevToolsAgentHost::Create(delegate);
360 delegate->agent_host_ = result.get(); 360 delegate->agent_host_ = result.get();
361 return result; 361 return result;
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 } 655 }
656 device->SendJsonRequest(browser_id.second, request, callback); 656 device->SendJsonRequest(browser_id.second, request, callback);
657 } 657 }
658 658
659 void DevToolsAndroidBridge::SendProtocolCommand( 659 void DevToolsAndroidBridge::SendProtocolCommand(
660 const BrowserId& browser_id, 660 const BrowserId& browser_id,
661 const std::string& debug_url, 661 const std::string& debug_url,
662 const std::string& method, 662 const std::string& method,
663 scoped_ptr<base::DictionaryValue> params, 663 scoped_ptr<base::DictionaryValue> params,
664 const base::Closure callback) { 664 const base::Closure callback) {
665 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 665 DCHECK_CURRENTLY_ON(BrowserThread::UI);
666 if (debug_url.empty()) 666 if (debug_url.empty())
667 return; 667 return;
668 scoped_refptr<AndroidDeviceManager::Device> device( 668 scoped_refptr<AndroidDeviceManager::Device> device(
669 FindDevice(browser_id.first)); 669 FindDevice(browser_id.first));
670 if (!device.get()) { 670 if (!device.get()) {
671 callback.Run(); 671 callback.Run();
672 return; 672 return;
673 } 673 }
674 new ProtocolCommand( 674 new ProtocolCommand(
675 device, browser_id.second, debug_url, 675 device, browser_id.second, debug_url,
(...skipping 28 matching lines...) Expand all
704 const std::string& serial) { 704 const std::string& serial) {
705 DeviceMap::iterator it = device_map_.find(serial); 705 DeviceMap::iterator it = device_map_.find(serial);
706 return it == device_map_.end() ? nullptr : it->second; 706 return it == device_map_.end() ? nullptr : it->second;
707 } 707 }
708 708
709 void DevToolsAndroidBridge::RespondToOpenOnUIThread( 709 void DevToolsAndroidBridge::RespondToOpenOnUIThread(
710 scoped_refptr<RemoteBrowser> browser, 710 scoped_refptr<RemoteBrowser> browser,
711 const RemotePageCallback& callback, 711 const RemotePageCallback& callback,
712 int result, 712 int result,
713 const std::string& response) { 713 const std::string& response) {
714 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 714 DCHECK_CURRENTLY_ON(BrowserThread::UI);
715 if (result < 0) { 715 if (result < 0) {
716 callback.Run(NULL); 716 callback.Run(NULL);
717 return; 717 return;
718 } 718 }
719 scoped_ptr<base::Value> value(base::JSONReader::Read(response)); 719 scoped_ptr<base::Value> value(base::JSONReader::Read(response));
720 base::DictionaryValue* dict; 720 base::DictionaryValue* dict;
721 if (value && value->GetAsDictionary(&dict)) { 721 if (value && value->GetAsDictionary(&dict)) {
722 scoped_refptr<RemotePage> new_page( 722 scoped_refptr<RemotePage> new_page(
723 new RemotePage(browser->browser_id_, *dict, browser->IsWebView())); 723 new RemotePage(browser->browser_id_, *dict, browser->IsWebView()));
724 callback.Run(new_page); 724 callback.Run(new_page);
725 } 725 }
726 } 726 }
727 727
728 void DevToolsAndroidBridge::OpenRemotePage( 728 void DevToolsAndroidBridge::OpenRemotePage(
729 scoped_refptr<RemoteBrowser> browser, 729 scoped_refptr<RemoteBrowser> browser,
730 const std::string& input_url, 730 const std::string& input_url,
731 const DevToolsAndroidBridge::RemotePageCallback& callback) { 731 const DevToolsAndroidBridge::RemotePageCallback& callback) {
732 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 732 DCHECK_CURRENTLY_ON(BrowserThread::UI);
733 GURL gurl(input_url); 733 GURL gurl(input_url);
734 if (!gurl.is_valid()) { 734 if (!gurl.is_valid()) {
735 gurl = GURL("http://" + input_url); 735 gurl = GURL("http://" + input_url);
736 if (!gurl.is_valid()) 736 if (!gurl.is_valid())
737 return; 737 return;
738 } 738 }
739 std::string url = gurl.spec(); 739 std::string url = gurl.spec();
740 RemoteBrowser::ParsedVersion parsed_version = browser->GetParsedVersion(); 740 RemoteBrowser::ParsedVersion parsed_version = browser->GetParsedVersion();
741 741
742 if (browser->IsChrome() && 742 if (browser->IsChrome() &&
(...skipping 11 matching lines...) Expand all
754 AsWeakPtr(), browser, callback, url)); 754 AsWeakPtr(), browser, callback, url));
755 } 755 }
756 } 756 }
757 757
758 void DevToolsAndroidBridge::PageCreatedOnUIThread( 758 void DevToolsAndroidBridge::PageCreatedOnUIThread(
759 scoped_refptr<RemoteBrowser> browser, 759 scoped_refptr<RemoteBrowser> browser,
760 const RemotePageCallback& callback, 760 const RemotePageCallback& callback,
761 const std::string& url, 761 const std::string& url,
762 int result, 762 int result,
763 const std::string& response) { 763 const std::string& response) {
764 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 764 DCHECK_CURRENTLY_ON(BrowserThread::UI);
765 765
766 if (result < 0) 766 if (result < 0)
767 return; 767 return;
768 // Navigating too soon after the page creation breaks navigation history 768 // Navigating too soon after the page creation breaks navigation history
769 // (crbug.com/311014). This can be avoided by adding a moderate delay. 769 // (crbug.com/311014). This can be avoided by adding a moderate delay.
770 BrowserThread::PostDelayedTask( 770 BrowserThread::PostDelayedTask(
771 BrowserThread::UI, FROM_HERE, 771 BrowserThread::UI, FROM_HERE,
772 base::Bind(&DevToolsAndroidBridge::NavigatePageOnUIThread, 772 base::Bind(&DevToolsAndroidBridge::NavigatePageOnUIThread,
773 AsWeakPtr(), browser, callback, result, response, url), 773 AsWeakPtr(), browser, callback, result, response, url),
774 base::TimeDelta::FromMilliseconds(kNewPageNavigateDelayMs)); 774 base::TimeDelta::FromMilliseconds(kNewPageNavigateDelayMs));
775 } 775 }
776 776
777 void DevToolsAndroidBridge::NavigatePageOnUIThread( 777 void DevToolsAndroidBridge::NavigatePageOnUIThread(
778 scoped_refptr<RemoteBrowser> browser, 778 scoped_refptr<RemoteBrowser> browser,
779 const RemotePageCallback& callback, 779 const RemotePageCallback& callback,
780 int result, 780 int result,
781 const std::string& response, 781 const std::string& response,
782 const std::string& url) { 782 const std::string& url) {
783 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 783 DCHECK_CURRENTLY_ON(BrowserThread::UI);
784 scoped_ptr<base::Value> value(base::JSONReader::Read(response)); 784 scoped_ptr<base::Value> value(base::JSONReader::Read(response));
785 base::DictionaryValue* dict; 785 base::DictionaryValue* dict;
786 786
787 if (value && value->GetAsDictionary(&dict)) { 787 if (value && value->GetAsDictionary(&dict)) {
788 RemotePageTarget new_page(this, browser->browser_id_, *dict, 788 RemotePageTarget new_page(this, browser->browser_id_, *dict,
789 browser->IsWebView()); 789 browser->IsWebView());
790 new_page.Navigate(url, 790 new_page.Navigate(url,
791 base::Bind(&DevToolsAndroidBridge::RespondToOpenOnUIThread, 791 base::Bind(&DevToolsAndroidBridge::RespondToOpenOnUIThread,
792 AsWeakPtr(), browser, callback, result, response)); 792 AsWeakPtr(), browser, callback, result, response));
793 } 793 }
(...skipping 28 matching lines...) Expand all
822 Profile* profile, 822 Profile* profile,
823 SigninManagerBase* signin_manager, 823 SigninManagerBase* signin_manager,
824 ProfileOAuth2TokenService* const token_service) 824 ProfileOAuth2TokenService* const token_service)
825 : profile_(profile), 825 : profile_(profile),
826 signin_manager_(signin_manager), 826 signin_manager_(signin_manager),
827 token_service_(token_service), 827 token_service_(token_service),
828 device_manager_(AndroidDeviceManager::Create()), 828 device_manager_(AndroidDeviceManager::Create()),
829 task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)), 829 task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)),
830 port_forwarding_controller_(new PortForwardingController(profile, this)), 830 port_forwarding_controller_(new PortForwardingController(profile, this)),
831 weak_factory_(this) { 831 weak_factory_(this) {
832 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 832 DCHECK_CURRENTLY_ON(BrowserThread::UI);
833 pref_change_registrar_.Init(profile_->GetPrefs()); 833 pref_change_registrar_.Init(profile_->GetPrefs());
834 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled, 834 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled,
835 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, 835 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders,
836 base::Unretained(this))); 836 base::Unretained(this)));
837 CreateDeviceProviders(); 837 CreateDeviceProviders();
838 } 838 }
839 839
840 void DevToolsAndroidBridge::AddDeviceListListener( 840 void DevToolsAndroidBridge::AddDeviceListListener(
841 DeviceListListener* listener) { 841 DeviceListListener* listener) {
842 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 842 DCHECK_CURRENTLY_ON(BrowserThread::UI);
843 bool polling_was_off = !NeedsDeviceListPolling(); 843 bool polling_was_off = !NeedsDeviceListPolling();
844 device_list_listeners_.push_back(listener); 844 device_list_listeners_.push_back(listener);
845 if (polling_was_off) 845 if (polling_was_off)
846 StartDeviceListPolling(); 846 StartDeviceListPolling();
847 } 847 }
848 848
849 void DevToolsAndroidBridge::RemoveDeviceListListener( 849 void DevToolsAndroidBridge::RemoveDeviceListListener(
850 DeviceListListener* listener) { 850 DeviceListListener* listener) {
851 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 851 DCHECK_CURRENTLY_ON(BrowserThread::UI);
852 DeviceListListeners::iterator it = std::find( 852 DeviceListListeners::iterator it = std::find(
853 device_list_listeners_.begin(), device_list_listeners_.end(), listener); 853 device_list_listeners_.begin(), device_list_listeners_.end(), listener);
854 DCHECK(it != device_list_listeners_.end()); 854 DCHECK(it != device_list_listeners_.end());
855 device_list_listeners_.erase(it); 855 device_list_listeners_.erase(it);
856 if (!NeedsDeviceListPolling()) 856 if (!NeedsDeviceListPolling())
857 StopDeviceListPolling(); 857 StopDeviceListPolling();
858 } 858 }
859 859
860 void DevToolsAndroidBridge::AddDeviceCountListener( 860 void DevToolsAndroidBridge::AddDeviceCountListener(
861 DeviceCountListener* listener) { 861 DeviceCountListener* listener) {
862 device_count_listeners_.push_back(listener); 862 device_count_listeners_.push_back(listener);
863 if (device_count_listeners_.size() == 1) 863 if (device_count_listeners_.size() == 1)
864 StartDeviceCountPolling(); 864 StartDeviceCountPolling();
865 } 865 }
866 866
867 void DevToolsAndroidBridge::RemoveDeviceCountListener( 867 void DevToolsAndroidBridge::RemoveDeviceCountListener(
868 DeviceCountListener* listener) { 868 DeviceCountListener* listener) {
869 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 869 DCHECK_CURRENTLY_ON(BrowserThread::UI);
870 DeviceCountListeners::iterator it = std::find( 870 DeviceCountListeners::iterator it = std::find(
871 device_count_listeners_.begin(), device_count_listeners_.end(), listener); 871 device_count_listeners_.begin(), device_count_listeners_.end(), listener);
872 DCHECK(it != device_count_listeners_.end()); 872 DCHECK(it != device_count_listeners_.end());
873 device_count_listeners_.erase(it); 873 device_count_listeners_.erase(it);
874 if (device_count_listeners_.empty()) 874 if (device_count_listeners_.empty())
875 StopDeviceCountPolling(); 875 StopDeviceCountPolling();
876 } 876 }
877 877
878 void DevToolsAndroidBridge::AddPortForwardingListener( 878 void DevToolsAndroidBridge::AddPortForwardingListener(
879 PortForwardingListener* listener) { 879 PortForwardingListener* listener) {
880 bool polling_was_off = !NeedsDeviceListPolling(); 880 bool polling_was_off = !NeedsDeviceListPolling();
881 port_forwarding_listeners_.push_back(listener); 881 port_forwarding_listeners_.push_back(listener);
882 if (polling_was_off) 882 if (polling_was_off)
883 StartDeviceListPolling(); 883 StartDeviceListPolling();
884 } 884 }
885 885
886 void DevToolsAndroidBridge::RemovePortForwardingListener( 886 void DevToolsAndroidBridge::RemovePortForwardingListener(
887 PortForwardingListener* listener) { 887 PortForwardingListener* listener) {
888 PortForwardingListeners::iterator it = std::find( 888 PortForwardingListeners::iterator it = std::find(
889 port_forwarding_listeners_.begin(), 889 port_forwarding_listeners_.begin(),
890 port_forwarding_listeners_.end(), 890 port_forwarding_listeners_.end(),
891 listener); 891 listener);
892 DCHECK(it != port_forwarding_listeners_.end()); 892 DCHECK(it != port_forwarding_listeners_.end());
893 port_forwarding_listeners_.erase(it); 893 port_forwarding_listeners_.erase(it);
894 if (!NeedsDeviceListPolling()) 894 if (!NeedsDeviceListPolling())
895 StopDeviceListPolling(); 895 StopDeviceListPolling();
896 } 896 }
897 897
898 bool DevToolsAndroidBridge::HasDevToolsWindow(const std::string& agent_id) { 898 bool DevToolsAndroidBridge::HasDevToolsWindow(const std::string& agent_id) {
899 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 899 DCHECK_CURRENTLY_ON(BrowserThread::UI);
900 return host_delegates_.find(agent_id) != host_delegates_.end(); 900 return host_delegates_.find(agent_id) != host_delegates_.end();
901 } 901 }
902 902
903 DevToolsAndroidBridge::~DevToolsAndroidBridge() { 903 DevToolsAndroidBridge::~DevToolsAndroidBridge() {
904 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 904 DCHECK_CURRENTLY_ON(BrowserThread::UI);
905 DCHECK(device_list_listeners_.empty()); 905 DCHECK(device_list_listeners_.empty());
906 DCHECK(device_count_listeners_.empty()); 906 DCHECK(device_count_listeners_.empty());
907 DCHECK(port_forwarding_listeners_.empty()); 907 DCHECK(port_forwarding_listeners_.empty());
908 } 908 }
909 909
910 void DevToolsAndroidBridge::StartDeviceListPolling() { 910 void DevToolsAndroidBridge::StartDeviceListPolling() {
911 device_list_callback_.Reset( 911 device_list_callback_.Reset(
912 base::Bind(&DevToolsAndroidBridge::ReceivedDeviceList, AsWeakPtr())); 912 base::Bind(&DevToolsAndroidBridge::ReceivedDeviceList, AsWeakPtr()));
913 RequestDeviceList(device_list_callback_.callback()); 913 RequestDeviceList(device_list_callback_.callback());
914 } 914 }
915 915
916 void DevToolsAndroidBridge::StopDeviceListPolling() { 916 void DevToolsAndroidBridge::StopDeviceListPolling() {
917 device_list_callback_.Cancel(); 917 device_list_callback_.Cancel();
918 device_map_.clear(); 918 device_map_.clear();
919 } 919 }
920 920
921 bool DevToolsAndroidBridge::NeedsDeviceListPolling() { 921 bool DevToolsAndroidBridge::NeedsDeviceListPolling() {
922 return !device_list_listeners_.empty() || !port_forwarding_listeners_.empty(); 922 return !device_list_listeners_.empty() || !port_forwarding_listeners_.empty();
923 } 923 }
924 924
925 void DevToolsAndroidBridge::RequestDeviceList( 925 void DevToolsAndroidBridge::RequestDeviceList(
926 const DeviceListCallback& callback) { 926 const DeviceListCallback& callback) {
927 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 927 DCHECK_CURRENTLY_ON(BrowserThread::UI);
928 928
929 if (!NeedsDeviceListPolling() || 929 if (!NeedsDeviceListPolling() ||
930 !callback.Equals(device_list_callback_.callback())) 930 !callback.Equals(device_list_callback_.callback()))
931 return; 931 return;
932 932
933 new DiscoveryRequest(device_manager_.get(), callback); 933 new DiscoveryRequest(device_manager_.get(), callback);
934 } 934 }
935 935
936 void DevToolsAndroidBridge::ReceivedDeviceList( 936 void DevToolsAndroidBridge::ReceivedDeviceList(
937 const CompleteDevices& complete_devices) { 937 const CompleteDevices& complete_devices) {
938 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 938 DCHECK_CURRENTLY_ON(BrowserThread::UI);
939 939
940 device_map_.clear(); 940 device_map_.clear();
941 RemoteDevices remote_devices; 941 RemoteDevices remote_devices;
942 for (const auto& pair : complete_devices) { 942 for (const auto& pair : complete_devices) {
943 device_map_[pair.first->serial()] = pair.first; 943 device_map_[pair.first->serial()] = pair.first;
944 remote_devices.push_back(pair.second); 944 remote_devices.push_back(pair.second);
945 } 945 }
946 946
947 DeviceListListeners copy(device_list_listeners_); 947 DeviceListListeners copy(device_list_listeners_);
948 for (DeviceListListeners::iterator it = copy.begin(); it != copy.end(); ++it) 948 for (DeviceListListeners::iterator it = copy.begin(); it != copy.end(); ++it)
(...skipping 20 matching lines...) Expand all
969 base::Bind(&DevToolsAndroidBridge::ReceivedDeviceCount, AsWeakPtr())); 969 base::Bind(&DevToolsAndroidBridge::ReceivedDeviceCount, AsWeakPtr()));
970 RequestDeviceCount(device_count_callback_.callback()); 970 RequestDeviceCount(device_count_callback_.callback());
971 } 971 }
972 972
973 void DevToolsAndroidBridge::StopDeviceCountPolling() { 973 void DevToolsAndroidBridge::StopDeviceCountPolling() {
974 device_count_callback_.Cancel(); 974 device_count_callback_.Cancel();
975 } 975 }
976 976
977 void DevToolsAndroidBridge::RequestDeviceCount( 977 void DevToolsAndroidBridge::RequestDeviceCount(
978 const base::Callback<void(int)>& callback) { 978 const base::Callback<void(int)>& callback) {
979 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 979 DCHECK_CURRENTLY_ON(BrowserThread::UI);
980 980
981 if (device_count_listeners_.empty() || 981 if (device_count_listeners_.empty() ||
982 !callback.Equals(device_count_callback_.callback())) 982 !callback.Equals(device_count_callback_.callback()))
983 return; 983 return;
984 984
985 UsbDeviceProvider::CountDevices(callback); 985 UsbDeviceProvider::CountDevices(callback);
986 } 986 }
987 987
988 void DevToolsAndroidBridge::ReceivedDeviceCount(int count) { 988 void DevToolsAndroidBridge::ReceivedDeviceCount(int count) {
989 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 989 DCHECK_CURRENTLY_ON(BrowserThread::UI);
990 990
991 DeviceCountListeners copy(device_count_listeners_); 991 DeviceCountListeners copy(device_count_listeners_);
992 for (DeviceCountListeners::iterator it = copy.begin(); it != copy.end(); ++it) 992 for (DeviceCountListeners::iterator it = copy.begin(); it != copy.end(); ++it)
993 (*it)->DeviceCountChanged(count); 993 (*it)->DeviceCountChanged(count);
994 994
995 if (device_count_listeners_.empty()) 995 if (device_count_listeners_.empty())
996 return; 996 return;
997 997
998 task_scheduler_.Run( 998 task_scheduler_.Run(
999 base::Bind(&DevToolsAndroidBridge::RequestDeviceCount, 999 base::Bind(&DevToolsAndroidBridge::RequestDeviceCount,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 device_providers.push_back( 1034 device_providers.push_back(
1035 new WebRTCDeviceProvider(profile_, signin_manager_, token_service_)); 1035 new WebRTCDeviceProvider(profile_, signin_manager_, token_service_));
1036 } 1036 }
1037 1037
1038 device_manager_->SetDeviceProviders(device_providers); 1038 device_manager_->SetDeviceProviders(device_providers);
1039 if (NeedsDeviceListPolling()) { 1039 if (NeedsDeviceListPolling()) {
1040 StopDeviceListPolling(); 1040 StopDeviceListPolling();
1041 StartDeviceListPolling(); 1041 StartDeviceListPolling();
1042 } 1042 }
1043 } 1043 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/android_web_socket.cc ('k') | chrome/browser/devtools/device/port_forwarding_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698