1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_WEBDATA_WEB_DATABASE_TABLE_H_ 6#define CHROME_BROWSER_WEBDATA_WEB_DATABASE_TABLE_H_ 7#pragma once 8 9#include "app/sql/connection.h" 10#include "app/sql/init_status.h" 11#include "app/sql/meta_table.h" 12 13// An abstract base class representing a table within a WebDatabase. 14// Each table should subclass this, adding type-specific methods as needed. 15class WebDatabaseTable { 16 protected: 17 explicit WebDatabaseTable(sql::Connection* db, sql::MetaTable* meta_table) 18 : db_(db), meta_table_(meta_table) {} 19 virtual ~WebDatabaseTable() { 20 db_ = NULL; 21 meta_table_ = NULL; 22 }; 23 24 // Attempts to initialize the table and returns true if successful. 25 virtual bool Init() = 0; 26 27 // In order to encourage developers to think about sync when adding or 28 // or altering new tables, this method must be implemented. Please get in 29 // contact with the sync team if you believe you're making a change that they 30 // should be aware of (or if you could break something). 31 // TODO(andybons): Implement something more robust. 32 virtual bool IsSyncable() = 0; 33 34 sql::Connection* db_; 35 sql::MetaTable* meta_table_; 36 37 private: 38 DISALLOW_COPY_AND_ASSIGN(WebDatabaseTable); 39}; 40 41#endif // CHROME_BROWSER_WEBDATA_WEB_DATABASE_TABLE_H_ 42