1// Copyright 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.
4
5#ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_OAUTH2_TOKEN_SERVICE_FACTORY_H_
6#define CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_OAUTH2_TOKEN_SERVICE_FACTORY_H_
7
8#include <queue>
9#include <string>
10
11#include "base/basictypes.h"
12
13namespace chromeos {
14
15class DeviceOAuth2TokenService;
16
17class DeviceOAuth2TokenServiceFactory {
18 public:
19  // Returns the instance of the DeviceOAuth2TokenService singleton.  May return
20  // NULL during browser startup and shutdown.  When calling Get(), either make
21  // sure that your code executes after browser startup and before shutdown or
22  // be careful to call Get() every time (instead of holding a pointer) and
23  // check for NULL to handle cases where you might access
24  // DeviceOAuth2TokenService during startup or shutdown.
25  static DeviceOAuth2TokenService* Get();
26
27  // Called by ChromeBrowserMainPartsChromeOS in order to bootstrap the
28  // DeviceOAuth2TokenService instance after the required global data is
29  // available (local state and request context getter).
30  static void Initialize();
31
32  // Called by ChromeBrowserMainPartsChromeOS in order to shutdown the
33  // DeviceOAuth2TokenService instance and cancel all in-flight requests before
34  // the required global data is destroyed (local state and request context
35  // getter).
36  static void Shutdown();
37
38 private:
39  DeviceOAuth2TokenServiceFactory();
40  ~DeviceOAuth2TokenServiceFactory();
41
42  DISALLOW_COPY_AND_ASSIGN(DeviceOAuth2TokenServiceFactory);
43};
44
45}  // namespace chromeos
46
47#endif  // CHROME_BROWSER_CHROMEOS_SETTINGS_DEVICE_OAUTH2_TOKEN_SERVICE_FACTORY_H_
48