| 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/run_loop.h" | 5 #include "base/run_loop.h" |
| 6 #include "chrome/browser/extensions/api/gcm/gcm_api.h" | 6 #include "chrome/browser/extensions/api/gcm/gcm_api.h" |
| 7 #include "chrome/browser/extensions/extension_apitest.h" | 7 #include "chrome/browser/extensions/extension_apitest.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/services/gcm/fake_gcm_profile_service.h" | 9 #include "chrome/browser/services/gcm/fake_gcm_profile_service.h" |
| 10 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" | 10 #include "chrome/browser/services/gcm/gcm_profile_service_factory.h" |
| 11 #include "chrome/common/extensions/features/feature_channel.h" |
| 11 #include "chrome/test/base/ui_test_utils.h" | 12 #include "chrome/test/base/ui_test_utils.h" |
| 12 | 13 |
| 13 namespace { | 14 namespace { |
| 14 | 15 |
| 15 const char kFunctionsTestExtension[] = "gcm/functions"; | 16 const char kFunctionsTestExtension[] = "gcm/functions"; |
| 16 const char kEventsExtension[] = "gcm/events"; | 17 const char kEventsExtension[] = "gcm/events"; |
| 17 | 18 |
| 18 } // namespace | 19 } // namespace |
| 19 | 20 |
| 20 namespace extensions { | 21 namespace extensions { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 run_loop.RunUntilIdle(); | 57 run_loop.RunUntilIdle(); |
| 57 } | 58 } |
| 58 | 59 |
| 59 gcm::FakeGCMProfileService* GcmApiTest::service() const { | 60 gcm::FakeGCMProfileService* GcmApiTest::service() const { |
| 60 return fake_gcm_profile_service_; | 61 return fake_gcm_profile_service_; |
| 61 } | 62 } |
| 62 | 63 |
| 63 const Extension* GcmApiTest::LoadTestExtension( | 64 const Extension* GcmApiTest::LoadTestExtension( |
| 64 const std::string& extension_path, | 65 const std::string& extension_path, |
| 65 const std::string& page_name) { | 66 const std::string& page_name) { |
| 67 // TODO(jianli): Once the GCM API enters stable, remove |channel|. |
| 68 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN); |
| 66 const Extension* extension = | 69 const Extension* extension = |
| 67 LoadExtension(test_data_dir_.AppendASCII(extension_path)); | 70 LoadExtension(test_data_dir_.AppendASCII(extension_path)); |
| 68 if (extension) { | 71 if (extension) { |
| 69 ui_test_utils::NavigateToURL( | 72 ui_test_utils::NavigateToURL( |
| 70 browser(), extension->GetResourceURL(page_name)); | 73 browser(), extension->GetResourceURL(page_name)); |
| 71 } | 74 } |
| 72 return extension; | 75 return extension; |
| 73 } | 76 } |
| 74 | 77 |
| 75 // http://crbug.com/177163 and http://crbug.com/324982 | 78 // http://crbug.com/177163 |
| 76 #if defined(OS_WIN) | 79 #if defined(OS_WIN) |
| 77 #define MAYBE_RegisterValidation DISABLED_RegisterValidation | 80 #define MAYBE_RegisterValidation DISABLED_RegisterValidation |
| 78 #else | 81 #else |
| 79 #define MAYBE_RegisterValidation RegisterValidation | 82 #define MAYBE_RegisterValidation RegisterValidation |
| 80 #endif | 83 #endif |
| 81 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_RegisterValidation) { | 84 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_RegisterValidation) { |
| 82 EXPECT_TRUE(RunExtensionSubtest(kFunctionsTestExtension, | 85 EXPECT_TRUE(RunExtensionSubtest(kFunctionsTestExtension, |
| 83 "register_validation.html")); | 86 "register_validation.html")); |
| 84 } | 87 } |
| 85 | 88 |
| 86 // http://crbug.com/177163 and http://crbug.com/324982 | 89 IN_PROC_BROWSER_TEST_F(GcmApiTest, Register) { |
| 87 #if defined(OS_WIN) | |
| 88 #define MAYBE_Register DISABLED_Register | |
| 89 #else | |
| 90 #define MAYBE_Register Register | |
| 91 #endif | |
| 92 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_Register) { | |
| 93 StartCollecting(); | 90 StartCollecting(); |
| 94 const extensions::Extension* extension = | 91 const extensions::Extension* extension = |
| 95 LoadTestExtension(kFunctionsTestExtension, "register.html"); | 92 LoadTestExtension(kFunctionsTestExtension, "register.html"); |
| 96 ASSERT_TRUE(extension); | 93 ASSERT_TRUE(extension); |
| 97 | 94 |
| 98 WaitUntilIdle(); | 95 WaitUntilIdle(); |
| 99 | 96 |
| 100 EXPECT_EQ(extension->id(), service()->last_registered_app_id()); | 97 EXPECT_EQ(extension->id(), service()->last_registered_app_id()); |
| 101 // SHA1 of the public key provided in manifest.json. | 98 // SHA1 of the public key provided in manifest.json. |
| 102 EXPECT_EQ("26469186F238EE08FA71C38311C6990F61D40DCA", | 99 EXPECT_EQ("26469186F238EE08FA71C38311C6990F61D40DCA", |
| 103 service()->last_registered_cert()); | 100 service()->last_registered_cert()); |
| 104 const std::vector<std::string>& sender_ids = | 101 const std::vector<std::string>& sender_ids = |
| 105 service()->last_registered_sender_ids(); | 102 service()->last_registered_sender_ids(); |
| 106 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender1") != | 103 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender1") != |
| 107 sender_ids.end()); | 104 sender_ids.end()); |
| 108 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender2") != | 105 EXPECT_TRUE(std::find(sender_ids.begin(), sender_ids.end(), "Sender2") != |
| 109 sender_ids.end()); | 106 sender_ids.end()); |
| 110 } | 107 } |
| 111 | 108 |
| 112 // http://crbug.com/177163 and http://crbug.com/324982 | 109 // http://crbug.com/177163 |
| 113 #if defined(OS_WIN) | 110 #if defined(OS_WIN) |
| 114 #define MAYBE_SendValidation DISABLED_SendValidation | 111 #define MAYBE_SendValidation DISABLED_SendValidation |
| 115 #else | 112 #else |
| 116 #define MAYBE_SendValidation SendValidation | 113 #define MAYBE_SendValidation SendValidation |
| 117 #endif | 114 #endif |
| 118 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_SendValidation) { | 115 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_SendValidation) { |
| 119 EXPECT_TRUE(RunExtensionSubtest(kFunctionsTestExtension, "send.html")); | 116 EXPECT_TRUE(RunExtensionSubtest(kFunctionsTestExtension, "send.html")); |
| 120 } | 117 } |
| 121 | 118 |
| 122 // http://crbug.com/177163 and http://crbug.com/324982 | 119 IN_PROC_BROWSER_TEST_F(GcmApiTest, SendMessageData) { |
| 123 #if defined(OS_WIN) | |
| 124 #define MAYBE_SendMessageData DISABLED_SendMessageData | |
| 125 #else | |
| 126 #define MAYBE_SendMessageData SendMessageData | |
| 127 #endif | |
| 128 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_SendMessageData) { | |
| 129 StartCollecting(); | 120 StartCollecting(); |
| 130 const extensions::Extension* extension = | 121 const extensions::Extension* extension = |
| 131 LoadTestExtension(kFunctionsTestExtension, "send_message_data.html"); | 122 LoadTestExtension(kFunctionsTestExtension, "send_message_data.html"); |
| 132 ASSERT_TRUE(extension); | 123 ASSERT_TRUE(extension); |
| 133 | 124 |
| 134 WaitUntilIdle(); | 125 WaitUntilIdle(); |
| 135 | 126 |
| 136 EXPECT_EQ("destination-id", service()->last_receiver_id()); | 127 EXPECT_EQ("destination-id", service()->last_receiver_id()); |
| 137 const gcm::GCMClient::OutgoingMessage& message = | 128 const gcm::GCMClient::OutgoingMessage& message = |
| 138 service()->last_sent_message(); | 129 service()->last_sent_message(); |
| 139 gcm::GCMClient::MessageData::const_iterator iter; | 130 gcm::GCMClient::MessageData::const_iterator iter; |
| 140 | 131 |
| 141 EXPECT_TRUE((iter = message.data.find("key1")) != message.data.end()); | 132 EXPECT_TRUE((iter = message.data.find("key1")) != message.data.end()); |
| 142 EXPECT_EQ("value1", iter->second); | 133 EXPECT_EQ("value1", iter->second); |
| 143 | 134 |
| 144 EXPECT_TRUE((iter = message.data.find("key2")) != message.data.end()); | 135 EXPECT_TRUE((iter = message.data.find("key2")) != message.data.end()); |
| 145 EXPECT_EQ("value2", iter->second); | 136 EXPECT_EQ("value2", iter->second); |
| 146 } | 137 } |
| 147 | 138 |
| 148 // http://crbug.com/177163 and http://crbug/324982 | 139 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessagesDeleted) { |
| 149 #if defined(OS_WIN) && !defined(NDEBUG) | |
| 150 #define MAYBE_OnMessagesDeleted DISABLED_OnMessagesDeleted | |
| 151 #else | |
| 152 #define MAYBE_OnMessagesDeleted OnMessagesDeleted | |
| 153 #endif | |
| 154 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_OnMessagesDeleted) { | |
| 155 ResultCatcher catcher; | 140 ResultCatcher catcher; |
| 156 catcher.RestrictToProfile(profile()); | 141 catcher.RestrictToProfile(profile()); |
| 157 | 142 |
| 158 const extensions::Extension* extension = | 143 const extensions::Extension* extension = |
| 159 LoadTestExtension(kEventsExtension, "on_messages_deleted.html"); | 144 LoadTestExtension(kEventsExtension, "on_messages_deleted.html"); |
| 160 ASSERT_TRUE(extension); | 145 ASSERT_TRUE(extension); |
| 161 | 146 |
| 162 GcmJsEventRouter router(profile()); | 147 GcmJsEventRouter router(profile()); |
| 163 router.OnMessagesDeleted(extension->id()); | 148 router.OnMessagesDeleted(extension->id()); |
| 164 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 149 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 165 } | 150 } |
| 166 | 151 |
| 167 // http://crbug.com/177163 and http://crbug/324982 | 152 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessage) { |
| 168 #if defined(OS_WIN) && !defined(NDEBUG) | |
| 169 #define MAYBE_OnMessage DISABLED_OnMessage | |
| 170 #else | |
| 171 #define MAYBE_OnMessage OnMessage | |
| 172 #endif | |
| 173 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_OnMessage) { | |
| 174 ResultCatcher catcher; | 153 ResultCatcher catcher; |
| 175 catcher.RestrictToProfile(profile()); | 154 catcher.RestrictToProfile(profile()); |
| 176 | 155 |
| 177 const extensions::Extension* extension = | 156 const extensions::Extension* extension = |
| 178 LoadTestExtension(kEventsExtension, "on_message.html"); | 157 LoadTestExtension(kEventsExtension, "on_message.html"); |
| 179 ASSERT_TRUE(extension); | 158 ASSERT_TRUE(extension); |
| 180 | 159 |
| 181 GcmJsEventRouter router(profile()); | 160 GcmJsEventRouter router(profile()); |
| 182 | 161 |
| 183 gcm::GCMClient::IncomingMessage message; | 162 gcm::GCMClient::IncomingMessage message; |
| 184 message.data["property1"] = "value1"; | 163 message.data["property1"] = "value1"; |
| 185 message.data["property2"] = "value2"; | 164 message.data["property2"] = "value2"; |
| 186 router.OnMessage(extension->id(), message); | 165 router.OnMessage(extension->id(), message); |
| 187 | 166 |
| 188 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 167 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 189 } | 168 } |
| 190 | 169 |
| 191 // http://crbug.com/177163 and http://crbug/324982 | 170 IN_PROC_BROWSER_TEST_F(GcmApiTest, OnSendError) { |
| 192 #if defined(OS_WIN) && !defined(NDEBUG) | |
| 193 #define MAYBE_OnSendError DISABLED_OnSendError | |
| 194 #else | |
| 195 #define MAYBE_OnSendError OnSendError | |
| 196 #endif | |
| 197 IN_PROC_BROWSER_TEST_F(GcmApiTest, MAYBE_OnSendError) { | |
| 198 ResultCatcher catcher; | 171 ResultCatcher catcher; |
| 199 catcher.RestrictToProfile(profile()); | 172 catcher.RestrictToProfile(profile()); |
| 200 | 173 |
| 201 const extensions::Extension* extension = | 174 const extensions::Extension* extension = |
| 202 LoadTestExtension(kEventsExtension, "on_send_error.html"); | 175 LoadTestExtension(kEventsExtension, "on_send_error.html"); |
| 203 ASSERT_TRUE(extension); | 176 ASSERT_TRUE(extension); |
| 204 | 177 |
| 205 GcmJsEventRouter router(profile()); | 178 GcmJsEventRouter router(profile()); |
| 206 router.OnSendError(extension->id(), "error_message_1", | 179 router.OnSendError(extension->id(), "error_message_1", |
| 207 gcm::GCMClient::ASYNC_OPERATION_PENDING); | 180 gcm::GCMClient::ASYNC_OPERATION_PENDING); |
| 208 router.OnSendError(extension->id(), "error_message_2", | 181 router.OnSendError(extension->id(), "error_message_2", |
| 209 gcm::GCMClient::SERVER_ERROR); | 182 gcm::GCMClient::SERVER_ERROR); |
| 210 router.OnSendError(extension->id(), "error_message_3", | 183 router.OnSendError(extension->id(), "error_message_3", |
| 211 gcm::GCMClient::NETWORK_ERROR); | 184 gcm::GCMClient::NETWORK_ERROR); |
| 212 router.OnSendError(extension->id(), "error_message_4", | 185 router.OnSendError(extension->id(), "error_message_4", |
| 213 gcm::GCMClient::UNKNOWN_ERROR); | 186 gcm::GCMClient::UNKNOWN_ERROR); |
| 214 router.OnSendError(extension->id(), "error_message_5", | 187 router.OnSendError(extension->id(), "error_message_5", |
| 215 gcm::GCMClient::TTL_EXCEEDED); | 188 gcm::GCMClient::TTL_EXCEEDED); |
| 216 | 189 |
| 217 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 190 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 218 } | 191 } |
| 219 | 192 |
| 220 } // namespace extensions | 193 } // namespace extensions |
| OLD | NEW |