summaryrefslogtreecommitdiffstats
path: root/ios/chrome/browser/browser_state/chrome_browser_state.mm
diff options
context:
space:
mode:
authorsdefresne <sdefresne@chromium.org>2016-02-16 08:37:36 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-16 16:38:30 +0000
commite292025e0d2ac8294604f3c974c5abd948d13915 (patch)
tree3167aaccdb61ebcf7c8853e5cce3d7cac34fa4d9 /ios/chrome/browser/browser_state/chrome_browser_state.mm
parent19d6a0ad83b85a77c979af17a902979b453629cf (diff)
downloadchromium_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.mm82
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