Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: chrome/renderer/extensions/extension_localization_peer_unittest.cc

Issue 1103813002: Make WebURLLoader capable of retaining received buffers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/renderer/extensions/extension_localization_peer.h" 9 #include "chrome/renderer/extensions/extension_localization_peer.h"
10 #include "extensions/common/message_bundle.h" 10 #include "extensions/common/message_bundle.h"
11 #include "ipc/ipc_sender.h" 11 #include "ipc/ipc_sender.h"
12 #include "ipc/ipc_sync_message.h" 12 #include "ipc/ipc_sync_message.h"
13 #include "net/base/net_errors.h" 13 #include "net/base/net_errors.h"
14 #include "net/url_request/redirect_info.h" 14 #include "net/url_request/redirect_info.h"
15 #include "net/url_request/url_request_status.h" 15 #include "net/url_request/url_request_status.h"
16 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 namespace {
20
19 using testing::_; 21 using testing::_;
20 using testing::DoAll; 22 using testing::DoAll;
21 using testing::Invoke; 23 using testing::Invoke;
22 using testing::StrEq; 24 using testing::StrEq;
23 using testing::Return; 25 using testing::Return;
26 using ReceivedData = content::RequestPeer::ReceivedData;
27 using FixedReceivedData = content::RequestPeer::FixedReceivedData;
24 28
25 static const char* const kExtensionUrl_1 = 29 static const char* const kExtensionUrl_1 =
26 "chrome-extension://some_id/popup.css"; 30 "chrome-extension://some_id/popup.css";
27 31
28 static const char* const kExtensionUrl_2 = 32 static const char* const kExtensionUrl_2 =
29 "chrome-extension://some_id2/popup.css"; 33 "chrome-extension://some_id2/popup.css";
30 34
31 static const char* const kExtensionUrl_3 = 35 static const char* const kExtensionUrl_3 =
32 "chrome-extension://some_id3/popup.css"; 36 "chrome-extension://some_id3/popup.css";
33 37
(...skipping 21 matching lines...) Expand all
55 MockRequestPeer() {} 59 MockRequestPeer() {}
56 virtual ~MockRequestPeer() {} 60 virtual ~MockRequestPeer() {}
57 61
58 MOCK_METHOD2(OnUploadProgress, void(uint64 position, uint64 size)); 62 MOCK_METHOD2(OnUploadProgress, void(uint64 position, uint64 size));
59 MOCK_METHOD2(OnReceivedRedirect, 63 MOCK_METHOD2(OnReceivedRedirect,
60 bool(const net::RedirectInfo& redirect_info, 64 bool(const net::RedirectInfo& redirect_info,
61 const content::ResourceResponseInfo& info)); 65 const content::ResourceResponseInfo& info));
62 MOCK_METHOD1(OnReceivedResponse, 66 MOCK_METHOD1(OnReceivedResponse,
63 void(const content::ResourceResponseInfo& info)); 67 void(const content::ResourceResponseInfo& info));
64 MOCK_METHOD2(OnDownloadedData, void(int len, int encoded_data_length)); 68 MOCK_METHOD2(OnDownloadedData, void(int len, int encoded_data_length));
65 MOCK_METHOD3(OnReceivedData, void(const char* data, 69 void OnReceivedData(scoped_ptr<ReceivedData> data) override {
66 int data_length, 70 OnReceivedDataInternal(data->payload(), data->length(),
67 int encoded_data_length)); 71 data->encoded_length());
72 }
73 MOCK_METHOD3(OnReceivedDataInternal,
74 void(const char* data,
75 int data_length,
76 int encoded_data_length));
68 MOCK_METHOD6(OnCompletedRequest, void( 77 MOCK_METHOD6(OnCompletedRequest, void(
69 int error_code, 78 int error_code,
70 bool was_ignored_by_handler, 79 bool was_ignored_by_handler,
71 bool stale_copy_in_cache, 80 bool stale_copy_in_cache,
72 const std::string& security_info, 81 const std::string& security_info,
73 const base::TimeTicks& completion_time, 82 const base::TimeTicks& completion_time,
74 int64_t total_transfer_size)); 83 int64_t total_transfer_size));
75 84
76 private: 85 private:
77 DISALLOW_COPY_AND_ASSIGN(MockRequestPeer); 86 DISALLOW_COPY_AND_ASSIGN(MockRequestPeer);
78 }; 87 };
79 88
89 } // namespace
90
80 class ExtensionLocalizationPeerTest : public testing::Test { 91 class ExtensionLocalizationPeerTest : public testing::Test {
81 protected: 92 protected:
82 void SetUp() override { 93 void SetUp() override {
83 sender_.reset(new MockIpcMessageSender()); 94 sender_.reset(new MockIpcMessageSender());
84 original_peer_.reset(new MockRequestPeer()); 95 original_peer_.reset(new MockRequestPeer());
85 filter_peer_.reset( 96 filter_peer_.reset(
86 ExtensionLocalizationPeer::CreateExtensionLocalizationPeer( 97 ExtensionLocalizationPeer::CreateExtensionLocalizationPeer(
87 original_peer_.get(), sender_.get(), "text/css", 98 original_peer_.get(), sender_.get(), "text/css",
88 GURL(kExtensionUrl_1))); 99 GURL(kExtensionUrl_1)));
89 } 100 }
(...skipping 28 matching lines...) Expand all
118 } 129 }
119 130
120 TEST_F(ExtensionLocalizationPeerTest, CreateWithValidInput) { 131 TEST_F(ExtensionLocalizationPeerTest, CreateWithValidInput) {
121 EXPECT_TRUE(NULL != filter_peer_.get()); 132 EXPECT_TRUE(NULL != filter_peer_.get());
122 } 133 }
123 134
124 TEST_F(ExtensionLocalizationPeerTest, OnReceivedData) { 135 TEST_F(ExtensionLocalizationPeerTest, OnReceivedData) {
125 EXPECT_TRUE(GetData(filter_peer_.get()).empty()); 136 EXPECT_TRUE(GetData(filter_peer_.get()).empty());
126 137
127 const std::string data_chunk("12345"); 138 const std::string data_chunk("12345");
128 filter_peer_->OnReceivedData(data_chunk.c_str(), data_chunk.length(), -1); 139 filter_peer_->OnReceivedData(make_scoped_ptr(
140 new FixedReceivedData(data_chunk.data(), data_chunk.length(), -1)));
129 141
130 EXPECT_EQ(data_chunk, GetData(filter_peer_.get())); 142 EXPECT_EQ(data_chunk, GetData(filter_peer_.get()));
131 143
132 filter_peer_->OnReceivedData(data_chunk.c_str(), data_chunk.length(), -1); 144 filter_peer_->OnReceivedData(make_scoped_ptr(
145 new FixedReceivedData(data_chunk.data(), data_chunk.length(), -1)));
133 EXPECT_EQ(data_chunk + data_chunk, GetData(filter_peer_.get())); 146 EXPECT_EQ(data_chunk + data_chunk, GetData(filter_peer_.get()));
134 } 147 }
135 148
136 MATCHER_P(IsURLRequestEqual, status, "") { return arg.status() == status; } 149 MATCHER_P(IsURLRequestEqual, status, "") { return arg.status() == status; }
137 150
138 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestBadURLRequestStatus) { 151 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestBadURLRequestStatus) {
139 // It will self-delete once it exits OnCompletedRequest. 152 // It will self-delete once it exits OnCompletedRequest.
140 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); 153 ExtensionLocalizationPeer* filter_peer = filter_peer_.release();
141 154
142 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); 155 EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
143 EXPECT_CALL(*original_peer_, OnCompletedRequest( 156 EXPECT_CALL(*original_peer_, OnCompletedRequest(
144 net::ERR_ABORTED, false, false, "", base::TimeTicks(), -1)); 157 net::ERR_ABORTED, false, false, "", base::TimeTicks(), -1));
145 158
146 filter_peer->OnCompletedRequest( 159 filter_peer->OnCompletedRequest(
147 net::ERR_FAILED, false, false, std::string(), base::TimeTicks(), -1); 160 net::ERR_FAILED, false, false, std::string(), base::TimeTicks(), -1);
148 } 161 }
149 162
150 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) { 163 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) {
151 // It will self-delete once it exits OnCompletedRequest. 164 // It will self-delete once it exits OnCompletedRequest.
152 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); 165 ExtensionLocalizationPeer* filter_peer = filter_peer_.release();
153 166
154 EXPECT_CALL(*original_peer_, OnReceivedData(_, _, _)).Times(0); 167 EXPECT_CALL(*original_peer_, OnReceivedDataInternal(_, _, _)).Times(0);
155 EXPECT_CALL(*sender_, Send(_)).Times(0); 168 EXPECT_CALL(*sender_, Send(_)).Times(0);
156 169
157 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); 170 EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
158 EXPECT_CALL(*original_peer_, OnCompletedRequest( 171 EXPECT_CALL(*original_peer_, OnCompletedRequest(
159 net::OK, false, false, "", base::TimeTicks(), -1)); 172 net::OK, false, false, "", base::TimeTicks(), -1));
160 173
161 filter_peer->OnCompletedRequest( 174 filter_peer->OnCompletedRequest(
162 net::OK, false, false, std::string(), base::TimeTicks(), -1); 175 net::OK, false, false, std::string(), base::TimeTicks(), -1);
163 } 176 }
164 177
165 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) { 178 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) {
166 // It will self-delete once it exits OnCompletedRequest. 179 // It will self-delete once it exits OnCompletedRequest.
167 ExtensionLocalizationPeer* filter_peer = filter_peer_.release(); 180 ExtensionLocalizationPeer* filter_peer = filter_peer_.release();
168 181
169 SetData(filter_peer, "some text"); 182 SetData(filter_peer, "some text");
170 183
171 EXPECT_CALL(*sender_, Send(_)); 184 EXPECT_CALL(*sender_, Send(_));
172 185
173 std::string data = GetData(filter_peer); 186 std::string data = GetData(filter_peer);
174 EXPECT_CALL(*original_peer_, 187 EXPECT_CALL(*original_peer_,
175 OnReceivedData(StrEq(data.data()), data.length(), -1)).Times(2); 188 OnReceivedDataInternal(StrEq(data.c_str()), data.length(), -1))
176 189 .Times(2);
177 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2); 190 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2);
178 EXPECT_CALL(*original_peer_, OnCompletedRequest( 191 EXPECT_CALL(*original_peer_, OnCompletedRequest(
179 net::OK, false, false, "", base::TimeTicks(), -1)).Times(2); 192 net::OK, false, false, "", base::TimeTicks(), -1)).Times(2);
180 193
181 filter_peer->OnCompletedRequest( 194 filter_peer->OnCompletedRequest(
182 net::OK, false, false, std::string(), base::TimeTicks(), -1); 195 net::OK, false, false, std::string(), base::TimeTicks(), -1);
183 196
184 // Test if Send gets called again (it shouldn't be) when first call returned 197 // Test if Send gets called again (it shouldn't be) when first call returned
185 // an empty dictionary. 198 // an empty dictionary.
186 filter_peer = 199 filter_peer =
(...skipping 15 matching lines...) Expand all
202 l10n_messages_map["some_id2"] = messages; 215 l10n_messages_map["some_id2"] = messages;
203 216
204 SetData(filter_peer, "some __MSG_text__"); 217 SetData(filter_peer, "some __MSG_text__");
205 218
206 // We already have messages in memory, Send will be skipped. 219 // We already have messages in memory, Send will be skipped.
207 EXPECT_CALL(*sender_, Send(_)).Times(0); 220 EXPECT_CALL(*sender_, Send(_)).Times(0);
208 221
209 // __MSG_text__ gets replaced with "new text". 222 // __MSG_text__ gets replaced with "new text".
210 std::string data("some new text"); 223 std::string data("some new text");
211 EXPECT_CALL(*original_peer_, 224 EXPECT_CALL(*original_peer_,
212 OnReceivedData(StrEq(data.data()), data.length(), -1)); 225 OnReceivedDataInternal(StrEq(data.c_str()), data.length(), -1));
213 226
214 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); 227 EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
215 EXPECT_CALL(*original_peer_, OnCompletedRequest( 228 EXPECT_CALL(*original_peer_, OnCompletedRequest(
216 net::OK, false, false, "", base::TimeTicks(), -1)); 229 net::OK, false, false, "", base::TimeTicks(), -1));
217 230
218 filter_peer->OnCompletedRequest( 231 filter_peer->OnCompletedRequest(
219 net::OK, false, false, std::string(), base::TimeTicks(), -1); 232 net::OK, false, false, std::string(), base::TimeTicks(), -1);
220 } 233 }
221 234
222 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) { 235 TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) {
223 // It will self-delete once it exits OnCompletedRequest. 236 // It will self-delete once it exits OnCompletedRequest.
224 ExtensionLocalizationPeer* filter_peer = 237 ExtensionLocalizationPeer* filter_peer =
225 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_3)); 238 CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_3));
226 239
227 extensions::L10nMessagesMap messages; 240 extensions::L10nMessagesMap messages;
228 messages.insert(std::make_pair("text", "new text")); 241 messages.insert(std::make_pair("text", "new text"));
229 extensions::ExtensionToL10nMessagesMap& l10n_messages_map = 242 extensions::ExtensionToL10nMessagesMap& l10n_messages_map =
230 *extensions::GetExtensionToL10nMessagesMap(); 243 *extensions::GetExtensionToL10nMessagesMap();
231 l10n_messages_map["some_id3"] = messages; 244 l10n_messages_map["some_id3"] = messages;
232 245
233 std::string message("some __MSG_missing_message__"); 246 std::string message("some __MSG_missing_message__");
234 SetData(filter_peer, message); 247 SetData(filter_peer, message);
235 248
236 // We already have messages in memory, Send will be skipped. 249 // We already have messages in memory, Send will be skipped.
237 EXPECT_CALL(*sender_, Send(_)).Times(0); 250 EXPECT_CALL(*sender_, Send(_)).Times(0);
238 251
239 // __MSG_missing_message__ is missing, so message stays the same. 252 // __MSG_missing_message__ is missing, so message stays the same.
240 EXPECT_CALL(*original_peer_, 253 EXPECT_CALL(*original_peer_, OnReceivedDataInternal(StrEq(message.c_str()),
241 OnReceivedData(StrEq(message.data()), message.length(), -1)); 254 message.length(), -1));
242 255
243 EXPECT_CALL(*original_peer_, OnReceivedResponse(_)); 256 EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
244 EXPECT_CALL(*original_peer_, OnCompletedRequest( 257 EXPECT_CALL(*original_peer_, OnCompletedRequest(
245 net::OK, false, false, "", base::TimeTicks(), -1)); 258 net::OK, false, false, "", base::TimeTicks(), -1));
246 259
247 filter_peer->OnCompletedRequest( 260 filter_peer->OnCompletedRequest(
248 net::OK, false, false, std::string(), base::TimeTicks(), -1); 261 net::OK, false, false, std::string(), base::TimeTicks(), -1);
249 } 262 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698