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

Side by Side Diff: components/ntp_snippets/sessions/tab_delegate_sync_adapter_unittest.cc

Issue 2657673004: Add shutdown notification and service refs to SyncServiceObserver. (Closed)
Patch Set: Chromeos fix 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 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 "components/ntp_snippets/sessions/tab_delegate_sync_adapter.h" 5 #include "components/ntp_snippets/sessions/tab_delegate_sync_adapter.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "components/sync/driver/fake_sync_service.h" 10 #include "components/sync/driver/fake_sync_service.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 MOCK_METHOD2(GetForeignSessionTabs, 50 MOCK_METHOD2(GetForeignSessionTabs,
51 bool(const std::string&, std::vector<const SessionTab*>*)); 51 bool(const std::string&, std::vector<const SessionTab*>*));
52 MOCK_METHOD1(GetLocalSession, bool(const SyncedSession**)); 52 MOCK_METHOD1(GetLocalSession, bool(const SyncedSession**));
53 53
54 private: 54 private:
55 DISALLOW_COPY_AND_ASSIGN(MockOpenTabsUIDelegate); 55 DISALLOW_COPY_AND_ASSIGN(MockOpenTabsUIDelegate);
56 }; 56 };
57 57
58 class TabDelegateSyncAdapterTest : public Test { 58 class TabDelegateSyncAdapterTest : public Test {
59 public: 59 public:
60 TabDelegateSyncAdapterTest() : adapter_(&service_) { 60 TabDelegateSyncAdapterTest() : adapter_(service()) {
61 adapter_.SubscribeForForeignTabChange(base::Bind( 61 adapter_.SubscribeForForeignTabChange(base::Bind(
62 &TabDelegateSyncAdapterTest::OnChange, base::Unretained(this))); 62 &TabDelegateSyncAdapterTest::OnChange, base::Unretained(this)));
63 } 63 }
64 64
65 syncer::SyncService* service() { return &service_; }
65 SyncServiceObserver* observer() { return &adapter_; } 66 SyncServiceObserver* observer() { return &adapter_; }
66 67
67 void SetHasOpenTabs(bool is_enabled) { 68 void SetHasOpenTabs(bool is_enabled) {
68 service_.tabs_ = is_enabled ? &tabs_ : nullptr; 69 service_.tabs_ = is_enabled ? &tabs_ : nullptr;
69 } 70 }
70 71
71 void OnChange() { ++callback_count_; } 72 void OnChange() { ++callback_count_; }
72 73
73 int CallbackCount() { return callback_count_; } 74 int CallbackCount() { return callback_count_; }
74 75
75 private: 76 private:
76 MockOpenTabsUIDelegate tabs_; 77 MockOpenTabsUIDelegate tabs_;
77 TestSyncService service_; 78 TestSyncService service_;
78 TabDelegateSyncAdapter adapter_; 79 TabDelegateSyncAdapter adapter_;
79 int callback_count_ = 0; 80 int callback_count_ = 0;
80 81
81 DISALLOW_COPY_AND_ASSIGN(TabDelegateSyncAdapterTest); 82 DISALLOW_COPY_AND_ASSIGN(TabDelegateSyncAdapterTest);
82 }; 83 };
83 84
84 // CallbackCount should only trigger on transitions between having and not 85 // CallbackCount should only trigger on transitions between having and not
85 // having open tabs. 86 // having open tabs.
86 TEST_F(TabDelegateSyncAdapterTest, CallbackCount) { 87 TEST_F(TabDelegateSyncAdapterTest, CallbackCount) {
87 ASSERT_EQ(0, CallbackCount()); 88 ASSERT_EQ(0, CallbackCount());
88 observer()->OnStateChanged(); 89 observer()->OnStateChanged(service());
89 EXPECT_EQ(0, CallbackCount()); 90 EXPECT_EQ(0, CallbackCount());
90 91
91 SetHasOpenTabs(true); 92 SetHasOpenTabs(true);
92 observer()->OnStateChanged(); 93 observer()->OnStateChanged(service());
93 EXPECT_EQ(1, CallbackCount()); 94 EXPECT_EQ(1, CallbackCount());
94 observer()->OnStateChanged(); 95 observer()->OnStateChanged(service());
95 EXPECT_EQ(1, CallbackCount()); 96 EXPECT_EQ(1, CallbackCount());
96 97
97 SetHasOpenTabs(false); 98 SetHasOpenTabs(false);
98 observer()->OnStateChanged(); 99 observer()->OnStateChanged(service());
99 EXPECT_EQ(2, CallbackCount()); 100 EXPECT_EQ(2, CallbackCount());
100 observer()->OnStateChanged(); 101 observer()->OnStateChanged(service());
101 EXPECT_EQ(2, CallbackCount()); 102 EXPECT_EQ(2, CallbackCount());
102 103
103 // OnSyncCycleCompleted should behave like OnStateChanged. 104 // OnSyncCycleCompleted should behave like OnStateChanged.
104 observer()->OnSyncCycleCompleted(); 105 observer()->OnSyncCycleCompleted(service());
105 EXPECT_EQ(2, CallbackCount()); 106 EXPECT_EQ(2, CallbackCount());
106 SetHasOpenTabs(true); 107 SetHasOpenTabs(true);
107 observer()->OnSyncCycleCompleted(); 108 observer()->OnSyncCycleCompleted(service());
108 EXPECT_EQ(3, CallbackCount()); 109 EXPECT_EQ(3, CallbackCount());
109 observer()->OnSyncCycleCompleted(); 110 observer()->OnSyncCycleCompleted(service());
110 EXPECT_EQ(3, CallbackCount()); 111 EXPECT_EQ(3, CallbackCount());
111 } 112 }
112 113
113 // No callback should be invoked from OnSyncConfigurationCompleted. 114 // No callback should be invoked from OnSyncConfigurationCompleted.
114 TEST_F(TabDelegateSyncAdapterTest, OnSyncConfigurationCompleted) { 115 TEST_F(TabDelegateSyncAdapterTest, OnSyncConfigurationCompleted) {
115 ASSERT_EQ(0, CallbackCount()); 116 ASSERT_EQ(0, CallbackCount());
116 117
117 observer()->OnSyncConfigurationCompleted(); 118 observer()->OnSyncConfigurationCompleted(service());
118 EXPECT_EQ(0, CallbackCount()); 119 EXPECT_EQ(0, CallbackCount());
119 120
120 SetHasOpenTabs(true); 121 SetHasOpenTabs(true);
121 observer()->OnSyncConfigurationCompleted(); 122 observer()->OnSyncConfigurationCompleted(service());
122 EXPECT_EQ(0, CallbackCount()); 123 EXPECT_EQ(0, CallbackCount());
123 } 124 }
124 125
125 // OnForeignSessionUpdated should always trigger a callback. 126 // OnForeignSessionUpdated should always trigger a callback.
126 TEST_F(TabDelegateSyncAdapterTest, OnForeignSessionUpdated) { 127 TEST_F(TabDelegateSyncAdapterTest, OnForeignSessionUpdated) {
127 ASSERT_EQ(0, CallbackCount()); 128 ASSERT_EQ(0, CallbackCount());
128 observer()->OnForeignSessionUpdated(); 129 observer()->OnForeignSessionUpdated(service());
129 EXPECT_EQ(1, CallbackCount()); 130 EXPECT_EQ(1, CallbackCount());
130 observer()->OnForeignSessionUpdated(); 131 observer()->OnForeignSessionUpdated(service());
131 EXPECT_EQ(2, CallbackCount()); 132 EXPECT_EQ(2, CallbackCount());
132 133
133 SetHasOpenTabs(true); 134 SetHasOpenTabs(true);
134 observer()->OnForeignSessionUpdated(); 135 observer()->OnForeignSessionUpdated(service());
135 EXPECT_EQ(3, CallbackCount()); 136 EXPECT_EQ(3, CallbackCount());
136 observer()->OnForeignSessionUpdated(); 137 observer()->OnForeignSessionUpdated(service());
137 EXPECT_EQ(4, CallbackCount()); 138 EXPECT_EQ(4, CallbackCount());
138 } 139 }
139 140
140 // If OnForeignSessionUpdated is called before OnStateChanged, then calling 141 // If OnForeignSessionUpdated is called before OnStateChanged, then calling
141 // OnStateChanged should not trigger a callback. 142 // OnStateChanged should not trigger a callback.
142 TEST_F(TabDelegateSyncAdapterTest, OnForeignSessionUpdatedUpdatesState) { 143 TEST_F(TabDelegateSyncAdapterTest, OnForeignSessionUpdatedUpdatesState) {
143 SetHasOpenTabs(true); 144 SetHasOpenTabs(true);
144 observer()->OnForeignSessionUpdated(); 145 observer()->OnForeignSessionUpdated(service());
145 EXPECT_EQ(1, CallbackCount()); 146 EXPECT_EQ(1, CallbackCount());
146 147
147 observer()->OnStateChanged(); 148 observer()->OnStateChanged(service());
148 EXPECT_EQ(1, CallbackCount()); 149 EXPECT_EQ(1, CallbackCount());
149 } 150 }
150 151
151 } // namespace 152 } // namespace
152 } // namespace ntp_snippets 153 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698