Index: chrome/browser/devtools/port_forwarding_controller.cc |
diff --git a/chrome/browser/devtools/port_forwarding_controller.cc b/chrome/browser/devtools/port_forwarding_controller.cc |
index a733851ced2a219cb70da651eb1a6551171da441..9513474ca2524bcee971bfb7137bbf5c94813003 100644 |
--- a/chrome/browser/devtools/port_forwarding_controller.cc |
+++ b/chrome/browser/devtools/port_forwarding_controller.cc |
@@ -49,6 +49,7 @@ static const char kTetheringAccepted[] = "Tethering.accepted"; |
static const char kTetheringBind[] = "Tethering.bind"; |
static const char kTetheringUnbind[] = "Tethering.unbind"; |
+static const char kChromeProductName[] = "Chrome"; |
static const char kDevToolsRemoteBrowserTarget[] = "/devtools/browser"; |
const int kMinVersionPortForwarding = 28; |
@@ -220,7 +221,19 @@ class SocketTunnel { |
bool about_to_destroy_; |
}; |
-typedef DevToolsAdbBridge::RemoteBrowser::ParsedVersion ParsedVersion; |
+typedef std::vector<int> ParsedVersion; |
+ |
+static ParsedVersion ParseVersion(const std::string& version) { |
+ ParsedVersion result; |
+ std::vector<std::string> parts; |
+ Tokenize(version, ".", &parts); |
+ for (size_t i = 0; i != parts.size(); ++i) { |
+ int value = 0; |
+ base::StringToInt(parts[i], &value); |
+ result.push_back(value); |
+ } |
+ return result; |
+} |
static bool IsVersionLower(const ParsedVersion& left, |
const ParsedVersion& right) { |
@@ -239,8 +252,8 @@ static std::string FindBestSocketForTethering( |
for (DevToolsAdbBridge::RemoteBrowsers::const_iterator it = browsers.begin(); |
it != browsers.end(); ++it) { |
scoped_refptr<DevToolsAdbBridge::RemoteBrowser> browser = *it; |
- ParsedVersion current_version = browser->GetParsedVersion(); |
- if (browser->IsChrome() && |
+ ParsedVersion current_version = ParseVersion(browser->version()); |
+ if (browser->product() == kChromeProductName && |
IsPortForwardingSupported(current_version) && |
IsVersionLower(newest_version, current_version)) { |
socket = browser->socket(); |