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

Unified Diff: chrome/browser/devtools/device/webrtc/devtools_bridge_client.cc

Issue 1560583002: DevTools: remove experimental webrtc-based remote debugging device provider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more tests/gyp removals Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/devtools/device/webrtc/devtools_bridge_client.cc
diff --git a/chrome/browser/devtools/device/webrtc/devtools_bridge_client.cc b/chrome/browser/devtools/device/webrtc/devtools_bridge_client.cc
deleted file mode 100644
index a1c718442f6d6c651cec1dba59b94a218ba955a0..0000000000000000000000000000000000000000
--- a/chrome/browser/devtools/device/webrtc/devtools_bridge_client.cc
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/devtools/device/webrtc/devtools_bridge_client.h"
-
-#include <stddef.h>
-
-#include "base/callback.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/local_discovery/gcd_api_flow.h"
-#include "chrome/common/url_constants.h"
-#include "components/signin/core/browser/profile_identity_provider.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_observer.h"
-#include "content/public/browser/web_contents_user_data.h"
-#include "ui/base/page_transition_types.h"
-
-using content::BrowserThread;
-using content::WebContents;
-
-namespace {
-
-const char kBackgroundWorkerURL[] =
- "chrome://webrtc-device-provider/background_worker.html";
-const char kSerial[] = "webrtc";
-const char kPseudoDeviceName[] = "Remote browsers";
-const char kDeviceIdPrefix[] = "device-id:";
-
-class BackgroundWorkerUserData
- : public content::WebContentsUserData<BackgroundWorkerUserData> {
- public:
- DevToolsBridgeClient* client() const { return client_; }
- void SetClient(DevToolsBridgeClient* client) { client_ = client; }
-
- private:
- friend WebContentsUserData<BackgroundWorkerUserData>;
-
- explicit BackgroundWorkerUserData(WebContents* contents) : client_(nullptr) {}
-
- DevToolsBridgeClient* client_;
-};
-
-} // namespace
-
-DEFINE_WEB_CONTENTS_USER_DATA_KEY(BackgroundWorkerUserData);
-
-// DevToolsBridgeClient --------------------------------------------------------
-
-// static
-base::WeakPtr<DevToolsBridgeClient> DevToolsBridgeClient::Create(
- Profile* profile,
- SigninManagerBase* signin_manager,
- ProfileOAuth2TokenService* token_service) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- auto instance =
- new DevToolsBridgeClient(profile, signin_manager, token_service);
- return instance->weak_factory_.GetWeakPtr();
-}
-
-DevToolsBridgeClient::DevToolsBridgeClient(
- Profile* profile,
- SigninManagerBase* signin_manager,
- ProfileOAuth2TokenService* token_service)
- : WebContentsObserver(),
- profile_(profile),
- identity_provider_(signin_manager, token_service, base::Closure()),
- worker_is_loaded_(false),
- weak_factory_(this) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
- identity_provider_.AddObserver(this);
- registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
- content::Source<Profile>(profile_));
-
- if (IsAuthenticated())
- CreateBackgroundWorker();
-}
-
-DevToolsBridgeClient::~DevToolsBridgeClient() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
- identity_provider_.RemoveObserver(this);
-}
-
-void DevToolsBridgeClient::DeleteSelf() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- delete this;
-}
-
-void DevToolsBridgeClient::UpdateBrowserList() {
- if (!IsAuthenticated() || browser_list_request_.get())
- return;
- browser_list_request_ = CreateGCDApiFlow();
- browser_list_request_->Start(
- make_scoped_ptr(new DevToolsBridgeInstancesRequest(this)));
-}
-
-void DevToolsBridgeClient::StartSessionIfNeeded(
- const std::string& socket_name) {
- if (!background_worker_.get() || !background_worker_->GetWebUI() ||
- !worker_is_loaded_) {
- return;
- }
-
- const size_t kPrefixLength = sizeof(kDeviceIdPrefix) - 1;
- if (socket_name.substr(0, kPrefixLength) != kDeviceIdPrefix)
- return;
-
- std::string browser_id = socket_name.substr(kPrefixLength);
- background_worker_->GetWebUI()->CallJavascriptFunction(
- "WebRTCDeviceProvider.instance.startSessionIfNeeded",
- base::StringValue(browser_id));
-}
-
-// static
-DevToolsBridgeClient* DevToolsBridgeClient::FromWebContents(
- WebContents* web_contents) {
- auto user_data = BackgroundWorkerUserData::FromWebContents(web_contents);
- return user_data ? user_data->client() : nullptr;
-}
-
-void DevToolsBridgeClient::RegisterMessageHandlers(content::WebUI* web_ui) {
- web_ui->RegisterMessageCallback(
- "sendCommand", base::Bind(&DevToolsBridgeClient::HandleSendCommand,
- base::Unretained(this)));
-}
-
-bool DevToolsBridgeClient::IsAuthenticated() {
- return !identity_provider_.GetActiveAccountId().empty();
-}
-
-void DevToolsBridgeClient::HandleSendCommand(const base::ListValue* args) {
- if (args->GetSize() != 1)
- return;
-
- const base::DictionaryValue* command_value;
- if (!args->GetDictionary(0, &command_value))
- return;
-
- send_command_request_ = CreateGCDApiFlow();
- send_command_request_->Start(
- make_scoped_ptr(new SendCommandRequest(command_value, this)));
-}
-
-scoped_ptr<local_discovery::GCDApiFlow>
-DevToolsBridgeClient::CreateGCDApiFlow() {
- DCHECK(IsAuthenticated());
- return local_discovery::GCDApiFlow::Create(
- profile_->GetRequestContext(), identity_provider_.GetTokenService(),
- identity_provider_.GetActiveAccountId());
-}
-
-// static
-DevToolsBridgeClient::SerialList DevToolsBridgeClient::GetDevices(
- base::WeakPtr<DevToolsBridgeClient> weak_ptr) {
- SerialList result;
- if (auto* ptr = weak_ptr.get()) {
- if (ptr->background_worker_.get())
- result.push_back(kSerial);
-
- ptr->UpdateBrowserList();
- }
- return result;
-}
-
-// static
-DevToolsBridgeClient::DeviceInfo DevToolsBridgeClient::GetDeviceInfo(
- base::WeakPtr<DevToolsBridgeClient> weak_self,
- const std::string& serial) {
- DeviceInfo result;
- if (auto* self = weak_self.get()) {
- result.connected = !!self->background_worker_.get();
- result.model = kPseudoDeviceName;
- result.browser_info = self->browsers_;
- }
- return result;
-}
-
-void DevToolsBridgeClient::CreateBackgroundWorker() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
- background_worker_.reset(
- WebContents::Create(WebContents::CreateParams(profile_)));
-
- BackgroundWorkerUserData::CreateForWebContents(background_worker_.get());
- BackgroundWorkerUserData::FromWebContents(background_worker_.get())
- ->SetClient(this);
- WebContentsObserver::Observe(background_worker_.get());
-
- GURL url(kBackgroundWorkerURL);
- DCHECK_EQ(chrome::kChromeUIWebRTCDeviceProviderHost, url.host());
-
- background_worker_->GetController().LoadURL(url, content::Referrer(),
- ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
- std::string());
-}
-
-void DevToolsBridgeClient::DocumentOnLoadCompletedInMainFrame() {
- worker_is_loaded_ = true;
-}
-
-void DevToolsBridgeClient::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK_EQ(chrome::NOTIFICATION_PROFILE_DESTROYED, type);
-
- delete this;
-}
-
-void DevToolsBridgeClient::OnActiveAccountLogin() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- CreateBackgroundWorker();
-}
-
-void DevToolsBridgeClient::OnActiveAccountLogout() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- background_worker_.reset();
- browser_list_request_.reset();
- send_command_request_.reset();
- BrowserInfoList().swap(browsers_);
- worker_is_loaded_ = false;
-}
-
-void DevToolsBridgeClient::OnCommandSucceeded(
- const base::DictionaryValue& response) {
- if (background_worker_.get() && background_worker_->GetWebUI()) {
- background_worker_->GetWebUI()->CallJavascriptFunction(
- "WebRTCDeviceProvider.instance.handleCommandSuccess", response);
- }
- send_command_request_.reset();
-}
-
-void DevToolsBridgeClient::OnCommandFailed() {
- if (background_worker_.get() && background_worker_->GetWebUI()) {
- background_worker_->GetWebUI()->CallJavascriptFunction(
- "WebRTCDeviceProvider.instance.handleCommandFailure");
- }
- send_command_request_.reset();
-}
-
-void DevToolsBridgeClient::OnDevToolsBridgeInstancesRequestSucceeded(
- const DevToolsBridgeInstancesRequest::InstanceList& instances) {
- BrowserInfoList browsers;
- for (const auto& instance : instances) {
- BrowserInfo browser;
- browser.type = BrowserInfo::kTypeChrome;
- browser.display_name = instance.display_name;
- browser.socket_name = kDeviceIdPrefix + instance.id;
- browsers.push_back(browser);
- }
- browsers_.swap(browsers);
-
- browser_list_request_.reset();
-
- OnBrowserListUpdatedForTests();
-}
-
-void DevToolsBridgeClient::OnDevToolsBridgeInstancesRequestFailed() {
- // We keep the list of remote browsers even if the request failed.
- browser_list_request_.reset();
-}

Powered by Google App Engine
This is Rietveld 408576698