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

Unified Diff: mojo/shell/dynamic_service_loader.cc

Issue 373373002: Mojo: Refactor URLLoader interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes per review 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/shell/dynamic_service_loader.cc
diff --git a/mojo/shell/dynamic_service_loader.cc b/mojo/shell/dynamic_service_loader.cc
index 994e3184bbc1fe729a253186a4b2a6524026b802..2b20243e182ee8e177261bad1cd0a93d86bb5350 100644
--- a/mojo/shell/dynamic_service_loader.cc
+++ b/mojo/shell/dynamic_service_loader.cc
@@ -80,19 +80,19 @@ class LocalLoader : public Loader {
};
// For loading services via the network stack.
-class NetworkLoader : public Loader, public URLLoaderClient {
+class NetworkLoader : public Loader {
public:
explicit NetworkLoader(scoped_ptr<DynamicServiceRunner> runner,
NetworkService* network_service)
: Loader(runner.Pass()) {
network_service->CreateURLLoader(Get(&url_loader_));
- url_loader_.set_client(this);
}
virtual void Start(const GURL& url,
ScopedMessagePipeHandle service_handle,
Context* context) OVERRIDE {
service_handle_ = service_handle.Pass();
+ context_ = context;
URLRequestPtr request(URLRequest::New());
request->url = url.spec();
@@ -103,17 +103,9 @@ class NetworkLoader : public Loader, public URLLoaderClient {
request->bypass_cache = true;
}
- DataPipe data_pipe;
- url_loader_->Start(request.Pass(), data_pipe.producer_handle.Pass());
-
- base::CreateTemporaryFile(&file_);
- common::CopyToFile(data_pipe.consumer_handle.Pass(),
- file_,
- context->task_runners()->blocking_pool(),
- base::Bind(&Loader::StartService,
- base::Unretained(this),
- file_,
- base::Passed(&service_handle_)));
+ url_loader_->Start(request.Pass(),
+ base::Bind(&NetworkLoader::OnReceivedResponse,
+ base::Unretained(this)));
}
private:
@@ -122,16 +114,24 @@ class NetworkLoader : public Loader, public URLLoaderClient {
base::DeleteFile(file_, false);
}
- // URLLoaderClient methods:
- virtual void OnReceivedRedirect(URLResponsePtr response,
- const String& new_url,
- const String& new_method) OVERRIDE {
- // TODO(darin): Handle redirects properly!
+ void OnReceivedResponse(URLResponsePtr response) {
+ if (response->error) {
+ LOG(ERROR) << "Error (" << response->error->code << ": "
+ << response->error->description << ") while fetching "
+ << response->url;
+ }
+
+ base::CreateTemporaryFile(&file_);
+ common::CopyToFile(response->body.Pass(),
+ file_,
+ context_->task_runners()->blocking_pool(),
+ base::Bind(&Loader::StartService,
+ base::Unretained(this),
+ file_,
+ base::Passed(&service_handle_)));
}
- virtual void OnReceivedResponse(URLResponsePtr response) OVERRIDE {}
- virtual void OnReceivedError(NetworkErrorPtr error) OVERRIDE {}
- virtual void OnReceivedEndOfResponseBody() OVERRIDE {}
+ Context* context_;
NetworkServicePtr network_service_;
URLLoaderPtr url_loader_;
ScopedMessagePipeHandle service_handle_;
« no previous file with comments | « mojo/services/public/interfaces/network/url_loader.mojom ('k') | mojo/shell/in_process_dynamic_service_runner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698