diff options
author | sdefresne <sdefresne@chromium.org> | 2016-02-16 08:37:36 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-16 16:38:30 +0000 |
commit | e292025e0d2ac8294604f3c974c5abd948d13915 (patch) | |
tree | 3167aaccdb61ebcf7c8853e5cce3d7cac34fa4d9 /ios/chrome/browser/browser_state/chrome_browser_state.mm | |
parent | 19d6a0ad83b85a77c979af17a902979b453629cf (diff) | |
download | chromium_src-e292025e0d2ac8294604f3c974c5abd948d13915.zip chromium_src-e292025e0d2ac8294604f3c974c5abd948d13915.tar.gz chromium_src-e292025e0d2ac8294604f3c974c5abd948d13915.tar.bz2 |
Convert C++ files to Objective-C++ files to remove hack.
In order to remove hack using __OBJC__ to forward-declare an Objective-C
class as a C++ class when the file is included from a C++ file, instead
convert the clients to be Objective-C++ files.
This fixes all clients of ios/web/public/web_state/web_state.h.
BUG=298181
Review URL: https://codereview.chromium.org/1698213003
Cr-Commit-Position: refs/heads/master@{#375592}
Diffstat (limited to 'ios/chrome/browser/browser_state/chrome_browser_state.mm')
-rw-r--r-- | ios/chrome/browser/browser_state/chrome_browser_state.mm | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state.mm b/ios/chrome/browser/browser_state/chrome_browser_state.mm new file mode 100644 index 0000000..adb2333 --- /dev/null +++ b/ios/chrome/browser/browser_state/chrome_browser_state.mm @@ -0,0 +1,82 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#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) { + // This is safe; this is the only implementation of BrowserState. + return static_cast<ChromeBrowserState*>(browser_state); +} + +// static +ChromeBrowserState* ChromeBrowserState::FromWebUIIOS(web::WebUIIOS* web_ui) { + return FromBrowserState(web_ui->GetWebState()->GetBrowserState()); +} + +std::string ChromeBrowserState::GetDebugName() { + // The debug name is based on the state path of the original browser state + // to keep in sync with the meaning on other platforms. + std::string name = + GetOriginalChromeBrowserState()->GetStatePath().BaseName().MaybeAsASCII(); + if (name.empty()) { + name = "UnknownBrowserState"; + } + 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 |