summaryrefslogtreecommitdiffstats
path: root/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/devtools/devtools_adb_bridge_browsertest.cc')
-rw-r--r--chrome/browser/devtools/devtools_adb_bridge_browsertest.cc111
1 files changed, 91 insertions, 20 deletions
diff --git a/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc b/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc
index e12ef50..a4f2e83 100644
--- a/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc
+++ b/chrome/browser/devtools/devtools_adb_bridge_browsertest.cc
@@ -12,6 +12,7 @@
const char kDeviceModelCommand[] = "shell:getprop ro.product.model";
const char kOpenedUnixSocketsCommand[] = "shell:cat /proc/net/unix";
const char kListProcessesCommand[] = "shell:ps";
+const char kListPackagesCommand[] = "shell:pm list packages";
const char kDumpsysCommand[] = "shell:dumpsys window policy";
const char kPageListRequest[] = "GET /json HTTP/1.1\r\n\r\n";
@@ -26,13 +27,27 @@ const char kSampleOpenedUnixSockets[] =
"00000000: 00000002 00000000"
" 00010000 0001 01 11810 @webview_devtools_remote_2425\n"
"00000000: 00000002 00000000"
- " 00010000 0001 01 20893 @chrome_devtools_remote\n";
+ " 00010000 0001 01 20893 @chrome_devtools_remote\n"
+ "00000000: 00000002 00000000"
+ " 00010000 0001 01 20894 @chrome_devtools_remote_1002\n"
+ "00000000: 00000002 00000000"
+ " 00010000 0001 01 20895 @noprocess_devtools_remote\n";
const char kSampleListProcesses[] =
- "USER PID PPID VSIZE RSS WCHAN PC NAME\n"
- "root 1 0 688 508 ffffffff 00000000 S /init\n"
- "u0_a75 2425 123 933736 193024 ffffffff 00000000 S com.sample.feed\n"
- "nfc 741 123 706448 26316 ffffffff 00000000 S com.android.nfc";
+ "USER PID PPID VSIZE RSS WCHAN PC NAME\n"
+ "root 1 0 688 508 ffffffff 00000000 S /init\r\n"
+ "u0_a75 2425 123 933736 193024 ffffffff 00000000 S com.sample.feed\r\n"
+ "nfc 741 123 706448 26316 ffffffff 00000000 S com.android.nfc\r\n"
+ "u0_a76 1001 124 111111 222222 ffffffff 00000000 S com.android.chrome\r\n"
+ "u0_a77 1002 125 111111 222222 ffffffff 00000000 S com.chrome.beta\r\n"
+ "u0_a78 1003 126 111111 222222 ffffffff 00000000 S com.noprocess.app\r\n";
+
+const char kSampleListPackages[] =
+ "package:com.sample.feed\r\n"
+ "package:com.android.nfc\r\n"
+ "package:com.android.chrome\r\n"
+ "package:com.chrome.beta\r\n"
+ "package:com.google.android.apps.chrome\r\n";
const char kSampleDumpsysCommand[] =
"WINDOW MANAGER POLICY STATE (dumpsys window policy)\r\n"
@@ -48,6 +63,14 @@ char kSampleChromeVersion[] = "{\n"
" \"WebKit-Version\": \"537.36 (@160162)\"\n"
"}";
+char kSampleChromeBetaVersion[] = "{\n"
+ " \"Browser\": \"Chrome/31.0.1599.0\",\n"
+ " \"Protocol-Version\": \"1.0\",\n"
+ " \"User-Agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 "
+ "(KHTML, like Gecko) Chrome/32.0.1679.0 Safari/537.36\",\n"
+ " \"WebKit-Version\": \"537.36 (@160162)\"\n"
+ "}";
+
char kSampleWebViewVersion[] = "{\n"
" \"Browser\": \"Version/4.0\",\n"
" \"Protocol-Version\": \"1.0\",\n"
@@ -68,6 +91,8 @@ char kSampleChromePages[] = "[ {\n"
"ws:///devtools/page/755DE5C9-D49F-811D-0693-51B8E15C80D2\"\n"
"} ]";
+char kSampleChromeBetaPages[] = "[]";
+
char kSampleWebViewPages[] = "[ {\n"
" \"description\": \"{\\\"attached\\\":false,\\\"empty\\\":false,"
"\\\"height\\\":1173,\\\"screenX\\\":0,\\\"screenY\\\":0,"
@@ -117,6 +142,8 @@ class MockDeviceImpl : public AndroidDevice {
response = kSampleOpenedUnixSockets;
} else if (command == kListProcessesCommand) {
response = kSampleListProcesses;
+ } else if (command == kListPackagesCommand) {
+ response = kSampleListPackages;
} else if (command == kDumpsysCommand) {
response = kSampleDumpsysCommand;
} else {
@@ -153,6 +180,24 @@ class MockDeviceImpl : public AndroidDevice {
NOTREACHED();
return;
}
+ } else if (la_name == "chrome_devtools_remote_1002") {
+ if (request == kVersionRequest) {
+ response = kSampleChromeBetaVersion;
+ } else if (request == kPageListRequest) {
+ response = kSampleChromeBetaPages;
+ } else {
+ NOTREACHED();
+ return;
+ }
+ } else if (la_name.find("noprocess_devtools_remote") == 0) {
+ if (request == kVersionRequest) {
+ response = "{}";
+ } else if (request == kPageListRequest) {
+ response = "[]";
+ } else {
+ NOTREACHED();
+ return;
+ }
} else if (la_name == "webview_devtools_remote_2425") {
if (request == kVersionRequest) {
response = kSampleWebViewVersion;
@@ -202,6 +247,15 @@ class MockDeviceProvider : public AndroidDeviceProvider {
}
};
+static scoped_refptr<DevToolsAdbBridge::RemoteBrowser>
+FindBrowserByDisplayName(DevToolsAdbBridge::RemoteBrowsers browsers,
+ const std::string& name) {
+ for (DevToolsAdbBridge::RemoteBrowsers::iterator it = browsers.begin();
+ it != browsers.end(); ++it)
+ if ((*it)->display_name() == name)
+ return *it;
+ return NULL;
+}
class DevToolsAdbBridgeTest : public InProcessBrowserTest,
public DevToolsAdbBridge::Listener {
@@ -210,13 +264,18 @@ class DevToolsAdbBridgeTest : public InProcessBrowserTest,
public:
virtual void RemoteDevicesChanged(
DevToolsAdbBridge::RemoteDevices* devices) OVERRIDE{
- ASSERT_EQ(2U, devices->size());
+ devices_ = *devices;
+ runner_->Quit();
+ }
+
+ void CheckDevices() {
+ ASSERT_EQ(2U, devices_.size());
scoped_refptr<DevToolsAdbBridge::RemoteDevice> connected =
- (*devices)[0]->IsConnected() ? (*devices)[0] : (*devices)[1];
+ devices_[0]->IsConnected() ? devices_[0] : devices_[1];
scoped_refptr<DevToolsAdbBridge::RemoteDevice> not_connected =
- (*devices)[0]->IsConnected() ? (*devices)[1] : (*devices)[0];
+ devices_[0]->IsConnected() ? devices_[1] : devices_[0];
ASSERT_TRUE(connected->IsConnected());
ASSERT_FALSE(not_connected->IsConnected());
@@ -231,29 +290,40 @@ public:
ASSERT_EQ("Offline", not_connected->GetModel());
const DevToolsAdbBridge::RemoteBrowsers& browsers = connected->browsers();
- ASSERT_EQ(2U, browsers.size());
+ ASSERT_EQ(4U, browsers.size());
scoped_refptr<DevToolsAdbBridge::RemoteBrowser> chrome =
- browsers[0]->product() == "Chrome" ? browsers[0] : browsers[1];
+ FindBrowserByDisplayName(browsers, "Chrome");
+ ASSERT_TRUE(chrome);
+
+ scoped_refptr<DevToolsAdbBridge::RemoteBrowser> chrome_beta =
+ FindBrowserByDisplayName(browsers, "Chrome Beta");
+ ASSERT_TRUE(chrome_beta);
+
+ scoped_refptr<DevToolsAdbBridge::RemoteBrowser> chromium =
+ FindBrowserByDisplayName(browsers, "Chromium");
+ ASSERT_FALSE(chromium);
scoped_refptr<DevToolsAdbBridge::RemoteBrowser> webview =
- browsers[0]->product() == "Chrome" ? browsers[1] : browsers[0];
+ FindBrowserByDisplayName(browsers, "com.sample.feed");
- ASSERT_EQ("Chrome", chrome->product());
- ASSERT_EQ("32.0.1679.0", chrome->version());
+ scoped_refptr<DevToolsAdbBridge::RemoteBrowser> noprocess =
+ FindBrowserByDisplayName(browsers, "Noprocess");
+ ASSERT_TRUE(noprocess);
- ASSERT_EQ("Webview", webview->product());
+ ASSERT_EQ("32.0.1679.0", chrome->version());
+ ASSERT_EQ("31.0.1599.0", chrome_beta->version());
ASSERT_EQ("4.0", webview->version());
- // Check that we parse process list properly.
- ASSERT_EQ("com.sample.feed", webview->package());
-
std::vector<DevToolsTargetImpl*> chrome_pages =
chrome->CreatePageTargets();
+ std::vector<DevToolsTargetImpl*> chrome_beta_pages =
+ chrome_beta->CreatePageTargets();
std::vector<DevToolsTargetImpl*> webview_pages =
webview->CreatePageTargets();
ASSERT_EQ(1U, chrome_pages.size());
+ ASSERT_EQ(0U, chrome_beta_pages.size());
ASSERT_EQ(2U, webview_pages.size());
// Check that we have non-empty description for webview pages.
@@ -266,8 +336,6 @@ public:
STLDeleteElements(&chrome_pages);
STLDeleteElements(&webview_pages);
-
- runner_->Quit();
}
void init() {
@@ -276,9 +344,10 @@ public:
protected:
scoped_refptr<content::MessageLoopRunner> runner_;
+ DevToolsAdbBridge::RemoteDevices devices_;
};
-IN_PROC_BROWSER_TEST_F(DevToolsAdbBridgeTest, Main) {
+IN_PROC_BROWSER_TEST_F(DevToolsAdbBridgeTest, DiscoverAndroidBrowsers) {
init();
scoped_refptr<DevToolsAdbBridge> adb_bridge =
@@ -296,4 +365,6 @@ IN_PROC_BROWSER_TEST_F(DevToolsAdbBridgeTest, Main) {
adb_bridge->AddListener(this);
runner_->Run();
+
+ CheckDevices();
}