OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "base/prefs/pref_service.h" | 5 #include "base/prefs/pref_service.h" |
6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
7 #include "chrome/browser/extensions/api/gcm/gcm_api.h" | 7 #include "chrome/browser/extensions/api/gcm/gcm_api.h" |
8 #include "chrome/browser/extensions/extension_apitest.h" | 8 #include "chrome/browser/extensions/extension_apitest.h" |
9 #include "chrome/browser/extensions/extension_gcm_app_handler.h" | 9 #include "chrome/browser/extensions/extension_gcm_app_handler.h" |
10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
11 #include "chrome/browser/services/gcm/fake_gcm_profile_service.h" | 11 #include "chrome/browser/services/gcm/fake_gcm_profile_service.h" |
12 #include "chrome/browser/services/gcm/gcm_client_factory.h" | 12 #include "chrome/browser/services/gcm/gcm_client_factory.h" |
13 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" | 13 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" |
14 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_switches.h" |
15 #include "chrome/common/pref_names.h" | 15 #include "chrome/common/pref_names.h" |
16 #include "chrome/test/base/ui_test_utils.h" | 16 #include "chrome/test/base/ui_test_utils.h" |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 const char kEventsExtension[] = "gcm/events"; | 20 const char kEventsExtension[] = "gcm/events"; |
21 | 21 |
22 gcm::GCMClient::SendErrorDetails CreateErrorDetails( | 22 gcm::SendErrorDetails CreateErrorDetails( |
23 const std::string& message_id, | 23 const std::string& message_id, |
24 const gcm::GCMClient::Result result, | 24 const gcm::Result result, |
25 const std::string& total_messages) { | 25 const std::string& total_messages) { |
26 gcm::GCMClient::SendErrorDetails error; | 26 gcm::SendErrorDetails error; |
27 error.message_id = message_id; | 27 error.message_id = message_id; |
28 error.result = result; | 28 error.result = result; |
29 error.additional_data["expectedMessageId"] = message_id; | 29 error.additional_data["expectedMessageId"] = message_id; |
30 switch (result) { | 30 switch (result) { |
31 case gcm::GCMClient::ASYNC_OPERATION_PENDING: | 31 case gcm::RESULT_ASYNC_OPERATION_PENDING: |
32 error.additional_data["expectedErrorMessage"] = | 32 error.additional_data["expectedErrorMessage"] = |
33 "Asynchronous operation is pending."; | 33 "Asynchronous operation is pending."; |
34 break; | 34 break; |
35 case gcm::GCMClient::SERVER_ERROR: | 35 case gcm::RESULT_SERVER_ERROR: |
36 error.additional_data["expectedErrorMessage"] = "Server error occurred."; | 36 error.additional_data["expectedErrorMessage"] = "Server error occurred."; |
37 break; | 37 break; |
38 case gcm::GCMClient::NETWORK_ERROR: | 38 case gcm::RESULT_NETWORK_ERROR: |
39 error.additional_data["expectedErrorMessage"] = "Network error occurred."; | 39 error.additional_data["expectedErrorMessage"] = "Network error occurred."; |
40 break; | 40 break; |
41 case gcm::GCMClient::TTL_EXCEEDED: | 41 case gcm::RESULT_TTL_EXCEEDED: |
42 error.additional_data["expectedErrorMessage"] = "Time-to-live exceeded."; | 42 error.additional_data["expectedErrorMessage"] = "Time-to-live exceeded."; |
43 break; | 43 break; |
44 case gcm::GCMClient::UNKNOWN_ERROR: | 44 case gcm::RESULT_UNKNOWN_ERROR: |
45 default: // Default case is the same as UNKNOWN_ERROR | 45 default: // Default case is the same as UNKNOWN_ERROR |
46 error.additional_data["expectedErrorMessage"] = "Unknown error occurred."; | 46 error.additional_data["expectedErrorMessage"] = "Unknown error occurred."; |
47 break; | 47 break; |
48 } | 48 } |
49 error.additional_data["totalMessages"] = total_messages; | 49 error.additional_data["totalMessages"] = total_messages; |
50 return error; | 50 return error; |
51 } | 51 } |
52 | 52 |
53 } // namespace | 53 } // namespace |
54 | 54 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 | 125 |
126 const std::vector<std::string>& sender_ids = | 126 const std::vector<std::string>& sender_ids = |
127 service()->last_registered_sender_ids(); | 127 service()->last_registered_sender_ids(); |
128 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender1") != | 128 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender1") != |
129 sender_ids.end()); | 129 sender_ids.end()); |
130 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender2") != | 130 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender2") != |
131 sender_ids.end()); | 131 sender_ids.end()); |
132 } | 132 } |
133 | 133 |
134 IN_PROC_BROWSER_TEST_F(GcmApiTest, Unregister) { | 134 IN_PROC_BROWSER_TEST_F(GcmApiTest, Unregister) { |
135 service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | 135 service()->AddExpectedUnregisterResponse(gcm::RESULT_SUCCESS); |
136 service()->AddExpectedUnregisterResponse(gcm::GCMClient::SERVER_ERROR); | 136 service()->AddExpectedUnregisterResponse(gcm::RESULT_SERVER_ERROR); |
137 | 137 |
138 ASSERT_TRUE(RunExtensionTest("gcm/functions/unregister")); | 138 ASSERT_TRUE(RunExtensionTest("gcm/functions/unregister")); |
139 } | 139 } |
140 | 140 |
141 IN_PROC_BROWSER_TEST_F(GcmApiTest, SendValidation) { | 141 IN_PROC_BROWSER_TEST_F(GcmApiTest, SendValidation) { |
142 ASSERT_TRUE(RunExtensionTest("gcm/functions/send")); | 142 ASSERT_TRUE(RunExtensionTest("gcm/functions/send")); |
143 } | 143 } |
144 | 144 |
145 IN_PROC_BROWSER_TEST_F(GcmApiTest, SendMessageData) { | 145 IN_PROC_BROWSER_TEST_F(GcmApiTest, SendMessageData) { |
146 StartCollecting(); | 146 StartCollecting(); |
147 ASSERT_TRUE(RunExtensionTest("gcm/functions/send_message_data")); | 147 ASSERT_TRUE(RunExtensionTest("gcm/functions/send_message_data")); |
148 | 148 |
149 EXPECT_EQ("destination-id", service()->last_receiver_id()); | 149 EXPECT_EQ("destination-id", service()->last_receiver_id()); |
150 const gcm::GCMClient::OutgoingMessage& message = | 150 const gcm::OutgoingMessage& message = |
151 service()->last_sent_message(); | 151 service()->last_sent_message(); |
152 gcm::GCMClient::MessageData::const_iterator iter; | 152 gcm::MessageData::const_iterator iter; |
153 | 153 |
154 EXPECT_TRUE((iter = message.data.find("key1")) != message.data.end()); | 154 EXPECT_TRUE((iter = message.data.find("key1")) != message.data.end()); |
155 EXPECT_EQ("value1", iter->second); | 155 EXPECT_EQ("value1", iter->second); |
156 | 156 |
157 EXPECT_TRUE((iter = message.data.find("key2")) != message.data.end()); | 157 EXPECT_TRUE((iter = message.data.find("key2")) != message.data.end()); |
158 EXPECT_EQ("value2", iter->second); | 158 EXPECT_EQ("value2", iter->second); |
159 } | 159 } |
160 | 160 |
161 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessagesDeleted) { | 161 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessagesDeleted) { |
162 ResultCatcher catcher; | 162 ResultCatcher catcher; |
(...skipping 11 matching lines...) Expand all Loading... |
174 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessage) { | 174 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessage) { |
175 ResultCatcher catcher; | 175 ResultCatcher catcher; |
176 catcher.RestrictToProfile(profile()); | 176 catcher.RestrictToProfile(profile()); |
177 | 177 |
178 const extensions::Extension* extension = | 178 const extensions::Extension* extension = |
179 LoadTestExtension(kEventsExtension, "on_message.html"); | 179 LoadTestExtension(kEventsExtension, "on_message.html"); |
180 ASSERT_TRUE(extension); | 180 ASSERT_TRUE(extension); |
181 | 181 |
182 extensions::ExtensionGCMAppHandler app_handler(profile()); | 182 extensions::ExtensionGCMAppHandler app_handler(profile()); |
183 | 183 |
184 gcm::GCMClient::IncomingMessage message; | 184 gcm::IncomingMessage message; |
185 message.data["property1"] = "value1"; | 185 message.data["property1"] = "value1"; |
186 message.data["property2"] = "value2"; | 186 message.data["property2"] = "value2"; |
187 // First message is sent without a collapse key. | 187 // First message is sent without a collapse key. |
188 app_handler.OnMessage(extension->id(), message); | 188 app_handler.OnMessage(extension->id(), message); |
189 | 189 |
190 // Second message carries the same data and a collapse key. | 190 // Second message carries the same data and a collapse key. |
191 message.collapse_key = "collapseKeyValue"; | 191 message.collapse_key = "collapseKeyValue"; |
192 app_handler.OnMessage(extension->id(), message); | 192 app_handler.OnMessage(extension->id(), message); |
193 | 193 |
194 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 194 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
195 } | 195 } |
196 | 196 |
197 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnSendError) { | 197 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnSendError) { |
198 ResultCatcher catcher; | 198 ResultCatcher catcher; |
199 catcher.RestrictToProfile(profile()); | 199 catcher.RestrictToProfile(profile()); |
200 | 200 |
201 const extensions::Extension* extension = | 201 const extensions::Extension* extension = |
202 LoadTestExtension(kEventsExtension, "on_send_error.html"); | 202 LoadTestExtension(kEventsExtension, "on_send_error.html"); |
203 ASSERT_TRUE(extension); | 203 ASSERT_TRUE(extension); |
204 | 204 |
205 std::string total_expected_messages = "5"; | 205 std::string total_expected_messages = "5"; |
206 extensions::ExtensionGCMAppHandler app_handler(profile()); | 206 extensions::ExtensionGCMAppHandler app_handler(profile()); |
207 app_handler.OnSendError( | 207 app_handler.OnSendError( |
208 extension->id(), | 208 extension->id(), |
209 CreateErrorDetails("error_message_1", | 209 CreateErrorDetails("error_message_1", |
210 gcm::GCMClient::ASYNC_OPERATION_PENDING, | 210 gcm::RESULT_ASYNC_OPERATION_PENDING, |
211 total_expected_messages)); | 211 total_expected_messages)); |
212 app_handler.OnSendError( | 212 app_handler.OnSendError( |
213 extension->id(), | 213 extension->id(), |
214 CreateErrorDetails("error_message_2", | 214 CreateErrorDetails("error_message_2", |
215 gcm::GCMClient::SERVER_ERROR, | 215 gcm::RESULT_SERVER_ERROR, |
216 total_expected_messages)); | 216 total_expected_messages)); |
217 app_handler.OnSendError( | 217 app_handler.OnSendError( |
218 extension->id(), | 218 extension->id(), |
219 CreateErrorDetails("error_message_3", | 219 CreateErrorDetails("error_message_3", |
220 gcm::GCMClient::NETWORK_ERROR, | 220 gcm::RESULT_NETWORK_ERROR, |
221 total_expected_messages)); | 221 total_expected_messages)); |
222 app_handler.OnSendError( | 222 app_handler.OnSendError( |
223 extension->id(), | 223 extension->id(), |
224 CreateErrorDetails("error_message_4", | 224 CreateErrorDetails("error_message_4", |
225 gcm::GCMClient::UNKNOWN_ERROR, | 225 gcm::RESULT_UNKNOWN_ERROR, |
226 total_expected_messages)); | 226 total_expected_messages)); |
227 app_handler.OnSendError( | 227 app_handler.OnSendError( |
228 extension->id(), | 228 extension->id(), |
229 CreateErrorDetails("error_message_5", | 229 CreateErrorDetails("error_message_5", |
230 gcm::GCMClient::TTL_EXCEEDED, | 230 gcm::RESULT_TTL_EXCEEDED, |
231 total_expected_messages)); | 231 total_expected_messages)); |
232 | 232 |
233 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 233 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
234 } | 234 } |
235 | 235 |
236 IN_PROC_BROWSER_TEST_F(GcmApiTest, Incognito) { | 236 IN_PROC_BROWSER_TEST_F(GcmApiTest, Incognito) { |
237 ResultCatcher catcher; | 237 ResultCatcher catcher; |
238 catcher.RestrictToProfile(profile()); | 238 catcher.RestrictToProfile(profile()); |
239 ResultCatcher incognito_catcher; | 239 ResultCatcher incognito_catcher; |
240 incognito_catcher.RestrictToProfile(profile()->GetOffTheRecordProfile()); | 240 incognito_catcher.RestrictToProfile(profile()->GetOffTheRecordProfile()); |
241 | 241 |
242 ASSERT_TRUE(RunExtensionTestIncognito("gcm/functions/incognito")); | 242 ASSERT_TRUE(RunExtensionTestIncognito("gcm/functions/incognito")); |
243 | 243 |
244 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 244 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
245 EXPECT_TRUE(incognito_catcher.GetNextResult()) << incognito_catcher.message(); | 245 EXPECT_TRUE(incognito_catcher.GetNextResult()) << incognito_catcher.message(); |
246 } | 246 } |
247 | 247 |
248 } // namespace extensions | 248 } // namespace extensions |
OLD | NEW |