blob: caf09daa421d9110c76cb7fca015d162e95376ed [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_SEARCH_ENGINES_CHROME_TEMPLATE_URL_SERVICE_CLIENT_H_
#define CHROME_BROWSER_SEARCH_ENGINES_CHROME_TEMPLATE_URL_SERVICE_CLIENT_H_
#include "base/memory/raw_ptr.h"
#include "base/scoped_observation.h"
#include "components/history/core/browser/history_service.h"
#include "components/history/core/browser/history_service_observer.h"
#include "components/search_engines/template_url_service_client.h"
// ChromeTemplateURLServiceClient provides keyword related history
// functionality for TemplateURLService.
class ChromeTemplateURLServiceClient : public TemplateURLServiceClient,
public history::HistoryServiceObserver {
public:
explicit ChromeTemplateURLServiceClient(
history::HistoryService* history_service);
ChromeTemplateURLServiceClient(const ChromeTemplateURLServiceClient&) =
delete;
ChromeTemplateURLServiceClient& operator=(
const ChromeTemplateURLServiceClient&) = delete;
~ChromeTemplateURLServiceClient() override;
// TemplateURLServiceClient:
void Shutdown() override;
void SetOwner(TemplateURLService* owner) override;
void DeleteAllSearchTermsForKeyword(history::KeywordID keyword_Id) override;
void SetKeywordSearchTermsForURL(const GURL& url,
TemplateURLID id,
const std::u16string& term) override;
void AddKeywordGeneratedVisit(const GURL& url) override;
// history::HistoryServiceObserver:
void OnURLVisited(history::HistoryService* history_service,
const history::URLRow& url_row,
const history::VisitRow& new_visit) override;
private:
raw_ptr<TemplateURLService> owner_;
base::ScopedObservation<history::HistoryService,
history::HistoryServiceObserver>
history_service_observation_{this};
raw_ptr<history::HistoryService> history_service_;
};
#endif // CHROME_BROWSER_SEARCH_ENGINES_CHROME_TEMPLATE_URL_SERVICE_CLIENT_H_