Add GCMChannelStatusSyncer to schedule requests and enable/disable GCM
[chromium-blink-merge.git] / chrome / browser / supervised_user / custodian_profile_downloader_service.h
blob0c998d104c55d2da2b0b7761fd9516210505d894
1 // Copyright 2014 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.
5 #ifndef CHROME_BROWSER_SUPERVISED_USER_CUSTODIAN_PROFILE_DOWNLOADER_SERVICE_H_
6 #define CHROME_BROWSER_SUPERVISED_USER_CUSTODIAN_PROFILE_DOWNLOADER_SERVICE_H_
8 #include "base/callback.h"
9 #include "chrome/browser/profiles/profile_downloader.h"
10 #include "chrome/browser/profiles/profile_downloader_delegate.h"
11 #include "components/keyed_service/core/keyed_service.h"
13 class CustodianProfileDownloaderService : public KeyedService,
14 public ProfileDownloaderDelegate {
15 public:
16 // Callback for DownloadProfile() below. If the GAIA profile download is
17 // successful, the profile's full (display) name will be returned.
18 typedef base::Callback<void(const base::string16& /* full name */)>
19 DownloadProfileCallback;
21 virtual ~CustodianProfileDownloaderService();
23 // KeyedService:
24 virtual void Shutdown() OVERRIDE;
26 // Downloads the GAIA account information for the |custodian_profile_|.
27 // This is a best-effort attempt with no error reporting nor timeout.
28 // If the download is successful, the profile's full (display) name will
29 // be returned via the callback. If the download fails or never completes,
30 // the callback will not be called.
31 void DownloadProfile(const DownloadProfileCallback& callback);
33 // ProfileDownloaderDelegate:
34 virtual bool NeedsProfilePicture() const OVERRIDE;
35 virtual int GetDesiredImageSideLength() const OVERRIDE;
36 virtual std::string GetCachedPictureURL() const OVERRIDE;
37 virtual Profile* GetBrowserProfile() OVERRIDE;
38 virtual void OnProfileDownloadSuccess(ProfileDownloader* downloader) OVERRIDE;
39 virtual void OnProfileDownloadFailure(
40 ProfileDownloader* downloader,
41 ProfileDownloaderDelegate::FailureReason reason) OVERRIDE;
43 private:
44 friend class CustodianProfileDownloaderServiceFactory;
45 // Use |CustodianProfileDownloaderServiceFactory::GetForProfile(...)| to
46 // get instances of this service.
47 explicit CustodianProfileDownloaderService(Profile* custodian_profile);
49 scoped_ptr<ProfileDownloader> profile_downloader_;
50 DownloadProfileCallback download_callback_;
52 // Owns us via the KeyedService mechanism.
53 Profile* custodian_profile_;
55 std::string last_downloaded_profile_email_;
56 std::string in_progress_profile_email_;
59 #endif // CHROME_BROWSER_SUPERVISED_USER_CUSTODIAN_PROFILE_DOWNLOADER_SERVICE_H_