// Copyright (c) 2012 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 CHROME_BROWSER_PREDICTORS_PREDICTOR_TABLE_BASE_H_ #define CHROME_BROWSER_PREDICTORS_PREDICTOR_TABLE_BASE_H_ #include "base/memory/ref_counted.h" #include "base/synchronization/cancellation_flag.h" namespace sql { class Connection; } namespace predictors { // Base class for all tables in the PredictorDatabase. // // Refcounted as it is created and destroyed in the UI thread but all database // related functions need to happen in the database thread. class PredictorTableBase : public base::RefCountedThreadSafe { protected: PredictorTableBase(); virtual ~PredictorTableBase(); // DB thread functions. virtual void CreateTableIfNonExistent() = 0; virtual void LogDatabaseStats() = 0; void Initialize(sql::Connection* db); void SetCancelled(); sql::Connection* DB(); void ResetDB(); bool CantAccessDatabase(); private: base::CancellationFlag cancelled_; friend class base::RefCountedThreadSafe; sql::Connection* db_; DISALLOW_COPY_AND_ASSIGN(PredictorTableBase); }; } // namespace predictors #endif // CHROME_BROWSER_PREDICTORS_PREDICTOR_TABLE_BASE_H_