diff options
-rw-r--r-- | chrome/browser/devtools/adb_client_socket_browsertest.cc | 6 | ||||
-rw-r--r-- | chrome/browser/devtools/adb_web_socket.h | 60 | ||||
-rw-r--r-- | chrome/browser/devtools/android_device.cc | 100 | ||||
-rw-r--r-- | chrome/browser/devtools/android_device.h | 140 | ||||
-rw-r--r-- | chrome/browser/devtools/devtools_adb_bridge.cc | 62 | ||||
-rw-r--r-- | chrome/browser/devtools/devtools_adb_bridge.h | 23 | ||||
-rw-r--r-- | chrome/browser/devtools/devtools_adb_bridge_browsertest.cc | 18 | ||||
-rw-r--r-- | chrome/browser/devtools/refcounted_adb_thread.cc | 52 | ||||
-rw-r--r-- | chrome/browser/devtools/refcounted_adb_thread.h | 28 | ||||
-rw-r--r-- | chrome/browser/ui/webui/inspect_ui_browsertest.cc | 6 | ||||
-rw-r--r-- | chrome/chrome.gyp | 2 |
11 files changed, 204 insertions, 293 deletions
diff --git a/chrome/browser/devtools/adb_client_socket_browsertest.cc b/chrome/browser/devtools/adb_client_socket_browsertest.cc index 4c1fb29..19e80e9 100644 --- a/chrome/browser/devtools/adb_client_socket_browsertest.cc +++ b/chrome/browser/devtools/adb_client_socket_browsertest.cc @@ -394,10 +394,10 @@ private: adb_bridge_ = DevToolsAdbBridge::Factory::GetForProfile( browser()->profile()); - DevToolsAdbBridge::DeviceProviders device_providers; - device_providers.push_back(AndroidDeviceProvider::GetAdbDeviceProvider()); + AndroidDeviceManager::DeviceProviders device_providers; + device_providers.push_back(AndroidDeviceManager::GetAdbDeviceProvider()); - adb_bridge_->set_device_providers(device_providers); + adb_bridge_->set_device_providers_for_test(device_providers); adb_bridge_->AddListener(this); } diff --git a/chrome/browser/devtools/adb_web_socket.h b/chrome/browser/devtools/adb_web_socket.h deleted file mode 100644 index deb44c0..0000000 --- a/chrome/browser/devtools/adb_web_socket.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2013 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. - -#ifndef CHROME_BROWSER_DEVTOOLS_ADB_WEB_SOCKET_H_ -#define CHROME_BROWSER_DEVTOOLS_ADB_WEB_SOCKET_H_ - -#include "chrome/browser/devtools/android_device.h" - -class AdbWebSocket : public base::RefCountedThreadSafe<AdbWebSocket> { - public: - class Delegate { - public: - virtual void OnSocketOpened() = 0; - virtual void OnFrameRead(const std::string& message) = 0; - virtual void OnSocketClosed(bool closed_by_device) = 0; - - protected: - virtual ~Delegate() {} - }; - - AdbWebSocket(scoped_refptr<AndroidDevice> device, - const std::string& socket_name, - const std::string& url, - base::MessageLoop* adb_message_loop, - Delegate* delegate); - - void Disconnect(); - - void SendFrame(const std::string& message); - - private: - friend class base::RefCountedThreadSafe<AdbWebSocket>; - - virtual ~AdbWebSocket(); - - void ConnectOnHandlerThread(); - void ConnectedOnHandlerThread(int result, net::StreamSocket* socket); - void StartListeningOnHandlerThread(); - void OnBytesRead(scoped_refptr<net::IOBuffer> response_buffer, int result); - void SendFrameOnHandlerThread(const std::string& message); - void SendPendingRequests(int result); - void DisconnectOnHandlerThread(bool closed_by_device); - - void OnSocketOpened(); - void OnFrameRead(const std::string& message); - void OnSocketClosed(bool closed_by_device); - - scoped_refptr<AndroidDevice> device_; - std::string socket_name_; - std::string url_; - base::MessageLoop* adb_message_loop_; - scoped_ptr<net::StreamSocket> socket_; - Delegate* delegate_; - std::string response_buffer_; - std::string request_buffer_; - DISALLOW_COPY_AND_ASSIGN(AdbWebSocket); -}; - -#endif // CHROME_BROWSER_DEVTOOLS_ADB_WEB_SOCKET_H_ diff --git a/chrome/browser/devtools/android_device.cc b/chrome/browser/devtools/android_device.cc index ca8a863..eff4235 100644 --- a/chrome/browser/devtools/android_device.cc +++ b/chrome/browser/devtools/android_device.cc @@ -40,7 +40,7 @@ const int kLocalDebuggingPort = 9222; // AdbDeviceImpl -------------------------------------------------------------- -class AdbDeviceImpl : public AndroidDevice { +class AdbDeviceImpl : public AndroidDeviceManager::Device { public: AdbDeviceImpl(const std::string& serial, bool is_connected); virtual void RunCommand(const std::string& command, @@ -52,7 +52,7 @@ class AdbDeviceImpl : public AndroidDevice { }; AdbDeviceImpl::AdbDeviceImpl(const std::string& serial, bool is_connected) - : AndroidDevice(serial, is_connected) { + : Device(serial, is_connected) { } void AdbDeviceImpl::RunCommand(const std::string& command, @@ -73,7 +73,7 @@ void AdbDeviceImpl::OpenSocket(const std::string& name, // UsbDeviceImpl -------------------------------------------------------------- -class UsbDeviceImpl : public AndroidDevice { +class UsbDeviceImpl : public AndroidDeviceManager::Device { public: explicit UsbDeviceImpl(AndroidUsbDevice* device); virtual void RunCommand(const std::string& command, @@ -99,7 +99,7 @@ class UsbDeviceImpl : public AndroidDevice { UsbDeviceImpl::UsbDeviceImpl(AndroidUsbDevice* device) - : AndroidDevice(device->serial(), device->is_connected()), + : Device(device->serial(), device->is_connected()), device_(device) { device_->InitOnCallerThread(); } @@ -168,7 +168,7 @@ void UsbDeviceImpl::OnRead(net::StreamSocket* socket, // AdbDeviceProvider ------------------------------------------- -class AdbDeviceProvider : public AndroidDeviceProvider { +class AdbDeviceProvider : public AndroidDeviceManager::DeviceProvider { public: virtual void QueryDevices(const QueryDevicesCallback& callback) OVERRIDE; private: @@ -190,8 +190,7 @@ void AdbDeviceProvider::QueryDevices(const QueryDevicesCallback& callback) { void AdbDeviceProvider::ReceivedAdbDevices(const QueryDevicesCallback& callback, int result_code, const std::string& response) { - AndroidDevices result; - + AndroidDeviceManager::Devices result; std::vector<std::string> serials; Tokenize(response, "\n", &serials); for (size_t i = 0; i < serials.size(); ++i) { @@ -205,7 +204,7 @@ void AdbDeviceProvider::ReceivedAdbDevices(const QueryDevicesCallback& callback, // UsbDeviceProvider ------------------------------------------- -class UsbDeviceProvider : public AndroidDeviceProvider { +class UsbDeviceProvider : public AndroidDeviceManager::DeviceProvider { public: explicit UsbDeviceProvider(Profile* profile); @@ -232,7 +231,7 @@ void UsbDeviceProvider::QueryDevices(const QueryDevicesCallback& callback) { void UsbDeviceProvider::EnumeratedDevices(const QueryDevicesCallback& callback, const AndroidUsbDevices& devices) { - AndroidDevices result; + AndroidDeviceManager::Devices result; for (AndroidUsbDevices::const_iterator it = devices.begin(); it != devices.end(); ++it) result.push_back(new UsbDeviceImpl(*it)); @@ -241,35 +240,34 @@ void UsbDeviceProvider::EnumeratedDevices(const QueryDevicesCallback& callback, } // namespace -// AndroidDevice ------------------------------------------- - -AndroidDevice::AndroidDevice(const std::string& serial, bool is_connected) +AndroidDeviceManager::Device::Device(const std::string& serial, + bool is_connected) : serial_(serial), is_connected_(is_connected) { } -void AndroidDevice::HttpQuery( +void AndroidDeviceManager::Device::HttpQuery( const std::string& la_name, const std::string& request, const CommandCallback& callback) { DCHECK(CalledOnValidThread()); - OpenSocket(la_name, base::Bind(&AndroidDevice::OnHttpSocketOpened, this, - request, callback)); + OpenSocket(la_name, base::Bind( + &Device::OnHttpSocketOpened, this, request, callback)); } -void AndroidDevice::HttpUpgrade( +void AndroidDeviceManager::Device::HttpUpgrade( const std::string& la_name, const std::string& request, const SocketCallback& callback) { DCHECK(CalledOnValidThread()); - OpenSocket(la_name, base::Bind(&AndroidDevice::OnHttpSocketOpened2, this, - request, callback)); + OpenSocket(la_name, base::Bind( + &Device::OnHttpSocketOpened2, this, request, callback)); } -AndroidDevice::~AndroidDevice() { +AndroidDeviceManager::Device::~Device() { } -void AndroidDevice::OnHttpSocketOpened( +void AndroidDeviceManager::Device::OnHttpSocketOpened( const std::string& request, const CommandCallback& callback, int result, @@ -281,7 +279,7 @@ void AndroidDevice::OnHttpSocketOpened( AdbClientSocket::HttpQuery(socket, request, callback); } -void AndroidDevice::OnHttpSocketOpened2( +void AndroidDeviceManager::Device::OnHttpSocketOpened2( const std::string& request, const SocketCallback& callback, int result, @@ -292,29 +290,28 @@ void AndroidDevice::OnHttpSocketOpened2( } AdbClientSocket::HttpQuery(socket, request, callback); } -// AndroidDeviceProvider --------------------------------------------------- -AndroidDeviceProvider::AndroidDeviceProvider() { +AndroidDeviceManager::DeviceProvider::DeviceProvider() { } -AndroidDeviceProvider::~AndroidDeviceProvider() { +AndroidDeviceManager::DeviceProvider::~DeviceProvider() { } // static -scoped_refptr<AndroidDeviceProvider> - AndroidDeviceProvider::GetUsbDeviceProvider(Profile* profile) { +scoped_refptr<AndroidDeviceManager::DeviceProvider> + AndroidDeviceManager::GetUsbDeviceProvider(Profile* profile) { return new UsbDeviceProvider(profile); } // static -scoped_refptr<AndroidDeviceProvider> - AndroidDeviceProvider::GetAdbDeviceProvider() { +scoped_refptr<AndroidDeviceManager::DeviceProvider> + AndroidDeviceManager::GetAdbDeviceProvider() { return new AdbDeviceProvider(); } #if defined(DEBUG_DEVTOOLS) -class SelfAsDevice : public AndroidDevice { +class SelfAsDevice : public AndroidDeviceManager::Device { public: SelfAsDevice(); virtual void RunCommand(const std::string& command, @@ -333,7 +330,7 @@ class SelfAsDevice : public AndroidDevice { }; SelfAsDevice::SelfAsDevice() - : AndroidDevice("local", true) + : Device("local", true) {} void SelfAsDevice::RunCommandCallback(const CommandCallback& callback, @@ -386,7 +383,7 @@ void SelfAsDevice::OpenSocket(const std::string& socket_name, socket)); } -class SelfAsDeviceProvider : public AndroidDeviceProvider { +class SelfAsDeviceProvider : public AndroidDeviceManager::DeviceProvider { public: virtual void QueryDevices(const QueryDevicesCallback& callback) OVERRIDE; private: @@ -394,14 +391,14 @@ class SelfAsDeviceProvider : public AndroidDeviceProvider { }; void SelfAsDeviceProvider::QueryDevices(const QueryDevicesCallback& callback) { - AndroidDevices result; + AndroidDeviceManager::Devices result; result.push_back(new SelfAsDevice()); callback.Run(result); } // static -scoped_refptr<AndroidDeviceProvider> -AndroidDeviceProvider::GetSelfAsDeviceProvider() { +scoped_refptr<AndroidDeviceManager::DeviceProvider> +AndroidDeviceManager::GetSelfAsDeviceProvider() { return new SelfAsDeviceProvider(); } #endif @@ -416,7 +413,7 @@ void AndroidDeviceManager::QueryDevices( const QueryDevicesCallback& callback) { DCHECK(CalledOnValidThread()); stopped_ = false; - AndroidDeviceProvider::AndroidDevices empty; + Devices empty; QueryNextProvider(callback, providers, empty, empty); } @@ -428,16 +425,16 @@ void AndroidDeviceManager::Stop() { bool AndroidDeviceManager::IsConnected(const std::string& serial) { DCHECK(CalledOnValidThread()); - AndroidDevice* device = FindDevice(serial); + Device* device = FindDevice(serial); return device && device->is_connected(); } void AndroidDeviceManager::RunCommand( const std::string& serial, const std::string& command, - const AndroidDevice::CommandCallback& callback) { + const CommandCallback& callback) { DCHECK(CalledOnValidThread()); - AndroidDevice* device = FindDevice(serial); + Device* device = FindDevice(serial); if (device) device->RunCommand(command, callback); else @@ -447,9 +444,9 @@ void AndroidDeviceManager::RunCommand( void AndroidDeviceManager::OpenSocket( const std::string& serial, const std::string& socket_name, - const AndroidDevice::SocketCallback& callback) { + const SocketCallback& callback) { DCHECK(CalledOnValidThread()); - AndroidDevice* device = FindDevice(serial); + Device* device = FindDevice(serial); if (device) device->OpenSocket(socket_name, callback); else @@ -460,9 +457,9 @@ void AndroidDeviceManager::HttpQuery( const std::string& serial, const std::string& la_name, const std::string& request, - const AndroidDevice::CommandCallback& callback) { + const CommandCallback& callback) { DCHECK(CalledOnValidThread()); - AndroidDevice* device = FindDevice(serial); + Device* device = FindDevice(serial); if (device) device->HttpQuery(la_name, request, callback); else @@ -473,9 +470,9 @@ void AndroidDeviceManager::HttpUpgrade( const std::string& serial, const std::string& la_name, const std::string& request, - const AndroidDevice::SocketCallback& callback) { + const SocketCallback& callback) { DCHECK(CalledOnValidThread()); - AndroidDevice* device = FindDevice(serial); + Device* device = FindDevice(serial); if (device) device->HttpUpgrade(la_name, request, callback); else @@ -492,22 +489,22 @@ AndroidDeviceManager::~AndroidDeviceManager() { void AndroidDeviceManager::QueryNextProvider( const QueryDevicesCallback& callback, const DeviceProviders& providers, - const AndroidDeviceProvider::AndroidDevices& total_devices, - const AndroidDeviceProvider::AndroidDevices& new_devices) { + const Devices& total_devices, + const Devices& new_devices) { DCHECK(CalledOnValidThread()); if (stopped_) return; - AndroidDeviceProvider::AndroidDevices more_devices(total_devices); + Devices more_devices(total_devices); more_devices.insert( more_devices.end(), new_devices.begin(), new_devices.end()); if (providers.empty()) { std::vector<std::string> serials; devices_.clear(); - for (AndroidDeviceProvider::AndroidDevices::const_iterator it = - more_devices.begin(); it != more_devices.end(); ++it) { + for (Devices::const_iterator it = more_devices.begin(); + it != more_devices.end(); ++it) { devices_[(*it)->serial()] = *it; serials.push_back((*it)->serial()); } @@ -515,7 +512,7 @@ void AndroidDeviceManager::QueryNextProvider( return; } - scoped_refptr<AndroidDeviceProvider> current_provider = providers.back(); + scoped_refptr<DeviceProvider> current_provider = providers.back(); DeviceProviders less_providers = providers; less_providers.pop_back(); current_provider->QueryDevices( @@ -523,7 +520,8 @@ void AndroidDeviceManager::QueryNextProvider( this, callback, less_providers, more_devices)); } -AndroidDevice* AndroidDeviceManager::FindDevice(const std::string& serial) { +AndroidDeviceManager::Device* +AndroidDeviceManager::FindDevice(const std::string& serial) { DCHECK(CalledOnValidThread()); DeviceMap::const_iterator it = devices_.find(serial); if (it == devices_.end()) diff --git a/chrome/browser/devtools/android_device.h b/chrome/browser/devtools/android_device.h index e7a3c9e..6e642d44 100644 --- a/chrome/browser/devtools/android_device.h +++ b/chrome/browser/devtools/android_device.h @@ -15,93 +15,89 @@ #include "crypto/rsa_private_key.h" #include "net/socket/stream_socket.h" -class AndroidDeviceManager; - -class AndroidDevice : public base::RefCounted<AndroidDevice>, - public base::NonThreadSafe { - protected: - friend class AndroidDeviceManager; - +class AndroidDeviceManager : public base::RefCounted<AndroidDeviceManager>, + public base::NonThreadSafe { + public: typedef base::Callback<void(int, const std::string&)> CommandCallback; typedef base::Callback<void(int result, net::StreamSocket*)> SocketCallback; - AndroidDevice(const std::string& serial, bool is_connected); + class Device : public base::RefCounted<Device>, + public base::NonThreadSafe { + protected: + friend class AndroidDeviceManager; - virtual void RunCommand(const std::string& command, - const CommandCallback& callback) = 0; - virtual void OpenSocket(const std::string& socket_name, - const SocketCallback& callback) = 0; - virtual void HttpQuery(const std::string& la_name, - const std::string& request, - const CommandCallback& callback); - void HttpUpgrade(const std::string& la_name, - const std::string& request, - const SocketCallback& callback); + typedef AndroidDeviceManager::CommandCallback CommandCallback; + typedef AndroidDeviceManager::SocketCallback SocketCallback; - std::string serial() { return serial_; } - bool is_connected() { return is_connected_; } + Device(const std::string& serial, bool is_connected); - friend class base::RefCounted<AndroidDevice>; - virtual ~AndroidDevice(); + virtual void RunCommand(const std::string& command, + const CommandCallback& callback) = 0; + virtual void OpenSocket(const std::string& socket_name, + const SocketCallback& callback) = 0; + virtual void HttpQuery(const std::string& la_name, + const std::string& request, + const CommandCallback& callback); + void HttpUpgrade(const std::string& la_name, + const std::string& request, + const SocketCallback& callback); - private: - void OnHttpSocketOpened(const std::string& request, - const CommandCallback& callback, - int result, - net::StreamSocket* socket); - void OnHttpSocketOpened2(const std::string& request, - const SocketCallback& callback, - int result, - net::StreamSocket* socket); - - const std::string serial_; - const bool is_connected_; - - DISALLOW_COPY_AND_ASSIGN(AndroidDevice); -}; + std::string serial() { return serial_; } + bool is_connected() { return is_connected_; } + + friend class base::RefCounted<Device>; + virtual ~Device(); + + private: + void OnHttpSocketOpened(const std::string& request, + const CommandCallback& callback, + int result, + net::StreamSocket* socket); + void OnHttpSocketOpened2(const std::string& request, + const SocketCallback& callback, + int result, + net::StreamSocket* socket); + + const std::string serial_; + const bool is_connected_; + + DISALLOW_COPY_AND_ASSIGN(Device); + }; + typedef std::vector<scoped_refptr<Device> > Devices; -class AndroidDeviceProvider - : public base::RefCountedThreadSafe< - AndroidDeviceProvider, - content::BrowserThread::DeleteOnUIThread> { - protected: - friend class AndroidDeviceManager; + class DeviceProvider + : public base::RefCountedThreadSafe< + DeviceProvider, + content::BrowserThread::DeleteOnUIThread> { + protected: + friend class AndroidDeviceManager; - typedef std::vector<scoped_refptr<AndroidDevice> > AndroidDevices; - typedef base::Callback<void(const AndroidDevices&)> QueryDevicesCallback; + typedef base::Callback<void(const Devices&)> QueryDevicesCallback; - virtual void QueryDevices(const QueryDevicesCallback& callback) = 0; + virtual void QueryDevices(const QueryDevicesCallback& callback) = 0; + + protected: + friend struct + content::BrowserThread::DeleteOnThread<content::BrowserThread::UI>; + friend class base::DeleteHelper<DeviceProvider>; + + DeviceProvider(); + virtual ~DeviceProvider(); + }; public: - static scoped_refptr<AndroidDeviceProvider> GetAdbDeviceProvider(); - static scoped_refptr<AndroidDeviceProvider> - GetUsbDeviceProvider(Profile* profile); + static scoped_refptr<DeviceProvider> GetAdbDeviceProvider(); + static scoped_refptr<DeviceProvider> GetUsbDeviceProvider(Profile* profile); #if defined(DEBUG_DEVTOOLS) - static scoped_refptr<AndroidDeviceProvider> GetSelfAsDeviceProvider(); + static scoped_refptr<DeviceProvider> GetSelfAsDeviceProvider(); #endif // Implemented in browser_tests. - static scoped_refptr<AndroidDeviceProvider> GetMockDeviceProviderForTest(); - - protected: - friend struct - content::BrowserThread::DeleteOnThread<content::BrowserThread::UI>; - friend class base::DeleteHelper<AndroidDeviceProvider>; + static scoped_refptr<DeviceProvider> GetMockDeviceProviderForTest(); - AndroidDeviceProvider(); - virtual ~AndroidDeviceProvider(); -}; - -class AndroidDeviceManager : public base::RefCounted<AndroidDeviceManager>, - public base::NonThreadSafe { - public: static scoped_refptr<AndroidDeviceManager> Create(); - typedef base::Callback<void(int, const std::string&)> CommandCallback; - typedef base::Callback<void(int result, net::StreamSocket*)> SocketCallback; - - typedef std::vector<scoped_refptr<AndroidDeviceProvider> > DeviceProviders; - + typedef std::vector<scoped_refptr<DeviceProvider> > DeviceProviders; typedef base::Callback<void (const std::vector<std::string>&)> QueryDevicesCallback; @@ -140,12 +136,12 @@ class AndroidDeviceManager : public base::RefCounted<AndroidDeviceManager>, void QueryNextProvider( const QueryDevicesCallback& callback, const DeviceProviders& providers, - const AndroidDeviceProvider::AndroidDevices& total_devices, - const AndroidDeviceProvider::AndroidDevices& new_devices); + const Devices& total_devices, + const Devices& new_devices); - AndroidDevice* FindDevice(const std::string& serial); + Device* FindDevice(const std::string& serial); - typedef std::map<std::string, scoped_refptr<AndroidDevice> > DeviceMap; + typedef std::map<std::string, scoped_refptr<Device> > DeviceMap; DeviceMap devices_; bool stopped_; diff --git a/chrome/browser/devtools/devtools_adb_bridge.cc b/chrome/browser/devtools/devtools_adb_bridge.cc index e73fa78..d12a25c 100644 --- a/chrome/browser/devtools/devtools_adb_bridge.cc +++ b/chrome/browser/devtools/devtools_adb_bridge.cc @@ -237,7 +237,7 @@ class AdbPagesCommand : public base::RefCountedThreadSafe< scoped_refptr<DevToolsAdbBridge> adb_bridge, AndroidDeviceManager* device_manager, base::MessageLoop* device_message_loop, - const DevToolsAdbBridge::DeviceProviders& device_providers, + const AndroidDeviceManager::DeviceProviders& device_providers, const Callback& callback); private: @@ -295,7 +295,7 @@ AdbPagesCommand::AdbPagesCommand( scoped_refptr<DevToolsAdbBridge> adb_bridge, AndroidDeviceManager* device_manager, base::MessageLoop* device_message_loop, - const DevToolsAdbBridge::DeviceProviders& device_providers, + const AndroidDeviceManager::DeviceProviders& device_providers, const Callback& callback) : adb_bridge_(adb_bridge), device_manager_(device_manager), @@ -1063,6 +1063,52 @@ void DevToolsAdbBridge::RemoteDevice::OpenSocket( DevToolsAdbBridge::RemoteDevice::~RemoteDevice() { } +// DevToolsAdbBridge::RefCountedAdbThread ------------------------------------- + +const char kDevToolsAdbBridgeThreadName[] = "Chrome_DevToolsADBThread"; + +DevToolsAdbBridge::RefCountedAdbThread* +DevToolsAdbBridge::RefCountedAdbThread::instance_ = NULL; + +// static +scoped_refptr<DevToolsAdbBridge::RefCountedAdbThread> +DevToolsAdbBridge::RefCountedAdbThread::GetInstance() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + if (!instance_) + new RefCountedAdbThread(); + return instance_; +} + +DevToolsAdbBridge::RefCountedAdbThread::RefCountedAdbThread() { + instance_ = this; + thread_ = new base::Thread(kDevToolsAdbBridgeThreadName); + base::Thread::Options options; + options.message_loop_type = base::MessageLoop::TYPE_IO; + if (!thread_->StartWithOptions(options)) { + delete thread_; + thread_ = NULL; + } +} + +base::MessageLoop* DevToolsAdbBridge::RefCountedAdbThread::message_loop() { + return thread_ ? thread_->message_loop() : NULL; +} + +// static +void DevToolsAdbBridge::RefCountedAdbThread::StopThread(base::Thread* thread) { + thread->Stop(); +} + +DevToolsAdbBridge::RefCountedAdbThread::~RefCountedAdbThread() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + instance_ = NULL; + if (!thread_) + return; + // Shut down thread on FILE thread to join into IO. + BrowserThread::PostTask( + BrowserThread::FILE, FROM_HERE, + base::Bind(&RefCountedAdbThread::StopThread, thread_)); +} // DevToolsAdbBridge ---------------------------------------------------------- @@ -1159,11 +1205,11 @@ void DevToolsAdbBridge::ReceivedRemoteDevices(RemoteDevices* devices_ptr) { } void DevToolsAdbBridge::CreateDeviceProviders() { - DevToolsAdbBridge::DeviceProviders device_providers; + device_providers_.clear(); #if defined(DEBUG_DEVTOOLS) - device_providers.push_back(AndroidDeviceProvider::GetSelfAsDeviceProvider()); + device_providers_.push_back(AndroidDeviceManager::GetSelfAsDeviceProvider()); #endif - device_providers.push_back(AndroidDeviceProvider::GetAdbDeviceProvider()); + device_providers_.push_back(AndroidDeviceManager::GetAdbDeviceProvider()); PrefService* service = profile_->GetPrefs(); const PrefService::Preference* pref = @@ -1172,9 +1218,7 @@ void DevToolsAdbBridge::CreateDeviceProviders() { bool enabled; if (pref_value->GetAsBoolean(&enabled) && enabled) { - device_providers.push_back( - AndroidDeviceProvider::GetUsbDeviceProvider(profile_)); + device_providers_.push_back( + AndroidDeviceManager::GetUsbDeviceProvider(profile_)); } - - set_device_providers(device_providers); } diff --git a/chrome/browser/devtools/devtools_adb_bridge.h b/chrome/browser/devtools/devtools_adb_bridge.h index ba5c5aa..b2b83ca 100644 --- a/chrome/browser/devtools/devtools_adb_bridge.h +++ b/chrome/browser/devtools/devtools_adb_bridge.h @@ -13,7 +13,6 @@ #include "base/memory/scoped_ptr.h" #include "base/prefs/pref_change_registrar.h" #include "chrome/browser/devtools/android_device.h" -#include "chrome/browser/devtools/refcounted_adb_thread.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "components/keyed_service/core/keyed_service.h" #include "ui/gfx/size.h" @@ -48,7 +47,6 @@ class DevToolsAdbBridge public: typedef base::Callback<void(int result, const std::string& response)> Callback; - typedef std::vector<scoped_refptr<AndroidDeviceProvider> > DeviceProviders; class Wrapper : public KeyedService { public: @@ -212,7 +210,8 @@ class DevToolsAdbBridge void AddListener(Listener* listener); void RemoveListener(Listener* listener); - void set_device_providers(DeviceProviders device_providers) { + void set_device_providers_for_test( + const AndroidDeviceManager::DeviceProviders& device_providers) { device_providers_ = device_providers; } @@ -223,6 +222,22 @@ class DevToolsAdbBridge content::BrowserThread::UI>; friend class base::DeleteHelper<DevToolsAdbBridge>; + class RefCountedAdbThread + : public base::RefCountedThreadSafe<RefCountedAdbThread> { + public: + static scoped_refptr<RefCountedAdbThread> GetInstance(); + base::MessageLoop* message_loop(); + + private: + friend class base::RefCountedThreadSafe<RefCountedAdbThread>; + static RefCountedAdbThread* instance_; + static void StopThread(base::Thread* thread); + + RefCountedAdbThread(); + virtual ~RefCountedAdbThread(); + base::Thread* thread_; + }; + virtual ~DevToolsAdbBridge(); base::MessageLoop* device_message_loop() { @@ -243,7 +258,7 @@ class DevToolsAdbBridge scoped_refptr<AndroidDeviceManager> device_manager_; typedef std::vector<Listener*> Listeners; Listeners listeners_; - DeviceProviders device_providers_; + AndroidDeviceManager::DeviceProviders device_providers_; PrefChangeRegistrar pref_change_registrar_; DISALLOW_COPY_AND_ASSIGN(DevToolsAdbBridge); }; diff --git a/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc b/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc index 52d45d4..d5a8261 100644 --- a/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc +++ b/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc @@ -124,11 +124,11 @@ char kSampleWebViewPages[] = "[ {\n" "44681551-ADFD-2411-076B-3AB14C1C60E2\"\n" "}]"; -class MockDeviceImpl : public AndroidDevice { +class MockDeviceImpl : public AndroidDeviceManager::Device { public: MockDeviceImpl(const std::string& serial, int index, bool connected, const char* device_model) - : AndroidDevice(serial, connected), + : Device(serial, connected), device_model_(device_model) {} @@ -235,12 +235,12 @@ class MockDeviceImpl : public AndroidDevice { const char* device_model_; }; -class MockDeviceProvider : public AndroidDeviceProvider { +class MockDeviceProvider : public AndroidDeviceManager::DeviceProvider { virtual ~MockDeviceProvider() {} virtual void QueryDevices(const QueryDevicesCallback& callback) OVERRIDE { - AndroidDeviceProvider::AndroidDevices devices; + AndroidDeviceManager::Devices devices; devices.push_back(new MockDeviceImpl("FirstDevice", 0, true, "Nexus 6")); devices.push_back(new MockDeviceImpl("SecondDevice", 1, false, "Nexus 8")); callback.Run(devices); @@ -248,8 +248,8 @@ class MockDeviceProvider : public AndroidDeviceProvider { }; // static -scoped_refptr<AndroidDeviceProvider> -AndroidDeviceProvider::GetMockDeviceProviderForTest() { +scoped_refptr<AndroidDeviceManager::DeviceProvider> +AndroidDeviceManager::GetMockDeviceProviderForTest() { return new MockDeviceProvider(); } @@ -360,10 +360,10 @@ IN_PROC_BROWSER_TEST_F(DevToolsAdbBridgeTest, DiscoverAndroidBrowsers) { scoped_refptr<DevToolsAdbBridge> adb_bridge = DevToolsAdbBridge::Factory::GetForProfile(browser()->profile()); - DevToolsAdbBridge::DeviceProviders providers; - providers.push_back(AndroidDeviceProvider::GetMockDeviceProviderForTest()); + AndroidDeviceManager::DeviceProviders providers; + providers.push_back(AndroidDeviceManager::GetMockDeviceProviderForTest()); - adb_bridge->set_device_providers(providers); + adb_bridge->set_device_providers_for_test(providers); if (!adb_bridge) { FAIL() << "Failed to get DevToolsAdbBridge."; diff --git a/chrome/browser/devtools/refcounted_adb_thread.cc b/chrome/browser/devtools/refcounted_adb_thread.cc deleted file mode 100644 index 4a202ae..0000000 --- a/chrome/browser/devtools/refcounted_adb_thread.cc +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2013 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/refcounted_adb_thread.h" - -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; - -const char kDevToolsAdbBridgeThreadName[] = "Chrome_DevToolsADBThread"; - -RefCountedAdbThread* RefCountedAdbThread::instance_ = NULL; - -// static -scoped_refptr<RefCountedAdbThread> RefCountedAdbThread::GetInstance() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (!instance_) - new RefCountedAdbThread(); - return instance_; -} - -RefCountedAdbThread::RefCountedAdbThread() { - instance_ = this; - thread_ = new base::Thread(kDevToolsAdbBridgeThreadName); - base::Thread::Options options; - options.message_loop_type = base::MessageLoop::TYPE_IO; - if (!thread_->StartWithOptions(options)) { - delete thread_; - thread_ = NULL; - } -} - -base::MessageLoop* RefCountedAdbThread::message_loop() { - return thread_ ? thread_->message_loop() : NULL; -} - -// static -void RefCountedAdbThread::StopThread(base::Thread* thread) { - thread->Stop(); -} - -RefCountedAdbThread::~RefCountedAdbThread() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - instance_ = NULL; - if (!thread_) - return; - // Shut down thread on FILE thread to join into IO. - BrowserThread::PostTask( - BrowserThread::FILE, FROM_HERE, - base::Bind(&RefCountedAdbThread::StopThread, thread_)); -} diff --git a/chrome/browser/devtools/refcounted_adb_thread.h b/chrome/browser/devtools/refcounted_adb_thread.h deleted file mode 100644 index 619a2d4..0000000 --- a/chrome/browser/devtools/refcounted_adb_thread.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2013 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. - -#ifndef CHROME_BROWSER_DEVTOOLS_REFCOUNTED_ADB_THREAD_H_ -#define CHROME_BROWSER_DEVTOOLS_REFCOUNTED_ADB_THREAD_H_ - -#include "base/memory/ref_counted.h" -#include "base/message_loop/message_loop.h" -#include "base/threading/thread.h" - -class RefCountedAdbThread - : public base::RefCountedThreadSafe<RefCountedAdbThread> { - public: - static scoped_refptr<RefCountedAdbThread> GetInstance(); - base::MessageLoop* message_loop(); - - private: - friend class base::RefCountedThreadSafe<RefCountedAdbThread>; - static RefCountedAdbThread* instance_; - static void StopThread(base::Thread* thread); - - RefCountedAdbThread(); - virtual ~RefCountedAdbThread(); - base::Thread* thread_; -}; - -#endif // CHROME_BROWSER_DEVTOOLS_REFCOUNTED_ADB_THREAD_H_ diff --git a/chrome/browser/ui/webui/inspect_ui_browsertest.cc b/chrome/browser/ui/webui/inspect_ui_browsertest.cc index 5c3ceb0..eec7d2e 100644 --- a/chrome/browser/ui/webui/inspect_ui_browsertest.cc +++ b/chrome/browser/ui/webui/inspect_ui_browsertest.cc @@ -70,9 +70,9 @@ IN_PROC_BROWSER_TEST_F(InspectUITest, SharedWorker) { IN_PROC_BROWSER_TEST_F(InspectUITest, AdbTargets) { scoped_refptr<DevToolsAdbBridge> adb_bridge = DevToolsAdbBridge::Factory::GetForProfile(browser()->profile()); - DevToolsAdbBridge::DeviceProviders providers; - providers.push_back(AndroidDeviceProvider::GetMockDeviceProviderForTest()); - adb_bridge->set_device_providers(providers); + AndroidDeviceManager::DeviceProviders providers; + providers.push_back(AndroidDeviceManager::GetMockDeviceProviderForTest()); + adb_bridge->set_device_providers_for_test(providers); ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL)); diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index fad56ee..f1f2524 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -186,8 +186,6 @@ 'browser/devtools/devtools_window.h', 'browser/devtools/port_forwarding_controller.cc', 'browser/devtools/port_forwarding_controller.h', - 'browser/devtools/refcounted_adb_thread.cc', - 'browser/devtools/refcounted_adb_thread.h', 'browser/devtools/remote_debugging_server.cc', 'browser/devtools/remote_debugging_server.h', ], |