OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 net::URLRequestContext* request_context = | 113 net::URLRequestContext* request_context = |
114 resource_context_.GetRequestContext(); | 114 resource_context_.GetRequestContext(); |
115 job_factory_.SetProtocolHandler( | 115 job_factory_.SetProtocolHandler( |
116 kExtensionScheme, | 116 kExtensionScheme, |
117 CreateExtensionProtocolHandler(is_incognito, | 117 CreateExtensionProtocolHandler(is_incognito, |
118 extension_info_map_.get())); | 118 extension_info_map_.get())); |
119 request_context->set_job_factory(&job_factory_); | 119 request_context->set_job_factory(&job_factory_); |
120 } | 120 } |
121 | 121 |
122 void StartRequest(net::URLRequest* request, | 122 void StartRequest(net::URLRequest* request, |
123 ResourceType::Type resource_type) { | 123 ResourceType resource_type) { |
124 content::ResourceRequestInfo::AllocateForTesting(request, | 124 content::ResourceRequestInfo::AllocateForTesting(request, |
125 resource_type, | 125 resource_type, |
126 &resource_context_, | 126 &resource_context_, |
127 -1, | 127 -1, |
128 -1, | 128 -1, |
129 -1, | 129 -1, |
130 false); | 130 false); |
131 request->Start(); | 131 request->Start(); |
132 base::MessageLoop::current()->Run(); | 132 base::MessageLoop::current()->Run(); |
133 } | 133 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 | 174 |
175 // First test a main frame request. | 175 // First test a main frame request. |
176 { | 176 { |
177 // It doesn't matter that the resource doesn't exist. If the resource | 177 // It doesn't matter that the resource doesn't exist. If the resource |
178 // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request | 178 // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request |
179 // should just fail because the file doesn't exist. | 179 // should just fail because the file doesn't exist. |
180 net::URLRequest request(extension->GetResourceURL("404.html"), | 180 net::URLRequest request(extension->GetResourceURL("404.html"), |
181 net::DEFAULT_PRIORITY, | 181 net::DEFAULT_PRIORITY, |
182 &test_delegate_, | 182 &test_delegate_, |
183 resource_context_.GetRequestContext()); | 183 resource_context_.GetRequestContext()); |
184 StartRequest(&request, ResourceType::MAIN_FRAME); | 184 StartRequest(&request, content::RESOURCE_TYPE_MAIN_FRAME); |
185 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); | 185 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); |
186 | 186 |
187 if (cases[i].should_allow_main_frame_load) { | 187 if (cases[i].should_allow_main_frame_load) { |
188 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()) << | 188 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()) << |
189 cases[i].name; | 189 cases[i].name; |
190 } else { | 190 } else { |
191 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request.status().error()) << | 191 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request.status().error()) << |
192 cases[i].name; | 192 cases[i].name; |
193 } | 193 } |
194 } | 194 } |
195 | 195 |
196 // Now do a subframe request. | 196 // Now do a subframe request. |
197 { | 197 { |
198 net::URLRequest request(extension->GetResourceURL("404.html"), | 198 net::URLRequest request(extension->GetResourceURL("404.html"), |
199 net::DEFAULT_PRIORITY, | 199 net::DEFAULT_PRIORITY, |
200 &test_delegate_, | 200 &test_delegate_, |
201 resource_context_.GetRequestContext()); | 201 resource_context_.GetRequestContext()); |
202 StartRequest(&request, ResourceType::SUB_FRAME); | 202 StartRequest(&request, content::RESOURCE_TYPE_SUB_FRAME); |
203 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); | 203 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); |
204 | 204 |
205 if (cases[i].should_allow_sub_frame_load) { | 205 if (cases[i].should_allow_sub_frame_load) { |
206 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()) << | 206 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()) << |
207 cases[i].name; | 207 cases[i].name; |
208 } else { | 208 } else { |
209 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request.status().error()) << | 209 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request.status().error()) << |
210 cases[i].name; | 210 cases[i].name; |
211 } | 211 } |
212 } | 212 } |
(...skipping 21 matching lines...) Expand all Loading... |
234 base::Time::Now(), | 234 base::Time::Now(), |
235 false, | 235 false, |
236 false); | 236 false); |
237 | 237 |
238 // First test it with the extension enabled. | 238 // First test it with the extension enabled. |
239 { | 239 { |
240 net::URLRequest request(extension->GetResourceURL("webstore_icon_16.png"), | 240 net::URLRequest request(extension->GetResourceURL("webstore_icon_16.png"), |
241 net::DEFAULT_PRIORITY, | 241 net::DEFAULT_PRIORITY, |
242 &test_delegate_, | 242 &test_delegate_, |
243 resource_context_.GetRequestContext()); | 243 resource_context_.GetRequestContext()); |
244 StartRequest(&request, ResourceType::MEDIA); | 244 StartRequest(&request, content::RESOURCE_TYPE_MEDIA); |
245 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); | 245 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); |
246 CheckForContentLengthHeader(&request); | 246 CheckForContentLengthHeader(&request); |
247 } | 247 } |
248 | 248 |
249 // And then test it with the extension disabled. | 249 // And then test it with the extension disabled. |
250 extension_info_map_->RemoveExtension(extension->id(), | 250 extension_info_map_->RemoveExtension(extension->id(), |
251 UnloadedExtensionInfo::REASON_DISABLE); | 251 UnloadedExtensionInfo::REASON_DISABLE); |
252 { | 252 { |
253 net::URLRequest request(extension->GetResourceURL("webstore_icon_16.png"), | 253 net::URLRequest request(extension->GetResourceURL("webstore_icon_16.png"), |
254 net::DEFAULT_PRIORITY, | 254 net::DEFAULT_PRIORITY, |
255 &test_delegate_, | 255 &test_delegate_, |
256 resource_context_.GetRequestContext()); | 256 resource_context_.GetRequestContext()); |
257 StartRequest(&request, ResourceType::MEDIA); | 257 StartRequest(&request, content::RESOURCE_TYPE_MEDIA); |
258 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); | 258 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); |
259 CheckForContentLengthHeader(&request); | 259 CheckForContentLengthHeader(&request); |
260 } | 260 } |
261 } | 261 } |
262 | 262 |
263 // Tests that a URL request for resource from an extension returns a few | 263 // Tests that a URL request for resource from an extension returns a few |
264 // expected response headers. | 264 // expected response headers. |
265 TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) { | 265 TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) { |
266 // Register a non-incognito extension protocol handler. | 266 // Register a non-incognito extension protocol handler. |
267 SetProtocolHandler(false); | 267 SetProtocolHandler(false); |
268 | 268 |
269 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension(); | 269 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension(); |
270 extension_info_map_->AddExtension(extension.get(), | 270 extension_info_map_->AddExtension(extension.get(), |
271 base::Time::Now(), | 271 base::Time::Now(), |
272 false, | 272 false, |
273 false); | 273 false); |
274 | 274 |
275 { | 275 { |
276 net::URLRequest request(extension->GetResourceURL("test.dat"), | 276 net::URLRequest request(extension->GetResourceURL("test.dat"), |
277 net::DEFAULT_PRIORITY, | 277 net::DEFAULT_PRIORITY, |
278 &test_delegate_, | 278 &test_delegate_, |
279 resource_context_.GetRequestContext()); | 279 resource_context_.GetRequestContext()); |
280 StartRequest(&request, ResourceType::MEDIA); | 280 StartRequest(&request, content::RESOURCE_TYPE_MEDIA); |
281 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); | 281 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); |
282 | 282 |
283 // Check that cache-related headers are set. | 283 // Check that cache-related headers are set. |
284 std::string etag; | 284 std::string etag; |
285 request.GetResponseHeaderByName("ETag", &etag); | 285 request.GetResponseHeaderByName("ETag", &etag); |
286 EXPECT_TRUE(StartsWithASCII(etag, "\"", false)); | 286 EXPECT_TRUE(StartsWithASCII(etag, "\"", false)); |
287 EXPECT_TRUE(EndsWith(etag, "\"", false)); | 287 EXPECT_TRUE(EndsWith(etag, "\"", false)); |
288 | 288 |
289 std::string revalidation_header; | 289 std::string revalidation_header; |
290 request.GetResponseHeaderByName("cache-control", &revalidation_header); | 290 request.GetResponseHeaderByName("cache-control", &revalidation_header); |
(...skipping 18 matching lines...) Expand all Loading... |
309 base::Time::Now(), | 309 base::Time::Now(), |
310 false, | 310 false, |
311 false); | 311 false); |
312 | 312 |
313 // All MAIN_FRAME and SUB_FRAME requests should succeed. | 313 // All MAIN_FRAME and SUB_FRAME requests should succeed. |
314 { | 314 { |
315 net::URLRequest request(extension->GetResourceURL("test.dat"), | 315 net::URLRequest request(extension->GetResourceURL("test.dat"), |
316 net::DEFAULT_PRIORITY, | 316 net::DEFAULT_PRIORITY, |
317 &test_delegate_, | 317 &test_delegate_, |
318 resource_context_.GetRequestContext()); | 318 resource_context_.GetRequestContext()); |
319 StartRequest(&request, ResourceType::MAIN_FRAME); | 319 StartRequest(&request, content::RESOURCE_TYPE_MAIN_FRAME); |
320 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); | 320 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); |
321 } | 321 } |
322 { | 322 { |
323 net::URLRequest request(extension->GetResourceURL("test.dat"), | 323 net::URLRequest request(extension->GetResourceURL("test.dat"), |
324 net::DEFAULT_PRIORITY, | 324 net::DEFAULT_PRIORITY, |
325 &test_delegate_, | 325 &test_delegate_, |
326 resource_context_.GetRequestContext()); | 326 resource_context_.GetRequestContext()); |
327 StartRequest(&request, ResourceType::SUB_FRAME); | 327 StartRequest(&request, content::RESOURCE_TYPE_SUB_FRAME); |
328 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); | 328 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); |
329 } | 329 } |
330 | 330 |
331 // And subresource types, such as media, should fail. | 331 // And subresource types, such as media, should fail. |
332 { | 332 { |
333 net::URLRequest request(extension->GetResourceURL("test.dat"), | 333 net::URLRequest request(extension->GetResourceURL("test.dat"), |
334 net::DEFAULT_PRIORITY, | 334 net::DEFAULT_PRIORITY, |
335 &test_delegate_, | 335 &test_delegate_, |
336 resource_context_.GetRequestContext()); | 336 resource_context_.GetRequestContext()); |
337 StartRequest(&request, ResourceType::MEDIA); | 337 StartRequest(&request, content::RESOURCE_TYPE_MEDIA); |
338 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); | 338 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); |
339 } | 339 } |
340 } | 340 } |
341 | 341 |
342 } // namespace extensions | 342 } // namespace extensions |
OLD | NEW |