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

Side by Side Diff: components/html_viewer/html_viewer.cc

Issue 1161463004: Move URL Loader creation to a separate factory object. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "components/html_viewer/html_document.h" 12 #include "components/html_viewer/html_document.h"
13 #include "components/html_viewer/setup.h" 13 #include "components/html_viewer/setup.h"
14 #include "mojo/application/public/cpp/application_connection.h" 14 #include "mojo/application/public/cpp/application_connection.h"
15 #include "mojo/application/public/cpp/application_delegate.h" 15 #include "mojo/application/public/cpp/application_delegate.h"
16 #include "mojo/application/public/cpp/application_impl.h" 16 #include "mojo/application/public/cpp/application_impl.h"
17 #include "mojo/application/public/cpp/application_runner.h" 17 #include "mojo/application/public/cpp/application_runner.h"
18 #include "mojo/application/public/cpp/connect.h" 18 #include "mojo/application/public/cpp/connect.h"
19 #include "mojo/application/public/cpp/interface_factory_impl.h" 19 #include "mojo/application/public/cpp/interface_factory_impl.h"
20 #include "mojo/application/public/interfaces/content_handler.mojom.h" 20 #include "mojo/application/public/interfaces/content_handler.mojom.h"
21 #include "mojo/common/common_type_converters.h" 21 #include "mojo/common/common_type_converters.h"
22 #include "mojo/services/network/public/interfaces/network_service.mojom.h" 22 #include "mojo/services/network/public/interfaces/network_service.mojom.h"
23 #include "mojo/services/network/public/interfaces/url_loader_factory.mojom.h"
23 #include "third_party/WebKit/public/web/WebKit.h" 24 #include "third_party/WebKit/public/web/WebKit.h"
24 #include "third_party/mojo/src/mojo/public/c/system/main.h" 25 #include "third_party/mojo/src/mojo/public/c/system/main.h"
25 #include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h" 26 #include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h"
26 27
27 using mojo::ApplicationConnection; 28 using mojo::ApplicationConnection;
28 using mojo::Array; 29 using mojo::Array;
29 using mojo::BindToRequest; 30 using mojo::BindToRequest;
30 using mojo::ContentHandler; 31 using mojo::ContentHandler;
31 using mojo::InterfaceRequest; 32 using mojo::InterfaceRequest;
32 using mojo::ServiceProvider; 33 using mojo::ServiceProvider;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // when we quit (the messageloop is shared among multiple 66 // when we quit (the messageloop is shared among multiple
66 // HTMLDocumentApplicationDelegates). 67 // HTMLDocumentApplicationDelegates).
67 void OnTerminate() { 68 void OnTerminate() {
68 delete this; 69 delete this;
69 } 70 }
70 71
71 // ApplicationDelegate; 72 // ApplicationDelegate;
72 void Initialize(mojo::ApplicationImpl* app) override { 73 void Initialize(mojo::ApplicationImpl* app) override {
73 mojo::URLRequestPtr request(mojo::URLRequest::New()); 74 mojo::URLRequestPtr request(mojo::URLRequest::New());
74 request->url = mojo::String::From("mojo:network_service"); 75 request->url = mojo::String::From("mojo:network_service");
75 app_.ConnectToService(request.Pass(), (&network_service_)); 76 mojo::ApplicationConnection* connection =
77 app_.ConnectToApplication(request.Pass());
78 connection->ConnectToService(&network_service_);
79 connection->ConnectToService(&url_loader_factory_);
76 } 80 }
77 bool ConfigureIncomingConnection( 81 bool ConfigureIncomingConnection(
78 mojo::ApplicationConnection* connection) override { 82 mojo::ApplicationConnection* connection) override {
79 if (initial_response_) { 83 if (initial_response_) {
80 OnResponseReceived(URLLoaderPtr(), connection, initial_response_.Pass()); 84 OnResponseReceived(URLLoaderPtr(), connection, initial_response_.Pass());
81 } else { 85 } else {
82 URLLoaderPtr loader; 86 URLLoaderPtr loader;
83 network_service_->CreateURLLoader(GetProxy(&loader)); 87 url_loader_factory_->CreateURLLoader(GetProxy(&loader));
84 mojo::URLRequestPtr request(mojo::URLRequest::New()); 88 mojo::URLRequestPtr request(mojo::URLRequest::New());
85 request->url = url_; 89 request->url = url_;
86 request->auto_follow_redirects = true; 90 request->auto_follow_redirects = true;
87 91
88 // |loader| will be passed to the OnResponseReceived method through a 92 // |loader| will be passed to the OnResponseReceived method through a
89 // callback. Because order of evaluation is undefined, a reference to the 93 // callback. Because order of evaluation is undefined, a reference to the
90 // raw pointer is needed. 94 // raw pointer is needed.
91 mojo::URLLoader* raw_loader = loader.get(); 95 mojo::URLLoader* raw_loader = loader.get();
92 raw_loader->Start( 96 raw_loader->Start(
93 request.Pass(), 97 request.Pass(),
(...skipping 11 matching lines...) Expand all
105 // TODO(sky): when headless, this leaks. 109 // TODO(sky): when headless, this leaks.
106 // TODO(sky): this needs to delete if serviceprovider goes away too. 110 // TODO(sky): this needs to delete if serviceprovider goes away too.
107 new HTMLDocument(&app_, connection, response.Pass(), setup_); 111 new HTMLDocument(&app_, connection, response.Pass(), setup_);
108 } 112 }
109 113
110 mojo::ApplicationImpl app_; 114 mojo::ApplicationImpl app_;
111 // AppRefCount of the parent (HTMLViewer). 115 // AppRefCount of the parent (HTMLViewer).
112 scoped_ptr<mojo::AppRefCount> parent_app_refcount_; 116 scoped_ptr<mojo::AppRefCount> parent_app_refcount_;
113 const String url_; 117 const String url_;
114 mojo::NetworkServicePtr network_service_; 118 mojo::NetworkServicePtr network_service_;
119 mojo::URLLoaderFactoryPtr url_loader_factory_;
115 URLResponsePtr initial_response_; 120 URLResponsePtr initial_response_;
116 Setup* setup_; 121 Setup* setup_;
117 122
118 DISALLOW_COPY_AND_ASSIGN(HTMLDocumentApplicationDelegate); 123 DISALLOW_COPY_AND_ASSIGN(HTMLDocumentApplicationDelegate);
119 }; 124 };
120 125
121 class ContentHandlerImpl : public mojo::ContentHandler { 126 class ContentHandlerImpl : public mojo::ContentHandler {
122 public: 127 public:
123 ContentHandlerImpl(Setup* setup, 128 ContentHandlerImpl(Setup* setup,
124 mojo::ApplicationImpl* app, 129 mojo::ApplicationImpl* app,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 184
180 DISALLOW_COPY_AND_ASSIGN(HTMLViewer); 185 DISALLOW_COPY_AND_ASSIGN(HTMLViewer);
181 }; 186 };
182 187
183 } // namespace html_viewer 188 } // namespace html_viewer
184 189
185 MojoResult MojoMain(MojoHandle shell_handle) { 190 MojoResult MojoMain(MojoHandle shell_handle) {
186 mojo::ApplicationRunner runner(new html_viewer::HTMLViewer); 191 mojo::ApplicationRunner runner(new html_viewer::HTMLViewer);
187 return runner.Run(shell_handle); 192 return runner.Run(shell_handle);
188 } 193 }
OLDNEW
« no previous file with comments | « components/html_viewer/blink_platform_impl.cc ('k') | components/html_viewer/web_url_loader_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698