| Index: chrome/browser/profiles/profile_io_data.cc
 | 
| diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
 | 
| index f3b2bd84e45eca784eb10cc829cb957b08f9f127..9dc346cd701bdaddb0417cf037d909cb79128b45 100644
 | 
| --- a/chrome/browser/profiles/profile_io_data.cc
 | 
| +++ b/chrome/browser/profiles/profile_io_data.cc
 | 
| @@ -431,6 +431,7 @@ bool ProfileIOData::IsHandledProtocol(const std::string& scheme) {
 | 
|      chrome::kBlobScheme,
 | 
|      chrome::kFileSystemScheme,
 | 
|      chrome::kExtensionResourceScheme,
 | 
| +    chrome::kChromeSearchScheme,
 | 
|    };
 | 
|    for (size_t i = 0; i < arraysize(kProtocolList); ++i) {
 | 
|      if (scheme == kProtocolList[i])
 | 
| @@ -439,6 +440,7 @@ bool ProfileIOData::IsHandledProtocol(const std::string& scheme) {
 | 
|    return net::URLRequest::IsHandledProtocol(scheme);
 | 
|  }
 | 
|  
 | 
| +// static
 | 
|  bool ProfileIOData::IsHandledURL(const GURL& url) {
 | 
|    if (!url.is_valid()) {
 | 
|      // We handle error cases.
 | 
| @@ -448,6 +450,21 @@ bool ProfileIOData::IsHandledURL(const GURL& url) {
 | 
|    return IsHandledProtocol(url.scheme());
 | 
|  }
 | 
|  
 | 
| +// static
 | 
| +void ProfileIOData::InstallProtocolHandlers(
 | 
| +    net::URLRequestJobFactoryImpl* job_factory,
 | 
| +    content::ProtocolHandlerMap* protocol_handlers) {
 | 
| +  for (content::ProtocolHandlerMap::iterator it =
 | 
| +           protocol_handlers->begin();
 | 
| +       it != protocol_handlers->end();
 | 
| +       ++it) {
 | 
| +    bool set_protocol = job_factory->SetProtocolHandler(
 | 
| +        it->first, it->second.release());
 | 
| +    DCHECK(set_protocol);
 | 
| +  }
 | 
| +  protocol_handlers->clear();
 | 
| +}
 | 
| +
 | 
|  content::ResourceContext* ProfileIOData::GetResourceContext() const {
 | 
|    return resource_context_.get();
 | 
|  }
 | 
| @@ -474,16 +491,7 @@ ChromeURLRequestContext* ProfileIOData::GetIsolatedAppRequestContext(
 | 
|      const StoragePartitionDescriptor& partition_descriptor,
 | 
|      scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
 | 
|          protocol_handler_interceptor,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        blob_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        file_system_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        developer_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        chrome_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        chrome_devtools_protocol_handler) const {
 | 
| +    content::ProtocolHandlerMap* protocol_handlers) const {
 | 
|    DCHECK(initialized_);
 | 
|    ChromeURLRequestContext* context = NULL;
 | 
|    if (ContainsKey(app_request_context_map_, partition_descriptor)) {
 | 
| @@ -491,9 +499,7 @@ ChromeURLRequestContext* ProfileIOData::GetIsolatedAppRequestContext(
 | 
|    } else {
 | 
|      context = AcquireIsolatedAppRequestContext(
 | 
|          main_context, partition_descriptor, protocol_handler_interceptor.Pass(),
 | 
| -        blob_protocol_handler.Pass(), file_system_protocol_handler.Pass(),
 | 
| -        developer_protocol_handler.Pass(), chrome_protocol_handler.Pass(),
 | 
| -        chrome_devtools_protocol_handler.Pass());
 | 
| +        protocol_handlers);
 | 
|      app_request_context_map_[partition_descriptor] = context;
 | 
|    }
 | 
|    DCHECK(context);
 | 
| @@ -603,17 +609,7 @@ std::string ProfileIOData::GetSSLSessionCacheShard() {
 | 
|    return StringPrintf("profile/%u", ssl_session_cache_instance++);
 | 
|  }
 | 
|  
 | 
| -void ProfileIOData::Init(
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        blob_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        file_system_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        developer_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        chrome_protocol_handler,
 | 
| -    scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
 | 
| -        chrome_devtools_protocol_handler) const {
 | 
| +void ProfileIOData::Init(content::ProtocolHandlerMap* protocol_handlers) const {
 | 
|    // The basic logic is implemented here. The specific initialization
 | 
|    // is done in InitializeInternal(), implemented by subtypes. Static helper
 | 
|    // functions have been provided to assist in common operations.
 | 
| @@ -695,12 +691,7 @@ void ProfileIOData::Init(
 | 
|    managed_mode_url_filter_ = profile_params_->managed_mode_url_filter;
 | 
|  #endif
 | 
|  
 | 
| -  InitializeInternal(profile_params_.get(),
 | 
| -                     blob_protocol_handler.Pass(),
 | 
| -                     file_system_protocol_handler.Pass(),
 | 
| -                     developer_protocol_handler.Pass(),
 | 
| -                     chrome_protocol_handler.Pass(),
 | 
| -                     chrome_devtools_protocol_handler.Pass());
 | 
| +  InitializeInternal(profile_params_.get(), protocol_handlers);
 | 
|  
 | 
|    profile_params_.reset();
 | 
|    initialized_ = true;
 | 
| 
 |