OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/devtools/device/devtools_android_bridge.h" | 5 #include "chrome/browser/devtools/device/devtools_android_bridge.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
(...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1191 // Shut down thread on FILE thread to join into IO. | 1191 // Shut down thread on FILE thread to join into IO. |
1192 BrowserThread::PostTask( | 1192 BrowserThread::PostTask( |
1193 BrowserThread::FILE, FROM_HERE, | 1193 BrowserThread::FILE, FROM_HERE, |
1194 base::Bind(&HandlerThread::StopThread, thread_)); | 1194 base::Bind(&HandlerThread::StopThread, thread_)); |
1195 } | 1195 } |
1196 | 1196 |
1197 // DevToolsAndroidBridge ------------------------------------------------------ | 1197 // DevToolsAndroidBridge ------------------------------------------------------ |
1198 | 1198 |
1199 DevToolsAndroidBridge::DevToolsAndroidBridge(Profile* profile) | 1199 DevToolsAndroidBridge::DevToolsAndroidBridge(Profile* profile) |
1200 : profile_(profile), | 1200 : profile_(profile), |
1201 handler_thread_(HandlerThread::GetInstance()) { | 1201 handler_thread_(HandlerThread::GetInstance()), |
| 1202 polling_interval_for_test_(0) { |
1202 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1203 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
1203 pref_change_registrar_.Init(profile_->GetPrefs()); | 1204 pref_change_registrar_.Init(profile_->GetPrefs()); |
1204 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled, | 1205 pref_change_registrar_.Add(prefs::kDevToolsDiscoverUsbDevicesEnabled, |
1205 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, | 1206 base::Bind(&DevToolsAndroidBridge::CreateDeviceProviders, |
1206 base::Unretained(this))); | 1207 base::Unretained(this))); |
1207 CreateDeviceProviders(); | 1208 CreateDeviceProviders(); |
1208 base::PostTaskAndReplyWithResult( | 1209 base::PostTaskAndReplyWithResult( |
1209 device_message_loop()->message_loop_proxy(), | 1210 device_message_loop()->message_loop_proxy(), |
1210 FROM_HERE, | 1211 FROM_HERE, |
1211 base::Bind(&AndroidDeviceManager::Create), | 1212 base::Bind(&AndroidDeviceManager::Create), |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1298 return; | 1299 return; |
1299 | 1300 |
1300 DeviceListListeners copy(device_list_listeners_); | 1301 DeviceListListeners copy(device_list_listeners_); |
1301 for (DeviceListListeners::iterator it = copy.begin(); it != copy.end(); ++it) | 1302 for (DeviceListListeners::iterator it = copy.begin(); it != copy.end(); ++it) |
1302 (*it)->DeviceListChanged(*devices.get()); | 1303 (*it)->DeviceListChanged(*devices.get()); |
1303 | 1304 |
1304 BrowserThread::PostDelayedTask( | 1305 BrowserThread::PostDelayedTask( |
1305 BrowserThread::UI, | 1306 BrowserThread::UI, |
1306 FROM_HERE, | 1307 FROM_HERE, |
1307 base::Bind(&DevToolsAndroidBridge::RequestDeviceList, this), | 1308 base::Bind(&DevToolsAndroidBridge::RequestDeviceList, this), |
1308 base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs)); | 1309 base::TimeDelta::FromMilliseconds(polling_interval_for_test_ |
| 1310 ? polling_interval_for_test_ |
| 1311 : kAdbPollingIntervalMs)); |
1309 } | 1312 } |
1310 | 1313 |
1311 void DevToolsAndroidBridge::RequestDeviceCount() { | 1314 void DevToolsAndroidBridge::RequestDeviceCount() { |
1312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1315 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
1313 DCHECK(device_manager_); | 1316 DCHECK(device_manager_); |
1314 | 1317 |
1315 if (device_count_listeners_.empty()) | 1318 if (device_count_listeners_.empty()) |
1316 return; | 1319 return; |
1317 | 1320 |
1318 UsbDeviceProvider::CountDevices( | 1321 UsbDeviceProvider::CountDevices( |
1319 base::Bind(&DevToolsAndroidBridge::ReceivedDeviceCount, this)); | 1322 base::Bind(&DevToolsAndroidBridge::ReceivedDeviceCount, this)); |
1320 } | 1323 } |
1321 | 1324 |
1322 void DevToolsAndroidBridge::ReceivedDeviceCount(int count) { | 1325 void DevToolsAndroidBridge::ReceivedDeviceCount(int count) { |
1323 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1326 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
1324 | 1327 |
1325 if (device_count_listeners_.empty()) | 1328 if (device_count_listeners_.empty()) |
1326 return; | 1329 return; |
1327 | 1330 |
1328 DeviceCountListeners copy(device_count_listeners_); | 1331 DeviceCountListeners copy(device_count_listeners_); |
1329 for (DeviceCountListeners::iterator it = copy.begin(); it != copy.end(); ++it) | 1332 for (DeviceCountListeners::iterator it = copy.begin(); it != copy.end(); ++it) |
1330 (*it)->DeviceCountChanged(count); | 1333 (*it)->DeviceCountChanged(count); |
1331 | 1334 |
1332 BrowserThread::PostDelayedTask( | 1335 BrowserThread::PostDelayedTask( |
1333 BrowserThread::UI, | 1336 BrowserThread::UI, |
1334 FROM_HERE, | 1337 FROM_HERE, |
1335 base::Bind(&DevToolsAndroidBridge::RequestDeviceCount, this), | 1338 base::Bind(&DevToolsAndroidBridge::RequestDeviceCount, this), |
1336 base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs)); | 1339 base::TimeDelta::FromMilliseconds(polling_interval_for_test_ |
| 1340 ? polling_interval_for_test_ |
| 1341 : kAdbPollingIntervalMs)); |
1337 } | 1342 } |
1338 | 1343 |
1339 void DevToolsAndroidBridge::CreateDeviceProviders() { | 1344 void DevToolsAndroidBridge::CreateDeviceProviders() { |
1340 device_providers_.clear(); | 1345 device_providers_.clear(); |
1341 #if defined(DEBUG_DEVTOOLS) | 1346 #if defined(DEBUG_DEVTOOLS) |
1342 BrowserListTabContentsProvider::EnableTethering(); | 1347 BrowserListTabContentsProvider::EnableTethering(); |
1343 // We cannot rely on command line switch here as we might want to connect | 1348 // We cannot rely on command line switch here as we might want to connect |
1344 // to another instance of Chrome. Using hard-coded port number instead. | 1349 // to another instance of Chrome. Using hard-coded port number instead. |
1345 const int kDefaultDebuggingPort = 9222; | 1350 const int kDefaultDebuggingPort = 9222; |
1346 device_providers_.push_back(new SelfAsDeviceProvider(kDefaultDebuggingPort)); | 1351 device_providers_.push_back(new SelfAsDeviceProvider(kDefaultDebuggingPort)); |
1347 #endif | 1352 #endif |
1348 device_providers_.push_back(new AdbDeviceProvider()); | 1353 device_providers_.push_back(new AdbDeviceProvider()); |
1349 | 1354 |
1350 PrefService* service = profile_->GetPrefs(); | 1355 PrefService* service = profile_->GetPrefs(); |
1351 const PrefService::Preference* pref = | 1356 const PrefService::Preference* pref = |
1352 service->FindPreference(prefs::kDevToolsDiscoverUsbDevicesEnabled); | 1357 service->FindPreference(prefs::kDevToolsDiscoverUsbDevicesEnabled); |
1353 const base::Value* pref_value = pref->GetValue(); | 1358 const base::Value* pref_value = pref->GetValue(); |
1354 | 1359 |
1355 bool enabled; | 1360 bool enabled; |
1356 if (pref_value->GetAsBoolean(&enabled) && enabled) { | 1361 if (pref_value->GetAsBoolean(&enabled) && enabled) { |
1357 device_providers_.push_back(new UsbDeviceProvider(profile_)); | 1362 device_providers_.push_back(new UsbDeviceProvider(profile_)); |
1358 } | 1363 } |
1359 } | 1364 } |
OLD | NEW |