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

Side by Side Diff: mojo/examples/wm_flow/wm/wm.cc

Issue 433513005: Pass ServiceProvider thru ViewManagerService::Embed() allowing embedder & embeddee to expose servic… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « mojo/examples/wm_flow/init/init.cc ('k') | mojo/mojo.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 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 "mojo/public/cpp/application/application_delegate.h" 5 #include "mojo/public/cpp/application/application_delegate.h"
6 #include "mojo/public/cpp/application/service_provider_impl.h"
6 #include "mojo/services/public/cpp/view_manager/view_manager.h" 7 #include "mojo/services/public/cpp/view_manager/view_manager.h"
7 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" 8 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
8 #include "mojo/services/public/cpp/view_manager/window_manager_delegate.h" 9 #include "mojo/services/public/cpp/view_manager/window_manager_delegate.h"
9 #include "mojo/services/window_manager/window_manager_app.h" 10 #include "mojo/services/window_manager/window_manager_app.h"
10 11
11 namespace examples { 12 namespace examples {
12 13
13 class SimpleWM : public mojo::ApplicationDelegate, 14 class SimpleWM : public mojo::ApplicationDelegate,
14 public mojo::ViewManagerDelegate, 15 public mojo::ViewManagerDelegate,
15 public mojo::WindowManagerDelegate { 16 public mojo::WindowManagerDelegate {
(...skipping 11 matching lines...) Expand all
27 virtual void Initialize(mojo::ApplicationImpl* impl) MOJO_OVERRIDE { 28 virtual void Initialize(mojo::ApplicationImpl* impl) MOJO_OVERRIDE {
28 window_manager_app_->Initialize(impl); 29 window_manager_app_->Initialize(impl);
29 } 30 }
30 virtual bool ConfigureIncomingConnection( 31 virtual bool ConfigureIncomingConnection(
31 mojo::ApplicationConnection* connection) MOJO_OVERRIDE { 32 mojo::ApplicationConnection* connection) MOJO_OVERRIDE {
32 window_manager_app_->ConfigureIncomingConnection(connection); 33 window_manager_app_->ConfigureIncomingConnection(connection);
33 return true; 34 return true;
34 } 35 }
35 36
36 // Overridden from mojo::ViewManagerDelegate: 37 // Overridden from mojo::ViewManagerDelegate:
37 virtual void OnEmbed(mojo::ViewManager* view_manager, 38 virtual void OnEmbed(
38 mojo::Node* root) MOJO_OVERRIDE { 39 mojo::ViewManager* view_manager,
40 mojo::Node* root,
41 mojo::ServiceProviderImpl* exported_services,
42 scoped_ptr<mojo::ServiceProvider> remote_service_provider) MOJO_OVERRIDE {
39 view_manager_ = view_manager; 43 view_manager_ = view_manager;
40 root_ = root; 44 root_ = root;
41 view_manager_->SetWindowManagerDelegate(this); 45 view_manager_->SetWindowManagerDelegate(this);
42 46
43 window_container_ = mojo::Node::Create(view_manager_); 47 window_container_ = mojo::Node::Create(view_manager_);
44 window_container_->SetBounds(root_->bounds()); 48 window_container_->SetBounds(root_->bounds());
45 root_->AddChild(window_container_); 49 root_->AddChild(window_container_);
46 50
47 } 51 }
48 virtual void OnViewManagerDisconnected( 52 virtual void OnViewManagerDisconnected(
49 mojo::ViewManager* view_manager) MOJO_OVERRIDE { 53 mojo::ViewManager* view_manager) MOJO_OVERRIDE {
50 view_manager_ = NULL; 54 view_manager_ = NULL;
51 root_ = NULL; 55 root_ = NULL;
52 } 56 }
53 57
54 // Overridden from mojo::WindowManagerDelegate: 58 // Overridden from mojo::WindowManagerDelegate:
55 virtual void Embed(const mojo::String& url) MOJO_OVERRIDE { 59 virtual void Embed(
60 const mojo::String& url,
61 mojo::InterfaceRequest<mojo::ServiceProvider> service_provider)
62 MOJO_OVERRIDE {
56 mojo::Node* embed_node = 63 mojo::Node* embed_node =
57 mojo::Node::Create(view_manager_); 64 mojo::Node::Create(view_manager_);
58 embed_node->SetBounds(gfx::Rect(next_window_origin_, gfx::Size(400, 400))); 65 embed_node->SetBounds(gfx::Rect(next_window_origin_, gfx::Size(400, 400)));
59 window_container_->AddChild(embed_node); 66 window_container_->AddChild(embed_node);
60 embed_node->Embed(url); 67
68 // TODO(beng): We're dropping the |service_provider| passed from the client
69 // on the floor here and passing our own. Seems like we should
70 // be sending both. I'm not yet sure how this sould work for
71 // N levels of proxying.
72 embed_node->Embed(url, scoped_ptr<mojo::ServiceProviderImpl>(
73 new mojo::ServiceProviderImpl).Pass());
61 next_window_origin_.Offset(50, 50); 74 next_window_origin_.Offset(50, 50);
62 } 75 }
63 virtual void DispatchEvent(mojo::View* target, 76 virtual void DispatchEvent(mojo::View* target,
64 mojo::EventPtr event) MOJO_OVERRIDE { 77 mojo::EventPtr event) MOJO_OVERRIDE {
65 view_manager_->DispatchEvent(target, event.Pass()); 78 view_manager_->DispatchEvent(target, event.Pass());
66 } 79 }
67 80
68 scoped_ptr<mojo::WindowManagerApp> window_manager_app_; 81 scoped_ptr<mojo::WindowManagerApp> window_manager_app_;
69 82
70 mojo::ViewManager* view_manager_; 83 mojo::ViewManager* view_manager_;
71 mojo::Node* root_; 84 mojo::Node* root_;
72 mojo::Node* window_container_; 85 mojo::Node* window_container_;
73 86
74 gfx::Point next_window_origin_; 87 gfx::Point next_window_origin_;
75 88
76 DISALLOW_COPY_AND_ASSIGN(SimpleWM); 89 DISALLOW_COPY_AND_ASSIGN(SimpleWM);
77 }; 90 };
78 91
79 } // namespace examples 92 } // namespace examples
80 93
81 namespace mojo { 94 namespace mojo {
82 95
83 // static 96 // static
84 ApplicationDelegate* ApplicationDelegate::Create() { 97 ApplicationDelegate* ApplicationDelegate::Create() {
85 return new examples::SimpleWM; 98 return new examples::SimpleWM;
86 } 99 }
87 100
88 } // namespace 101 } // namespace
OLDNEW
« no previous file with comments | « mojo/examples/wm_flow/init/init.cc ('k') | mojo/mojo.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698