Commit 2deccf83 authored by Yi Su's avatar Yi Su Committed by Commit Bot

Add TemplateURLFetcherFactory.

Add TemplateURLFetcherFactory for iOS to support downloading and parsing
OSDD(Open Search Description Document) in web pages. This is a prerequisite
for supporting custom search engines.

Bug: 433824
Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;luci.chromium.try:ios-simulator-full-configs
Change-Id: I4ec872f6d9e6541009a3353cb63520ede9fc1470
Reviewed-on: https://chromium-review.googlesource.com/c/1288531Reviewed-by: default avatarMark Cogan <marq@chromium.org>
Commit-Queue: Yi Su <mrsuyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600725}
parent 395e56f1
......@@ -22,6 +22,8 @@ source_set("search_engines") {
"search_engine_observer_bridge.mm",
"search_engines_util.cc",
"search_engines_util.h",
"template_url_fetcher_factory.cc",
"template_url_fetcher_factory.h",
"template_url_service_client_impl.cc",
"template_url_service_client_impl.h",
"template_url_service_factory.cc",
......
// Copyright 2018 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/search_engines/template_url_fetcher_factory.h"
#include "base/memory/singleton.h"
#include "components/keyed_service/ios/browser_state_dependency_manager.h"
#include "components/search_engines/template_url_fetcher.h"
#include "ios/chrome/browser/browser_state/browser_state_otr_helper.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/search_engines/template_url_service_factory.h"
namespace ios {
// static
TemplateURLFetcher* TemplateURLFetcherFactory::GetForBrowserState(
ios::ChromeBrowserState* browser_state) {
return static_cast<TemplateURLFetcher*>(
GetInstance()->GetServiceForBrowserState(browser_state, true));
}
// static
TemplateURLFetcherFactory* TemplateURLFetcherFactory::GetInstance() {
return base::Singleton<TemplateURLFetcherFactory>::get();
}
TemplateURLFetcherFactory::TemplateURLFetcherFactory()
: BrowserStateKeyedServiceFactory(
"TemplateURLFetcher",
BrowserStateDependencyManager::GetInstance()) {
DependsOn(TemplateURLServiceFactory::GetInstance());
}
TemplateURLFetcherFactory::~TemplateURLFetcherFactory() {}
std::unique_ptr<KeyedService>
TemplateURLFetcherFactory::BuildServiceInstanceFor(
web::BrowserState* context) const {
return std::make_unique<TemplateURLFetcher>(
TemplateURLServiceFactory::GetForBrowserState(
static_cast<ios::ChromeBrowserState*>(context)));
}
web::BrowserState* TemplateURLFetcherFactory::GetBrowserStateToUse(
web::BrowserState* context) const {
return GetBrowserStateRedirectedInIncognito(context);
}
} // namespace ios
// Copyright 2018 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.
#ifndef IOS_CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_FETCHER_FACTORY_H_
#define IOS_CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_FETCHER_FACTORY_H_
#include <memory>
#include "base/macros.h"
#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
namespace base {
template <typename T>
struct DefaultSingletonTraits;
} // namespace base
class TemplateURLFetcher;
namespace ios {
class ChromeBrowserState;
// Singleton that owns all TemplateURLFetchers and associates them with
// ios::ChromeBrowserState.
class TemplateURLFetcherFactory : public BrowserStateKeyedServiceFactory {
public:
static TemplateURLFetcher* GetForBrowserState(
ios::ChromeBrowserState* browser_state);
static TemplateURLFetcherFactory* GetInstance();
private:
friend struct base::DefaultSingletonTraits<TemplateURLFetcherFactory>;
TemplateURLFetcherFactory();
~TemplateURLFetcherFactory() override;
std::unique_ptr<KeyedService> BuildServiceInstanceFor(
web::BrowserState* context) const override;
web::BrowserState* GetBrowserStateToUse(
web::BrowserState* context) const override;
DISALLOW_COPY_AND_ASSIGN(TemplateURLFetcherFactory);
};
} // namespace ios
#endif // IOS_CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_FETCHER_FACTORY_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment