| 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/services/view_manager/public/cpp/lib/view_manager_client_impl.h" | 5 #include "mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "mojo/public/cpp/application/application_impl.h" | 10 #include "mojo/public/cpp/application/application_impl.h" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 // destroyed. | 73 // destroyed. |
| 74 class RootObserver : public ViewObserver { | 74 class RootObserver : public ViewObserver { |
| 75 public: | 75 public: |
| 76 explicit RootObserver(View* root) : root_(root) {} | 76 explicit RootObserver(View* root) : root_(root) {} |
| 77 ~RootObserver() override {} | 77 ~RootObserver() override {} |
| 78 | 78 |
| 79 private: | 79 private: |
| 80 // Overridden from ViewObserver: | 80 // Overridden from ViewObserver: |
| 81 void OnViewDestroyed(View* view) override { | 81 void OnViewDestroyed(View* view) override { |
| 82 DCHECK_EQ(view, root_); | 82 DCHECK_EQ(view, root_); |
| 83 static_cast<ViewManagerClientImpl*>( | 83 static_cast<ViewManagerClientImpl*>(root_->view_manager()) |
| 84 ViewPrivate(root_).view_manager())->RootDestroyed(root_); | 84 ->RootDestroyed(root_); |
| 85 view->RemoveObserver(this); | 85 view->RemoveObserver(this); |
| 86 delete this; | 86 delete this; |
| 87 } | 87 } |
| 88 | 88 |
| 89 View* root_; | 89 View* root_; |
| 90 | 90 |
| 91 DISALLOW_COPY_AND_ASSIGN(RootObserver); | 91 DISALLOW_COPY_AND_ASSIGN(RootObserver); |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate, | 94 ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 122 // Delete the non-owned views last. In the typical case these are roots. The | 122 // Delete the non-owned views last. In the typical case these are roots. The |
| 123 // exception is the window manager, which may know aboutother random views | 123 // exception is the window manager, which may know aboutother random views |
| 124 // that it doesn't own. | 124 // that it doesn't own. |
| 125 // NOTE: we manually delete as we're a friend. | 125 // NOTE: we manually delete as we're a friend. |
| 126 for (size_t i = 0; i < non_owned.size(); ++i) | 126 for (size_t i = 0; i < non_owned.size(); ++i) |
| 127 delete non_owned[i]; | 127 delete non_owned[i]; |
| 128 | 128 |
| 129 delegate_->OnViewManagerDisconnected(this); | 129 delegate_->OnViewManagerDisconnected(this); |
| 130 } | 130 } |
| 131 | 131 |
| 132 Id ViewManagerClientImpl::CreateView() { | |
| 133 DCHECK(connected_); | |
| 134 const Id view_id = MakeTransportId(connection_id_, ++next_id_); | |
| 135 service_->CreateView(view_id, ActionCompletedCallbackWithErrorCode()); | |
| 136 return view_id; | |
| 137 } | |
| 138 | |
| 139 void ViewManagerClientImpl::DestroyView(Id view_id) { | 132 void ViewManagerClientImpl::DestroyView(Id view_id) { |
| 140 DCHECK(connected_); | 133 DCHECK(connected_); |
| 141 service_->DeleteView(view_id, ActionCompletedCallback()); | 134 service_->DeleteView(view_id, ActionCompletedCallback()); |
| 142 } | 135 } |
| 143 | 136 |
| 144 void ViewManagerClientImpl::AddChild(Id child_id, Id parent_id) { | 137 void ViewManagerClientImpl::AddChild(Id child_id, Id parent_id) { |
| 145 DCHECK(connected_); | 138 DCHECK(connected_); |
| 146 service_->AddView(parent_id, child_id, ActionCompletedCallback()); | 139 service_->AddView(parent_id, child_id, ActionCompletedCallback()); |
| 147 } | 140 } |
| 148 | 141 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 | 216 |
| 224 void ViewManagerClientImpl::RemoveView(Id view_id) { | 217 void ViewManagerClientImpl::RemoveView(Id view_id) { |
| 225 IdToViewMap::iterator it = views_.find(view_id); | 218 IdToViewMap::iterator it = views_.find(view_id); |
| 226 if (it != views_.end()) | 219 if (it != views_.end()) |
| 227 views_.erase(it); | 220 views_.erase(it); |
| 228 } | 221 } |
| 229 | 222 |
| 230 //////////////////////////////////////////////////////////////////////////////// | 223 //////////////////////////////////////////////////////////////////////////////// |
| 231 // ViewManagerClientImpl, ViewManager implementation: | 224 // ViewManagerClientImpl, ViewManager implementation: |
| 232 | 225 |
| 226 Id ViewManagerClientImpl::CreateViewOnServer() { |
| 227 DCHECK(connected_); |
| 228 const Id view_id = MakeTransportId(connection_id_, ++next_id_); |
| 229 service_->CreateView(view_id, ActionCompletedCallbackWithErrorCode()); |
| 230 return view_id; |
| 231 } |
| 232 |
| 233 const std::string& ViewManagerClientImpl::GetEmbedderURL() const { | 233 const std::string& ViewManagerClientImpl::GetEmbedderURL() const { |
| 234 return creator_url_; | 234 return creator_url_; |
| 235 } | 235 } |
| 236 | 236 |
| 237 View* ViewManagerClientImpl::GetRoot() { | 237 View* ViewManagerClientImpl::GetRoot() { |
| 238 return root_; | 238 return root_; |
| 239 } | 239 } |
| 240 | 240 |
| 241 View* ViewManagerClientImpl::GetViewById(Id id) { | 241 View* ViewManagerClientImpl::GetViewById(Id id) { |
| 242 IdToViewMap::const_iterator it = views_.find(id); | 242 IdToViewMap::const_iterator it = views_.find(id); |
| 243 return it != views_.end() ? it->second : NULL; | 243 return it != views_.end() ? it->second : NULL; |
| 244 } | 244 } |
| 245 | 245 |
| 246 View* ViewManagerClientImpl::GetFocusedView() { | 246 View* ViewManagerClientImpl::GetFocusedView() { |
| 247 return focused_view_; | 247 return focused_view_; |
| 248 } | 248 } |
| 249 | 249 |
| 250 View* ViewManagerClientImpl::CreateView() { |
| 251 View* view = new View(this, CreateViewOnServer()); |
| 252 AddView(view); |
| 253 return view; |
| 254 } |
| 255 |
| 250 //////////////////////////////////////////////////////////////////////////////// | 256 //////////////////////////////////////////////////////////////////////////////// |
| 251 // ViewManagerClientImpl, ViewManagerClient implementation: | 257 // ViewManagerClientImpl, ViewManagerClient implementation: |
| 252 | 258 |
| 253 void ViewManagerClientImpl::OnEmbed( | 259 void ViewManagerClientImpl::OnEmbed( |
| 254 ConnectionSpecificId connection_id, | 260 ConnectionSpecificId connection_id, |
| 255 const String& creator_url, | 261 const String& creator_url, |
| 256 ViewDataPtr root_data, | 262 ViewDataPtr root_data, |
| 257 InterfaceRequest<ServiceProvider> parent_services, | 263 InterfaceRequest<ServiceProvider> parent_services, |
| 258 ScopedMessagePipeHandle window_manager_pipe) { | 264 ScopedMessagePipeHandle window_manager_pipe) { |
| 259 DCHECK(!connected_); | 265 DCHECK(!connected_); |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 uint32 active_view_id) { | 477 uint32 active_view_id) { |
| 472 if (GetViewById(focused_view_id) != focused_view_) | 478 if (GetViewById(focused_view_id) != focused_view_) |
| 473 OnFocusChanged(focused_view_ ? focused_view_->id() : 0, focused_view_id); | 479 OnFocusChanged(focused_view_ ? focused_view_->id() : 0, focused_view_id); |
| 474 if (GetViewById(active_view_id) != activated_view_) { | 480 if (GetViewById(active_view_id) != activated_view_) { |
| 475 OnActiveWindowChanged(activated_view_ ? activated_view_->id() : 0, | 481 OnActiveWindowChanged(activated_view_ ? activated_view_->id() : 0, |
| 476 active_view_id); | 482 active_view_id); |
| 477 } | 483 } |
| 478 } | 484 } |
| 479 | 485 |
| 480 } // namespace mojo | 486 } // namespace mojo |
| OLD | NEW |