#include "components/blocklist/opt_out_blocklist/sql/opt_out_store_sql.h"
#include <map>
#include <string>
#include <tuple>
#include <utility>
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "components/blocklist/opt_out_blocklist/opt_out_blocklist_data.h"
#include "sql/database.h"
#include "sql/recovery.h"
#include "sql/statement.h"
#include "sql/transaction.h"
namespace blocklist {
namespace {
const char kMaxRowsPerHost[] = …;
const char kMaxRows[] = …;
int MaxRowsPerHostInOptOutDB() { … }
int MaxRowsInOptOutDB() { … }
#define OPT_OUT_TABLE_NAME …
#define ENABLED_TYPES_TABLE_NAME …
void CreateSchema(sql::Database* db) { … }
void DatabaseErrorCallback(sql::Database* db,
int extended_error,
sql::Statement* stmt) { … }
void InitDatabase(sql::Database* db, base::FilePath path) { … }
void AddEntryToDataBase(sql::Database* db,
bool opt_out,
const std::string& host_name,
int type,
base::Time now) { … }
void MaybeEvictHostEntryFromDataBase(sql::Database* db,
const std::string& host_name) { … }
void ClearBlocklistForTypeInDataBase(sql::Database* db, int type) { … }
BlocklistData::AllowedTypesAndVersions GetStoredEntries(sql::Database* db) { … }
void InsertEnabledTypesInDataBase(sql::Database* db, int type, int version) { … }
void UpdateEnabledTypesInDataBase(sql::Database* db, int type, int version) { … }
void CheckAndReconcileEnabledTypesWithDataBase(
sql::Database* db,
const BlocklistData::AllowedTypesAndVersions& allowed_types) { … }
void LoadBlockListFromDataBase(
sql::Database* db,
std::unique_ptr<BlocklistData> blocklist_data,
scoped_refptr<base::SingleThreadTaskRunner> runner,
LoadBlockListCallback callback) { … }
void LoadBlockListSync(sql::Database* db,
const base::FilePath& path,
std::unique_ptr<BlocklistData> blocklist_data,
scoped_refptr<base::SingleThreadTaskRunner> runner,
LoadBlockListCallback callback) { … }
void ClearBlockListSync(sql::Database* db,
base::Time begin_time,
base::Time end_time) { … }
void AddEntrySync(bool opt_out,
const std::string& host_name,
int type,
base::Time now,
sql::Database* db) { … }
}
OptOutStoreSQL::OptOutStoreSQL(
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
scoped_refptr<base::SequencedTaskRunner> background_task_runner,
const base::FilePath& path)
: … { … }
OptOutStoreSQL::~OptOutStoreSQL() { … }
void OptOutStoreSQL::AddEntry(bool opt_out,
const std::string& host_name,
int type,
base::Time now) { … }
void OptOutStoreSQL::ClearBlockList(base::Time begin_time,
base::Time end_time) { … }
void OptOutStoreSQL::LoadBlockList(
std::unique_ptr<BlocklistData> blocklist_data,
LoadBlockListCallback callback) { … }
}