Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / browser / extensions / token_cache / token_cache_service.h
blobfeb634b447658d7fb973f5f049c19c78fd0ac1b1
1 // Copyright (c) 2013 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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_TOKEN_CACHE_TOKEN_CACHE_SERVICE_H_
6 #define CHROME_BROWSER_EXTENSIONS_TOKEN_CACHE_TOKEN_CACHE_SERVICE_H_
8 #include <map>
9 #include <string>
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/time/time.h"
14 #include "components/keyed_service/core/keyed_service.h"
15 #include "components/signin/core/browser/signin_manager_base.h"
17 class Profile;
19 namespace extensions {
21 // This class caches tokens for the current user. It will clear tokens out
22 // when the user logs out or after the specified timeout interval, or when
23 // the instance of chrome shuts down.
24 class TokenCacheService : public KeyedService,
25 public SigninManagerBase::Observer {
26 public:
27 explicit TokenCacheService(Profile* profile);
28 ~TokenCacheService() override;
30 // Store a token for the currently logged in user. We will look it up later by
31 // the name given here, and we will expire the token after the timeout. For a
32 // timeout of 0, we never expire the token. After time_to_live expires, the
33 // token will be expired.
34 void StoreToken(const std::string& token_name, const std::string& token_value,
35 base::TimeDelta time_to_live);
37 // Retrieve a token for the currently logged in user. This returns an empty
38 // string if the token was not found or timed out.
39 std::string RetrieveToken(const std::string& token_name);
41 // KeyedService:
42 void Shutdown() override;
44 private:
45 friend class TokenCacheTest;
46 FRIEND_TEST_ALL_PREFIXES(TokenCacheTest, SignoutTest);
48 // SigninManagerBase::Observer:
49 void GoogleSignedOut(const std::string& account_id,
50 const std::string& username) override;
52 struct TokenCacheData {
53 std::string token;
54 base::Time expiration_time;
57 // Map the token name (string) to token data.
58 std::map<std::string, TokenCacheData> token_cache_;
59 const Profile* const profile_;
61 DISALLOW_COPY_AND_ASSIGN(TokenCacheService);
64 } // namespace extensions
66 #endif // CHROME_BROWSER_EXTENSIONS_TOKEN_CACHE_TOKEN_CACHE_SERVICE_H_