1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_WEBDATA_TOKEN_SERVICE_TABLE_H_
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_WEBDATA_TOKEN_SERVICE_TABLE_H_
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/webdata/web_database_table.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass TokenServiceTable : public WebDatabaseTable {
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  TokenServiceTable(sql::Connection* db, sql::MetaTable* meta_table)
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      : WebDatabaseTable(db, meta_table) {}
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual ~TokenServiceTable() {}
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual bool Init();
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual bool IsSyncable();
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Remove all tokens previously set with SetTokenForService.
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool RemoveAllTokens();
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Retrieves all tokens previously set with SetTokenForService.
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Returns true if there were tokens and we decrypted them,
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // false if there was a failure somehow
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool GetAllTokens(std::map<std::string, std::string>* tokens);
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Store a token in the token_service table. Stored encrypted. May cause
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // a mac keychain popup.
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // True if we encrypted a token and stored it, false otherwise.
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool SetTokenForService(const std::string& service,
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                          const std::string& token);
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private:
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(TokenServiceTable);
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_BROWSER_WEBDATA_TOKEN_SERVICE_TABLE_H_
39