Home | History | Annotate | Download | only in profiles
      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_BROWSER_PROFILES_GAIA_INFO_UPDATE_SERVICE_H_
      6 #define CHROME_BROWSER_PROFILES_GAIA_INFO_UPDATE_SERVICE_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "base/gtest_prod_util.h"
     10 #include "base/memory/scoped_ptr.h"
     11 #include "base/prefs/pref_member.h"
     12 #include "base/timer/timer.h"
     13 #include "chrome/browser/profiles/profile_downloader.h"
     14 #include "chrome/browser/profiles/profile_downloader_delegate.h"
     15 #include "components/browser_context_keyed_service/browser_context_keyed_service.h"
     16 
     17 class Profile;
     18 class ProfileDownloader;
     19 
     20 // This service kicks off a download of the user's name and profile picture.
     21 // The results are saved in the profile info cache.
     22 class GAIAInfoUpdateService : public ProfileDownloaderDelegate,
     23                               public BrowserContextKeyedService {
     24  public:
     25   explicit GAIAInfoUpdateService(Profile* profile);
     26   virtual ~GAIAInfoUpdateService();
     27 
     28   // Updates the GAIA info for the profile associated with this instance.
     29   virtual void Update();
     30 
     31   // Checks if downloading GAIA info for the given profile is allowed.
     32   static bool ShouldUseGAIAProfileInfo(Profile* profile);
     33 
     34   // ProfileDownloaderDelegate:
     35   virtual bool NeedsProfilePicture() const OVERRIDE;
     36   virtual int GetDesiredImageSideLength() const OVERRIDE;
     37   virtual Profile* GetBrowserProfile() OVERRIDE;
     38   virtual std::string GetCachedPictureURL() const OVERRIDE;
     39   virtual void OnProfileDownloadSuccess(ProfileDownloader* downloader) OVERRIDE;
     40   virtual void OnProfileDownloadFailure(
     41       ProfileDownloader* downloader,
     42       ProfileDownloaderDelegate::FailureReason reason) OVERRIDE;
     43 
     44  private:
     45   FRIEND_TEST_ALL_PREFIXES(GAIAInfoUpdateServiceTest, ScheduleUpdate);
     46 
     47   void OnUsernameChanged();
     48   void ScheduleNextUpdate();
     49 
     50   Profile* profile_;
     51   scoped_ptr<ProfileDownloader> profile_image_downloader_;
     52   StringPrefMember username_pref_;
     53   base::Time last_updated_;
     54   base::OneShotTimer<GAIAInfoUpdateService> timer_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(GAIAInfoUpdateService);
     57 };
     58 
     59 #endif  // CHROME_BROWSER_PROFILES_GAIA_INFO_UPDATE_SERVICE_H_
     60