19714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com// Copyright 2014 The Chromium Authors. All rights reserved.
29714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com// Use of this source code is governed by a BSD-style license that can be
39714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com// found in the LICENSE file.
49714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com
59714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com#ifndef CHROME_BROWSER_SIGNIN_CHROME_SIGNIN_CLIENT_FACTORY_H_
69714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com#define CHROME_BROWSER_SIGNIN_CHROME_SIGNIN_CLIENT_FACTORY_H_
79714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com
89714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com#include "base/memory/singleton.h"
99714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com#include "chrome/browser/signin/chrome_signin_client.h"
109714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
119714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com
123b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.comclass Profile;
139714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com
143b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com// Singleton that owns all ChromeSigninClients and associates them with
153b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com// Profiles.
16d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.comclass ChromeSigninClientFactory : public BrowserContextKeyedServiceFactory {
173b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com public:
183b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  // Returns the instance of SigninClient associated with this profile
193b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  // (creating one if none exists). Returns NULL if this profile cannot have an
203b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  // SigninClient (for example, if |profile| is incognito).
219714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com  static SigninClient* GetForProfile(Profile* profile);
229714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com
233b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  // Returns an instance of the factory singleton.
243b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  static ChromeSigninClientFactory* GetInstance();
259714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com
269714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com private:
273b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  friend struct DefaultSingletonTraits<ChromeSigninClientFactory>;
28a8c7f7702fb4bbedb615031bc653c5cd161a038ecommit-bot@chromium.org
299714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com  ChromeSigninClientFactory();
303b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com  virtual ~ChromeSigninClientFactory();
313b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com
329714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com  // BrowserContextKeyedServiceFactory:
339714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com  virtual KeyedService* BuildServiceInstanceFor(
349714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com      content::BrowserContext* profile) const OVERRIDE;
353b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com};
363b700f6929e093cb14cc0e4ef569e6f697c5a816reed@google.com
379714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com#endif  // CHROME_BROWSER_SIGNIN_CHROME_SIGNIN_CLIENT_FACTORY_H_
389714516a0db56fe1c59d5e831cb0c6d820102c30djsollen@google.com