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

Side by Side Diff: ui/views/view_unittest.cc

Issue 2713643002: Add View::AddedToWidget and RemovedFromWidget. (Closed)
Patch Set: Created 3 years, 10 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
« ui/views/view.cc ('K') | « ui/views/view.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/views/view.h" 5 #include "ui/views/view.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 3317 matching lines...) Expand 10 before | Expand all | Expand 10 after
3328 EXPECT_TRUE(v4->has_remove_details()); 3328 EXPECT_TRUE(v4->has_remove_details());
3329 EXPECT_TRUE(v4->has_add_details()); 3329 EXPECT_TRUE(v4->has_add_details());
3330 EXPECT_EQ(v2.get(), v4->remove_details().parent); 3330 EXPECT_EQ(v2.get(), v4->remove_details().parent);
3331 EXPECT_EQ(&v1, v4->add_details().parent); 3331 EXPECT_EQ(&v1, v4->add_details().parent);
3332 EXPECT_EQ(v4, v4->add_details().child); 3332 EXPECT_EQ(v4, v4->add_details().child);
3333 EXPECT_EQ(v4, v4->remove_details().child); 3333 EXPECT_EQ(v4, v4->remove_details().child);
3334 EXPECT_EQ(&v1, v4->remove_details().move_view); 3334 EXPECT_EQ(&v1, v4->remove_details().move_view);
3335 EXPECT_EQ(v2.get(), v4->add_details().move_view); 3335 EXPECT_EQ(v2.get(), v4->add_details().move_view);
3336 } 3336 }
3337 3337
3338 class WidgetObserverView : public View {
3339 public:
3340 WidgetObserverView();
3341 ~WidgetObserverView() override;
3342
3343 void ResetTestState();
3344
3345 bool was_added_to_widget() { return was_added_to_widget_; }
3346 bool was_removed_from_widget() { return was_removed_from_widget_; }
3347
3348 private:
3349 void AddedToWidget() override;
3350 void RemovedFromWidget() override;
3351
3352 bool was_added_to_widget_;
sky 2017/02/22 17:21:33 Make these counts, so you know if called more ofte
3353 bool was_removed_from_widget_;
3354 };
sky 2017/02/22 17:21:33 DISALLOW...
3355
3356 WidgetObserverView::WidgetObserverView() {
3357 ResetTestState();
3358 }
3359
3360 WidgetObserverView::~WidgetObserverView() {}
3361
3362 void WidgetObserverView::ResetTestState() {
3363 was_added_to_widget_ = false;
3364 was_removed_from_widget_ = false;
3365 }
3366
3367 void WidgetObserverView::AddedToWidget() {
3368 was_added_to_widget_ = true;
3369 }
3370
3371 void WidgetObserverView::RemovedFromWidget() {
3372 was_removed_from_widget_ = true;
3373 }
3374
3375 // Verifies that AddedToWidget and RemovedFromWidget are called for a view when
3376 // it is added to hierarchy.
3377 // The tree looks like this:
3378 // widget
3379 // +-- root
3380 //
3381 // then v1 is added to root:
3382 //
3383 // v1
3384 // +-- v2
3385 //
3386 // finally v1 is removed from root.
3387 TEST_F(ViewTest, AddedToRemovedFromWidget) {
3388 std::unique_ptr<Widget> widget(new Widget);
sky 2017/02/22 17:21:33 No need for a unique_ptr here, create on stack.
3389 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
3390 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
3391 params.bounds = gfx::Rect(50, 50, 650, 650);
3392 widget->Init(params);
3393
3394 View* root = widget->GetRootView();
3395
3396 WidgetObserverView v1;
3397 WidgetObserverView v2;
3398 v1.set_owned_by_client();
3399 v2.set_owned_by_client();
3400
3401 v1.AddChildView(&v2);
3402 EXPECT_FALSE(v2.was_added_to_widget());
3403 EXPECT_FALSE(v2.was_removed_from_widget());
3404
3405 root->AddChildView(&v1);
3406 EXPECT_TRUE(v1.was_added_to_widget());
3407 EXPECT_FALSE(v1.was_removed_from_widget());
3408 EXPECT_TRUE(v2.was_added_to_widget());
3409 EXPECT_FALSE(v2.was_removed_from_widget());
3410
3411 v1.ResetTestState();
3412 v2.ResetTestState();
3413
3414 root->RemoveChildView(&v1);
3415 EXPECT_FALSE(v1.was_added_to_widget());
3416 EXPECT_TRUE(v1.was_removed_from_widget());
3417 EXPECT_FALSE(v2.was_added_to_widget());
3418 EXPECT_TRUE(v2.was_removed_from_widget());
3419
3420 v2.ResetTestState();
3421 v1.RemoveChildView(&v2);
3422 EXPECT_FALSE(v2.was_removed_from_widget());
3423 }
3424
3338 // Verifies if the child views added under the root are all deleted when calling 3425 // Verifies if the child views added under the root are all deleted when calling
3339 // RemoveAllChildViews. 3426 // RemoveAllChildViews.
3340 // The tree looks like this: 3427 // The tree looks like this:
3341 // root 3428 // root
3342 // +-- child1 3429 // +-- child1
3343 // +-- foo 3430 // +-- foo
3344 // +-- bar0 3431 // +-- bar0
3345 // +-- bar1 3432 // +-- bar1
3346 // +-- bar2 3433 // +-- bar2
3347 // +-- child2 3434 // +-- child2
(...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after
4862 std::unique_ptr<View> view = NewView(); 4949 std::unique_ptr<View> view = NewView();
4863 std::unique_ptr<View> child_view = NewView(); 4950 std::unique_ptr<View> child_view = NewView();
4864 std::unique_ptr<View> child_view2 = NewView(); 4951 std::unique_ptr<View> child_view2 = NewView();
4865 view->AddChildView(child_view.get()); 4952 view->AddChildView(child_view.get());
4866 view->AddChildView(child_view2.get()); 4953 view->AddChildView(child_view2.get());
4867 view->ReorderChildView(child_view2.get(), 0); 4954 view->ReorderChildView(child_view2.get(), 0);
4868 EXPECT_EQ(child_view2.get(), view_reordered()); 4955 EXPECT_EQ(child_view2.get(), view_reordered());
4869 } 4956 }
4870 4957
4871 } // namespace views 4958 } // namespace views
OLDNEW
« ui/views/view.cc ('K') | « ui/views/view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698