| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef MOJO_SERVICES_VIEW_MANAGER_CPP_LIB_VIEW_MANAGER_CLIENT_IMPL_H_ | |
| 6 #define MOJO_SERVICES_VIEW_MANAGER_CPP_LIB_VIEW_MANAGER_CLIENT_IMPL_H_ | |
| 7 | |
| 8 #include "mojo/public/cpp/bindings/binding.h" | |
| 9 #include "view_manager/cpp/types.h" | |
| 10 #include "view_manager/cpp/view.h" | |
| 11 #include "view_manager/cpp/view_manager.h" | |
| 12 #include "view_manager/interfaces/view_manager.mojom.h" | |
| 13 #include "window_manager/interfaces/window_manager.mojom.h" | |
| 14 | |
| 15 namespace mojo { | |
| 16 class Shell; | |
| 17 class ViewManager; | |
| 18 class ViewManagerDelegate; | |
| 19 class ViewManagerTransaction; | |
| 20 | |
| 21 // Manages the connection with the View Manager service. | |
| 22 class ViewManagerClientImpl : public ViewManager, | |
| 23 public ViewManagerClient, | |
| 24 public WindowManagerObserver { | |
| 25 public: | |
| 26 ViewManagerClientImpl(ViewManagerDelegate* delegate, | |
| 27 Shell* shell, | |
| 28 InterfaceRequest<ViewManagerClient> request, | |
| 29 bool delete_on_error); | |
| 30 ~ViewManagerClientImpl() override; | |
| 31 | |
| 32 bool connected() const { return !!service_; } | |
| 33 ConnectionSpecificId connection_id() const { return connection_id_; } | |
| 34 | |
| 35 // API exposed to the view implementations that pushes local changes to the | |
| 36 // service. | |
| 37 void DestroyView(Id view_id); | |
| 38 | |
| 39 // These methods take TransportIds. For views owned by the current connection, | |
| 40 // the connection id high word can be zero. In all cases, the TransportId 0x1 | |
| 41 // refers to the root view. | |
| 42 void AddChild(Id child_id, Id parent_id); | |
| 43 void RemoveChild(Id child_id, Id parent_id); | |
| 44 | |
| 45 void Reorder(Id view_id, Id relative_view_id, OrderDirection direction); | |
| 46 | |
| 47 // Returns true if the specified view was created by this connection. | |
| 48 bool OwnsView(Id id) const; | |
| 49 | |
| 50 void SetBounds(Id view_id, const Rect& bounds); | |
| 51 void SetSurfaceId(Id view_id, SurfaceIdPtr surface_id); | |
| 52 void SetFocus(Id view_id); | |
| 53 void SetVisible(Id view_id, bool visible); | |
| 54 void SetProperty(Id view_id, | |
| 55 const std::string& name, | |
| 56 const std::vector<uint8_t>& data); | |
| 57 | |
| 58 void Embed(const String& url, Id view_id); | |
| 59 void Embed(const String& url, | |
| 60 Id view_id, | |
| 61 InterfaceRequest<ServiceProvider> services, | |
| 62 ServiceProviderPtr exposed_services); | |
| 63 void Embed(Id view_id, ViewManagerClientPtr client); | |
| 64 | |
| 65 void set_change_acked_callback(const Callback<void(void)>& callback) { | |
| 66 change_acked_callback_ = callback; | |
| 67 } | |
| 68 void ClearChangeAckedCallback() { change_acked_callback_.reset(); } | |
| 69 | |
| 70 // Start/stop tracking views. While tracked, they can be retrieved via | |
| 71 // ViewManager::GetViewById. | |
| 72 void AddView(View* view); | |
| 73 void RemoveView(Id view_id); | |
| 74 | |
| 75 void SetViewManagerService(ViewManagerServicePtr service); | |
| 76 | |
| 77 private: | |
| 78 friend class RootObserver; | |
| 79 | |
| 80 typedef std::map<Id, View*> IdToViewMap; | |
| 81 | |
| 82 Id CreateViewOnServer(); | |
| 83 | |
| 84 // Overridden from ViewManager: | |
| 85 const std::string& GetEmbedderURL() const override; | |
| 86 View* GetRoot() override; | |
| 87 View* GetViewById(Id id) override; | |
| 88 View* GetFocusedView() override; | |
| 89 View* CreateView() override; | |
| 90 | |
| 91 // Overridden from ViewManagerClient: | |
| 92 void OnEmbed(ConnectionSpecificId connection_id, | |
| 93 const String& creator_url, | |
| 94 ViewDataPtr root, | |
| 95 ViewManagerServicePtr view_manager_service, | |
| 96 InterfaceRequest<ServiceProvider> services, | |
| 97 ServiceProviderPtr exposed_services, | |
| 98 ScopedMessagePipeHandle window_manager_pipe) override; | |
| 99 void OnEmbeddedAppDisconnected(Id view_id) override; | |
| 100 void OnViewBoundsChanged(Id view_id, | |
| 101 RectPtr old_bounds, | |
| 102 RectPtr new_bounds) override; | |
| 103 void OnViewViewportMetricsChanged(ViewportMetricsPtr old_metrics, | |
| 104 ViewportMetricsPtr new_metrics) override; | |
| 105 void OnViewHierarchyChanged(Id view_id, | |
| 106 Id new_parent_id, | |
| 107 Id old_parent_id, | |
| 108 Array<ViewDataPtr> views) override; | |
| 109 void OnViewReordered(Id view_id, | |
| 110 Id relative_view_id, | |
| 111 OrderDirection direction) override; | |
| 112 void OnViewDeleted(Id view_id) override; | |
| 113 void OnViewVisibilityChanged(Id view_id, bool visible) override; | |
| 114 void OnViewDrawnStateChanged(Id view_id, bool drawn) override; | |
| 115 void OnViewSharedPropertyChanged(Id view_id, | |
| 116 const String& name, | |
| 117 Array<uint8_t> new_data) override; | |
| 118 void OnViewInputEvent(Id view_id, | |
| 119 EventPtr event, | |
| 120 const Callback<void()>& callback) override; | |
| 121 void OnPerformAction(Id view_id, | |
| 122 const String& name, | |
| 123 const Callback<void(bool)>& callback) override; | |
| 124 | |
| 125 // Overridden from WindowManagerObserver: | |
| 126 void OnCaptureChanged(Id capture_view_id) override; | |
| 127 void OnFocusChanged(Id focused_view_id) override; | |
| 128 void OnActiveWindowChanged(Id focused_view_id) override; | |
| 129 | |
| 130 void RootDestroyed(View* root); | |
| 131 | |
| 132 void OnActionCompleted(bool success); | |
| 133 | |
| 134 Callback<void(bool)> ActionCompletedCallback(); | |
| 135 | |
| 136 ConnectionSpecificId connection_id_; | |
| 137 ConnectionSpecificId next_id_; | |
| 138 | |
| 139 std::string creator_url_; | |
| 140 | |
| 141 Callback<void(void)> change_acked_callback_; | |
| 142 | |
| 143 ViewManagerDelegate* delegate_; | |
| 144 | |
| 145 View* root_; | |
| 146 | |
| 147 IdToViewMap views_; | |
| 148 | |
| 149 View* capture_view_; | |
| 150 View* focused_view_; | |
| 151 View* activated_view_; | |
| 152 | |
| 153 WindowManagerPtr window_manager_; | |
| 154 Binding<WindowManagerObserver> wm_observer_binding_; | |
| 155 | |
| 156 Binding<ViewManagerClient> binding_; | |
| 157 ViewManagerServicePtr service_; | |
| 158 | |
| 159 MOJO_DISALLOW_COPY_AND_ASSIGN(ViewManagerClientImpl); | |
| 160 }; | |
| 161 | |
| 162 } // namespace mojo | |
| 163 | |
| 164 #endif // MOJO_SERVICES_VIEW_MANAGER_CPP_LIB_VIEW_MANAGER_CLIENT_IMPL_H_ | |
| OLD | NEW |