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(); |
+} |