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

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

Issue 23441042: Refactor common invalidation framework types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move DEPS rule Created 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/extensions/api/push_messaging/push_messaging_invalidati on_handler.h" 5 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati on_handler.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati on_handler_delegate.h" 9 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati on_handler_delegate.h"
10 #include "chrome/browser/invalidation/invalidation_service.h" 10 #include "chrome/browser/invalidation/invalidation_service.h"
11 #include "google/cacheinvalidation/types.pb.h" 11 #include "google/cacheinvalidation/types.pb.h"
12 #include "sync/internal_api/public/base/invalidation_test_util.h" 12 #include "sync/internal_api/public/base/invalidation_test_util.h"
13 #include "sync/notifier/object_id_invalidation_map.h"
13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 16
16 using ::testing::_; 17 using ::testing::_;
17 using ::testing::NotNull; 18 using ::testing::NotNull;
18 using ::testing::SaveArg; 19 using ::testing::SaveArg;
19 using ::testing::StrictMock; 20 using ::testing::StrictMock;
21 using syncer::AckHandle;
20 22
21 namespace extensions { 23 namespace extensions {
22 24
23 namespace { 25 namespace {
24 26
25 class MockInvalidationService : public invalidation::InvalidationService { 27 class MockInvalidationService : public invalidation::InvalidationService {
26 public: 28 public:
27 MockInvalidationService(); 29 MockInvalidationService();
28 ~MockInvalidationService(); 30 ~MockInvalidationService();
29 MOCK_METHOD1(RegisterInvalidationHandler, 31 MOCK_METHOD1(RegisterInvalidationHandler,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 EXPECT_CALL(service_, 99 EXPECT_CALL(service_,
98 UpdateRegisteredInvalidationIds(handler_.get(), expected_ids)); 100 UpdateRegisteredInvalidationIds(handler_.get(), expected_ids));
99 handler_->RegisterExtension("cccccccccccccccccccccccccccccccc"); 101 handler_->RegisterExtension("cccccccccccccccccccccccccccccccc");
100 EXPECT_CALL(service_, 102 EXPECT_CALL(service_,
101 UpdateRegisteredInvalidationIds(handler_.get(), 103 UpdateRegisteredInvalidationIds(handler_.get(),
102 syncer::ObjectIdSet())); 104 syncer::ObjectIdSet()));
103 handler_->UnregisterExtension("cccccccccccccccccccccccccccccccc"); 105 handler_->UnregisterExtension("cccccccccccccccccccccccccccccccc");
104 } 106 }
105 107
106 TEST_F(PushMessagingInvalidationHandlerTest, Dispatch) { 108 TEST_F(PushMessagingInvalidationHandlerTest, Dispatch) {
107 syncer::ObjectIdSet ids; 109 syncer::ObjectIdInvalidationMap invalidation_map;
108 ids.insert(invalidation::ObjectId( 110 // A normal invalidation.
109 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, 111 invalidation_map.Insert(
110 "U/dddddddddddddddddddddddddddddddd/0")); 112 syncer::Invalidation::Init(
111 ids.insert(invalidation::ObjectId( 113 invalidation::ObjectId(
112 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, 114 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING,
113 "U/dddddddddddddddddddddddddddddddd/3")); 115 "U/dddddddddddddddddddddddddddddddd/0"),
116 10,
117 "payload"));
118
119 // An unknown version invalidation.
120 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
121 invalidation::ObjectId(
122 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING,
123 "U/dddddddddddddddddddddddddddddddd/3")));
124
114 EXPECT_CALL(delegate_, 125 EXPECT_CALL(delegate_,
115 OnMessage("dddddddddddddddddddddddddddddddd", 0, "payload")); 126 OnMessage("dddddddddddddddddddddddddddddddd", 0, "payload"));
116 EXPECT_CALL(delegate_, 127 EXPECT_CALL(delegate_,
117 OnMessage("dddddddddddddddddddddddddddddddd", 3, "payload")); 128 OnMessage("dddddddddddddddddddddddddddddddd", 3, ""));
129
130 syncer::ObjectIdSet ids = invalidation_map.GetObjectIds();
118 for (syncer::ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); 131 for (syncer::ObjectIdSet::const_iterator it = ids.begin(); it != ids.end();
119 ++it) { 132 ++it) {
120 EXPECT_CALL(service_, AcknowledgeInvalidation( 133 const syncer::Invalidation& inv = invalidation_map.ForObject(*it).back();
121 *it, syncer::AckHandle::InvalidAckHandle())); 134 const syncer::AckHandle& ack_handle = inv.ack_handle();
135 EXPECT_CALL(service_, AcknowledgeInvalidation(*it, ack_handle));
122 } 136 }
123 handler_->OnIncomingInvalidation( 137 handler_->OnIncomingInvalidation(invalidation_map);
124 ObjectIdSetToInvalidationMap(
125 ids,
126 syncer::Invalidation::kUnknownVersion,
127 "payload"));
128 } 138 }
129 139
130 // Tests that malformed object IDs don't trigger spurious callbacks. 140 // Tests that malformed object IDs don't trigger spurious callbacks.
131 TEST_F(PushMessagingInvalidationHandlerTest, DispatchInvalidObjectIds) { 141 TEST_F(PushMessagingInvalidationHandlerTest, DispatchInvalidObjectIds) {
132 syncer::ObjectIdSet ids; 142 syncer::ObjectIdInvalidationMap invalidation_map;
133 // Completely incorrect format. 143 // Completely incorrect format.
134 ids.insert(invalidation::ObjectId( 144 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
135 ipc::invalidation::ObjectSource::TEST, 145 invalidation::ObjectId(
136 "Invalid")); 146 ipc::invalidation::ObjectSource::TEST,
147 "Invalid")));
137 // Incorrect source. 148 // Incorrect source.
138 ids.insert(invalidation::ObjectId( 149 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
139 ipc::invalidation::ObjectSource::TEST, 150 invalidation::ObjectId(
140 "U/dddddddddddddddddddddddddddddddd/3")); 151 ipc::invalidation::ObjectSource::TEST,
152 "U/dddddddddddddddddddddddddddddddd/3")));
141 // Incorrect format type. 153 // Incorrect format type.
142 ids.insert(invalidation::ObjectId( 154 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
143 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, 155 invalidation::ObjectId(
144 "V/dddddddddddddddddddddddddddddddd/3")); 156 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING,
157 "V/dddddddddddddddddddddddddddddddd/3")));
145 // Invalid extension ID length. 158 // Invalid extension ID length.
146 ids.insert(invalidation::ObjectId( 159 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
147 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, 160 invalidation::ObjectId(
148 "U/ddddddddddddddddddddddddddddddddd/3")); 161 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING,
162 "U/ddddddddddddddddddddddddddddddddd/3")));
149 // Non-numeric subchannel. 163 // Non-numeric subchannel.
150 ids.insert(invalidation::ObjectId( 164 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
151 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, 165 invalidation::ObjectId(
152 "U/dddddddddddddddddddddddddddddddd/z")); 166 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING,
167 "U/dddddddddddddddddddddddddddddddd/z")));
153 // Subchannel out of range. 168 // Subchannel out of range.
154 ids.insert(invalidation::ObjectId( 169 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(
155 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, 170 invalidation::ObjectId(
156 "U/dddddddddddddddddddddddddddddddd/4")); 171 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING,
172 "U/dddddddddddddddddddddddddddddddd/4")));
157 // Invalid object IDs should still be acknowledged. 173 // Invalid object IDs should still be acknowledged.
174 syncer::ObjectIdSet ids = invalidation_map.GetObjectIds();
158 for (syncer::ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); 175 for (syncer::ObjectIdSet::const_iterator it = ids.begin(); it != ids.end();
159 ++it) { 176 ++it) {
160 EXPECT_CALL(service_, AcknowledgeInvalidation( 177 const syncer::Invalidation& inv = invalidation_map.ForObject(*it).back();
161 *it, syncer::AckHandle::InvalidAckHandle())); 178 const syncer::AckHandle& ack_handle = inv.ack_handle();
179 EXPECT_CALL(service_, AcknowledgeInvalidation(*it, ack_handle));
162 } 180 }
163 handler_->OnIncomingInvalidation( 181 handler_->OnIncomingInvalidation(invalidation_map);
164 ObjectIdSetToInvalidationMap(
165 ids,
166 syncer::Invalidation::kUnknownVersion,
167 "payload"));
168 } 182 }
169 183
170 } // namespace extensions 184 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler.cc ('k') | chrome/browser/invalidation/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698