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

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

Issue 762903004: Enabling WebRTCDeviceProvider under enable-devtools-experiments flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new-web-client
Patch Set: New schema Created 6 years 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"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/command_line.h"
12 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
13 #include "base/json/json_reader.h" 14 #include "base/json/json_reader.h"
14 #include "base/lazy_instance.h" 15 #include "base/lazy_instance.h"
15 #include "base/memory/singleton.h" 16 #include "base/memory/singleton.h"
16 #include "base/message_loop/message_loop.h" 17 #include "base/message_loop/message_loop.h"
17 #include "base/prefs/pref_service.h" 18 #include "base/prefs/pref_service.h"
18 #include "base/strings/string_number_conversions.h" 19 #include "base/strings/string_number_conversions.h"
19 #include "base/strings/string_util.h" 20 #include "base/strings/string_util.h"
20 #include "base/strings/stringprintf.h" 21 #include "base/strings/stringprintf.h"
21 #include "base/strings/utf_string_conversions.h" 22 #include "base/strings/utf_string_conversions.h"
22 #include "base/threading/thread.h" 23 #include "base/threading/thread.h"
23 #include "base/values.h" 24 #include "base/values.h"
24 #include "chrome/browser/devtools/browser_list_tabcontents_provider.h" 25 #include "chrome/browser/devtools/browser_list_tabcontents_provider.h"
25 #include "chrome/browser/devtools/device/adb/adb_device_info_query.h" 26 #include "chrome/browser/devtools/device/adb/adb_device_info_query.h"
26 #include "chrome/browser/devtools/device/adb/adb_device_provider.h" 27 #include "chrome/browser/devtools/device/adb/adb_device_provider.h"
27 #include "chrome/browser/devtools/device/port_forwarding_controller.h" 28 #include "chrome/browser/devtools/device/port_forwarding_controller.h"
28 #include "chrome/browser/devtools/device/self_device_provider.h" 29 #include "chrome/browser/devtools/device/self_device_provider.h"
29 #include "chrome/browser/devtools/device/usb/usb_device_provider.h" 30 #include "chrome/browser/devtools/device/usb/usb_device_provider.h"
31 #include "chrome/browser/devtools/device/webrtc/webrtc_device_provider.h"
30 #include "chrome/browser/devtools/devtools_protocol.h" 32 #include "chrome/browser/devtools/devtools_protocol.h"
31 #include "chrome/browser/devtools/devtools_target_impl.h" 33 #include "chrome/browser/devtools/devtools_target_impl.h"
32 #include "chrome/browser/devtools/devtools_window.h" 34 #include "chrome/browser/devtools/devtools_window.h"
33 #include "chrome/browser/profiles/profile.h" 35 #include "chrome/browser/profiles/profile.h"
36 #include "chrome/browser/signin/profile_identity_provider.h"
37 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
38 #include "chrome/browser/signin/signin_manager_factory.h"
39 #include "chrome/common/chrome_switches.h"
34 #include "chrome/common/pref_names.h" 40 #include "chrome/common/pref_names.h"
35 #include "components/keyed_service/content/browser_context_dependency_manager.h" 41 #include "components/keyed_service/content/browser_context_dependency_manager.h"
42 #include "components/signin/core/browser/profile_oauth2_token_service.h"
43 #include "components/signin/core/browser/signin_manager.h"
36 #include "content/public/browser/devtools_agent_host.h" 44 #include "content/public/browser/devtools_agent_host.h"
37 #include "content/public/browser/devtools_external_agent_proxy.h" 45 #include "content/public/browser/devtools_external_agent_proxy.h"
38 #include "content/public/browser/devtools_external_agent_proxy_delegate.h" 46 #include "content/public/browser/devtools_external_agent_proxy_delegate.h"
39 #include "content/public/browser/user_metrics.h" 47 #include "content/public/browser/user_metrics.h"
40 #include "net/base/escape.h" 48 #include "net/base/escape.h"
41 #include "net/base/net_errors.h" 49 #include "net/base/net_errors.h"
42 50
43 using content::BrowserThread; 51 using content::BrowserThread;
44 52
45 namespace { 53 namespace {
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 // static 253 // static
246 DevToolsAndroidBridge* DevToolsAndroidBridge::Factory::GetForProfile( 254 DevToolsAndroidBridge* DevToolsAndroidBridge::Factory::GetForProfile(
247 Profile* profile) { 255 Profile* profile) {
248 return static_cast<DevToolsAndroidBridge*>(GetInstance()-> 256 return static_cast<DevToolsAndroidBridge*>(GetInstance()->
249 GetServiceForBrowserContext(profile, true)); 257 GetServiceForBrowserContext(profile, true));
250 } 258 }
251 259
252 DevToolsAndroidBridge::Factory::Factory() 260 DevToolsAndroidBridge::Factory::Factory()
253 : BrowserContextKeyedServiceFactory( 261 : BrowserContextKeyedServiceFactory(
254 "DevToolsAndroidBridge", 262 "DevToolsAndroidBridge",
255 BrowserContextDependencyManager::GetInstance()) {} 263 BrowserContextDependencyManager::GetInstance()) {
264 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
dgozman 2014/12/06 13:06:33 Can we guard this with experiment as well?
SeRya 2014/12/08 07:44:32 Done.
265 DependsOn(SigninManagerFactory::GetInstance());
266 }
256 267
257 DevToolsAndroidBridge::Factory::~Factory() {} 268 DevToolsAndroidBridge::Factory::~Factory() {}
258 269
259 KeyedService* DevToolsAndroidBridge::Factory::BuildServiceInstanceFor( 270 KeyedService* DevToolsAndroidBridge::Factory::BuildServiceInstanceFor(
260 content::BrowserContext* context) const { 271 content::BrowserContext* context) const {
261 return new DevToolsAndroidBridge(Profile::FromBrowserContext(context)); 272 Profile* profile = static_cast<Profile*>(context);
dgozman 2014/12/06 13:06:33 Profile::FromBrowserContext
SeRya 2014/12/08 07:44:32 Done.
273
274 ProfileOAuth2TokenService* token_service =
275 ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
276
277 SigninManagerBase* signin_manager =
278 SigninManagerFactory::GetForProfile(profile);
279
280 return new DevToolsAndroidBridge(
281 profile, signin_manager, token_service);
262 } 282 }
263 283
264 // AgentHostDelegate ---------------------------------------------------------- 284 // AgentHostDelegate ----------------------------------------------------------
265 285
266 class DevToolsAndroidBridge::AgentHostDelegate 286 class DevToolsAndroidBridge::AgentHostDelegate
267 : public content::DevToolsExternalAgentProxyDelegate, 287 : public content::DevToolsExternalAgentProxyDelegate,
268 public AndroidDeviceManager::AndroidWebSocket::Delegate { 288 public AndroidDeviceManager::AndroidWebSocket::Delegate {
269 public: 289 public:
270 static scoped_refptr<content::DevToolsAgentHost> GetOrCreateAgentHost( 290 static scoped_refptr<content::DevToolsAgentHost> GetOrCreateAgentHost(
271 DevToolsAndroidBridge* bridge, 291 DevToolsAndroidBridge* bridge,
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 ++it) { 775 ++it) {
756 browsers_.push_back(new RemoteBrowser(serial, *it)); 776 browsers_.push_back(new RemoteBrowser(serial, *it));
757 } 777 }
758 } 778 }
759 779
760 DevToolsAndroidBridge::RemoteDevice::~RemoteDevice() { 780 DevToolsAndroidBridge::RemoteDevice::~RemoteDevice() {
761 } 781 }
762 782
763 // DevToolsAndroidBridge ------------------------------------------------------ 783 // DevToolsAndroidBridge ------------------------------------------------------
764 784
765 DevToolsAndroidBridge::DevToolsAndroidBridge(Profile* profile) 785 DevToolsAndroidBridge::DevToolsAndroidBridge(
786 Profile* profile,
787 SigninManagerBase* signin_manager,
788 ProfileOAuth2TokenService* const token_service)
766 : profile_(profile), 789 : profile_(profile),
790 identity_provider_(new ProfileIdentityProvider(
791 signin_manager, token_service, NULL)),
767 device_manager_(AndroidDeviceManager::Create()), 792 device_manager_(AndroidDeviceManager::Create()),
768 task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)), 793 task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)),
769 port_forwarding_controller_(new PortForwardingController(profile, this)), 794 port_forwarding_controller_(new PortForwardingController(profile, this)),
770 weak_factory_(this) { 795 weak_factory_(this) {
771 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 796 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
772 pref_change_registrar_.Init(profile_->GetPrefs()); 797 pref_change_registrar_.Init(profile_->GetPrefs());
773 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled, 798 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled,
774 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, 799 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders,
775 base::Unretained(this))); 800 base::Unretained(this)));
776 CreateDeviceProviders(); 801 CreateDeviceProviders();
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
961 986
962 PrefService* service = profile_->GetPrefs(); 987 PrefService* service = profile_->GetPrefs();
963 const PrefService::Preference* pref = 988 const PrefService::Preference* pref =
964 service->FindPreference(prefs::kDevToolsDiscoverUsbDevicesEnabled); 989 service->FindPreference(prefs::kDevToolsDiscoverUsbDevicesEnabled);
965 const base::Value* pref_value = pref->GetValue(); 990 const base::Value* pref_value = pref->GetValue();
966 991
967 bool enabled; 992 bool enabled;
968 if (pref_value->GetAsBoolean(&enabled) && enabled) { 993 if (pref_value->GetAsBoolean(&enabled) && enabled) {
969 device_providers.push_back(new UsbDeviceProvider(profile_)); 994 device_providers.push_back(new UsbDeviceProvider(profile_));
970 } 995 }
996
997 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
998 switches::kEnableDevToolsExperiments)) {
999 device_providers.push_back(
1000 new WebRTCDeviceProvider(profile_, identity_provider_.get()));
1001 }
1002
971 device_manager_->SetDeviceProviders(device_providers); 1003 device_manager_->SetDeviceProviders(device_providers);
972 if (NeedsDeviceListPolling()) { 1004 if (NeedsDeviceListPolling()) {
973 StopDeviceListPolling(); 1005 StopDeviceListPolling();
974 StartDeviceListPolling(); 1006 StartDeviceListPolling();
975 } 1007 }
976 } 1008 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698