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

Side by Side Diff: chrome/browser/invalidation/invalidation_service_android_unittest.cc

Issue 459513002: Massive refactor of the Android invalidation code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: A couple GN fixes. Created 6 years, 2 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
(Empty)
1 // Copyright (c) 2013 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 "chrome/browser/invalidation/invalidation_service_android.h"
6
7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/invalidation/invalidation_controller_android.h"
9 #include "chrome/test/base/testing_profile.h"
10 #include "components/invalidation/fake_invalidation_handler.h"
11 #include "components/invalidation/invalidation_service_test_template.h"
12 #include "content/public/browser/notification_service.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace invalidation {
16
17 class MockInvalidationControllerAndroid : public InvalidationControllerAndroid {
18 public:
19 MockInvalidationControllerAndroid() {}
20 virtual ~MockInvalidationControllerAndroid() {}
21
22 virtual void SetRegisteredObjectIds(const syncer::ObjectIdSet& ids) OVERRIDE {
23 registered_ids_ = ids;
24 }
25
26 syncer::ObjectIdSet registered_ids_;
27 };
28
29 class InvalidationServiceAndroidTestDelegate {
30 public:
31 InvalidationServiceAndroidTestDelegate() {}
32
33 ~InvalidationServiceAndroidTestDelegate() {}
34
35 void CreateInvalidationService() {
36 profile_.reset(new TestingProfile());
37 invalidation_service_android_.reset(
38 new InvalidationServiceAndroid(
39 profile_.get(),
40 new MockInvalidationControllerAndroid()));
41 }
42
43 InvalidationService* GetInvalidationService() {
44 return invalidation_service_android_.get();
45 }
46
47 void DestroyInvalidationService() {
48 invalidation_service_android_.reset();
49 }
50
51 void TriggerOnInvalidatorStateChange(syncer::InvalidatorState state) {
52 invalidation_service_android_->TriggerStateChangeForTest(state);
53 }
54
55 void TriggerOnIncomingInvalidation(
56 const syncer::ObjectIdInvalidationMap& invalidation_map) {
57 content::NotificationService::current()->Notify(
58 chrome::NOTIFICATION_SYNC_REFRESH_REMOTE,
59 content::Source<Profile>(profile_.get()),
60 content::Details<const syncer::ObjectIdInvalidationMap>(
61 &invalidation_map));
62 }
63
64 scoped_ptr<TestingProfile> profile_;
65 scoped_ptr<InvalidationServiceAndroid> invalidation_service_android_;
66 };
67
68 INSTANTIATE_TYPED_TEST_CASE_P(
69 AndroidInvalidationServiceTest, InvalidationServiceTest,
70 InvalidationServiceAndroidTestDelegate);
71
72 class InvalidationServiceAndroidRegistrationTest : public testing::Test {
73 protected:
74 InvalidationServiceAndroidRegistrationTest()
75 : invalidation_controller_(new MockInvalidationControllerAndroid()),
76 invalidation_service_(&profile_, invalidation_controller_) {}
77
78 virtual ~InvalidationServiceAndroidRegistrationTest() {}
79
80 // Get the invalidation service being tested.
81 InvalidationService& invalidation_service() {
82 return invalidation_service_;
83 }
84
85 // Get the number of objects which are registered.
86 size_t RegisteredObjectCount() {
87 return registered_ids().size();
88 }
89
90 // Determines if the given object id is registered with the invalidation
91 // controller.
92 bool IsRegistered(const invalidation::ObjectId& id) {
93 return registered_ids().find(id) != registered_ids().end();
94 }
95
96 private:
97 // Get the set of objects registered with the invalidation controller.
98 const syncer::ObjectIdSet& registered_ids() {
99 return invalidation_controller_->registered_ids_;
100 }
101
102 TestingProfile profile_;
103 MockInvalidationControllerAndroid* invalidation_controller_;
104 InvalidationServiceAndroid invalidation_service_;
105 };
106
107 TEST_F(InvalidationServiceAndroidRegistrationTest, NoObjectRegistration) {
108 syncer::FakeInvalidationHandler handler;
109 invalidation_service().RegisterInvalidationHandler(&handler);
110 EXPECT_EQ(0U, RegisteredObjectCount());
111 invalidation_service().UnregisterInvalidationHandler(&handler);
112 }
113
114 TEST_F(InvalidationServiceAndroidRegistrationTest, UpdateObjectRegistration) {
115 syncer::FakeInvalidationHandler handler;
116 invalidation::ObjectId id1(1, "A");
117 invalidation::ObjectId id2(2, "B");
118 syncer::ObjectIdSet ids;
119 invalidation_service().RegisterInvalidationHandler(&handler);
120
121 // Register for both objects.
122 ids.insert(id1);
123 ids.insert(id2);
124 invalidation_service().UpdateRegisteredInvalidationIds(&handler, ids);
125 EXPECT_EQ(2U, RegisteredObjectCount());
126 EXPECT_TRUE(IsRegistered(id1));
127 EXPECT_TRUE(IsRegistered(id2));
128
129 // Unregister for object 2.
130 ids.erase(id2);
131 invalidation_service().UpdateRegisteredInvalidationIds(&handler, ids);
132 EXPECT_EQ(1U, RegisteredObjectCount());
133 EXPECT_TRUE(IsRegistered(id1));
134
135 // Unregister for object 1.
136 ids.erase(id1);
137 invalidation_service().UpdateRegisteredInvalidationIds(&handler, ids);
138 EXPECT_EQ(0U, RegisteredObjectCount());
139
140 invalidation_service().UnregisterInvalidationHandler(&handler);
141 }
142
143 #if defined(OS_ANDROID)
144
145 class InvalidationServiceAndroidTest : public testing::Test {
146 public:
147 InvalidationServiceAndroidTest()
148 : invalidation_service_(&profile_, new InvalidationControllerAndroid()) {}
149 virtual ~InvalidationServiceAndroidTest() {}
150
151 InvalidationService& invalidation_service() {
152 return invalidation_service_;
153 }
154
155 private:
156 TestingProfile profile_;
157 InvalidationServiceAndroid invalidation_service_;
158 };
159
160 TEST_F(InvalidationServiceAndroidTest, FetchClientId) {
161 const std::string id1 = invalidation_service().GetInvalidatorClientId();
162 ASSERT_FALSE(id1.empty());
163
164 // If nothing else, the ID should be consistent.
165 const std::string id2 = invalidation_service().GetInvalidatorClientId();
166 ASSERT_EQ(id1, id2);
167 }
168
169 #endif
170
171 } // namespace invalidation
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698