| 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 |