Chromium Code Reviews| Index: chrome/browser/devtools/device/devtools_android_bridge.cc |
| diff --git a/chrome/browser/devtools/device/devtools_android_bridge.cc b/chrome/browser/devtools/device/devtools_android_bridge.cc |
| index 2544b1ac6014ffeda8735246c3d9245855740077..6b829afcf2203cfcc9186d4630313646268311bb 100644 |
| --- a/chrome/browser/devtools/device/devtools_android_bridge.cc |
| +++ b/chrome/browser/devtools/device/devtools_android_bridge.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/base64.h" |
| #include "base/bind.h" |
| +#include "base/command_line.h" |
| #include "base/compiler_specific.h" |
| #include "base/json/json_reader.h" |
| #include "base/lazy_instance.h" |
| @@ -27,12 +28,19 @@ |
| #include "chrome/browser/devtools/device/port_forwarding_controller.h" |
| #include "chrome/browser/devtools/device/self_device_provider.h" |
| #include "chrome/browser/devtools/device/usb/usb_device_provider.h" |
| +#include "chrome/browser/devtools/device/webrtc/webrtc_device_provider.h" |
| #include "chrome/browser/devtools/devtools_protocol.h" |
| #include "chrome/browser/devtools/devtools_target_impl.h" |
| #include "chrome/browser/devtools/devtools_window.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/signin/profile_identity_provider.h" |
| +#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
| +#include "chrome/browser/signin/signin_manager_factory.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/pref_names.h" |
| #include "components/keyed_service/content/browser_context_dependency_manager.h" |
| +#include "components/signin/core/browser/profile_oauth2_token_service.h" |
| +#include "components/signin/core/browser/signin_manager.h" |
| #include "content/public/browser/devtools_agent_host.h" |
| #include "content/public/browser/devtools_external_agent_proxy.h" |
| #include "content/public/browser/devtools_external_agent_proxy_delegate.h" |
| @@ -252,13 +260,25 @@ DevToolsAndroidBridge* DevToolsAndroidBridge::Factory::GetForProfile( |
| DevToolsAndroidBridge::Factory::Factory() |
| : BrowserContextKeyedServiceFactory( |
| "DevToolsAndroidBridge", |
| - BrowserContextDependencyManager::GetInstance()) {} |
| + BrowserContextDependencyManager::GetInstance()) { |
| + 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.
|
| + DependsOn(SigninManagerFactory::GetInstance()); |
| +} |
| DevToolsAndroidBridge::Factory::~Factory() {} |
| KeyedService* DevToolsAndroidBridge::Factory::BuildServiceInstanceFor( |
| content::BrowserContext* context) const { |
| - return new DevToolsAndroidBridge(Profile::FromBrowserContext(context)); |
| + Profile* profile = static_cast<Profile*>(context); |
|
dgozman
2014/12/06 13:06:33
Profile::FromBrowserContext
SeRya
2014/12/08 07:44:32
Done.
|
| + |
| + ProfileOAuth2TokenService* token_service = |
| + ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
| + |
| + SigninManagerBase* signin_manager = |
| + SigninManagerFactory::GetForProfile(profile); |
| + |
| + return new DevToolsAndroidBridge( |
| + profile, signin_manager, token_service); |
| } |
| // AgentHostDelegate ---------------------------------------------------------- |
| @@ -762,8 +782,13 @@ DevToolsAndroidBridge::RemoteDevice::~RemoteDevice() { |
| // DevToolsAndroidBridge ------------------------------------------------------ |
| -DevToolsAndroidBridge::DevToolsAndroidBridge(Profile* profile) |
| +DevToolsAndroidBridge::DevToolsAndroidBridge( |
| + Profile* profile, |
| + SigninManagerBase* signin_manager, |
| + ProfileOAuth2TokenService* const token_service) |
| : profile_(profile), |
| + identity_provider_(new ProfileIdentityProvider( |
| + signin_manager, token_service, NULL)), |
| device_manager_(AndroidDeviceManager::Create()), |
| task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)), |
| port_forwarding_controller_(new PortForwardingController(profile, this)), |
| @@ -968,6 +993,13 @@ void DevToolsAndroidBridge::CreateDeviceProviders() { |
| if (pref_value->GetAsBoolean(&enabled) && enabled) { |
| device_providers.push_back(new UsbDeviceProvider(profile_)); |
| } |
| + |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableDevToolsExperiments)) { |
| + device_providers.push_back( |
| + new WebRTCDeviceProvider(profile_, identity_provider_.get())); |
| + } |
| + |
| device_manager_->SetDeviceProviders(device_providers); |
| if (NeedsDeviceListPolling()) { |
| StopDeviceListPolling(); |