| OLD | NEW |
| 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/exported_service_registry.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 Loading... |
| 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::ExportedServiceRegistry* 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::ExportedServiceRegistry>( |
| 73 new mojo::ExportedServiceRegistry).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 |
| OLD | NEW |