OLD | NEW |
---|---|
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 Loading... | |
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 int added_to_widget_count() { return added_to_widget_count_; } | |
3346 int removed_from_widget_count() { return removed_from_widget_count_; } | |
3347 | |
3348 private: | |
3349 void AddedToWidget() override; | |
3350 void RemovedFromWidget() override; | |
3351 | |
3352 int added_to_widget_count_; | |
sky
2017/03/01 20:26:51
Either set in member initializer, or initialize to
msimonides
2017/03/02 07:48:56
Done.
| |
3353 int removed_from_widget_count_; | |
3354 | |
3355 DISALLOW_COPY_AND_ASSIGN(WidgetObserverView); | |
3356 }; | |
3357 | |
3358 WidgetObserverView::WidgetObserverView() { | |
3359 ResetTestState(); | |
3360 } | |
3361 | |
3362 WidgetObserverView::~WidgetObserverView() {} | |
3363 | |
3364 void WidgetObserverView::ResetTestState() { | |
3365 added_to_widget_count_ = 0; | |
3366 removed_from_widget_count_ = 0; | |
3367 } | |
3368 | |
3369 void WidgetObserverView::AddedToWidget() { | |
3370 ++added_to_widget_count_; | |
3371 } | |
3372 | |
3373 void WidgetObserverView::RemovedFromWidget() { | |
3374 ++removed_from_widget_count_; | |
3375 } | |
3376 | |
3377 // Verifies that AddedToWidget and RemovedFromWidget are called for a view when | |
3378 // it is added to hierarchy. | |
3379 // The tree looks like this: | |
3380 // widget | |
3381 // +-- root | |
3382 // | |
3383 // then v1 is added to root: | |
3384 // | |
3385 // v1 | |
3386 // +-- v2 | |
3387 // | |
3388 // finally v1 is removed from root. | |
3389 TEST_F(ViewTest, AddedToRemovedFromWidget) { | |
3390 Widget widget; | |
3391 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | |
3392 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | |
3393 params.bounds = gfx::Rect(50, 50, 650, 650); | |
3394 widget.Init(params); | |
3395 | |
3396 View* root = widget.GetRootView(); | |
3397 | |
3398 WidgetObserverView v1; | |
3399 WidgetObserverView v2; | |
3400 WidgetObserverView v3; | |
3401 v1.set_owned_by_client(); | |
3402 v2.set_owned_by_client(); | |
3403 v3.set_owned_by_client(); | |
3404 | |
3405 v1.AddChildView(&v2); | |
3406 EXPECT_EQ(0, v2.added_to_widget_count()); | |
3407 EXPECT_EQ(0, v2.removed_from_widget_count()); | |
3408 | |
3409 root->AddChildView(&v1); | |
3410 EXPECT_EQ(1, v1.added_to_widget_count()); | |
3411 EXPECT_EQ(0, v1.removed_from_widget_count()); | |
3412 EXPECT_EQ(1, v2.added_to_widget_count()); | |
3413 EXPECT_EQ(0, v2.removed_from_widget_count()); | |
3414 | |
3415 v2.AddChildView(&v3); | |
3416 EXPECT_EQ(1, v2.added_to_widget_count()); | |
3417 | |
sky
2017/03/01 20:26:51
Add assertions that v1's counts haven't changed (m
msimonides
2017/03/02 07:48:56
Done.
| |
3418 v1.ResetTestState(); | |
3419 v2.ResetTestState(); | |
3420 | |
3421 root->RemoveChildView(&v1); | |
3422 EXPECT_EQ(0, v1.added_to_widget_count()); | |
3423 EXPECT_EQ(1, v1.removed_from_widget_count()); | |
3424 EXPECT_EQ(0, v2.added_to_widget_count()); | |
3425 EXPECT_EQ(1, v2.removed_from_widget_count()); | |
3426 | |
3427 v2.ResetTestState(); | |
3428 v1.RemoveChildView(&v2); | |
3429 EXPECT_EQ(0, v2.removed_from_widget_count()); | |
3430 | |
3431 // Test move between parents in a single Widget. | |
3432 v2.RemoveChildView(&v3); | |
3433 v1.ResetTestState(); | |
3434 v2.ResetTestState(); | |
3435 v3.ResetTestState(); | |
3436 | |
3437 v1.AddChildView(&v2); | |
3438 root->AddChildView(&v1); | |
3439 root->AddChildView(&v3); | |
3440 EXPECT_EQ(1, v1.added_to_widget_count()); | |
3441 EXPECT_EQ(1, v2.added_to_widget_count()); | |
3442 EXPECT_EQ(1, v3.added_to_widget_count()); | |
3443 | |
3444 v3.AddChildView(&v1); | |
3445 EXPECT_EQ(1, v1.added_to_widget_count()); | |
3446 EXPECT_EQ(0, v1.removed_from_widget_count()); | |
3447 EXPECT_EQ(1, v2.added_to_widget_count()); | |
3448 EXPECT_EQ(0, v2.removed_from_widget_count()); | |
3449 EXPECT_EQ(1, v3.added_to_widget_count()); | |
3450 EXPECT_EQ(0, v3.removed_from_widget_count()); | |
3451 | |
3452 // Test move between widgets. | |
3453 Widget second_widget; | |
3454 params.bounds = gfx::Rect(150, 150, 650, 650); | |
3455 second_widget.Init(params); | |
3456 | |
3457 View* second_root = second_widget.GetRootView(); | |
3458 | |
3459 v1.ResetTestState(); | |
3460 v2.ResetTestState(); | |
3461 v3.ResetTestState(); | |
3462 | |
3463 second_root->AddChildView(&v1); | |
3464 EXPECT_EQ(1, v1.removed_from_widget_count()); | |
3465 EXPECT_EQ(1, v1.added_to_widget_count()); | |
3466 EXPECT_EQ(1, v2.added_to_widget_count()); | |
3467 EXPECT_EQ(1, v2.removed_from_widget_count()); | |
3468 EXPECT_EQ(0, v3.added_to_widget_count()); | |
3469 EXPECT_EQ(0, v3.removed_from_widget_count()); | |
3470 } | |
3471 | |
3338 // Verifies if the child views added under the root are all deleted when calling | 3472 // Verifies if the child views added under the root are all deleted when calling |
3339 // RemoveAllChildViews. | 3473 // RemoveAllChildViews. |
3340 // The tree looks like this: | 3474 // The tree looks like this: |
3341 // root | 3475 // root |
3342 // +-- child1 | 3476 // +-- child1 |
3343 // +-- foo | 3477 // +-- foo |
3344 // +-- bar0 | 3478 // +-- bar0 |
3345 // +-- bar1 | 3479 // +-- bar1 |
3346 // +-- bar2 | 3480 // +-- bar2 |
3347 // +-- child2 | 3481 // +-- child2 |
(...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4862 std::unique_ptr<View> view = NewView(); | 4996 std::unique_ptr<View> view = NewView(); |
4863 std::unique_ptr<View> child_view = NewView(); | 4997 std::unique_ptr<View> child_view = NewView(); |
4864 std::unique_ptr<View> child_view2 = NewView(); | 4998 std::unique_ptr<View> child_view2 = NewView(); |
4865 view->AddChildView(child_view.get()); | 4999 view->AddChildView(child_view.get()); |
4866 view->AddChildView(child_view2.get()); | 5000 view->AddChildView(child_view2.get()); |
4867 view->ReorderChildView(child_view2.get(), 0); | 5001 view->ReorderChildView(child_view2.get(), 0); |
4868 EXPECT_EQ(child_view2.get(), view_reordered()); | 5002 EXPECT_EQ(child_view2.get(), view_reordered()); |
4869 } | 5003 } |
4870 | 5004 |
4871 } // namespace views | 5005 } // namespace views |
OLD | NEW |