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

Side by Side Diff: chrome/browser/ui/views/payments/view_stack_unittest.cc

Issue 2528503002: [WebPayments] Implement state transitions in desktop WebPayments dialog. (Closed)
Patch Set: Change the ViewStack interface to take std::unique_ptr<views::View> directly. Created 4 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
(Empty)
1 // Copyright 2016 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.
4
5 #include "base/observer_list.h"
6 #include "base/run_loop.h"
7 #include "chrome/browser/ui/views/payments/view_stack.h"
8 #include "ui/gfx/animation/test_animation_delegate.h"
9 #include "ui/views/test/views_test_base.h"
10
11 class TestStackView : public views::View {
12 public:
13 class Observer {
14 public:
15 Observer() : view_deleted_(false) {}
16
17 void OnViewBeingDeleted() {
18 view_deleted_ = true;
19 }
20
21 bool view_deleted() { return view_deleted_; }
22
23 private:
24 bool view_deleted_;
25 };
26
27 TestStackView() {}
28 ~TestStackView() override {
29 for (auto& observer: observers_) {
30 observer.OnViewBeingDeleted();
31 }
32 }
33
34 void AddObserver(Observer* observer) {
35 observers_.AddObserver(observer);
36 }
37
38 private:
39 base::ObserverList<Observer> observers_;
40
41 DISALLOW_COPY_AND_ASSIGN(TestStackView);
42 };
43
44 class ViewStackTest : public views::ViewsTestBase {
45 public:
46 ViewStackTest() {
47 view_stack_.reset(new ViewStack(base::MakeUnique<TestStackView>()));
48 }
49
50 std::unique_ptr<ViewStack> view_stack_;
51
52 DISALLOW_COPY_AND_ASSIGN(ViewStackTest);
53 };
54
55 TEST_F(ViewStackTest, TestInitialStateAddedAsChildView) {
56 EXPECT_EQ(1, view_stack_->child_count());
57 }
58
59 TEST_F(ViewStackTest, TestPushStateAddsViewToChildren) {
60 view_stack_->Push(base::MakeUnique<TestStackView>());
61 EXPECT_EQ(2, view_stack_->child_count());
62 }
63
64 TEST_F(ViewStackTest, TestPopStateRemovesChildViewAndCleansUpState) {
65 view_stack_->SetBounds(0, 0, 10, 10);
66
67 TestStackView::Observer observer;
68 std::unique_ptr<TestStackView> view = base::MakeUnique<TestStackView>();
69 view->AddObserver(&observer);
70 views::View* view_ptr = view.get();
71
72 view_stack_->Push(std::move(view));
73 EXPECT_TRUE(view_stack_->slide_in_animator_->IsAnimating());
74 view_stack_->slide_in_animator_->SetAnimationDelegate(
75 view_ptr,
76 std::unique_ptr<gfx::AnimationDelegate>(
77 new gfx::TestAnimationDelegate()));
78
79 base::RunLoop().Run();
80 EXPECT_FALSE(view_stack_->slide_in_animator_->IsAnimating());
81 view_stack_->Pop();
82
83 EXPECT_TRUE(view_stack_->slide_out_animator_->IsAnimating());
84 view_stack_->slide_out_animator_->SetAnimationDelegate(
85 view_ptr,
86 std::unique_ptr<gfx::AnimationDelegate>(
87 new gfx::TestAnimationDelegate()));
88
89 base::RunLoop().Run();
90 EXPECT_FALSE(view_stack_->slide_out_animator_->IsAnimating());
91
92 ASSERT_TRUE(observer.view_deleted());
93 }
94
95 TEST_F(ViewStackTest, TestDeletingViewCleansUpState) {
96 view_stack_->SetBounds(0, 0, 10, 10);
97
98 TestStackView::Observer observer;
99 std::unique_ptr<TestStackView> view = base::MakeUnique<TestStackView>();
100 view->AddObserver(&observer);
101 views::View* view_ptr = view.get();
102
103 view_stack_->Push(std::move(view));
104 EXPECT_TRUE(view_stack_->slide_in_animator_->IsAnimating());
105 view_stack_->slide_in_animator_->SetAnimationDelegate(
106 view_ptr,
107 std::unique_ptr<gfx::AnimationDelegate>(
108 new gfx::TestAnimationDelegate()));
109
110 base::RunLoop().Run();
111 EXPECT_FALSE(view_stack_->slide_in_animator_->IsAnimating());
112 view_stack_->Pop();
113
114 EXPECT_TRUE(view_stack_->slide_out_animator_->IsAnimating());
115 view_stack_.reset();
116
117 ASSERT_TRUE(observer.view_deleted());
118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698