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

Unified Diff: chrome/browser/devtools/device/android_device_manager.cc

Issue 1071843003: Fix bug in AndroidDeviceManager::DeviceProvider::HttpUpgrade() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months 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/browser/devtools/device/android_device_manager.cc
diff --git a/chrome/browser/devtools/device/android_device_manager.cc b/chrome/browser/devtools/device/android_device_manager.cc
index 0459dc89f533cd1e351ed6630fd3f615947929ec..4bec67924d9773418a5391de10ad069e3aab51b6 100644
--- a/chrome/browser/devtools/device/android_device_manager.cc
+++ b/chrome/browser/devtools/device/android_device_manager.cc
@@ -52,10 +52,11 @@ static void PostHttpUpgradeCallback(
const AndroidDeviceManager::HttpUpgradeCallback& callback,
int result,
const std::string& extensions,
+ const std::string& leading_bytes,
scoped_ptr<net::StreamSocket> socket) {
response_message_loop->PostTask(
- FROM_HERE,
- base::Bind(callback, result, extensions, base::Passed(&socket)));
+ FROM_HERE, base::Bind(callback, result, extensions, leading_bytes,
+ base::Passed(&socket)));
}
class HttpRequest {
@@ -79,7 +80,7 @@ class HttpRequest {
int result,
scoped_ptr<net::StreamSocket> socket) {
if (result != net::OK) {
- callback.Run(result, "", make_scoped_ptr<net::StreamSocket>(nullptr));
+ callback.Run(result, "", "", make_scoped_ptr<net::StreamSocket>(nullptr));
return;
}
new HttpRequest(socket.Pass(), request, callback);
@@ -164,13 +165,18 @@ class HttpRequest {
}
}
- if (bytes_total == static_cast<int>(response_.length())) {
- if (!command_callback_.is_null()) {
- command_callback_.Run(net::OK, response_.substr(body_pos_));
- } else {
- http_upgrade_callback_.Run(net::OK,
- ExtractHeader("Sec-WebSocket-Extensions:"), socket_.Pass());
- }
+ if (!command_callback_.is_null() &&
+ bytes_total == static_cast<int>(response_.length())) {
+ command_callback_.Run(net::OK, response_.substr(body_pos_));
+ delete this;
+ return;
+ }
+
+ if (!http_upgrade_callback_.is_null() && body_pos_ != std::string::npos &&
+ body_pos_ > 0) {
+ http_upgrade_callback_.Run(net::OK,
+ ExtractHeader("Sec-WebSocket-Extensions:"),
+ response_.substr(body_pos_), socket_.Pass());
delete this;
return;
}
@@ -207,8 +213,8 @@ class HttpRequest {
if (!command_callback_.is_null()) {
command_callback_.Run(result, std::string());
} else {
- http_upgrade_callback_.Run(
- result, "", make_scoped_ptr<net::StreamSocket>(nullptr));
+ http_upgrade_callback_.Run(result, "", "",
+ make_scoped_ptr<net::StreamSocket>(nullptr));
}
delete this;
return false;
« no previous file with comments | « chrome/browser/devtools/device/android_device_manager.h ('k') | chrome/browser/devtools/device/android_web_socket.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698