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_EXTENSIONS_INSTALL_TRACKER_H_ 6 #define CHROME_BROWSER_EXTENSIONS_INSTALL_TRACKER_H_ 7 8 #include "base/observer_list.h" 9 #include "base/prefs/pref_change_registrar.h" 10 #include "chrome/browser/extensions/install_observer.h" 11 #include "components/browser_context_keyed_service/browser_context_keyed_service.h" 12 #include "content/public/browser/notification_observer.h" 13 #include "content/public/browser/notification_registrar.h" 14 15 class Profile; 16 17 namespace extensions { 18 19 class ExtensionPrefs; 20 21 class InstallTracker : public BrowserContextKeyedService, 22 public content::NotificationObserver { 23 public: 24 InstallTracker(Profile* profile, 25 extensions::ExtensionPrefs* prefs); 26 virtual ~InstallTracker(); 27 28 void AddObserver(InstallObserver* observer); 29 void RemoveObserver(InstallObserver* observer); 30 31 void OnBeginExtensionInstall( 32 const InstallObserver::ExtensionInstallParams& params); 33 void OnDownloadProgress(const std::string& extension_id, 34 int percent_downloaded); 35 void OnInstallFailure(const std::string& extension_id); 36 37 // Overriddes for BrowserContextKeyedService: 38 virtual void Shutdown() OVERRIDE; 39 40 // content::NotificationObserver 41 virtual void Observe(int type, 42 const content::NotificationSource& source, 43 const content::NotificationDetails& details) OVERRIDE; 44 45 private: 46 void OnAppsReordered(); 47 48 ObserverList<InstallObserver> observers_; 49 content::NotificationRegistrar registrar_; 50 PrefChangeRegistrar pref_change_registrar_; 51 52 DISALLOW_COPY_AND_ASSIGN(InstallTracker); 53 }; 54 55 } // namespace extensions 56 57 #endif // CHROME_BROWSER_EXTENSIONS_INSTALL_TRACKER_H_ 58