| 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 |