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

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

Issue 23643002: Enable invalidations for arbitrary objects on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 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 (c) 2013 The Chromium Authors. All rights reserved. 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 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 "chrome/browser/invalidation/invalidation_service_android.h" 5 #include "chrome/browser/invalidation/invalidation_service_android.h"
6 6
7 #include "chrome/browser/chrome_notification_types.h" 7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/invalidation/invalidation_controller_android.h"
8 #include "chrome/browser/invalidation/invalidation_service_factory.h" 9 #include "chrome/browser/invalidation/invalidation_service_factory.h"
9 #include "chrome/browser/invalidation/invalidation_service_test_template.h" 10 #include "chrome/browser/invalidation/invalidation_service_test_template.h"
10 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile.h"
11 #include "content/public/browser/notification_service.h" 12 #include "content/public/browser/notification_service.h"
13 #include "sync/notifier/fake_invalidation_handler.h"
12 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
13 15
14 namespace invalidation { 16 namespace invalidation {
15 17
18 class MockInvalidationControllerAndroid : public InvalidationControllerAndroid {
19 public:
20 MockInvalidationControllerAndroid() {}
21 virtual ~MockInvalidationControllerAndroid() {}
22
23 virtual void SetRegisteredObjectIds(const syncer::ObjectIdSet& ids) OVERRIDE {
24 registered_ids_ = ids;
25 }
26
27 syncer::ObjectIdSet registered_ids_;
28 };
29
16 class InvalidationServiceAndroidTestDelegate { 30 class InvalidationServiceAndroidTestDelegate {
17 public: 31 public:
18 InvalidationServiceAndroidTestDelegate() { } 32 InvalidationServiceAndroidTestDelegate() { }
19 33
20 ~InvalidationServiceAndroidTestDelegate() { 34 ~InvalidationServiceAndroidTestDelegate() {
21 DestroyInvalidationService(); 35 DestroyInvalidationService();
22 } 36 }
23 37
24 void CreateInvalidationService() { 38 void CreateInvalidationService() {
25 profile_.reset(new TestingProfile()); 39 profile_.reset(new TestingProfile());
26 invalidation_service_android_.reset( 40 invalidation_service_android_.reset(
27 new InvalidationServiceAndroid(profile_.get())); 41 new InvalidationServiceAndroid(
42 profile_.get(),
43 new MockInvalidationControllerAndroid()));
28 } 44 }
29 45
30 InvalidationService* GetInvalidationService() { 46 InvalidationService* GetInvalidationService() {
31 return invalidation_service_android_.get(); 47 return invalidation_service_android_.get();
32 } 48 }
33 49
34 void DestroyInvalidationService() { 50 void DestroyInvalidationService() {
35 invalidation_service_android_->Shutdown(); 51 invalidation_service_android_->Shutdown();
36 } 52 }
37 53
(...skipping 11 matching lines...) Expand all
49 } 65 }
50 66
51 scoped_ptr<TestingProfile> profile_; 67 scoped_ptr<TestingProfile> profile_;
52 scoped_ptr<InvalidationServiceAndroid> invalidation_service_android_; 68 scoped_ptr<InvalidationServiceAndroid> invalidation_service_android_;
53 }; 69 };
54 70
55 INSTANTIATE_TYPED_TEST_CASE_P( 71 INSTANTIATE_TYPED_TEST_CASE_P(
56 AndroidInvalidationServiceTest, InvalidationServiceTest, 72 AndroidInvalidationServiceTest, InvalidationServiceTest,
57 InvalidationServiceAndroidTestDelegate); 73 InvalidationServiceAndroidTestDelegate);
58 74
75 class InvalidationServiceAndroidRegistrationTest : public testing::Test {
76 protected:
77 InvalidationServiceAndroidRegistrationTest()
78 : invalidation_controller_(new MockInvalidationControllerAndroid()),
79 invalidation_service_(&profile_, invalidation_controller_) {}
80
81 virtual ~InvalidationServiceAndroidRegistrationTest() {
82 invalidation_service_.Shutdown();
83 }
84
85 // Get the invalidation service being tested.
86 InvalidationService& invalidation_service() {
87 return invalidation_service_;
88 }
89
90 // Get the number of objects which are registered.
91 size_t RegisteredObjectCount() {
92 return registered_ids().size();
93 }
94
95 // Determines if the given object id is registered with the invalidation
96 // controller.
97 bool IsRegistered(const invalidation::ObjectId& id) {
98 return registered_ids().find(id) != registered_ids().end();
99 }
100
101 private:
102 // Get the set of objects registered with the invalidation controller.
103 const syncer::ObjectIdSet& registered_ids() {
104 return invalidation_controller_->registered_ids_;
105 }
106
107 TestingProfile profile_;
108 MockInvalidationControllerAndroid* invalidation_controller_;
109 InvalidationServiceAndroid invalidation_service_;
110 };
111
112 TEST_F(InvalidationServiceAndroidRegistrationTest, NoObjectRegistration) {
113 syncer::FakeInvalidationHandler handler;
114 invalidation_service().RegisterInvalidationHandler(&handler);
115 EXPECT_EQ(0U, RegisteredObjectCount());
116 invalidation_service().UnregisterInvalidationHandler(&handler);
117 }
118
119 TEST_F(InvalidationServiceAndroidRegistrationTest, UpdateObjectRegistration) {
120 syncer::FakeInvalidationHandler handler;
121 invalidation::ObjectId id1(1, "A");
122 invalidation::ObjectId id2(2, "B");
123 syncer::ObjectIdSet ids;
124 invalidation_service().RegisterInvalidationHandler(&handler);
125
126 // Register for both objects.
127 ids.insert(id1);
128 ids.insert(id2);
129 invalidation_service().UpdateRegisteredInvalidationIds(&handler, ids);
130 EXPECT_EQ(2U, RegisteredObjectCount());
131 EXPECT_TRUE(IsRegistered(id1));
132 EXPECT_TRUE(IsRegistered(id2));
133
134 // Unregister for object 2.
135 ids.erase(id2);
136 invalidation_service().UpdateRegisteredInvalidationIds(&handler, ids);
137 EXPECT_EQ(1U, RegisteredObjectCount());
138 EXPECT_TRUE(IsRegistered(id1));
139
140 // Unregister for object 1.
141 ids.erase(id1);
142 invalidation_service().UpdateRegisteredInvalidationIds(&handler, ids);
143 EXPECT_EQ(0U, RegisteredObjectCount());
144
145 invalidation_service().UnregisterInvalidationHandler(&handler);
146 }
147
59 } // namespace invalidation 148 } // namespace invalidation
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698