Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8548)

Unified Diff: chrome/test/chromedriver/chrome/browser_info.cc

Issue 761963007: [chromedriver] Change browser info parser to support Lollipop WebView apps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: make visual c++ happy Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/chromedriver/chrome/browser_info.cc
diff --git a/chrome/test/chromedriver/chrome/browser_info.cc b/chrome/test/chromedriver/chrome/browser_info.cc
index d62e90db49c09f995222275bcfe666133bbb8f28..bd7f3094dc38dd12fd506d943128c12a7505f6fa 100644
--- a/chrome/test/chromedriver/chrome/browser_info.cc
+++ b/chrome/test/chromedriver/chrome/browser_info.cc
@@ -37,54 +37,53 @@ Status ParseBrowserInfo(const std::string& data, BrowserInfo* browser_info) {
if (!value->GetAsDictionary(&dict))
return Status(kUnknownError, "version info not a dictionary");
- std::string browser;
- if (!dict->GetString("Browser", &browser)) {
- return Status(kUnknownError,
- "version info doesn't include string 'Browser'");
- }
-
- std::string blink_version;
- if (!dict->GetString("WebKit-Version", &blink_version)) {
- return Status(kUnknownError,
- "version info doesn't include string 'WebKit-Version'");
- }
-
- Status status = ParseBrowserString(browser, &browser_info->browser_name,
- &browser_info->browser_version, &browser_info->build_no);
+ bool is_android = dict->HasKey("Android-Package");
+ std::string browser_string;
+ if (!dict->GetString("Browser", &browser_string))
+ return Status(kUnknownError, "version doesn't include 'Browser'");
+ Status status = ParseBrowserString(is_android, browser_string, browser_info);
if (status.IsError())
return status;
+ std::string blink_version;
+ if (!dict->GetString("WebKit-Version", &blink_version))
+ return Status(kUnknownError, "version doesn't include 'WebKit-Version'");
+
return ParseBlinkVersionString(blink_version, &browser_info->blink_revision);
}
-Status ParseBrowserString(const std::string& browser_string,
- std::string* browser_name,
- std::string* browser_version,
- int* build_no) {
+Status ParseBrowserString(bool is_android,
+ const std::string& browser_string,
+ BrowserInfo* browser_info) {
if (browser_string.empty()) {
- *browser_name = "content shell";
- return Status(kOk);
- }
-
- if (browser_string.find("Version/") == 0u) {
- *browser_name = "webview";
+ browser_info->browser_name = "content shell";
return Status(kOk);
}
std::string prefix = "Chrome/";
+ int build_no = 0;
if (browser_string.find(prefix) == 0u) {
- *browser_name = "chrome";
- *browser_version = browser_string.substr(prefix.length());
-
+ std::string version = browser_string.substr(prefix.length());
std::vector<std::string> version_parts;
- base::SplitString(*browser_version, '.', &version_parts);
+ base::SplitString(version, '.', &version_parts);
+
if (version_parts.size() != 4 ||
- !base::StringToInt(version_parts[2], build_no)) {
- return Status(kUnknownError,
- "unrecognized Chrome version: " + *browser_version);
+ !base::StringToInt(version_parts[2], &build_no)) {
+ return Status(kUnknownError, "unrecognized Chrome version: " + version);
+ }
+
+ if (build_no != 0) {
+ browser_info->browser_name = "chrome";
+ browser_info->browser_version = browser_string.substr(prefix.length());
+ browser_info->build_no = build_no;
+ return Status(kOk);
}
+ }
+ if (browser_string.find("Version/") == 0u || // KitKat
+ (is_android && build_no == 0)) { // Lollipop
+ browser_info->browser_name = "webview";
return Status(kOk);
}
« no previous file with comments | « chrome/test/chromedriver/chrome/browser_info.h ('k') | chrome/test/chromedriver/chrome/browser_info_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698