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 CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_TOKEN_STORE_H_
6#define CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_TOKEN_STORE_H_
7
8#include <string>
9#include "base/logging.h"
10#include "base/threading/non_thread_safe.h"
11
12// This class serves as the single repository for cloud print auth tokens. This
13// is only used within the CloudPrintProxyCoreThread.
14
15namespace cloud_print {
16
17class CloudPrintTokenStore : public base::NonThreadSafe {
18 public:
19  // Returns the CloudPrintTokenStore instance for this thread. Will be NULL
20  // if no instance was created in this thread before.
21  static CloudPrintTokenStore* current();
22
23  CloudPrintTokenStore();
24  ~CloudPrintTokenStore();
25
26  void SetToken(const std::string& token);
27  std::string token() const {
28    DCHECK(CalledOnValidThread());
29    return token_;
30  }
31
32 private:
33  std::string token_;
34
35  DISALLOW_COPY_AND_ASSIGN(CloudPrintTokenStore);
36};
37
38}  // namespace cloud_print
39
40#endif  // CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_TOKEN_STORE_H_
41