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

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

Issue 1678923003: Rename ServiceConnector to InterfaceBinder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@connection
Patch Set: . Created 4 years, 10 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
« no previous file with comments | « components/html_viewer/html_document_application_delegate.h ('k') | mojo/mojo_base.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/html_viewer/html_document_application_delegate.h" 5 #include "components/html_viewer/html_document_application_delegate.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "components/html_viewer/global_state.h" 11 #include "components/html_viewer/global_state.h"
12 #include "components/html_viewer/html_document.h" 12 #include "components/html_viewer/html_document.h"
13 #include "mojo/shell/public/cpp/interface_binder.h"
13 #include "mojo/shell/public/cpp/shell_client.h" 14 #include "mojo/shell/public/cpp/shell_client.h"
14 15
15 namespace html_viewer { 16 namespace html_viewer {
16 17
17 // ServiceConnectorQueue records all incoming service requests and processes 18 // InterfaceBinderQueue records all incoming service requests and processes
18 // them once PushRequestsTo() is called. This is useful if you need to delay 19 // them once PushRequestsTo() is called. This is useful if you need to delay
19 // processing incoming service requests. 20 // processing incoming service requests.
20 class HTMLDocumentApplicationDelegate::ServiceConnectorQueue 21 class HTMLDocumentApplicationDelegate::InterfaceBinderQueue
21 : public mojo::ServiceConnector { 22 : public mojo::InterfaceBinder {
22 public: 23 public:
23 ServiceConnectorQueue() {} 24 InterfaceBinderQueue() {}
24 ~ServiceConnectorQueue() override {} 25 ~InterfaceBinderQueue() override {}
25 26
26 void PushRequestsTo(mojo::Connection* connection) { 27 void PushRequestsTo(mojo::Connection* connection) {
27 ScopedVector<Request> requests; 28 ScopedVector<Request> requests;
28 requests_.swap(requests); 29 requests_.swap(requests);
29 for (Request* request : requests) { 30 for (Request* request : requests) {
30 connection->GetLocalServiceProvider()->ConnectToService( 31 connection->GetLocalServiceProvider()->ConnectToService(
31 request->interface_name, std::move(request->handle)); 32 request->interface_name, std::move(request->handle));
32 } 33 }
33 } 34 }
34 35
35 private: 36 private:
36 struct Request { 37 struct Request {
37 std::string interface_name; 38 std::string interface_name;
38 mojo::ScopedMessagePipeHandle handle; 39 mojo::ScopedMessagePipeHandle handle;
39 }; 40 };
40 41
41 // mojo::ServiceConnector: 42 // mojo::InterfaceBinder:
42 void ConnectToService(mojo::Connection* connection, 43 void BindInterface(mojo::Connection* connection,
43 const std::string& interface_name, 44 const std::string& interface_name,
44 mojo::ScopedMessagePipeHandle handle) override { 45 mojo::ScopedMessagePipeHandle handle) override {
45 scoped_ptr<Request> request(new Request); 46 scoped_ptr<Request> request(new Request);
46 request->interface_name = interface_name; 47 request->interface_name = interface_name;
47 request->handle = std::move(handle); 48 request->handle = std::move(handle);
48 requests_.push_back(std::move(request)); 49 requests_.push_back(std::move(request));
49 } 50 }
50 51
51 ScopedVector<Request> requests_; 52 ScopedVector<Request> requests_;
52 53
53 DISALLOW_COPY_AND_ASSIGN(ServiceConnectorQueue); 54 DISALLOW_COPY_AND_ASSIGN(InterfaceBinderQueue);
54 }; 55 };
55 56
56 HTMLDocumentApplicationDelegate::HTMLDocumentApplicationDelegate( 57 HTMLDocumentApplicationDelegate::HTMLDocumentApplicationDelegate(
57 mojo::ShellClientRequest request, 58 mojo::ShellClientRequest request,
58 mojo::URLResponsePtr response, 59 mojo::URLResponsePtr response,
59 GlobalState* global_state, 60 GlobalState* global_state,
60 scoped_ptr<mojo::AppRefCount> parent_app_refcount, 61 scoped_ptr<mojo::AppRefCount> parent_app_refcount,
61 const mojo::Callback<void()>& destruct_callback) 62 const mojo::Callback<void()>& destruct_callback)
62 : app_(this, 63 : app_(this,
63 std::move(request), 64 std::move(request),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // TODO(yzshen): find out a better approach. 113 // TODO(yzshen): find out a better approach.
113 mojo::URLResponsePtr response(mojo::URLResponse::New()); 114 mojo::URLResponsePtr response(mojo::URLResponse::New());
114 response->url = url_; 115 response->url = url_;
115 response->status_code = 200; 116 response->status_code = 200;
116 response->mime_type = "text/html"; 117 response->mime_type = "text/html";
117 OnResponseReceived(nullptr, mojo::URLLoaderPtr(), connection, nullptr, 118 OnResponseReceived(nullptr, mojo::URLLoaderPtr(), connection, nullptr,
118 std::move(response)); 119 std::move(response));
119 } else { 120 } else {
120 // HTMLDocument provides services, but is created asynchronously. Queue up 121 // HTMLDocument provides services, but is created asynchronously. Queue up
121 // requests until the HTMLDocument is created. 122 // requests until the HTMLDocument is created.
122 scoped_ptr<ServiceConnectorQueue> service_connector_queue( 123 scoped_ptr<InterfaceBinderQueue> interface_binder_queue(
123 new ServiceConnectorQueue); 124 new InterfaceBinderQueue);
124 connection->SetServiceConnector(service_connector_queue.get()); 125 connection->SetDefaultInterfaceBinder(interface_binder_queue.get());
125 126
126 mojo::URLLoaderPtr loader; 127 mojo::URLLoaderPtr loader;
127 url_loader_factory_->CreateURLLoader(GetProxy(&loader)); 128 url_loader_factory_->CreateURLLoader(GetProxy(&loader));
128 mojo::URLRequestPtr request(mojo::URLRequest::New()); 129 mojo::URLRequestPtr request(mojo::URLRequest::New());
129 request->url = url_; 130 request->url = url_;
130 request->auto_follow_redirects = true; 131 request->auto_follow_redirects = true;
131 132
132 // |loader| will be passed to the OnResponseReceived method through a 133 // |loader| will be passed to the OnResponseReceived method through a
133 // callback. Because order of evaluation is undefined, a reference to the 134 // callback. Because order of evaluation is undefined, a reference to the
134 // raw pointer is needed. 135 // raw pointer is needed.
135 mojo::URLLoader* raw_loader = loader.get(); 136 mojo::URLLoader* raw_loader = loader.get();
136 // The app needs to stay alive while waiting for the response to be 137 // The app needs to stay alive while waiting for the response to be
137 // available. 138 // available.
138 scoped_ptr<mojo::AppRefCount> app_retainer(app_.CreateAppRefCount()); 139 scoped_ptr<mojo::AppRefCount> app_retainer(app_.CreateAppRefCount());
139 raw_loader->Start( 140 raw_loader->Start(
140 std::move(request), 141 std::move(request),
141 base::Bind(&HTMLDocumentApplicationDelegate::OnResponseReceived, 142 base::Bind(&HTMLDocumentApplicationDelegate::OnResponseReceived,
142 weak_factory_.GetWeakPtr(), base::Passed(&app_retainer), 143 weak_factory_.GetWeakPtr(), base::Passed(&app_retainer),
143 base::Passed(&loader), connection, 144 base::Passed(&loader), connection,
144 base::Passed(&service_connector_queue))); 145 base::Passed(&interface_binder_queue)));
145 } 146 }
146 return true; 147 return true;
147 } 148 }
148 149
149 void HTMLDocumentApplicationDelegate::OnHTMLDocumentDeleted2( 150 void HTMLDocumentApplicationDelegate::OnHTMLDocumentDeleted2(
150 HTMLDocument* document) { 151 HTMLDocument* document) {
151 DCHECK(documents2_.count(document) > 0); 152 DCHECK(documents2_.count(document) > 0);
152 documents2_.erase(document); 153 documents2_.erase(document);
153 } 154 }
154 155
155 void HTMLDocumentApplicationDelegate::OnResponseReceived( 156 void HTMLDocumentApplicationDelegate::OnResponseReceived(
156 scoped_ptr<mojo::AppRefCount> app_refcount, 157 scoped_ptr<mojo::AppRefCount> app_refcount,
157 mojo::URLLoaderPtr loader, 158 mojo::URLLoaderPtr loader,
158 mojo::Connection* connection, 159 mojo::Connection* connection,
159 scoped_ptr<ServiceConnectorQueue> connector_queue, 160 scoped_ptr<InterfaceBinderQueue> binder_queue,
160 mojo::URLResponsePtr response) { 161 mojo::URLResponsePtr response) {
161 // HTMLDocument is destroyed when the hosting view is destroyed, or 162 // HTMLDocument is destroyed when the hosting view is destroyed, or
162 // explicitly from our destructor. 163 // explicitly from our destructor.
163 HTMLDocument* document = new HTMLDocument( 164 HTMLDocument* document = new HTMLDocument(
164 &app_, connection, std::move(response), global_state_, 165 &app_, connection, std::move(response), global_state_,
165 base::Bind(&HTMLDocumentApplicationDelegate::OnHTMLDocumentDeleted2, 166 base::Bind(&HTMLDocumentApplicationDelegate::OnHTMLDocumentDeleted2,
166 base::Unretained(this)), 167 base::Unretained(this)),
167 html_factory_); 168 html_factory_);
168 documents2_.insert(document); 169 documents2_.insert(document);
169 170
170 if (connector_queue) { 171 if (binder_queue) {
171 connector_queue->PushRequestsTo(connection); 172 binder_queue->PushRequestsTo(connection);
172 connection->SetServiceConnector(nullptr); 173 connection->SetDefaultInterfaceBinder(nullptr);
173 } 174 }
174 } 175 }
175 176
176 HTMLFrame* HTMLDocumentApplicationDelegate::CreateHTMLFrame( 177 HTMLFrame* HTMLDocumentApplicationDelegate::CreateHTMLFrame(
177 HTMLFrame::CreateParams* params) { 178 HTMLFrame::CreateParams* params) {
178 return new HTMLFrame(params); 179 return new HTMLFrame(params);
179 } 180 }
180 181
181 HTMLWidgetRootLocal* HTMLDocumentApplicationDelegate::CreateHTMLWidgetRootLocal( 182 HTMLWidgetRootLocal* HTMLDocumentApplicationDelegate::CreateHTMLWidgetRootLocal(
182 HTMLWidgetRootLocal::CreateParams* params) { 183 HTMLWidgetRootLocal::CreateParams* params) {
183 return new HTMLWidgetRootLocal(params); 184 return new HTMLWidgetRootLocal(params);
184 } 185 }
185 186
186 } // namespace html_viewer 187 } // namespace html_viewer
OLDNEW
« no previous file with comments | « components/html_viewer/html_document_application_delegate.h ('k') | mojo/mojo_base.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698