| OLD | NEW |
| 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 #ifndef MOJO_UI_BASE_VIEW_H_ | 5 #ifndef MOJO_UI_BASE_VIEW_H_ |
| 6 #define MOJO_UI_BASE_VIEW_H_ | 6 #define MOJO_UI_BASE_VIEW_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "mojo/public/cpp/application/application_impl.h" | |
| 11 #include "mojo/public/cpp/bindings/binding.h" | 10 #include "mojo/public/cpp/bindings/binding.h" |
| 11 #include "mojo/public/cpp/bindings/interface_handle.h" |
| 12 #include "mojo/public/cpp/bindings/strong_binding.h" | 12 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 13 #include "mojo/public/cpp/system/macros.h" | 13 #include "mojo/public/cpp/system/macros.h" |
| 14 #include "mojo/public/interfaces/application/application_connector.mojom.h" |
| 14 #include "mojo/public/interfaces/application/service_provider.mojom.h" | 15 #include "mojo/public/interfaces/application/service_provider.mojom.h" |
| 15 #include "mojo/services/gfx/composition/interfaces/scenes.mojom.h" | 16 #include "mojo/services/gfx/composition/interfaces/scenes.mojom.h" |
| 16 #include "mojo/services/ui/views/interfaces/view_manager.mojom.h" | 17 #include "mojo/services/ui/views/interfaces/view_manager.mojom.h" |
| 17 #include "mojo/services/ui/views/interfaces/views.mojom.h" | 18 #include "mojo/services/ui/views/interfaces/views.mojom.h" |
| 18 | 19 |
| 19 namespace mojo { | 20 namespace mojo { |
| 20 namespace ui { | 21 namespace ui { |
| 21 | 22 |
| 22 // Abstract base implementation of a view for simple applications. | 23 // Abstract base implementation of a view for simple applications. |
| 23 // Subclasses must handle layout and provide content for the scene by | 24 // Subclasses must handle layout and provide content for the scene by |
| 24 // implementing the methods of the |ViewListener| mojom interface. | 25 // implementing the methods of the |ViewListener| mojom interface. |
| 25 // | 26 // |
| 26 // It is not necessary to use this class to implement all Views. | 27 // It is not necessary to use this class to implement all Views. |
| 27 // This class is merely intended to make the simple apps easier to write. | 28 // This class is merely intended to make the simple apps easier to write. |
| 28 class BaseView : public mojo::ui::ViewListener, | 29 class BaseView : public ViewListener, public ViewContainerListener { |
| 29 public mojo::ui::ViewContainerListener { | |
| 30 public: | 30 public: |
| 31 // TODO(jeffbrown): Consider switching this over to an ApplicationConnector | 31 BaseView(InterfaceHandle<ApplicationConnector> app_connector, |
| 32 // but having ApplicationImpl is handy for simple examples. | 32 InterfaceRequest<ViewOwner> view_owner_request, |
| 33 BaseView(mojo::ApplicationImpl* app_impl, | |
| 34 mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request, | |
| 35 const std::string& label); | 33 const std::string& label); |
| 36 | 34 |
| 37 ~BaseView() override; | 35 ~BaseView() override; |
| 38 | 36 |
| 39 // Gets the application implementation object provided at creation time. | 37 // Gets the application implementation object provided at creation time. |
| 40 mojo::ApplicationImpl* app_impl() { return app_impl_; } | 38 ApplicationConnector* app_connector() { return app_connector_.get(); } |
| 41 | 39 |
| 42 // Gets the view manager. | 40 // Gets the view manager. |
| 43 mojo::ui::ViewManager* view_manager() { return view_manager_.get(); } | 41 ViewManager* view_manager() { return view_manager_.get(); } |
| 44 | 42 |
| 45 // Gets the underlying view interface. | 43 // Gets the underlying view interface. |
| 46 mojo::ui::View* view() { return view_.get(); } | 44 View* view() { return view_.get(); } |
| 47 | 45 |
| 48 // Gets the service provider for the view. | 46 // Gets the service provider for the view. |
| 49 mojo::ServiceProvider* GetViewServiceProvider(); | 47 ServiceProvider* GetViewServiceProvider(); |
| 50 | 48 |
| 51 // Gets the underlying view container interface. | 49 // Gets the underlying view container interface. |
| 52 mojo::ui::ViewContainer* GetViewContainer(); | 50 ViewContainer* GetViewContainer(); |
| 53 | 51 |
| 54 // Gets the scene for the view. | 52 // Gets the scene for the view. |
| 55 // Returns nullptr if the |TakeScene| was called. | 53 // Returns nullptr if the |TakeScene| was called. |
| 56 mojo::gfx::composition::Scene* scene() { return scene_.get(); } | 54 gfx::composition::Scene* scene() { return scene_.get(); } |
| 57 | 55 |
| 58 // Takes the scene from the view. | 56 // Takes the scene from the view. |
| 59 // This is useful if the scene will be rendered by a separate component. | 57 // This is useful if the scene will be rendered by a separate component. |
| 60 mojo::gfx::composition::ScenePtr TakeScene() { return scene_.Pass(); } | 58 gfx::composition::ScenePtr TakeScene() { return scene_.Pass(); } |
| 61 | 59 |
| 62 // Gets the currently requested scene version. | 60 // Gets the currently requested scene version. |
| 63 uint32_t scene_version() { return scene_version_; } | 61 uint32_t scene_version() { return scene_version_; } |
| 64 | 62 |
| 65 // Gets the current view properties. | 63 // Gets the current view properties. |
| 66 // Returns nullptr if none. | 64 // Returns nullptr if none. |
| 67 mojo::ui::ViewProperties* properties() { return properties_.get(); } | 65 ViewProperties* properties() { return properties_.get(); } |
| 68 | 66 |
| 69 // Called when properties changed. | 67 // Called when properties changed. |
| 70 // Use |scene_version()| and |properties()| to get the current values. | 68 // Use |scene_version()| and |properties()| to get the current values. |
| 71 virtual void OnPropertiesChanged(uint32_t old_scene_version, | 69 virtual void OnPropertiesChanged(uint32_t old_scene_version, |
| 72 mojo::ui::ViewPropertiesPtr old_properties); | 70 ViewPropertiesPtr old_properties); |
| 73 | 71 |
| 74 // Called when a child is attached. | 72 // Called when a child is attached. |
| 75 virtual void OnChildAttached(uint32_t child_key, | 73 virtual void OnChildAttached(uint32_t child_key, ViewInfoPtr child_view_info); |
| 76 mojo::ui::ViewInfoPtr child_view_info); | |
| 77 | 74 |
| 78 // Called when a child becomes unavailable. | 75 // Called when a child becomes unavailable. |
| 79 virtual void OnChildUnavailable(uint32_t child_key); | 76 virtual void OnChildUnavailable(uint32_t child_key); |
| 80 | 77 |
| 81 private: | 78 private: |
| 82 // |ViewListener|: | 79 // |ViewListener|: |
| 83 void OnPropertiesChanged( | 80 void OnPropertiesChanged( |
| 84 uint32_t scene_version, | 81 uint32_t scene_version, |
| 85 mojo::ui::ViewPropertiesPtr properties, | 82 ViewPropertiesPtr properties, |
| 86 const OnPropertiesChangedCallback& callback) override; | 83 const OnPropertiesChangedCallback& callback) override; |
| 87 | 84 |
| 88 // |ViewContainerListener|: | 85 // |ViewContainerListener|: |
| 89 void OnChildAttached(uint32_t child_key, | 86 void OnChildAttached(uint32_t child_key, |
| 90 mojo::ui::ViewInfoPtr child_view_info, | 87 ViewInfoPtr child_view_info, |
| 91 const OnChildAttachedCallback& callback) override; | 88 const OnChildAttachedCallback& callback) override; |
| 92 void OnChildUnavailable(uint32_t child_key, | 89 void OnChildUnavailable(uint32_t child_key, |
| 93 const OnChildUnavailableCallback& callback) override; | 90 const OnChildUnavailableCallback& callback) override; |
| 94 | 91 |
| 95 mojo::ApplicationImpl* app_impl_; | 92 ApplicationConnectorPtr app_connector_; |
| 96 | 93 |
| 97 mojo::StrongBinding<mojo::ui::ViewListener> view_listener_binding_; | 94 StrongBinding<ViewListener> view_listener_binding_; |
| 98 mojo::Binding<mojo::ui::ViewContainerListener> | 95 Binding<ViewContainerListener> view_container_listener_binding_; |
| 99 view_container_listener_binding_; | 96 ViewManagerPtr view_manager_; |
| 100 mojo::ui::ViewManagerPtr view_manager_; | 97 ViewPtr view_; |
| 101 mojo::ui::ViewPtr view_; | 98 ServiceProviderPtr view_service_provider_; |
| 102 mojo::ServiceProviderPtr view_service_provider_; | 99 ViewContainerPtr view_container_; |
| 103 mojo::ui::ViewContainerPtr view_container_; | 100 gfx::composition::ScenePtr scene_; |
| 104 mojo::gfx::composition::ScenePtr scene_; | 101 uint32_t scene_version_ = gfx::composition::kSceneVersionNone; |
| 105 uint32_t scene_version_ = mojo::gfx::composition::kSceneVersionNone; | 102 ViewPropertiesPtr properties_; |
| 106 mojo::ui::ViewPropertiesPtr properties_; | |
| 107 | 103 |
| 108 MOJO_DISALLOW_COPY_AND_ASSIGN(BaseView); | 104 MOJO_DISALLOW_COPY_AND_ASSIGN(BaseView); |
| 109 }; | 105 }; |
| 110 | 106 |
| 111 } // namespace ui | 107 } // namespace ui |
| 112 } // namespace mojo | 108 } // namespace mojo |
| 113 | 109 |
| 114 #endif // MOJO_UI_BASE_VIEW_H_ | 110 #endif // MOJO_UI_BASE_VIEW_H_ |
| OLD | NEW |