OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/extension_message_bundle.h" | 9 #include "chrome/common/extensions/extension_message_bundle.h" |
10 #include "chrome/common/extensions/extension_localization_peer.h" | 10 #include "chrome/common/extensions/extension_localization_peer.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 const GURL& new_url, | 62 const GURL& new_url, |
63 const webkit_glue::ResourceResponseInfo& info, | 63 const webkit_glue::ResourceResponseInfo& info, |
64 bool* has_new_first_party_for_cookies, | 64 bool* has_new_first_party_for_cookies, |
65 GURL* new_first_party_for_cookies)); | 65 GURL* new_first_party_for_cookies)); |
66 MOCK_METHOD1(OnReceivedResponse, void( | 66 MOCK_METHOD1(OnReceivedResponse, void( |
67 const webkit_glue::ResourceResponseInfo& info)); | 67 const webkit_glue::ResourceResponseInfo& info)); |
68 MOCK_METHOD1(OnDownloadedData, void(int len)); | 68 MOCK_METHOD1(OnDownloadedData, void(int len)); |
69 MOCK_METHOD3(OnReceivedData, void(const char* data, | 69 MOCK_METHOD3(OnReceivedData, void(const char* data, |
70 int data_length, | 70 int data_length, |
71 int encoded_data_length)); | 71 int encoded_data_length)); |
72 MOCK_METHOD3(OnCompletedRequest, void( | 72 MOCK_METHOD4(OnCompletedRequest, void( |
73 const net::URLRequestStatus& status, | 73 const net::URLRequestStatus& status, |
| 74 bool handled_externally, |
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 IsURLRequestEqual(net::URLRequestStatus::CANCELED), "", base::TimeTicks())); | 146 IsURLRequestEqual(net::URLRequestStatus::CANCELED), _, |
| 147 "", base::TimeTicks())); |
146 | 148 |
147 net::URLRequestStatus status; | 149 net::URLRequestStatus status; |
148 status.set_status(net::URLRequestStatus::FAILED); | 150 status.set_status(net::URLRequestStatus::FAILED); |
149 filter_peer->OnCompletedRequest(status, "", base::TimeTicks()); | 151 filter_peer->OnCompletedRequest(status, false, "", base::TimeTicks()); |
150 } | 152 } |
151 | 153 |
152 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) { | 154 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) { |
153 // It will self-delete once it exits OnCompletedRequest. | 155 // It will self-delete once it exits OnCompletedRequest. |
154 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); | 156 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); |
155 | 157 |
156 EXPECT_CALL(*original_peer_, OnReceivedData(_, _, _)).Times(0); | 158 EXPECT_CALL(*original_peer_, OnReceivedData(_, _, _)).Times(0); |
157 EXPECT_CALL(*sender_, Send(_)).Times(0); | 159 EXPECT_CALL(*sender_, Send(_)).Times(0); |
158 | 160 |
159 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 161 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
160 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 162 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
161 IsURLRequestEqual(net::URLRequestStatus::SUCCESS), "", | 163 IsURLRequestEqual(net::URLRequestStatus::SUCCESS), _, "", |
162 base::TimeTicks())); | 164 base::TimeTicks())); |
163 | 165 |
164 net::URLRequestStatus status; | 166 net::URLRequestStatus status; |
165 status.set_status(net::URLRequestStatus::SUCCESS); | 167 status.set_status(net::URLRequestStatus::SUCCESS); |
166 filter_peer->OnCompletedRequest(status, "", base::TimeTicks()); | 168 filter_peer->OnCompletedRequest(status, false, "", base::TimeTicks()); |
167 } | 169 } |
168 | 170 |
169 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) { | 171 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) { |
170 // It will self-delete once it exits OnCompletedRequest. | 172 // It will self-delete once it exits OnCompletedRequest. |
171 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); | 173 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); |
172 | 174 |
173 SetData(filter_peer, "some text"); | 175 SetData(filter_peer, "some text"); |
174 | 176 |
175 EXPECT_CALL(*sender_, Send(_)); | 177 EXPECT_CALL(*sender_, Send(_)); |
176 | 178 |
177 std::string data = GetData(filter_peer); | 179 std::string data = GetData(filter_peer); |
178 EXPECT_CALL(*original_peer_, | 180 EXPECT_CALL(*original_peer_, |
179 OnReceivedData(StrEq(data.data()), data.length(), -1)).Times(2); | 181 OnReceivedData(StrEq(data.data()), data.length(), -1)).Times(2); |
180 | 182 |
181 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2); | 183 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2); |
182 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 184 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
183 IsURLRequestEqual( | 185 IsURLRequestEqual( |
184 net::URLRequestStatus::SUCCESS), "", base::TimeTicks())).Times(2); | 186 net::URLRequestStatus::SUCCESS), _, "", base::TimeTicks())).Times(2); |
185 | 187 |
186 net::URLRequestStatus status; | 188 net::URLRequestStatus status; |
187 status.set_status(net::URLRequestStatus::SUCCESS); | 189 status.set_status(net::URLRequestStatus::SUCCESS); |
188 filter_peer->OnCompletedRequest(status, "", base::TimeTicks()); | 190 filter_peer->OnCompletedRequest(status, false, "", base::TimeTicks()); |
189 | 191 |
190 // Test if Send gets called again (it shouldn't be) when first call returned | 192 // Test if Send gets called again (it shouldn't be) when first call returned |
191 // an empty dictionary. | 193 // an empty dictionary. |
192 filter_peer = | 194 filter_peer = |
193 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_1)); | 195 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_1)); |
194 SetData(filter_peer, "some text"); | 196 SetData(filter_peer, "some text"); |
195 filter_peer->OnCompletedRequest(status, "", base::TimeTicks()); | 197 filter_peer->OnCompletedRequest(status, false, "", base::TimeTicks()); |
196 } | 198 } |
197 | 199 |
198 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) { | 200 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) { |
199 // It will self-delete once it exits OnCompletedRequest. | 201 // It will self-delete once it exits OnCompletedRequest. |
200 ExtensionLocalizationPeer* filter_peer = | 202 ExtensionLocalizationPeer* filter_peer = |
201 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_2)); | 203 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_2)); |
202 | 204 |
203 L10nMessagesMap messages; | 205 L10nMessagesMap messages; |
204 messages.insert(std::make_pair("text", "new text")); | 206 messages.insert(std::make_pair("text", "new text")); |
205 ExtensionToL10nMessagesMap& l10n_messages_map = | 207 ExtensionToL10nMessagesMap& l10n_messages_map = |
206 *GetExtensionToL10nMessagesMap(); | 208 *GetExtensionToL10nMessagesMap(); |
207 l10n_messages_map["some_id2"] = messages; | 209 l10n_messages_map["some_id2"] = messages; |
208 | 210 |
209 SetData(filter_peer, "some __MSG_text__"); | 211 SetData(filter_peer, "some __MSG_text__"); |
210 | 212 |
211 // We already have messages in memory, Send will be skipped. | 213 // We already have messages in memory, Send will be skipped. |
212 EXPECT_CALL(*sender_, Send(_)).Times(0); | 214 EXPECT_CALL(*sender_, Send(_)).Times(0); |
213 | 215 |
214 // __MSG_text__ gets replaced with "new text". | 216 // __MSG_text__ gets replaced with "new text". |
215 std::string data("some new text"); | 217 std::string data("some new text"); |
216 EXPECT_CALL(*original_peer_, | 218 EXPECT_CALL(*original_peer_, |
217 OnReceivedData(StrEq(data.data()), data.length(), -1)); | 219 OnReceivedData(StrEq(data.data()), data.length(), -1)); |
218 | 220 |
219 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 221 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
220 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 222 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
221 IsURLRequestEqual(net::URLRequestStatus::SUCCESS), "", | 223 IsURLRequestEqual(net::URLRequestStatus::SUCCESS), _, "", |
222 base::TimeTicks())); | 224 base::TimeTicks())); |
223 | 225 |
224 net::URLRequestStatus status; | 226 net::URLRequestStatus status; |
225 status.set_status(net::URLRequestStatus::SUCCESS); | 227 status.set_status(net::URLRequestStatus::SUCCESS); |
226 filter_peer->OnCompletedRequest(status, "", base::TimeTicks()); | 228 filter_peer->OnCompletedRequest(status, false, "", base::TimeTicks()); |
227 } | 229 } |
228 | 230 |
229 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) { | 231 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) { |
230 // It will self-delete once it exits OnCompletedRequest. | 232 // It will self-delete once it exits OnCompletedRequest. |
231 ExtensionLocalizationPeer* filter_peer = | 233 ExtensionLocalizationPeer* filter_peer = |
232 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_3)); | 234 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_3)); |
233 | 235 |
234 L10nMessagesMap messages; | 236 L10nMessagesMap messages; |
235 messages.insert(std::make_pair("text", "new text")); | 237 messages.insert(std::make_pair("text", "new text")); |
236 ExtensionToL10nMessagesMap& l10n_messages_map = | 238 ExtensionToL10nMessagesMap& l10n_messages_map = |
237 *GetExtensionToL10nMessagesMap(); | 239 *GetExtensionToL10nMessagesMap(); |
238 l10n_messages_map["some_id3"] = messages; | 240 l10n_messages_map["some_id3"] = messages; |
239 | 241 |
240 std::string message("some __MSG_missing_message__"); | 242 std::string message("some __MSG_missing_message__"); |
241 SetData(filter_peer, message); | 243 SetData(filter_peer, message); |
242 | 244 |
243 // We already have messages in memory, Send will be skipped. | 245 // We already have messages in memory, Send will be skipped. |
244 EXPECT_CALL(*sender_, Send(_)).Times(0); | 246 EXPECT_CALL(*sender_, Send(_)).Times(0); |
245 | 247 |
246 // __MSG_missing_message__ is missing, so message stays the same. | 248 // __MSG_missing_message__ is missing, so message stays the same. |
247 EXPECT_CALL(*original_peer_, | 249 EXPECT_CALL(*original_peer_, |
248 OnReceivedData(StrEq(message.data()), message.length(), -1)); | 250 OnReceivedData(StrEq(message.data()), message.length(), -1)); |
249 | 251 |
250 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); | 252 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); |
251 EXPECT_CALL(*original_peer_, OnCompletedRequest( | 253 EXPECT_CALL(*original_peer_, OnCompletedRequest( |
252 IsURLRequestEqual(net::URLRequestStatus::SUCCESS), "", | 254 IsURLRequestEqual(net::URLRequestStatus::SUCCESS), _, "", |
253 base::TimeTicks())); | 255 base::TimeTicks())); |
254 | 256 |
255 net::URLRequestStatus status; | 257 net::URLRequestStatus status; |
256 status.set_status(net::URLRequestStatus::SUCCESS); | 258 status.set_status(net::URLRequestStatus::SUCCESS); |
257 filter_peer->OnCompletedRequest(status, "", base::TimeTicks()); | 259 filter_peer->OnCompletedRequest(status, false, "", base::TimeTicks()); |
258 } | 260 } |
OLD | NEW |