blob: 8ecc81c522d2407641869a917021ede575c85c65 [file] [log] [blame]
[email protected]8b96de122010-02-15 15:15:221// Copyright (c) 2010 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
[email protected]93526f92010-02-19 16:37:425// 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.
[email protected]e1d4edb2010-02-17 17:33:568// 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.
[email protected]93526f92010-02-19 16:37:4210// This API is provided as abstract base classes to allow mocking and testing
[email protected]e1d4edb2010-02-17 17:33:5611// of clients, without dependency on browser process singleton objects etc.
12
[email protected]8b96de122010-02-15 15:15:2213#ifndef CHROME_BROWSER_GEOLOCATION_ACCESS_TOKEN_STORE_H_
14#define CHROME_BROWSER_GEOLOCATION_ACCESS_TOKEN_STORE_H_
15
[email protected]e1d4edb2010-02-17 17:33:5616#include <map>
17
[email protected]8b96de122010-02-15 15:15:2218#include "base/ref_counted.h"
19#include "base/string16.h"
[email protected]93526f92010-02-19 16:37:4220#include "base/task.h"
21#include "chrome/browser/cancelable_request.h"
[email protected]e1d4edb2010-02-17 17:33:5622#include "googleurl/src/gurl.h"
[email protected]8b96de122010-02-15 15:15:2223
24class GURL;
25class PrefService;
26
27// Provides storage for the access token used in the network request.
[email protected]93526f92010-02-19 16:37:4228class AccessTokenStore : public base::RefCountedThreadSafe<AccessTokenStore>,
29 public CancelableRequestProvider {
[email protected]8b96de122010-02-15 15:15:2230 public:
31 static void RegisterPrefs(PrefService* prefs);
32
[email protected]93526f92010-02-19 16:37:4233 // Map of server URLs to associated access token.
34 typedef std::map<GURL, string16> AccessTokenSet;
35 typedef Callback1<AccessTokenSet>::Type LoadAccessTokensCallbackType;
36 // callback will be invoked once, after existing access tokens have
37 // been loaded from persistent store. Takes ownership of callback.
38 // Returns a handle which can subsequently be used with CancelRequest().
39 Handle LoadAccessTokens(CancelableRequestConsumerBase* consumer,
40 LoadAccessTokensCallbackType* callback);
41
42 virtual void SaveAccessToken(
43 const GURL& server_url, const string16& access_token) = 0;
[email protected]8b96de122010-02-15 15:15:2244
45 protected:
[email protected]e1d4edb2010-02-17 17:33:5646 friend class base::RefCountedThreadSafe<AccessTokenStore>;
[email protected]93526f92010-02-19 16:37:4247 AccessTokenStore();
[email protected]e1d4edb2010-02-17 17:33:5648 virtual ~AccessTokenStore();
49
[email protected]93526f92010-02-19 16:37:4250 virtual void DoLoadAccessTokens(
51 scoped_refptr<CancelableRequest<LoadAccessTokensCallbackType> > req) = 0;
[email protected]e1d4edb2010-02-17 17:33:5652
53 private:
[email protected]93526f92010-02-19 16:37:4254 DISALLOW_COPY_AND_ASSIGN(AccessTokenStore);
[email protected]8b96de122010-02-15 15:15:2255};
56
57// Creates a new access token store backed by the global chome prefs.
[email protected]93526f92010-02-19 16:37:4258AccessTokenStore* NewChromePrefsAccessTokenStore();
[email protected]8b96de122010-02-15 15:15:2259
60#endif // CHROME_BROWSER_GEOLOCATION_ACCESS_TOKEN_STORE_H_