| Index: chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc
|
| diff --git a/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc b/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc
|
| index 1a3fdef10ff6a214501df75c895fcab81b6417be..9932b4f92c0352f814ff6e258a1d702187478cb7 100644
|
| --- a/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc
|
| +++ b/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc
|
| @@ -10,6 +10,7 @@
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/test/test_utils.h"
|
| +#include "net/base/net_errors.h"
|
|
|
| using content::BrowserThread;
|
|
|
| @@ -23,6 +24,16 @@ FindBrowserByDisplayName(DevToolsAndroidBridge::RemoteBrowsers browsers,
|
| return NULL;
|
| }
|
|
|
| +static void ResponseReceived(int result, const std::string& response) {
|
| + ASSERT_EQ(net::OK, result);
|
| + base::MessageLoop::current()->QuitWhenIdle();
|
| +}
|
| +
|
| +static void ConnectedReceived(bool expected, bool received) {
|
| + ASSERT_EQ(expected, received);
|
| + base::MessageLoop::current()->QuitWhenIdle();
|
| +}
|
| +
|
| class AdbClientSocketTest : public InProcessBrowserTest,
|
| public DevToolsAndroidBridge::DeviceListListener {
|
|
|
| @@ -34,6 +45,7 @@ class AdbClientSocketTest : public InProcessBrowserTest,
|
| device_providers.push_back(new AdbDeviceProvider());
|
| android_bridge_->set_device_providers_for_test(device_providers);
|
| android_bridge_->AddDeviceListListener(this);
|
| + content::RunMessageLoop();
|
| }
|
|
|
| virtual void DeviceListChanged(
|
| @@ -117,6 +129,29 @@ class AdbClientSocketTest : public InProcessBrowserTest,
|
| STLDeleteElements(&webview_pages);
|
| }
|
|
|
| + void CheckConnection() {
|
| + ASSERT_EQ(2U, devices_.size());
|
| + scoped_refptr<DevToolsAndroidBridge::RemoteDevice> connected =
|
| + devices_[0]->is_connected() ? devices_[0] : devices_[1];
|
| + const DevToolsAndroidBridge::RemoteBrowsers& browsers =
|
| + connected->browsers();
|
| + scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> chrome =
|
| + FindBrowserByDisplayName(browsers, "Chrome");
|
| + ASSERT_TRUE(chrome);
|
| + chrome->SendJsonRequest("/json/version", base::Bind(&ResponseReceived));
|
| + content::RunMessageLoop();
|
| + }
|
| +
|
| + void CheckCleanup() {
|
| + android_bridge_->IsConnectedForTest("01498B321301A00A",
|
| + base::Bind(&ConnectedReceived, true));
|
| + content::RunMessageLoop();
|
| + devices_.clear();
|
| + android_bridge_->IsConnectedForTest("01498B321301A00A",
|
| + base::Bind(&ConnectedReceived, false));
|
| + content::RunMessageLoop();
|
| + }
|
| +
|
| private:
|
| scoped_refptr<DevToolsAndroidBridge> android_bridge_;
|
| DevToolsAndroidBridge::RemoteDevices devices_;
|
| @@ -125,7 +160,16 @@ class AdbClientSocketTest : public InProcessBrowserTest,
|
| IN_PROC_BROWSER_TEST_F(AdbClientSocketTest, TestAdbClientSocket) {
|
| StartMockAdbServer();
|
| StartTest();
|
| - content::RunMessageLoop();
|
| CheckDevices();
|
| StopMockAdbServer();
|
| }
|
| +
|
| +// DevToolsAndroidBridge used to free connected devices when there are no
|
| +// listeners. We test that it's no longer the case.
|
| +IN_PROC_BROWSER_TEST_F(AdbClientSocketTest, TestRemoteConnection) {
|
| + StartMockAdbServer();
|
| + StartTest();
|
| + CheckConnection();
|
| + CheckCleanup();
|
| + StopMockAdbServer();
|
| +}
|
|
|