• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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 // Defines the Geolocation access token store, and associated factory function.
6 // An access token store is responsible for providing the API to persist
7 // access tokens, one at a time, and to load them back on mass.
8 // The API is a little more complex than one might wish, due to the need for
9 // prefs access to happen asynchronously on the UI thread.
10 // This API is provided as abstract base classes to allow mocking and testing
11 // of clients, without dependency on browser process singleton objects etc.
12 
13 #ifndef CONTENT_PUBLIC_BROWSER_ACCESS_TOKEN_STORE_H_
14 #define CONTENT_PUBLIC_BROWSER_ACCESS_TOKEN_STORE_H_
15 
16 #include <map>
17 
18 #include "base/callback.h"
19 #include "base/memory/ref_counted.h"
20 #include "base/strings/string16.h"
21 #include "content/common/content_export.h"
22 #include "url/gurl.h"
23 
24 class GURL;
25 
26 namespace net {
27 class URLRequestContextGetter;
28 }
29 
30 namespace content {
31 
32 // Provides storage for the access token used in the network request.
33 class AccessTokenStore : public base::RefCountedThreadSafe<AccessTokenStore> {
34  public:
35   // Map of server URLs to associated access token.
36   typedef std::map<GURL, base::string16> AccessTokenSet;
37   typedef base::Callback<void(AccessTokenSet, net::URLRequestContextGetter*)>
38       LoadAccessTokensCallbackType;
39 
40   // |callback| will be invoked once per LoadAccessTokens call, after existing
41   // access tokens have been loaded from persistent store. As a convenience the
42   // URLRequestContextGetter is also supplied as an argument in |callback|, as
43   // in Chrome the call to obtain this must also be performed on the UI thread
44   // so it is efficient to piggyback it onto this request.
45   // Takes ownership of |callback|.
46   virtual void LoadAccessTokens(
47       const LoadAccessTokensCallbackType& callback) = 0;
48 
49   virtual void SaveAccessToken(
50       const GURL& server_url, const base::string16& access_token) = 0;
51 
52  protected:
53   friend class base::RefCountedThreadSafe<AccessTokenStore>;
AccessTokenStore()54   CONTENT_EXPORT AccessTokenStore() {}
~AccessTokenStore()55   CONTENT_EXPORT virtual ~AccessTokenStore() {}
56 };
57 
58 }  // namespace content
59 
60 #endif  // CONTENT_PUBLIC_BROWSER_ACCESS_TOKEN_STORE_H_
61