| 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 <map> | 5 #include <map> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "chrome/common/extensions/message_bundle.h" | 9 #include "chrome/common/extensions/message_bundle.h" |
| 10 #include "chrome/renderer/extensions/extension_localization_peer.h" | 10 #include "chrome/renderer/extensions/extension_localization_peer.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 const GURL& new_url, | 61 const GURL& new_url, |
| 62 const webkit_glue::ResourceResponseInfo& info, | 62 const webkit_glue::ResourceResponseInfo& info, |
| 63 bool* has_new_first_party_for_cookies, | 63 bool* has_new_first_party_for_cookies, |
| 64 GURL* new_first_party_for_cookies)); | 64 GURL* new_first_party_for_cookies)); |
| 65 MOCK_METHOD1(OnReceivedResponse, void( | 65 MOCK_METHOD1(OnReceivedResponse, void( |
| 66 const webkit_glue::ResourceResponseInfo& info)); | 66 const webkit_glue::ResourceResponseInfo& info)); |
| 67 MOCK_METHOD2(OnDownloadedData, void(int len, int encoded_data_length)); | 67 MOCK_METHOD2(OnDownloadedData, void(int len, int encoded_data_length)); |
| 68 MOCK_METHOD3(OnReceivedData, void(const char* data, | 68 MOCK_METHOD3(OnReceivedData, void(const char* data, |
| 69 int data_length, | 69 int data_length, |
| 70 int encoded_data_length)); | 70 int encoded_data_length)); |
| 71 MOCK_METHOD4(OnCompletedRequest, void( | 71 MOCK_METHOD5(OnCompletedRequest, void( |
| 72 int error_code, | 72 int error_code, |
| 73 bool was_ignored_by_handler, | 73 bool was_ignored_by_handler, |
| 74 bool stale_copy_in_cache, |
| 74 const std::string& security_info, | 75 const std::string& security_info, |
| 75 const base::TimeTicks& completion_time)); | 76 const base::TimeTicks& completion_time)); |
| 76 | 77 |
| 77 private: | 78 private: |
| 78 DISALLOW_COPY_AND_ASSIGN(MockResourceLoaderBridgePeer); | 79 DISALLOW_COPY_AND_ASSIGN(MockResourceLoaderBridgePeer); |
| 79 }; | 80 }; |
| 80 | 81 |
| 81 class ExtensionLocalizationPeerTest : public testing::Test { | 82 class ExtensionLocalizationPeerTest : public testing::Test { |
| 82 protected: | 83 protected: |
| 83 virtual void SetUp() { | 84 virtual void SetUp() { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 } | 136 } |
| 136 | 137 |
| 137 MATCHER_P(IsURLRequestEqual, status, "") { return arg.status() == status; } | 138 MATCHER_P(IsURLRequestEqual, status, "") { return arg.status() == status; } |
| 138 | 139 |
| 139 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestBadURLRequestStatus) { | 140 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestBadURLRequestStatus) { |
| 140 // It will self-delete once it exits OnCompletedRequest. | 141 // It will self-delete once it exits OnCompletedRequest. |
| 141 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); | 142 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); |
| 142 | 143 |
| 143 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 144 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
| 144 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 145 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
| 145 net::ERR_ABORTED, false, "", base::TimeTicks())); | 146 net::ERR_ABORTED, false, false, "", base::TimeTicks())); |
| 146 | 147 |
| 147 filter_peer->OnCompletedRequest( | 148 filter_peer->OnCompletedRequest( |
| 148 net::ERR_FAILED, false, std::string(), base::TimeTicks()); | 149 net::ERR_FAILED, false, false, std::string(), base::TimeTicks()); |
| 149 } | 150 } |
| 150 | 151 |
| 151 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) { | 152 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) { |
| 152 // It will self-delete once it exits OnCompletedRequest. | 153 // It will self-delete once it exits OnCompletedRequest. |
| 153 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); | 154 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); |
| 154 | 155 |
| 155 EXPECT_CALL(*original_peer_, OnReceivedData(_, _, _)).Times(0); | 156 EXPECT_CALL(*original_peer_, OnReceivedData(_, _, _)).Times(0); |
| 156 EXPECT_CALL(*sender_, Send(_)).Times(0); | 157 EXPECT_CALL(*sender_, Send(_)).Times(0); |
| 157 | 158 |
| 158 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 159 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
| 159 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 160 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
| 160 net::OK, false, "", base::TimeTicks())); | 161 net::OK, false, false, "", base::TimeTicks())); |
| 161 | 162 |
| 162 filter_peer->OnCompletedRequest( | 163 filter_peer->OnCompletedRequest( |
| 163 net::OK, false, std::string(), base::TimeTicks()); | 164 net::OK, false, false, std::string(), base::TimeTicks()); |
| 164 } | 165 } |
| 165 | 166 |
| 166 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) { | 167 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) { |
| 167 // It will self-delete once it exits OnCompletedRequest. | 168 // It will self-delete once it exits OnCompletedRequest. |
| 168 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); | 169 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); |
| 169 | 170 |
| 170 SetData(filter_peer, "some text"); | 171 SetData(filter_peer, "some text"); |
| 171 | 172 |
| 172 EXPECT_CALL(*sender_, Send(_)); | 173 EXPECT_CALL(*sender_, Send(_)); |
| 173 | 174 |
| 174 std::string data = GetData(filter_peer); | 175 std::string data = GetData(filter_peer); |
| 175 EXPECT_CALL(*original_peer_, | 176 EXPECT_CALL(*original_peer_, |
| 176 OnReceivedData(StrEq(data.data()), data.length(), -1)).Times(2); | 177 OnReceivedData(StrEq(data.data()), data.length(), -1)).Times(2); |
| 177 | 178 |
| 178 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2); | 179 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2); |
| 179 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 180 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
| 180 net::OK, false, "", base::TimeTicks())).Times(2); | 181 net::OK, false, false, "", base::TimeTicks())).Times(2); |
| 181 | 182 |
| 182 filter_peer->OnCompletedRequest( | 183 filter_peer->OnCompletedRequest( |
| 183 net::OK, false, std::string(), base::TimeTicks()); | 184 net::OK, false, false, std::string(), base::TimeTicks()); |
| 184 | 185 |
| 185 // Test if Send gets called again (it shouldn't be) when first call returned | 186 // Test if Send gets called again (it shouldn't be) when first call returned |
| 186 // an empty dictionary. | 187 // an empty dictionary. |
| 187 filter_peer = | 188 filter_peer = |
| 188 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_1)); | 189 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_1)); |
| 189 SetData(filter_peer, "some text"); | 190 SetData(filter_peer, "some text"); |
| 190 filter_peer->OnCompletedRequest( | 191 filter_peer->OnCompletedRequest( |
| 191 net::OK, false, std::string(), base::TimeTicks()); | 192 net::OK, false, false, std::string(), base::TimeTicks()); |
| 192 } | 193 } |
| 193 | 194 |
| 194 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) { | 195 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) { |
| 195 // It will self-delete once it exits OnCompletedRequest. | 196 // It will self-delete once it exits OnCompletedRequest. |
| 196 ExtensionLocalizationPeer* filter_peer = | 197 ExtensionLocalizationPeer* filter_peer = |
| 197 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_2)); | 198 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_2)); |
| 198 | 199 |
| 199 extensions::L10nMessagesMap messages; | 200 extensions::L10nMessagesMap messages; |
| 200 messages.insert(std::make_pair("text", "new text")); | 201 messages.insert(std::make_pair("text", "new text")); |
| 201 extensions::ExtensionToL10nMessagesMap& l10n_messages_map = | 202 extensions::ExtensionToL10nMessagesMap& l10n_messages_map = |
| 202 *extensions::GetExtensionToL10nMessagesMap(); | 203 *extensions::GetExtensionToL10nMessagesMap(); |
| 203 l10n_messages_map["some_id2"] = messages; | 204 l10n_messages_map["some_id2"] = messages; |
| 204 | 205 |
| 205 SetData(filter_peer, "some __MSG_text__"); | 206 SetData(filter_peer, "some __MSG_text__"); |
| 206 | 207 |
| 207 // We already have messages in memory, Send will be skipped. | 208 // We already have messages in memory, Send will be skipped. |
| 208 EXPECT_CALL(*sender_, Send(_)).Times(0); | 209 EXPECT_CALL(*sender_, Send(_)).Times(0); |
| 209 | 210 |
| 210 // __MSG_text__ gets replaced with "new text". | 211 // __MSG_text__ gets replaced with "new text". |
| 211 std::string data("some new text"); | 212 std::string data("some new text"); |
| 212 EXPECT_CALL(*original_peer_, | 213 EXPECT_CALL(*original_peer_, |
| 213 OnReceivedData(StrEq(data.data()), data.length(), -1)); | 214 OnReceivedData(StrEq(data.data()), data.length(), -1)); |
| 214 | 215 |
| 215 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 216 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
| 216 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 217 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
| 217 net::OK, false, "", base::TimeTicks())); | 218 net::OK, false, false, "", base::TimeTicks())); |
| 218 | 219 |
| 219 filter_peer->OnCompletedRequest( | 220 filter_peer->OnCompletedRequest( |
| 220 net::OK, false, std::string(), base::TimeTicks()); | 221 net::OK, false, false, std::string(), base::TimeTicks()); |
| 221 } | 222 } |
| 222 | 223 |
| 223 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) { | 224 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) { |
| 224 // It will self-delete once it exits OnCompletedRequest. | 225 // It will self-delete once it exits OnCompletedRequest. |
| 225 ExtensionLocalizationPeer* filter_peer = | 226 ExtensionLocalizationPeer* filter_peer = |
| 226 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_3)); | 227 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_3)); |
| 227 | 228 |
| 228 extensions::L10nMessagesMap messages; | 229 extensions::L10nMessagesMap messages; |
| 229 messages.insert(std::make_pair("text", "new text")); | 230 messages.insert(std::make_pair("text", "new text")); |
| 230 extensions::ExtensionToL10nMessagesMap& l10n_messages_map = | 231 extensions::ExtensionToL10nMessagesMap& l10n_messages_map = |
| 231 *extensions::GetExtensionToL10nMessagesMap(); | 232 *extensions::GetExtensionToL10nMessagesMap(); |
| 232 l10n_messages_map["some_id3"] = messages; | 233 l10n_messages_map["some_id3"] = messages; |
| 233 | 234 |
| 234 std::string message("some __MSG_missing_message__"); | 235 std::string message("some __MSG_missing_message__"); |
| 235 SetData(filter_peer, message); | 236 SetData(filter_peer, message); |
| 236 | 237 |
| 237 // We already have messages in memory, Send will be skipped. | 238 // We already have messages in memory, Send will be skipped. |
| 238 EXPECT_CALL(*sender_, Send(_)).Times(0); | 239 EXPECT_CALL(*sender_, Send(_)).Times(0); |
| 239 | 240 |
| 240 // __MSG_missing_message__ is missing, so message stays the same. | 241 // __MSG_missing_message__ is missing, so message stays the same. |
| 241 EXPECT_CALL(*original_peer_, | 242 EXPECT_CALL(*original_peer_, |
| 242 OnReceivedData(StrEq(message.data()), message.length(), -1)); | 243 OnReceivedData(StrEq(message.data()), message.length(), -1)); |
| 243 | 244 |
| 244 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 245 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
| 245 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 246 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
| 246 net::OK, false, "", base::TimeTicks())); | 247 net::OK, false, false, "", base::TimeTicks())); |
| 247 | 248 |
| 248 filter_peer->OnCompletedRequest( | 249 filter_peer->OnCompletedRequest( |
| 249 net::OK, false, std::string(), base::TimeTicks()); | 250 net::OK, false, false, std::string(), base::TimeTicks()); |
| 250 } | 251 } |
| OLD | NEW |