token_service_table.h revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright 2014 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 COMPONENTS_SIGNIN_CORE_BROWSER_WEBDATA_TOKEN_SERVICE_TABLE_H_
6#define COMPONENTS_SIGNIN_CORE_BROWSER_WEBDATA_TOKEN_SERVICE_TABLE_H_
7
8#include <map>
9#include <string>
10
11#include "base/compiler_specific.h"
12#include "components/webdata/common/web_database_table.h"
13
14class WebDatabase;
15
16class TokenServiceTable : public WebDatabaseTable {
17 public:
18  TokenServiceTable() {}
19  virtual ~TokenServiceTable() {}
20
21  // Retrieves the TokenServiceTable* owned by |database|.
22  static TokenServiceTable* FromWebDatabase(WebDatabase* db);
23
24  virtual WebDatabaseTable::TypeKey GetTypeKey() const OVERRIDE;
25  virtual bool CreateTablesIfNecessary() OVERRIDE;
26  virtual bool IsSyncable() OVERRIDE;
27  virtual bool MigrateToVersion(int version,
28                                bool* update_compatible_version) OVERRIDE;
29
30  // Remove all tokens previously set with SetTokenForService.
31  bool RemoveAllTokens();
32
33  // Removes a token related to the service from the token_service table.
34  bool RemoveTokenForService(const std::string& service);
35
36  // Retrieves all tokens previously set with SetTokenForService.
37  // Returns true if there were tokens and we decrypted them,
38  // false if there was a failure somehow
39  bool GetAllTokens(std::map<std::string, std::string>* tokens);
40
41  // Store a token in the token_service table. Stored encrypted. May cause
42  // a mac keychain popup.
43  // True if we encrypted a token and stored it, false otherwise.
44  bool SetTokenForService(const std::string& service,
45                          const std::string& token);
46
47 private:
48  DISALLOW_COPY_AND_ASSIGN(TokenServiceTable);
49};
50
51#endif  // COMPONENTS_SIGNIN_CORE_BROWSER_WEBDATA_TOKEN_SERVICE_TABLE_H_
52