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

Side by Side Diff: components/view_manager/public/cpp/lib/view_manager_client_impl.cc

Issue 1166123005: Removes ServiceProviders from ViewManager::Embed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup 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 "components/view_manager/public/cpp/lib/view_manager_client_impl.h" 5 #include "components/view_manager/public/cpp/lib/view_manager_client_impl.h"
6 6
7 #include "components/view_manager/public/cpp/lib/view_private.h" 7 #include "components/view_manager/public/cpp/lib/view_private.h"
8 #include "components/view_manager/public/cpp/util.h" 8 #include "components/view_manager/public/cpp/util.h"
9 #include "components/view_manager/public/cpp/view_manager_delegate.h" 9 #include "components/view_manager/public/cpp/view_manager_delegate.h"
10 #include "components/view_manager/public/cpp/view_observer.h" 10 #include "components/view_manager/public/cpp/view_observer.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 Id view_id, 195 Id view_id,
196 const std::string& name, 196 const std::string& name,
197 const std::vector<uint8_t>& data) { 197 const std::vector<uint8_t>& data) {
198 DCHECK(service_); 198 DCHECK(service_);
199 service_->SetViewProperty(view_id, 199 service_->SetViewProperty(view_id,
200 String(name), 200 String(name),
201 Array<uint8_t>::From(data), 201 Array<uint8_t>::From(data),
202 ActionCompletedCallback()); 202 ActionCompletedCallback());
203 } 203 }
204 204
205 void ViewManagerClientImpl::Embed(const String& url, Id view_id) {
206 mojo::URLRequestPtr request(mojo::URLRequest::New());
207 request->url = mojo::String::From(url);
208 Embed(request.Pass(), view_id, nullptr, nullptr);
209 }
210
211 void ViewManagerClientImpl::Embed(mojo::URLRequestPtr request,
212 Id view_id,
213 InterfaceRequest<ServiceProvider> services,
214 ServiceProviderPtr exposed_services) {
215 DCHECK(service_);
216 service_->EmbedRequest(request.Pass(), view_id, services.Pass(),
217 exposed_services.Pass(), ActionCompletedCallback());
218 }
219
220 void ViewManagerClientImpl::Embed(Id view_id, ViewManagerClientPtr client) { 205 void ViewManagerClientImpl::Embed(Id view_id, ViewManagerClientPtr client) {
221 DCHECK(service_); 206 DCHECK(service_);
222 service_->Embed(view_id, client.Pass(), ActionCompletedCallback()); 207 service_->Embed(view_id, client.Pass(), ActionCompletedCallback());
223 } 208 }
224 209
225 void ViewManagerClientImpl::EmbedAllowingReembed(mojo::URLRequestPtr request, 210 void ViewManagerClientImpl::EmbedAllowingReembed(mojo::URLRequestPtr request,
226 Id view_id) { 211 Id view_id) {
227 DCHECK(service_); 212 DCHECK(service_);
228 service_->EmbedAllowingReembed(request.Pass(), view_id, 213 service_->EmbedAllowingReembed(view_id, request.Pass(),
229 ActionCompletedCallback()); 214 ActionCompletedCallback());
230 } 215 }
231 216
232 void ViewManagerClientImpl::AddView(View* view) { 217 void ViewManagerClientImpl::AddView(View* view) {
233 DCHECK(views_.find(view->id()) == views_.end()); 218 DCHECK(views_.find(view->id()) == views_.end());
234 views_[view->id()] = view; 219 views_[view->id()] = view;
235 } 220 }
236 221
237 void ViewManagerClientImpl::RemoveView(Id view_id) { 222 void ViewManagerClientImpl::RemoveView(Id view_id) {
238 if (focused_view_ && focused_view_->id() == view_id) 223 if (focused_view_ && focused_view_->id() == view_id)
(...skipping 16 matching lines...) Expand all
255 240
256 Id ViewManagerClientImpl::CreateViewOnServer() { 241 Id ViewManagerClientImpl::CreateViewOnServer() {
257 DCHECK(service_); 242 DCHECK(service_);
258 const Id view_id = MakeTransportId(connection_id_, ++next_id_); 243 const Id view_id = MakeTransportId(connection_id_, ++next_id_);
259 service_->CreateView(view_id, [this](ErrorCode code) { 244 service_->CreateView(view_id, [this](ErrorCode code) {
260 OnActionCompleted(code == ERROR_CODE_NONE); 245 OnActionCompleted(code == ERROR_CODE_NONE);
261 }); 246 });
262 return view_id; 247 return view_id;
263 } 248 }
264 249
265 const std::string& ViewManagerClientImpl::GetEmbedderURL() const {
266 return creator_url_;
267 }
268
269 View* ViewManagerClientImpl::GetRoot() { 250 View* ViewManagerClientImpl::GetRoot() {
270 return root_; 251 return root_;
271 } 252 }
272 253
273 View* ViewManagerClientImpl::GetViewById(Id id) { 254 View* ViewManagerClientImpl::GetViewById(Id id) {
274 IdToViewMap::const_iterator it = views_.find(id); 255 IdToViewMap::const_iterator it = views_.find(id);
275 return it != views_.end() ? it->second : NULL; 256 return it != views_.end() ? it->second : NULL;
276 } 257 }
277 258
278 View* ViewManagerClientImpl::GetFocusedView() { 259 View* ViewManagerClientImpl::GetFocusedView() {
279 return focused_view_; 260 return focused_view_;
280 } 261 }
281 262
282 View* ViewManagerClientImpl::CreateView() { 263 View* ViewManagerClientImpl::CreateView() {
283 View* view = new View(this, CreateViewOnServer()); 264 View* view = new View(this, CreateViewOnServer());
284 AddView(view); 265 AddView(view);
285 return view; 266 return view;
286 } 267 }
287 268
288 void ViewManagerClientImpl::SetEmbedRoot() { 269 void ViewManagerClientImpl::SetEmbedRoot() {
289 // TODO(sky): this isn't right. The server may ignore the call. 270 // TODO(sky): this isn't right. The server may ignore the call.
290 is_embed_root_ = true; 271 is_embed_root_ = true;
291 service_->SetEmbedRoot(); 272 service_->SetEmbedRoot();
292 } 273 }
293 274
294 //////////////////////////////////////////////////////////////////////////////// 275 ////////////////////////////////////////////////////////////////////////////////
295 // ViewManagerClientImpl, ViewManagerClient implementation: 276 // ViewManagerClientImpl, ViewManagerClient implementation:
296 277
297 void ViewManagerClientImpl::OnEmbed(ConnectionSpecificId connection_id, 278 void ViewManagerClientImpl::OnEmbed(ConnectionSpecificId connection_id,
298 const String& creator_url,
299 ViewDataPtr root_data, 279 ViewDataPtr root_data,
300 ViewManagerServicePtr view_manager_service, 280 ViewManagerServicePtr view_manager_service,
301 InterfaceRequest<ServiceProvider> services,
302 ServiceProviderPtr exposed_services,
303 Id focused_view_id) { 281 Id focused_view_id) {
304 if (view_manager_service) { 282 if (view_manager_service) {
305 DCHECK(!service_); 283 DCHECK(!service_);
306 service_ = view_manager_service.Pass(); 284 service_ = view_manager_service.Pass();
307 service_.set_error_handler(this); 285 service_.set_error_handler(this);
308 } 286 }
309 connection_id_ = connection_id; 287 connection_id_ = connection_id;
310 creator_url_ = String::From(creator_url);
311 288
312 DCHECK(!root_); 289 DCHECK(!root_);
313 root_ = AddViewToViewManager(this, nullptr, root_data); 290 root_ = AddViewToViewManager(this, nullptr, root_data);
314 root_observer_.reset(new RootObserver(root_)); 291 root_observer_.reset(new RootObserver(root_));
315 292
316 focused_view_ = GetViewById(focused_view_id); 293 focused_view_ = GetViewById(focused_view_id);
317 294
318 delegate_->OnEmbed(root_, services.Pass(), exposed_services.Pass()); 295 delegate_->OnEmbed(root_);
319 } 296 }
320 297
321 void ViewManagerClientImpl::OnWillEmbed( 298 void ViewManagerClientImpl::OnEmbedForDescendant(
322 Id view_id, 299 Id view_id,
323 InterfaceRequest<ServiceProvider> services, 300 mojo::URLRequestPtr request,
324 ServiceProviderPtr exposed_services, 301 const OnEmbedForDescendantCallback& callback) {
325 const OnWillEmbedCallback& callback) {
326 View* view = GetViewById(view_id); 302 View* view = GetViewById(view_id);
327 bool allow_embed = false; 303 ViewManagerClientPtr client;
328 if (view) 304 if (view)
329 allow_embed = delegate_->OnWillEmbed(view, &services, &exposed_services); 305 delegate_->OnEmbedForDescendant(view, request.Pass(), &client);
330 callback.Run(allow_embed, services.Pass(), exposed_services.Pass()); 306 callback.Run(client.Pass());
331 } 307 }
332 308
333 void ViewManagerClientImpl::OnEmbeddedAppDisconnected(Id view_id) { 309 void ViewManagerClientImpl::OnEmbeddedAppDisconnected(Id view_id) {
334 View* view = GetViewById(view_id); 310 View* view = GetViewById(view_id);
335 if (view) { 311 if (view) {
336 FOR_EACH_OBSERVER(ViewObserver, *ViewPrivate(view).observers(), 312 FOR_EACH_OBSERVER(ViewObserver, *ViewPrivate(view).observers(),
337 OnViewEmbeddedAppDisconnected(view)); 313 OnViewEmbeddedAppDisconnected(view));
338 } 314 }
339 } 315 }
340 316
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 void ViewManagerClientImpl::OnActionCompleted(bool success) { 453 void ViewManagerClientImpl::OnActionCompleted(bool success) {
478 if (!change_acked_callback_.is_null()) 454 if (!change_acked_callback_.is_null())
479 change_acked_callback_.Run(); 455 change_acked_callback_.Run();
480 } 456 }
481 457
482 Callback<void(bool)> ViewManagerClientImpl::ActionCompletedCallback() { 458 Callback<void(bool)> ViewManagerClientImpl::ActionCompletedCallback() {
483 return [this](bool success) { OnActionCompleted(success); }; 459 return [this](bool success) { OnActionCompleted(success); };
484 } 460 }
485 461
486 } // namespace mojo 462 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698