Chromium Code Reviews| 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..3caf4bd27765a05d625fb54fef701b45a0f6e331 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 { |
| @@ -117,6 +128,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("GET /json/version HTTP/1.1\r\n\r\n", |
|
Vladislav Kaznacheev
2014/05/19 10:32:11
Heads up: you will need to rebase because https://
vkuzkokov
2014/05/20 12:34:29
Done.
|
| + base::Bind(&ResponseReceived)); |
| + } |
| + |
| + 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_; |
| @@ -129,3 +163,15 @@ IN_PROC_BROWSER_TEST_F(AdbClientSocketTest, TestAdbClientSocket) { |
| 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(); |
| + content::RunMessageLoop(); |
|
Vladislav Kaznacheev
2014/05/19 10:32:11
We have discussed this but I forgot to write this
vkuzkokov
2014/05/20 12:34:29
Done.
|
| + CheckConnection(); |
| + content::RunMessageLoop(); |
| + CheckCleanup(); |
| + StopMockAdbServer(); |
| +} |