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 gfx { 18 class ImageSkia; 19 } 20 21 namespace extensions { 22 23 class ExtensionPrefs; 24 25 class InstallTracker : public BrowserContextKeyedService, 26 public content::NotificationObserver { 27 public: 28 InstallTracker(Profile* profile, 29 extensions::ExtensionPrefs* prefs); 30 virtual ~InstallTracker(); 31 32 void AddObserver(InstallObserver* observer); 33 void RemoveObserver(InstallObserver* observer); 34 35 void OnBeginExtensionInstall( 36 const std::string& extension_id, 37 const std::string& extension_name, 38 const gfx::ImageSkia& installing_icon, 39 bool is_app, 40 bool is_platform_app); 41 void OnDownloadProgress(const std::string& extension_id, 42 int percent_downloaded); 43 void OnInstallFailure(const std::string& extension_id); 44 45 // Overriddes for BrowserContextKeyedService: 46 virtual void Shutdown() OVERRIDE; 47 48 // content::NotificationObserver 49 virtual void Observe(int type, 50 const content::NotificationSource& source, 51 const content::NotificationDetails& details) OVERRIDE; 52 53 private: 54 void OnAppsReordered(); 55 56 ObserverList<InstallObserver> observers_; 57 content::NotificationRegistrar registrar_; 58 PrefChangeRegistrar pref_change_registrar_; 59 60 DISALLOW_COPY_AND_ASSIGN(InstallTracker); 61 }; 62 63 } // namespace extensions 64 65 #endif // CHROME_BROWSER_EXTENSIONS_INSTALL_TRACKER_H_ 66