Skip to content

Commit

Permalink
Enabling WebRTCDeviceProvider under enable-devtools-experiments flag
Browse files Browse the repository at this point in the history
BUG=383418

Review URL: https://codereview.chromium.org/762903004

Cr-Commit-Position: refs/heads/master@{#307240}
  • Loading branch information
serya authored and Commit bot committed Dec 8, 2014
1 parent f70dbb2 commit 0a02e5a
Show file tree
Hide file tree
Showing 6 changed files with 283 additions and 40 deletions.
45 changes: 42 additions & 3 deletions chrome/browser/devtools/device/devtools_android_bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -27,12 +28,18 @@
#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_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"
Expand Down Expand Up @@ -60,6 +67,11 @@ const char kPageNavigateCommand[] = "Page.navigate";
const int kMinVersionNewWithURL = 32;
const int kNewPageNavigateDelayMs = 500;

bool IsWebRTCDeviceProviderEnabled() {
return base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableDevToolsExperiments);
}

} // namespace

// DiscoveryRequest -----------------------------------------------------
Expand Down Expand Up @@ -252,13 +264,29 @@ DevToolsAndroidBridge* DevToolsAndroidBridge::Factory::GetForProfile(
DevToolsAndroidBridge::Factory::Factory()
: BrowserContextKeyedServiceFactory(
"DevToolsAndroidBridge",
BrowserContextDependencyManager::GetInstance()) {}
BrowserContextDependencyManager::GetInstance()) {
if (IsWebRTCDeviceProviderEnabled()) {
DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
DependsOn(SigninManagerFactory::GetInstance());
}
}

DevToolsAndroidBridge::Factory::~Factory() {}

KeyedService* DevToolsAndroidBridge::Factory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
return new DevToolsAndroidBridge(Profile::FromBrowserContext(context));
Profile* profile = Profile::FromBrowserContext(context);

ProfileOAuth2TokenService* token_service = nullptr;
SigninManagerBase* signin_manager = nullptr;

if (IsWebRTCDeviceProviderEnabled()) {
token_service = ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
signin_manager = SigninManagerFactory::GetForProfile(profile);
}

return new DevToolsAndroidBridge(
profile, signin_manager, token_service);
}

// AgentHostDelegate ----------------------------------------------------------
Expand Down Expand Up @@ -762,8 +790,13 @@ DevToolsAndroidBridge::RemoteDevice::~RemoteDevice() {

// DevToolsAndroidBridge ------------------------------------------------------

DevToolsAndroidBridge::DevToolsAndroidBridge(Profile* profile)
DevToolsAndroidBridge::DevToolsAndroidBridge(
Profile* profile,
SigninManagerBase* signin_manager,
ProfileOAuth2TokenService* const token_service)
: profile_(profile),
signin_manager_(signin_manager),
token_service_(token_service),
device_manager_(AndroidDeviceManager::Create()),
task_scheduler_(base::Bind(&DevToolsAndroidBridge::ScheduleTaskDefault)),
port_forwarding_controller_(new PortForwardingController(profile, this)),
Expand Down Expand Up @@ -968,6 +1001,12 @@ void DevToolsAndroidBridge::CreateDeviceProviders() {
if (pref_value->GetAsBoolean(&enabled) && enabled) {
device_providers.push_back(new UsbDeviceProvider(profile_));
}

if (IsWebRTCDeviceProviderEnabled()) {
device_providers.push_back(
new WebRTCDeviceProvider(profile_, signin_manager_, token_service_));
}

device_manager_->SetDeviceProviders(device_providers);
if (NeedsDeviceListPolling()) {
StopDeviceListPolling();
Expand Down
12 changes: 10 additions & 2 deletions chrome/browser/devtools/device/devtools_android_bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ class BrowserContext;
class DevToolsTargetImpl;
class PortForwardingController;
class Profile;
class WebRTCDeviceProvider;
class SigninManagerBase;
class ProfileOAuth2TokenService;

class DevToolsAndroidBridge : public KeyedService {
public:
Expand Down Expand Up @@ -158,7 +161,9 @@ class DevToolsAndroidBridge : public KeyedService {
virtual ~DeviceListListener() {}
};

explicit DevToolsAndroidBridge(Profile* profile);
DevToolsAndroidBridge(Profile* profile,
SigninManagerBase* signin_manager,
ProfileOAuth2TokenService* token_service);
void AddDeviceListListener(DeviceListListener* listener);
void RemoveDeviceListListener(DeviceListListener* listener);

Expand Down Expand Up @@ -214,6 +219,7 @@ class DevToolsAndroidBridge : public KeyedService {

scoped_refptr<content::DevToolsAgentHost> GetBrowserAgentHost(
scoped_refptr<RemoteBrowser> browser);

private:
friend struct content::BrowserThread::DeleteOnThread<
content::BrowserThread::UI>;
Expand Down Expand Up @@ -282,7 +288,9 @@ class DevToolsAndroidBridge : public KeyedService {
return weak_factory_.GetWeakPtr();
}

Profile* profile_;
Profile* const profile_;
SigninManagerBase* const signin_manager_;
ProfileOAuth2TokenService* const token_service_;
const scoped_ptr<AndroidDeviceManager> device_manager_;

typedef std::map<std::string, scoped_refptr<AndroidDeviceManager::Device>>
Expand Down
Loading

0 comments on commit 0a02e5a

Please sign in to comment.