chromium/components/search_engines/keyword_table.h

// 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 COMPONENTS_SEARCH_ENGINES_KEYWORD_TABLE_H_
#define COMPONENTS_SEARCH_ENGINES_KEYWORD_TABLE_H_

#include <stdint.h>

#include <string>
#include <utility>
#include <vector>

#include "base/compiler_specific.h"
#include "base/gtest_prod_util.h"
#include "components/search_engines/template_url_id.h"
#include "components/webdata/common/web_database_table.h"

struct TemplateURLData;
class WebDatabase;

namespace sql {
class Statement;
}  // namespace sql

// This class manages the |keywords| MetaTable within the SQLite database
// passed to the constructor. It expects the following schema:
//
// Note: The database stores time in seconds, UTC.
//
// keywords                 Most of the columns mirror that of a field in
//                          TemplateURLData.  See that struct for more details.
//   id
//   short_name
//   keyword
//   favicon_url
//   url
//   safe_for_autoreplace   This is set to false for any entry that was manually
//                          added or edited by the user.
//   originating_url
//   date_created           This column was added after we allowed keywords.
//                          Keywords created before we started tracking
//                          creation date have a value of 0 for this.
//   usage_count
//   input_encodings        Semicolon separated list of supported input
//                          encodings, may be empty.
//   suggest_url
//   prepopulate_id         See TemplateURLData::prepopulate_id.
//   created_by_policy      See TemplateURLData::created_by_policy.  This was
//                          added in version 26.
//   last_modified          See TemplateURLData::last_modified.  This was added
//                          in version 38.
//   sync_guid              See TemplateURLData::sync_guid. This was added in
//                          version 39.
//   alternate_urls         See TemplateURLData::alternate_urls. This was added
//                          in version 47.
//   image_url              See TemplateURLData::image_url. This was added in
//                          version 52.
//   search_url_post_params See TemplateURLData::search_url_post_params. This
//                          was added in version 52.
//   suggest_url_post_params See TemplateURLData::suggestions_url_post_params.
//                          This was added in version 52.
//   image_url_post_params  See TemplateURLData::image_url_post_params. This
//                          was added in version 52.
//   new_tab_url            See TemplateURLData::new_tab_url. This was added in
//                          version 53.
//   last_visited           See TemplateURLData::last_visited. This was added in
//                          version 69.
//   created_from_play_api  See TemplateURLData::created_from_play_api. This was
//                          added in version 82.
//   is_active              See TemplateURLData::is_active. This was added
//                          in version 97.
//   starter_pack_id        See TemplateURLData::starter_pack_id. This was added
//                          in version 103.
//   enforced_by_policy     See TemplateURLData::enforced_by_policy. This was
//                          added in version 112.
//   featured_by_policy     See TemplateURLData::featured_by_policy. This was
//                          added in version 122.
//
// This class also manages some fields in the |meta| table:
//
// Default Search Provider ID        The id of the default search provider.
// Builtin Keyword Version           The version of builtin keywords data.
// Starter Pack Keyword Version      The version of starter pack data.
// Builtin Keyword Country           The country associated with the builtin
//                                   keywords data, stored as a country ID.
// Builtin Keyword Milestone         The version number of Chrome milestone when
//                                   the keyword data has been last merged into
//                                   the database. Written between Chrome M122
//                                   and M129.
//
class KeywordTable : public WebDatabaseTable {};

#endif  // COMPONENTS_SEARCH_ENGINES_KEYWORD_TABLE_H_