Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.cc

Issue 818583002: Moves Create() off of View and onto ViewManager (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: merge 2 trunk Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698