| 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 | 
|---|