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

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

Issue 2253683002: [DevTools] Introduce a target discovery preference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments were addressed. Created 4 years, 4 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 <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 : profile_(profile), 721 : profile_(profile),
722 device_manager_(AndroidDeviceManager::Create()), 722 device_manager_(AndroidDeviceManager::Create()),
723 task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)), 723 task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)),
724 port_forwarding_controller_(new PortForwardingController(profile, this)), 724 port_forwarding_controller_(new PortForwardingController(profile, this)),
725 weak_factory_(this) { 725 weak_factory_(this) {
726 DCHECK_CURRENTLY_ON(BrowserThread::UI); 726 DCHECK_CURRENTLY_ON(BrowserThread::UI);
727 pref_change_registrar_.Init(profile_->GetPrefs()); 727 pref_change_registrar_.Init(profile_->GetPrefs());
728 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled, 728 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled,
729 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, 729 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders,
730 base::Unretained(this))); 730 base::Unretained(this)));
731 pref_change_registrar_.Add(prefs::kDevToolsTargetDiscoveryConfig,
732 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders,
733 base::Unretained(this)));
731 CreateDeviceProviders(); 734 CreateDeviceProviders();
732 } 735 }
733 736
734 void DevToolsAndroidBridge::AddDeviceListListener( 737 void DevToolsAndroidBridge::AddDeviceListListener(
735 DeviceListListener* listener) { 738 DeviceListListener* listener) {
736 DCHECK_CURRENTLY_ON(BrowserThread::UI); 739 DCHECK_CURRENTLY_ON(BrowserThread::UI);
737 bool polling_was_off = !NeedsDeviceListPolling(); 740 bool polling_was_off = !NeedsDeviceListPolling();
738 device_list_listeners_.push_back(listener); 741 device_list_listeners_.push_back(listener);
739 if (polling_was_off) 742 if (polling_was_off)
740 StartDeviceListPolling(); 743 StartDeviceListPolling();
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 899
897 // static 900 // static
898 void DevToolsAndroidBridge::ScheduleTaskDefault(const base::Closure& task) { 901 void DevToolsAndroidBridge::ScheduleTaskDefault(const base::Closure& task) {
899 BrowserThread::PostDelayedTask( 902 BrowserThread::PostDelayedTask(
900 BrowserThread::UI, 903 BrowserThread::UI,
901 FROM_HERE, 904 FROM_HERE,
902 task, 905 task,
903 base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs)); 906 base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs));
904 } 907 }
905 908
906 static scoped_refptr<TCPDeviceProvider> CreateTCPDeviceProvider() { 909 static std::set<net::HostPortPair> ParseTargetDiscoveryPreferenceValue(
910 const base::ListValue* preferenceValue) {
911 std::set<net::HostPortPair> targets;
912 if (!preferenceValue || preferenceValue->empty())
913 return targets;
914 std::string address;
915 for (size_t i = 0; i < preferenceValue->GetSize(); i++) {
916 if (!preferenceValue->GetString(i, &address))
917 continue;
918 net::HostPortPair target = net::HostPortPair::FromString(address);
919 if (target.IsEmpty()) {
920 LOG(WARNING) << "Invalid target: " << address;
921 continue;
922 }
923 targets.insert(target);
924 }
925 return targets;
926 }
927
928 static scoped_refptr<TCPDeviceProvider> CreateTCPDeviceProvider(
929 const base::ListValue* targetDiscoveryConfig) {
907 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 930 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
908 if (!command_line->HasSwitch(switches::kRemoteDebuggingTargets)) 931 std::set<net::HostPortPair> targets =
932 ParseTargetDiscoveryPreferenceValue(targetDiscoveryConfig);
933 if (targets.empty() &&
934 !command_line->HasSwitch(switches::kRemoteDebuggingTargets))
909 return nullptr; 935 return nullptr;
910 std::string value = 936 std::string value =
911 command_line->GetSwitchValueASCII(switches::kRemoteDebuggingTargets); 937 command_line->GetSwitchValueASCII(switches::kRemoteDebuggingTargets);
912 std::vector<std::string> addresses = base::SplitString( 938 std::vector<std::string> addresses = base::SplitString(
913 value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); 939 value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
914 std::set<net::HostPortPair> targets;
915 for (const std::string& address : addresses) { 940 for (const std::string& address : addresses) {
916 net::HostPortPair target = net::HostPortPair::FromString(address); 941 net::HostPortPair target = net::HostPortPair::FromString(address);
917 if (target.IsEmpty()) { 942 if (target.IsEmpty()) {
918 LOG(WARNING) << "Invalid target: " << address; 943 LOG(WARNING) << "Invalid target: " << address;
919 continue; 944 continue;
920 } 945 }
921 targets.insert(target); 946 targets.insert(target);
922 } 947 }
923 if (targets.empty()) 948 if (targets.empty())
924 return nullptr; 949 return nullptr;
925 return new TCPDeviceProvider(targets); 950 return new TCPDeviceProvider(targets);
926 } 951 }
927 952
928 void DevToolsAndroidBridge::CreateDeviceProviders() { 953 void DevToolsAndroidBridge::CreateDeviceProviders() {
929 AndroidDeviceManager::DeviceProviders device_providers; 954 AndroidDeviceManager::DeviceProviders device_providers;
955 PrefService* service = profile_->GetPrefs();
956 const base::ListValue* targets =
957 service->GetList(prefs::kDevToolsTargetDiscoveryConfig);
958 scoped_refptr<TCPDeviceProvider> provider = CreateTCPDeviceProvider(targets);
959 if (tcp_provider_callback_)
960 tcp_provider_callback_.Run(provider);
930 961
931 if (scoped_refptr<TCPDeviceProvider> provider = CreateTCPDeviceProvider()) 962 if (provider)
932 device_providers.push_back(provider); 963 device_providers.push_back(provider);
933 964
934 #if defined(ENABLE_SERVICE_DISCOVERY) 965 #if defined(ENABLE_SERVICE_DISCOVERY)
935 device_providers.push_back(new CastDeviceProvider()); 966 device_providers.push_back(new CastDeviceProvider());
936 #endif 967 #endif
937 968
938 device_providers.push_back(new AdbDeviceProvider()); 969 device_providers.push_back(new AdbDeviceProvider());
939 970
940 PrefService* service = profile_->GetPrefs();
941 const PrefService::Preference* pref = 971 const PrefService::Preference* pref =
942 service->FindPreference(prefs::kDevToolsDiscoverUsbDevicesEnabled); 972 service->FindPreference(prefs::kDevToolsDiscoverUsbDevicesEnabled);
943 const base::Value* pref_value = pref->GetValue(); 973 const base::Value* pref_value = pref->GetValue();
944 974
945 bool enabled; 975 bool enabled;
946 if (pref_value->GetAsBoolean(&enabled) && enabled) { 976 if (pref_value->GetAsBoolean(&enabled) && enabled) {
947 device_providers.push_back(new UsbDeviceProvider(profile_)); 977 device_providers.push_back(new UsbDeviceProvider(profile_));
948 } 978 }
949 979
950 device_manager_->SetDeviceProviders(device_providers); 980 device_manager_->SetDeviceProviders(device_providers);
951 if (NeedsDeviceListPolling()) { 981 if (NeedsDeviceListPolling()) {
952 StopDeviceListPolling(); 982 StopDeviceListPolling();
953 StartDeviceListPolling(); 983 StartDeviceListPolling();
954 } 984 }
955 } 985 }
986
987 void DevToolsAndroidBridge::set_tcp_provider_callback_for_test(
988 TCPProviderCallback callback) {
989 tcp_provider_callback_ = callback;
990 CreateDeviceProviders();
991 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698