| Index: content/browser/webui/url_data_manager_backend_unittest.cc
|
| diff --git a/content/browser/webui/url_data_manager_backend_unittest.cc b/content/browser/webui/url_data_manager_backend_unittest.cc
|
| index 1030533da1245791412e654f1e69341c56cdd9a8..b123e76850d2098908d298d8419d2b56819a825e 100644
|
| --- a/content/browser/webui/url_data_manager_backend_unittest.cc
|
| +++ b/content/browser/webui/url_data_manager_backend_unittest.cc
|
| @@ -11,101 +11,48 @@
|
| #include "net/http/http_response_info.h"
|
| #include "net/url_request/url_request_context.h"
|
| #include "net/url_request/url_request_job.h"
|
| -#include "net/url_request/url_request_job_factory_impl.h"
|
| -#include "net/url_request/url_request_test_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace content {
|
|
|
| -class CancelAfterFirstReadURLRequestDelegate : public net::TestDelegate {
|
| - public:
|
| - CancelAfterFirstReadURLRequestDelegate() {}
|
| +namespace {
|
|
|
| - ~CancelAfterFirstReadURLRequestDelegate() override {}
|
| -
|
| - void OnResponseStarted(net::URLRequest* request) override {
|
| - // net::TestDelegate will start the first read.
|
| - TestDelegate::OnResponseStarted(request);
|
| - request->Cancel();
|
| - }
|
| -
|
| - void OnReadCompleted(net::URLRequest* request, int bytes_read) override {
|
| - // Read should have been cancelled.
|
| - EXPECT_EQ(-1, bytes_read);
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(CancelAfterFirstReadURLRequestDelegate);
|
| -};
|
| -
|
| -class UrlDataManagerBackendTest : public testing::Test {
|
| - public:
|
| - UrlDataManagerBackendTest() {
|
| - // URLRequestJobFactory takes ownership of the passed in ProtocolHandler.
|
| - url_request_job_factory_.SetProtocolHandler(
|
| - "chrome",
|
| - URLDataManagerBackend::CreateProtocolHandler(
|
| - &resource_context_, false, nullptr, nullptr));
|
| - url_request_context_.set_job_factory(&url_request_job_factory_);
|
| - }
|
| -
|
| - scoped_ptr<net::URLRequest> CreateRequest(net::URLRequest::Delegate* delegate,
|
| - const char* origin) {
|
| - scoped_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
|
| - GURL("chrome://resources/polymer/v1_0/polymer/polymer-extracted.js"),
|
| - net::HIGHEST, delegate);
|
| - request->SetExtraRequestHeaderByName("Origin", origin, true);
|
| - return request.Pass();
|
| - }
|
| -
|
| - protected:
|
| - TestBrowserThreadBundle thread_bundle_;
|
| - MockResourceContext resource_context_;
|
| - net::URLRequestJobFactoryImpl url_request_job_factory_;
|
| - net::URLRequestContext url_request_context_;
|
| - net::TestDelegate delegate_;
|
| -};
|
| -
|
| -TEST_F(UrlDataManagerBackendTest, AccessControlAllowOriginChromeUrl) {
|
| - scoped_ptr<net::URLRequest> request(
|
| - CreateRequest(&delegate_, "chrome://webui"));
|
| - request->Start();
|
| +// Create a request for a chrome://resource URL passing the supplied |origin|
|
| +// header and checking that the response header Access-Control-Allow-Origin has
|
| +// value |expected_access_control_allow_origin_value|.
|
| +void RunAccessControlAllowOriginTest(
|
| + const std::string& origin,
|
| + const std::string& expected_access_control_allow_origin_value) {
|
| + TestBrowserThreadBundle thread_bundle;
|
| + MockResourceContext resource_context;
|
| + scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> protocol_handler(
|
| + URLDataManagerBackend::CreateProtocolHandler(&resource_context, false,
|
| + nullptr, nullptr));
|
| + net::URLRequestContext url_request_context;
|
| + scoped_ptr<net::URLRequest> request = url_request_context.CreateRequest(
|
| + GURL("chrome://resources/polymer/v1_0/polymer/polymer-extracted.js"),
|
| + net::HIGHEST, nullptr);
|
| + request->SetExtraRequestHeaderByName("Origin", origin, true);
|
| + scoped_refptr<net::URLRequestJob> job =
|
| + protocol_handler->MaybeCreateJob(request.get(), nullptr);
|
| + ASSERT_TRUE(job);
|
| + job->Start();
|
| base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(request->response_headers()->HasHeaderValue(
|
| - "Access-Control-Allow-Origin", "chrome://webui"));
|
| + net::HttpResponseInfo response;
|
| + job->GetResponseInfo(&response);
|
| + EXPECT_TRUE(response.headers->HasHeaderValue(
|
| + "Access-Control-Allow-Origin",
|
| + expected_access_control_allow_origin_value));
|
| }
|
|
|
| -TEST_F(UrlDataManagerBackendTest, AccessControlAllowOriginNonChromeUrl) {
|
| - scoped_ptr<net::URLRequest> request(
|
| - CreateRequest(&delegate_, "http://www.example.com"));
|
| - request->Start();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(request->response_headers()->HasHeaderValue(
|
| - "Access-Control-Allow-Origin", "null"));
|
| +} // namespace
|
| +
|
| +TEST(UrlDataManagerBackendTest, AccessControlAllowOriginChromeUrl) {
|
| + RunAccessControlAllowOriginTest("chrome://webui", "chrome://webui");
|
| }
|
|
|
| -// Check that the URLRequest isn't passed headers after cancellation.
|
| -TEST_F(UrlDataManagerBackendTest, CancelBeforeResponseStarts) {
|
| - scoped_ptr<net::URLRequest> request(
|
| - CreateRequest(&delegate_, "chrome://webui"));
|
| - request->Start();
|
| - request->Cancel();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status());
|
| - EXPECT_EQ(1, delegate_.response_started_count());
|
| -}
|
| -
|
| -// Check that the URLRequest isn't passed data after cancellation.
|
| -TEST_F(UrlDataManagerBackendTest, CancelAfterFirstReadStarted) {
|
| - CancelAfterFirstReadURLRequestDelegate cancel_delegate;
|
| - scoped_ptr<net::URLRequest> request(
|
| - CreateRequest(&cancel_delegate, "chrome://webui"));
|
| - request->Start();
|
| - base::RunLoop().RunUntilIdle();
|
| -
|
| - EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status());
|
| - EXPECT_EQ(1, cancel_delegate.response_started_count());
|
| - EXPECT_EQ("", cancel_delegate.data_received());
|
| +TEST(UrlDataManagerBackendTest, AccessControlAllowOriginNonChromeUrl) {
|
| + RunAccessControlAllowOriginTest("http://www.example.com", "null");
|
| }
|
|
|
| } // namespace content
|
|
|