diff options
author | kaznacheev@chromium.org <kaznacheev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-08 15:29:01 +0000 |
---|---|---|
committer | kaznacheev@chromium.org <kaznacheev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-08 15:29:01 +0000 |
commit | 90fc97f7858c8d33d91c844f096101c5299636f2 (patch) | |
tree | 8c4e3e594fab01cbe983036d7642a9dd919cffaa /chrome/browser/devtools/devtools_adb_bridge.cc | |
parent | 55f5e8492db931958b2cdc42eabb83a2a442e4ae (diff) | |
download | chromium_src-90fc97f7858c8d33d91c844f096101c5299636f2.zip chromium_src-90fc97f7858c8d33d91c844f096101c5299636f2.tar.gz chromium_src-90fc97f7858c8d33d91c844f096101c5299636f2.tar.bz2 |
DevTools: Refactor AndroidDeviceManager and DevToolsAdbBridge for better encapsulation
Made AndroidDevice and AndroidDeviceProvider inner classes of
AndroidDeviceManager (dropped Android from their names too). Made RefCountedAdbThread a private inner class of DevToolsAdbBridge.
TBR=jochen
BUG=None
Review URL: https://codereview.chromium.org/227133008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262416 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/devtools/devtools_adb_bridge.cc')
-rw-r--r-- | chrome/browser/devtools/devtools_adb_bridge.cc | 62 |
1 files changed, 53 insertions, 9 deletions
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); } |