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

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

Issue 795593004: Update mojo sdk to rev cc531b32182099a5a034a99daff35ed5d38a61c8 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More workarounds for MSVC Created 5 years, 11 months 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/view.h" 5 #include "mojo/services/view_manager/public/cpp/view.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "mojo/public/cpp/application/service_provider_impl.h" 9 #include "mojo/public/cpp/application/service_provider_impl.h"
10 #include "mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.h" 10 #include "mojo/services/view_manager/public/cpp/lib/view_manager_client_impl.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 bool OwnsView(ViewManager* manager, View* view) { 174 bool OwnsView(ViewManager* manager, View* view) {
175 return !manager || 175 return !manager ||
176 static_cast<ViewManagerClientImpl*>(manager)->OwnsView(view->id()); 176 static_cast<ViewManagerClientImpl*>(manager)->OwnsView(view->id());
177 } 177 }
178 178
179 } // namespace 179 } // namespace
180 180
181 //////////////////////////////////////////////////////////////////////////////// 181 ////////////////////////////////////////////////////////////////////////////////
182 // View, public: 182 // View, public:
183 183
184 // static
185 View* View::Create(ViewManager* view_manager) {
186 View* view = new View(view_manager);
187 static_cast<ViewManagerClientImpl*>(view_manager)->AddView(view);
188 return view;
189 }
190
191 void View::Destroy() { 184 void View::Destroy() {
192 if (!OwnsView(manager_, this)) 185 if (!OwnsView(manager_, this))
193 return; 186 return;
194 187
195 if (manager_) 188 if (manager_)
196 static_cast<ViewManagerClientImpl*>(manager_)->DestroyView(id_); 189 static_cast<ViewManagerClientImpl*>(manager_)->DestroyView(id_);
197 while (!children_.empty()) { 190 while (!children_.empty()) {
198 View* child = children_.front(); 191 View* child = children_.front();
199 if (!OwnsView(manager_, child)) { 192 if (!OwnsView(manager_, child)) {
200 ViewPrivate(child).ClearParent(); 193 ViewPrivate(child).ClearParent();
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 const View* root = this; 270 const View* root = this;
278 for (const View* parent = this; parent; parent = parent->parent()) 271 for (const View* parent = this; parent; parent = parent->parent())
279 root = parent; 272 root = parent;
280 return root; 273 return root;
281 } 274 }
282 275
283 void View::AddChild(View* child) { 276 void View::AddChild(View* child) {
284 // TODO(beng): not necessarily valid to all connections, but possibly to the 277 // TODO(beng): not necessarily valid to all connections, but possibly to the
285 // embeddee in an embedder-embeddee relationship. 278 // embeddee in an embedder-embeddee relationship.
286 if (manager_) 279 if (manager_)
287 CHECK_EQ(ViewPrivate(child).view_manager(), manager_); 280 CHECK_EQ(child->view_manager(), manager_);
288 LocalAddChild(child); 281 LocalAddChild(child);
289 if (manager_) 282 if (manager_)
290 static_cast<ViewManagerClientImpl*>(manager_)->AddChild(child->id(), id_); 283 static_cast<ViewManagerClientImpl*>(manager_)->AddChild(child->id(), id_);
291 } 284 }
292 285
293 void View::RemoveChild(View* child) { 286 void View::RemoveChild(View* child) {
294 // TODO(beng): not necessarily valid to all connections, but possibly to the 287 // TODO(beng): not necessarily valid to all connections, but possibly to the
295 // embeddee in an embedder-embeddee relationship. 288 // embeddee in an embedder-embeddee relationship.
296 if (manager_) 289 if (manager_)
297 CHECK_EQ(ViewPrivate(child).view_manager(), manager_); 290 CHECK_EQ(child->view_manager(), manager_);
298 LocalRemoveChild(child); 291 LocalRemoveChild(child);
299 if (manager_) { 292 if (manager_) {
300 static_cast<ViewManagerClientImpl*>(manager_)->RemoveChild(child->id(), 293 static_cast<ViewManagerClientImpl*>(manager_)->RemoveChild(child->id(),
301 id_); 294 id_);
302 } 295 }
303 } 296 }
304 297
305 void View::MoveToFront() { 298 void View::MoveToFront() {
306 if (!parent_ || parent_->children_.back() == this) 299 if (!parent_ || parent_->children_.back() == this)
307 return; 300 return;
(...skipping 15 matching lines...) Expand all
323 direction); 316 direction);
324 } 317 }
325 } 318 }
326 319
327 bool View::Contains(View* child) const { 320 bool View::Contains(View* child) const {
328 if (!child) 321 if (!child)
329 return false; 322 return false;
330 if (child == this) 323 if (child == this)
331 return true; 324 return true;
332 if (manager_) 325 if (manager_)
333 CHECK_EQ(ViewPrivate(child).view_manager(), manager_); 326 CHECK_EQ(child->view_manager(), manager_);
334 for (View* p = child->parent(); p; p = p->parent()) { 327 for (View* p = child->parent(); p; p = p->parent()) {
335 if (p == this) 328 if (p == this)
336 return true; 329 return true;
337 } 330 }
338 return false; 331 return false;
339 } 332 }
340 333
341 View* View::GetChildById(Id id) { 334 View* View::GetChildById(Id id) {
342 if (id == id_) 335 if (id == id_)
343 return this; 336 return this;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 (*pair.second.deallocator)(pair.second.value); 409 (*pair.second.deallocator)(pair.second.value);
417 } 410 }
418 prop_map_.clear(); 411 prop_map_.clear();
419 412
420 FOR_EACH_OBSERVER(ViewObserver, observers_, OnViewDestroyed(this)); 413 FOR_EACH_OBSERVER(ViewObserver, observers_, OnViewDestroyed(this));
421 } 414 }
422 415
423 //////////////////////////////////////////////////////////////////////////////// 416 ////////////////////////////////////////////////////////////////////////////////
424 // View, private: 417 // View, private:
425 418
426 View::View(ViewManager* manager) 419 View::View(ViewManager* manager, Id id)
427 : manager_(manager), 420 : manager_(manager),
428 id_(static_cast<ViewManagerClientImpl*>(manager_)->CreateView()), 421 id_(id),
429 parent_(NULL), 422 parent_(nullptr),
430 visible_(false), 423 visible_(false),
431 drawn_(false) { 424 drawn_(false) {
432 } 425 }
433 426
434 int64 View::SetLocalPropertyInternal(const void* key, 427 int64 View::SetLocalPropertyInternal(const void* key,
435 const char* name, 428 const char* name,
436 PropertyDeallocator deallocator, 429 PropertyDeallocator deallocator,
437 int64 value, 430 int64 value,
438 int64 default_value) { 431 int64 default_value) {
439 int64 old = GetLocalPropertyInternal(key, default_value); 432 int64 old = GetLocalPropertyInternal(key, default_value);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 void View::NotifyViewVisibilityChangedUp(View* target) { 541 void View::NotifyViewVisibilityChangedUp(View* target) {
549 // Start with the parent as we already notified |this| 542 // Start with the parent as we already notified |this|
550 // in NotifyViewVisibilityChangedDown. 543 // in NotifyViewVisibilityChangedDown.
551 for (View* view = parent(); view; view = view->parent()) { 544 for (View* view = parent(); view; view = view->parent()) {
552 bool ret = view->NotifyViewVisibilityChangedAtReceiver(target); 545 bool ret = view->NotifyViewVisibilityChangedAtReceiver(target);
553 DCHECK(ret); 546 DCHECK(ret);
554 } 547 }
555 } 548 }
556 549
557 } // namespace mojo 550 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698