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

Unified Diff: mojo/services/launcher/launcher.cc

Issue 373373002: Mojo: Refactor URLLoader interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: snapshot Created 6 years, 5 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: mojo/services/launcher/launcher.cc
diff --git a/mojo/services/launcher/launcher.cc b/mojo/services/launcher/launcher.cc
index f9fc881c807a1b0186447a9c7f400aa379e59aee..5cabeb02b5490a009f8b6f7b175fdf7be9cce9cd 100644
--- a/mojo/services/launcher/launcher.cc
+++ b/mojo/services/launcher/launcher.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/string_tokenizer.h"
@@ -42,7 +43,7 @@ class LauncherConnection : public InterfaceImpl<Launcher> {
DISALLOW_COPY_AND_ASSIGN(LauncherConnection);
};
-class LaunchInstance : public URLLoaderClient {
+class LaunchInstance {
public:
LaunchInstance(LauncherApp* app,
const LaunchCallback& callback,
@@ -50,18 +51,7 @@ class LaunchInstance : public URLLoaderClient {
virtual ~LaunchInstance() {}
private:
- // Overridden from URLLoaderClient:
- virtual void OnReceivedRedirect(URLResponsePtr response,
- const String& new_url,
- const String& new_method) OVERRIDE {
- }
- virtual void OnReceivedResponse(URLResponsePtr response) OVERRIDE;
- virtual void OnReceivedError(NetworkErrorPtr error) OVERRIDE {
- ScheduleDestroy();
- }
- virtual void OnReceivedEndOfResponseBody() OVERRIDE {
- ScheduleDestroy();
- }
+ void OnReceivedResponse(URLResponsePtr response);
std::string GetContentType(const Array<String>& headers) {
for (size_t i = 0; i < headers.size(); ++i) {
@@ -154,31 +144,31 @@ LaunchInstance::LaunchInstance(LauncherApp* app,
: app_(app),
destroy_scheduled_(false),
callback_(callback) {
- url_loader_ = app_->CreateURLLoader();
- url_loader_.set_client(this);
-
URLRequestPtr request(URLRequest::New());
request->url = url;
request->method = "GET";
request->auto_follow_redirects = true;
- DataPipe data_pipe;
- response_body_stream_ = data_pipe.consumer_handle.Pass();
-
- url_loader_->Start(request.Pass(), data_pipe.producer_handle.Pass());
+ url_loader_ = app_->CreateURLLoader();
+ url_loader_->Start(request.Pass(),
+ base::Bind(&LaunchInstance::OnReceivedResponse,
+ base::Unretained(this)));
}
void LaunchInstance::OnReceivedResponse(URLResponsePtr response) {
- std::string content_type = GetContentType(response->headers);
- std::string handler_url = app_->GetHandlerForContentType(content_type);
- if (!handler_url.empty()) {
- navigation::ResponseDetailsPtr nav_response(
- navigation::ResponseDetails::New());
- nav_response->response = response.Pass();
- nav_response->response_body_stream = response_body_stream_.Pass();
- String response_url = nav_response->response->url;
- callback_.Run(handler_url, response_url, nav_response.Pass());
+ if (!response->error) {
+ std::string content_type = GetContentType(response->headers);
+ std::string handler_url = app_->GetHandlerForContentType(content_type);
+ if (!handler_url.empty()) {
Aaron Boodman 2014/07/10 20:05:00 Maybe print out an error or something for now?
+ navigation::ResponseDetailsPtr nav_response(
+ navigation::ResponseDetails::New());
+ nav_response->loader_handle = url_loader_.PassMessagePipe();
+ nav_response->response = response.Pass();
+ String response_url = nav_response->response->url;
+ callback_.Run(handler_url, response_url, nav_response.Pass());
+ }
}
+ ScheduleDestroy();
}
} // namespace launcher

Powered by Google App Engine
This is Rietveld 408576698