| Index: ios/chrome/browser/browser_state/chrome_browser_state.cc | 
| diff --git a/ios/chrome/browser/browser_state/chrome_browser_state.cc b/ios/chrome/browser/browser_state/chrome_browser_state.cc | 
| index 2926e02144042ff8ec16b72e16f10ff919842e64..adb23337f1f3dbc316f602db554211953ab148bc 100644 | 
| --- a/ios/chrome/browser/browser_state/chrome_browser_state.cc | 
| +++ b/ios/chrome/browser/browser_state/chrome_browser_state.cc | 
| @@ -4,12 +4,28 @@ | 
|  | 
| #include "ios/chrome/browser/browser_state/chrome_browser_state.h" | 
|  | 
| +#include <utility> | 
| + | 
| #include "base/files/file_path.h" | 
| +#include "base/logging.h" | 
| +#include "base/sequenced_task_runner.h" | 
| +#include "components/prefs/json_pref_store.h" | 
| +#include "components/syncable_prefs/pref_service_syncable.h" | 
| +#include "ios/chrome/browser/chrome_url_constants.h" | 
| +#include "ios/chrome/browser/net/ios_chrome_url_request_context_getter.h" | 
| +#include "ios/chrome/browser/net/net_types.h" | 
| #include "ios/public/provider/web/web_ui_ios.h" | 
| #include "ios/web/public/web_state/web_state.h" | 
| +#include "ios/web/public/web_thread.h" | 
| +#include "ios/web/webui/url_data_manager_ios_backend.h" | 
| +#include "net/url_request/url_request_interceptor.h" | 
|  | 
| namespace ios { | 
|  | 
| +ChromeBrowserState::ChromeBrowserState() {} | 
| + | 
| +ChromeBrowserState::~ChromeBrowserState() {} | 
| + | 
| // static | 
| ChromeBrowserState* ChromeBrowserState::FromBrowserState( | 
| web::BrowserState* browser_state) { | 
| @@ -33,4 +49,34 @@ std::string ChromeBrowserState::GetDebugName() { | 
| return name; | 
| } | 
|  | 
| +scoped_refptr<base::SequencedTaskRunner> ChromeBrowserState::GetIOTaskRunner() { | 
| +  base::FilePath browser_state_path = | 
| +      GetOriginalChromeBrowserState()->GetStatePath(); | 
| +  return JsonPrefStore::GetTaskRunnerForFile(browser_state_path, | 
| +                                             web::WebThread::GetBlockingPool()); | 
| +} | 
| + | 
| +syncable_prefs::PrefServiceSyncable* ChromeBrowserState::GetSyncablePrefs() { | 
| +  return static_cast<syncable_prefs::PrefServiceSyncable*>(GetPrefs()); | 
| +} | 
| + | 
| +TestChromeBrowserState* ChromeBrowserState::AsTestChromeBrowserState() { | 
| +  return nullptr; | 
| +} | 
| + | 
| +net::URLRequestContextGetter* ChromeBrowserState::GetRequestContext() { | 
| +  DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::UI); | 
| +  if (!request_context_getter_) { | 
| +    ProtocolHandlerMap protocol_handlers; | 
| +    protocol_handlers[kChromeUIScheme] = | 
| +        linked_ptr<net::URLRequestJobFactory::ProtocolHandler>( | 
| +            web::URLDataManagerIOSBackend::CreateProtocolHandler(this) | 
| +                .release()); | 
| +    URLRequestInterceptorScopedVector request_interceptors; | 
| +    request_context_getter_ = make_scoped_refptr(CreateRequestContext( | 
| +        &protocol_handlers, std::move(request_interceptors))); | 
| +  } | 
| +  return request_context_getter_.get(); | 
| +} | 
| + | 
| }  // namespace ios | 
|  |