cygprofile: increase timeouts to allow showing web contents
[chromium-blink-merge.git] / components / view_manager / public / cpp / lib / scoped_view_ptr.cc
blob93e231ab7a94f3438e48a75a36c39addf672ae80
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
3 // found in the LICENSE file.
5 #include "components/view_manager/public/cpp/scoped_view_ptr.h"
7 #include "components/view_manager/public/cpp/view.h"
8 #include "components/view_manager/public/cpp/view_observer.h"
9 #include "components/view_manager/public/cpp/view_tree_connection.h"
11 namespace mojo {
13 ScopedViewPtr::ScopedViewPtr(View* view)
14 : view_(view) {
15 view_->AddObserver(this);
18 ScopedViewPtr::~ScopedViewPtr() {
19 if (view_)
20 DeleteViewOrViewManager(view_);
21 DetachFromView();
24 // static
25 void ScopedViewPtr::DeleteViewOrViewManager(View* view) {
26 if (view->connection()->GetRoot() == view)
27 delete view->connection();
28 else
29 view->Destroy();
32 void ScopedViewPtr::DetachFromView() {
33 if (!view_)
34 return;
36 view_->RemoveObserver(this);
37 view_ = nullptr;
40 void ScopedViewPtr::OnViewDestroying(View* view) {
41 DCHECK_EQ(view_, view);
42 DetachFromView();
45 } // namespace mojo