| Index: content/browser/loader/mime_type_resource_handler_unittest.cc
|
| diff --git a/content/browser/loader/mime_type_resource_handler_unittest.cc b/content/browser/loader/mime_type_resource_handler_unittest.cc
|
| index 13d98cb57f86906d5717f131121c5ebdaf6c0150..360e0354954e531f99a5d4b74167df2ec9fca31e 100644
|
| --- a/content/browser/loader/mime_type_resource_handler_unittest.cc
|
| +++ b/content/browser/loader/mime_type_resource_handler_unittest.cc
|
| @@ -45,7 +45,6 @@ class TestResourceHandler : public ResourceHandler {
|
| }
|
|
|
| bool OnWillStart(const GURL& url, bool* defer) override {
|
| - NOTREACHED();
|
| return false;
|
| }
|
|
|
| @@ -220,6 +219,11 @@ class MimeTypeResourceHandlerTest : public testing::Test {
|
| bool must_download,
|
| ResourceType request_resource_type);
|
|
|
| + std::string TestAcceptHeaderSetting(ResourceType request_resource_type);
|
| + std::string TestAcceptHeaderSettingWithURLRequest(
|
| + ResourceType request_resource_type,
|
| + net::URLRequest* request);
|
| +
|
| private:
|
| // Whether the URL request should be intercepted as a stream.
|
| bool stream_has_handler_;
|
| @@ -273,6 +277,88 @@ bool MimeTypeResourceHandlerTest::TestStreamIsIntercepted(
|
| return host.intercepted_as_stream();
|
| }
|
|
|
| +std::string MimeTypeResourceHandlerTest::TestAcceptHeaderSetting(
|
| + ResourceType request_resource_type) {
|
| + net::URLRequestContext context;
|
| + scoped_ptr<net::URLRequest> request(context.CreateRequest(
|
| + GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
|
| + return TestAcceptHeaderSettingWithURLRequest(
|
| + request_resource_type, request.get());
|
| +}
|
| +
|
| +std::string MimeTypeResourceHandlerTest::TestAcceptHeaderSettingWithURLRequest(
|
| + ResourceType request_resource_type,
|
| + net::URLRequest* request) {
|
| + bool is_main_frame = request_resource_type == RESOURCE_TYPE_MAIN_FRAME;
|
| + ResourceRequestInfo::AllocateForTesting(
|
| + request,
|
| + request_resource_type,
|
| + nullptr, // context
|
| + 0, // render_process_id
|
| + 0, // render_view_id
|
| + 0, // render_frame_id
|
| + is_main_frame, // is_main_frame
|
| + false, // parent_is_main_frame
|
| + false, // allow_download
|
| + true, // is_async
|
| + false); // is_using_lofi
|
| +
|
| + TestResourceDispatcherHost host(stream_has_handler_);
|
| + TestResourceDispatcherHostDelegate host_delegate(false);
|
| + host.SetDelegate(&host_delegate);
|
| +
|
| + scoped_ptr<ResourceHandler> mime_sniffing_handler(new MimeTypeResourceHandler(
|
| + scoped_ptr<ResourceHandler>(new TestResourceHandler()), &host,
|
| + nullptr, request));
|
| +
|
| + bool defer = false;
|
| + mime_sniffing_handler->OnWillStart(request->url(), &defer);
|
| + content::RunAllPendingInMessageLoop();
|
| +
|
| + std::string accept_header;
|
| + request->extra_request_headers().GetHeader("Accept", &accept_header);
|
| + return accept_header;
|
| +}
|
| +
|
| +// Test that the proper Accept: header is set based on the ResourceType
|
| +TEST_F(MimeTypeResourceHandlerTest, AcceptHeaders) {
|
| + EXPECT_EQ(
|
| + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,"
|
| + "*/*;q=0.8",
|
| + TestAcceptHeaderSetting(RESOURCE_TYPE_MAIN_FRAME));
|
| + EXPECT_EQ(
|
| + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,"
|
| + "*/*;q=0.8",
|
| + TestAcceptHeaderSetting(RESOURCE_TYPE_SUB_FRAME));
|
| + EXPECT_EQ("text/css,*/*;q=0.1",
|
| + TestAcceptHeaderSetting(RESOURCE_TYPE_STYLESHEET));
|
| + EXPECT_EQ("*/*",
|
| + TestAcceptHeaderSetting(RESOURCE_TYPE_SCRIPT));
|
| + EXPECT_EQ("image/webp,image/*,*/*;q=0.8",
|
| + TestAcceptHeaderSetting(RESOURCE_TYPE_IMAGE));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_FONT_RESOURCE));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_SUB_RESOURCE));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_OBJECT));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_MEDIA));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_WORKER));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_SHARED_WORKER));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_PREFETCH));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_FAVICON));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_XHR));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_PING));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_SERVICE_WORKER));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_CSP_REPORT));
|
| + EXPECT_EQ("*/*", TestAcceptHeaderSetting(RESOURCE_TYPE_PLUGIN_RESOURCE));
|
| +
|
| + // Ensure that if an Accept header is already set, it is not overwritten.
|
| + net::URLRequestContext context;
|
| + scoped_ptr<net::URLRequest> request(context.CreateRequest(
|
| + GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
|
| + request->SetExtraRequestHeaderByName("Accept", "*", true);
|
| + EXPECT_EQ("*",
|
| + TestAcceptHeaderSettingWithURLRequest(RESOURCE_TYPE_XHR, request.get()));
|
| +}
|
| +
|
| // Test that stream requests are correctly intercepted under the right
|
| // circumstances. Test is not relevent when plugins are disabled.
|
| #if defined(ENABLE_PLUGINS)
|
|
|