1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // Copyright 2020 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 "chrome/browser/query_tiles/tile_background_task.h"
- #include "base/feature_list.h"
- #include "chrome/browser/profiles/profile.h"
- #include "chrome/browser/profiles/profile_key.h"
- #include "chrome/browser/query_tiles/query_tile_utils.h"
- #include "chrome/browser/query_tiles/tile_service_factory.h"
- #include "chrome/browser/search_engines/template_url_service_factory.h"
- #include "components/query_tiles/switches.h"
- #include "components/search_engines/template_url.h"
- #include "components/search_engines/template_url_service.h"
- namespace query_tiles {
- namespace {
- bool IsSearchEngineSupported(TemplateURLService* template_url_service) {
- // Could be first start case, return true by default.
- if (!template_url_service)
- return true;
- const TemplateURL* default_search_provider =
- template_url_service->GetDefaultSearchProvider();
- return default_search_provider &&
- default_search_provider->url_ref().HasGoogleBaseURLs(
- template_url_service->search_terms_data());
- }
- } // namespace
- TileBackgroundTask::TileBackgroundTask() = default;
- TileBackgroundTask::~TileBackgroundTask() = default;
- void TileBackgroundTask::OnStartTaskInReducedMode(
- const TaskParameters& task_params,
- TaskFinishedCallback callback,
- SimpleFactoryKey* key) {
- callback_ = std::move(callback);
- }
- void TileBackgroundTask::OnStartTaskWithFullBrowser(
- const TaskParameters& task_params,
- TaskFinishedCallback callback,
- content::BrowserContext* browser_context) {
- StartFetchTask(browser_context, std::move(callback));
- }
- void TileBackgroundTask::OnFullBrowserLoaded(
- content::BrowserContext* browser_context) {
- StartFetchTask(browser_context, std::move(callback_));
- }
- bool TileBackgroundTask::OnStopTask(const TaskParameters& task_params) {
- // Don't reschedule.
- return false;
- }
- void TileBackgroundTask::StartFetchTask(
- content::BrowserContext* browser_context,
- TaskFinishedCallback callback) {
- auto* profile_key =
- Profile::FromBrowserContext(browser_context)->GetProfileKey();
- TemplateURLService* template_url_service =
- TemplateURLServiceFactory::GetForProfile(
- Profile::FromBrowserContext(browser_context));
- auto* tile_service =
- TileServiceFactory::GetInstance()->GetForKey(profile_key);
- DCHECK(tile_service);
- if (IsQueryTilesEnabled() && IsSearchEngineSupported(template_url_service)) {
- tile_service->StartFetchForTiles(false, std::move(callback));
- } else {
- tile_service->CancelTask();
- }
- }
- } // namespace query_tiles
|