url_request_job_factory_impl_unittest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_job_factory_impl.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_job.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_test_util.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockURLRequestJob : public URLRequestJob { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockURLRequestJob(URLRequest* request, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkDelegate* network_delegate, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const URLRequestStatus& status) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : URLRequestJob(request, network_delegate), 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_(status), 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Start() OVERRIDE { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Start reading asynchronously so that all error reporting and data 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // callbacks happen as they would for network requests. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->PostTask( 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FROM_HERE, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&MockURLRequestJob::StartAsync, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_factory_.GetWeakPtr())); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockURLRequestJob() {} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void StartAsync() { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetStatus(status_); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NotifyHeadersComplete(); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestStatus status_; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::WeakPtrFactory<MockURLRequestJob> weak_factory_; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DummyProtocolHandler : public URLRequestJobFactory::ProtocolHandler { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual URLRequestJob* MaybeCreateJob( 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new MockURLRequestJob( 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) network_delegate, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestStatus(URLRequestStatus::SUCCESS, OK)); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DummyInterceptor : public URLRequestJobFactory::Interceptor { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DummyInterceptor() 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : did_intercept_(false), 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handle_all_protocols_(false) { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual URLRequestJob* MaybeIntercept( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) did_intercept_ = true; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new MockURLRequestJob( 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) network_delegate, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestStatus(URLRequestStatus::FAILED, ERR_FAILED)); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual URLRequestJob* MaybeInterceptRedirect( 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& /* location */, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequest* /* request */, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkDelegate* network_delegate /* network delegate */) const OVERRIDE { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual URLRequestJob* MaybeInterceptResponse( 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequest* /* request */, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkDelegate* network_delegate /* network delegate */) const OVERRIDE { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillHandleProtocol( 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& /* protocol */) const OVERRIDE { 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return handle_all_protocols_; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable bool did_intercept_; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable bool handle_all_protocols_; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, NoProtocolHandler) { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("foo://bar"), &delegate, &request_context); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(URLRequestStatus::FAILED, request.status().status()); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ERR_UNKNOWN_URL_SCHEME, request.status().error()); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, BasicProtocolHandler) { 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.SetProtocolHandler("foo", new DummyProtocolHandler); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("foo://bar"), &delegate, &request_context); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(URLRequestStatus::SUCCESS, request.status().status()); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(OK, request.status().error()); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, DeleteProtocolHandler) { 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.SetProtocolHandler("foo", new DummyProtocolHandler); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.SetProtocolHandler("foo", NULL); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, BasicInterceptor) { 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.AddInterceptor(new DummyInterceptor); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("http://bar"), &delegate, &request_context); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(URLRequestStatus::FAILED, request.status().status()); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ERR_FAILED, request.status().error()); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, InterceptorNeedsValidSchemeStill) { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.AddInterceptor(new DummyInterceptor); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("foo://bar"), &delegate, &request_context); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(URLRequestStatus::FAILED, request.status().status()); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ERR_UNKNOWN_URL_SCHEME, request.status().error()); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, InterceptorOverridesProtocolHandler) { 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.SetProtocolHandler("foo", new DummyProtocolHandler); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.AddInterceptor(new DummyInterceptor); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("foo://bar"), &delegate, &request_context); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(URLRequestStatus::FAILED, request.status().status()); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ERR_FAILED, request.status().error()); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, InterceptorDoesntInterceptUnknownProtocols) { 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DummyInterceptor* interceptor = new DummyInterceptor; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.AddInterceptor(interceptor); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("foo://bar"), &delegate, &request_context); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(interceptor->did_intercept_); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, InterceptorInterceptsHandledUnknownProtocols) { 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDelegate delegate; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequestContext request_context; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context.set_job_factory(&job_factory); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DummyInterceptor* interceptor = new DummyInterceptor; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) interceptor->handle_all_protocols_ = true; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.AddInterceptor(interceptor); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestURLRequest request(GURL("foo://bar"), &delegate, &request_context); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.Start(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoop::current()->Run(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(interceptor->did_intercept_); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(URLRequestStatus::FAILED, request.status().status()); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ERR_FAILED, request.status().error()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLRequestJobFactoryTest, InterceptorAffectsIsHandledProtocol) { 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DummyInterceptor* interceptor = new DummyInterceptor; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLRequestJobFactoryImpl job_factory; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) job_factory.AddInterceptor(interceptor); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(interceptor->WillHandleProtocol("anything")); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(job_factory.IsHandledProtocol("anything")); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) interceptor->handle_all_protocols_ = true; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(interceptor->WillHandleProtocol("anything")); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(job_factory.IsHandledProtocol("anything")); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net 219