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

Side by Side Diff: chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler_unittest.cc

Issue 10826156: Plumb invalidations from Tango to the extensions code for the Push Messaging API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: snapshot Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati on_handler.h"
6
7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati on_handler_observer.h"
10 #include "chrome/browser/sync/invalidation_service.h"
11 #include "google/cacheinvalidation/types.pb.h"
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 using ::testing::_;
16 using ::testing::NotNull;
17 using ::testing::StrictMock;
18
19 namespace extensions {
20
21 namespace {
22
23 class MockInvalidationService : public InvalidationService {
24 public:
25 MockInvalidationService();
26 ~MockInvalidationService();
27 MOCK_METHOD2(UpdateRegisteredInvalidationIds,
28 void(syncer::SyncNotifierObserver*, const syncer::ObjectIdSet&));
29
30 private:
31 DISALLOW_COPY_AND_ASSIGN(MockInvalidationService);
32 };
33
34 MockInvalidationService::MockInvalidationService() {}
35 MockInvalidationService::~MockInvalidationService() {}
36
37 class MockInvalidationHandlerObserver
38 : public PushMessagingInvalidationHandlerObserver {
39 public:
40 MockInvalidationHandlerObserver();
41 ~MockInvalidationHandlerObserver();
42 MOCK_METHOD3(OnMessage,
43 void(const std::string&, int, const std::string&));
44
45 private:
46 DISALLOW_COPY_AND_ASSIGN(MockInvalidationHandlerObserver);
47 };
48
49 MockInvalidationHandlerObserver::MockInvalidationHandlerObserver() {}
50 MockInvalidationHandlerObserver::~MockInvalidationHandlerObserver() {}
51
52 class PushMessagingInvalidationHandlerTest : public ::testing::Test {
53 protected:
54 virtual void SetUp() OVERRIDE {
55 EXPECT_CALL(service_,
56 UpdateRegisteredInvalidationIds(NotNull(),
57 syncer::ObjectIdSet()));
58 handler_.reset(new PushMessagingInvalidationHandler(
59 &service_, &observer_, std::set<std::string>()));
60 }
61 virtual void TearDown() OVERRIDE {
62 EXPECT_CALL(service_,
63 UpdateRegisteredInvalidationIds(handler_.get(),
64 syncer::ObjectIdSet()));
65 handler_.reset();
66 }
67 StrictMock<MockInvalidationService> service_;
68 StrictMock<MockInvalidationHandlerObserver> observer_;
69 scoped_ptr<PushMessagingInvalidationHandler> handler_;
70 };
71
72 // Tests that we correctly register any extensions passed in when constructed.
73 TEST_F(PushMessagingInvalidationHandlerTest, Construction) {
74 TearDown();
75
76 std::set<std::string> extension_ids;
77 extension_ids.insert("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
78 extension_ids.insert("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
79 syncer::ObjectIdSet expected_ids;
80 expected_ids.insert(invalidation::ObjectId(
81 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
82 "UPMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0"));
83 expected_ids.insert(invalidation::ObjectId(
84 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
85 "UPMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1"));
86 expected_ids.insert(invalidation::ObjectId(
87 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
88 "UPMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2"));
89 expected_ids.insert(invalidation::ObjectId(
90 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
91 "UPMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3"));
92 expected_ids.insert(invalidation::ObjectId(
93 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
94 "UPMbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0"));
95 expected_ids.insert(invalidation::ObjectId(
96 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
97 "UPMbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb1"));
98 expected_ids.insert(invalidation::ObjectId(
99 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
100 "UPMbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb2"));
101 expected_ids.insert(invalidation::ObjectId(
102 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
103 "UPMbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb3"));
104
105 EXPECT_CALL(service_,
106 UpdateRegisteredInvalidationIds(NotNull(), expected_ids));
107 handler_.reset(new PushMessagingInvalidationHandler(
108 &service_, &observer_, extension_ids));
109 }
110
111 TEST_F(PushMessagingInvalidationHandlerTest, RegisterUnregisterExtension) {
112 syncer::ObjectIdSet expected_ids;
113 expected_ids.insert(invalidation::ObjectId(
114 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
115 "UPMcccccccccccccccccccccccccccccccc0"));
116 expected_ids.insert(invalidation::ObjectId(
117 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
118 "UPMcccccccccccccccccccccccccccccccc1"));
119 expected_ids.insert(invalidation::ObjectId(
120 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
121 "UPMcccccccccccccccccccccccccccccccc2"));
122 expected_ids.insert(invalidation::ObjectId(
123 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
124 "UPMcccccccccccccccccccccccccccccccc3"));
125 EXPECT_CALL(service_,
126 UpdateRegisteredInvalidationIds(handler_.get(), expected_ids));
127 handler_->RegisterExtension("cccccccccccccccccccccccccccccccc");
128 EXPECT_CALL(service_,
129 UpdateRegisteredInvalidationIds(handler_.get(),
130 syncer::ObjectIdSet()));
131 handler_->UnregisterExtension("cccccccccccccccccccccccccccccccc");
132 }
133
134 TEST_F(PushMessagingInvalidationHandlerTest, Dispatch) {
135 syncer::ObjectIdSet ids;
136 ids.insert(invalidation::ObjectId(
137 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
138 "UPMdddddddddddddddddddddddddddddddd0"));
139 ids.insert(invalidation::ObjectId(
140 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
141 "UPMdddddddddddddddddddddddddddddddd3"));
142 EXPECT_CALL(observer_,
143 OnMessage("dddddddddddddddddddddddddddddddd", 0, "payload"));
144 EXPECT_CALL(observer_,
145 OnMessage("dddddddddddddddddddddddddddddddd", 3, "payload"));
146 handler_->OnIncomingNotification(ObjectIdSetToPayloadMap(ids, "payload"),
147 syncer::REMOTE_NOTIFICATION);
148 }
149
150 // Tests that malformed object IDs don't trigger spurious callbacks.
151 TEST_F(PushMessagingInvalidationHandlerTest, DispatchInvalidObjectIds) {
152 syncer::ObjectIdSet ids;
153 // Incorrect source.
154 ids.insert(invalidation::ObjectId(
155 ipc::invalidation::ObjectSource::TEST,
156 "UPMdddddddddddddddddddddddddddddddd3"));
157 // Incorrect length.
158 ids.insert(invalidation::ObjectId(
159 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
160 "UPMdddddddddddddddddddddddddddddddd34"));
161 // Incorrect format type.
162 ids.insert(invalidation::ObjectId(
163 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
164 "VPMdddddddddddddddddddddddddddddddd3"));
165 // Incorrect project ID.
166 ids.insert(invalidation::ObjectId(
167 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
168 "UPCdddddddddddddddddddddddddddddddd3"));
169 // Non-numeric subchannel.
170 ids.insert(invalidation::ObjectId(
171 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
172 "UPCddddddddddddddddddddddddddddddddz"));
173 // Subchannel out of range.
174 ids.insert(invalidation::ObjectId(
175 ipc::invalidation::ObjectSource::CHROME_COMPONENTS,
176 "UPCdddddddddddddddddddddddddddddddd4"));
177 handler_->OnIncomingNotification(ObjectIdSetToPayloadMap(ids, "payload"),
178 syncer::REMOTE_NOTIFICATION);
179 }
180
181 } // namespace
182
183 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698