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#ifndef CONTENT_BROWSER_GEOLOCATION_FAKE_ACCESS_TOKEN_STORE_H_
6#define CONTENT_BROWSER_GEOLOCATION_FAKE_ACCESS_TOKEN_STORE_H_
7
8#include "base/message_loop/message_loop_proxy.h"
9#include "content/public/browser/access_token_store.h"
10#include "testing/gmock/include/gmock/gmock.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace content {
14
15// A fake (non-persisted) access token store instance useful for testing.
16class FakeAccessTokenStore : public AccessTokenStore {
17 public:
18  FakeAccessTokenStore();
19
20  void NotifyDelegateTokensLoaded();
21
22  // AccessTokenStore
23  MOCK_METHOD1(LoadAccessTokens,
24               void(const LoadAccessTokensCallbackType& callback));
25  MOCK_METHOD2(SaveAccessToken,
26               void(const GURL& server_url,
27                    const base::string16& access_token));
28
29  void DefaultLoadAccessTokens(const LoadAccessTokensCallbackType& callback);
30
31  void DefaultSaveAccessToken(const GURL& server_url,
32                              const base::string16& access_token);
33
34  AccessTokenSet access_token_set_;
35  LoadAccessTokensCallbackType callback_;
36
37 protected:
38  // Protected instead of private so we can have NiceMocks.
39  virtual ~FakeAccessTokenStore();
40
41 private:
42  // In some tests, NotifyDelegateTokensLoaded() is called on a thread
43  // other than the originating thread, in which case we must post
44  // back to it.
45  base::MessageLoopProxy* originating_message_loop_;
46
47  DISALLOW_COPY_AND_ASSIGN(FakeAccessTokenStore);
48};
49
50}  // namespace content
51
52#endif  // CONTENT_BROWSER_GEOLOCATION_FAKE_ACCESS_TOKEN_STORE_H_
53