// 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.

#ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_CLIENT_H_
#define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_CLIENT_H_

#include "base/strings/string16.h"
#include "components/search_engines/template_url_id.h"

class GURL;
class TemplateURLService;

// This interface provides history related functionality required by
// TemplateURLService.
// TODO(hashimoto): Get rid of this once HistoryService gets componentized.
class TemplateURLServiceClient {
 public:
  virtual ~TemplateURLServiceClient() {}

  // Called by TemplateURLService::Shutdown as part of the two phase shutdown
  // of the KeyedService.
  virtual void Shutdown() = 0;

  // Sets the pointer to the owner of this object.
  virtual void SetOwner(TemplateURLService* owner) = 0;

  // Deletes all search terms for the specified keyword.
  virtual void DeleteAllSearchTermsForKeyword(TemplateURLID id) = 0;

  // Sets the search terms for the specified url and keyword.
  virtual void SetKeywordSearchTermsForURL(const GURL& url,
                                           TemplateURLID id,
                                           const base::string16& term) = 0;

  // Adds the given URL to history as a keyword generated visit.
  virtual void AddKeywordGeneratedVisit(const GURL& url) = 0;
};

#endif  // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_CLIENT_H_
