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.
5 #ifndef CHROME_BROWSER_UI_APP_LIST_RECOMMENDED_APPS_H_
6 #define CHROME_BROWSER_UI_APP_LIST_RECOMMENDED_APPS_H_
10 #include "base/basictypes.h"
11 #include "base/memory/ref_counted.h"
12 #include "base/observer_list.h"
13 #include "base/prefs/pref_change_registrar.h"
14 #include "chrome/browser/extensions/install_observer.h"
20 class RecommendedAppsObserver;
22 // A class that maintains a list of recommended apps by watching changes
24 class RecommendedApps : public extensions::InstallObserver {
26 typedef std::vector<scoped_refptr<const extensions::Extension> > Apps;
28 explicit RecommendedApps(Profile* profile);
29 virtual ~RecommendedApps();
31 void AddObserver(RecommendedAppsObserver* observer);
32 void RemoveObserver(RecommendedAppsObserver* observer);
34 const Apps& apps() const { return apps_; }
39 // extensions::InstallObserver overrides:
40 virtual void OnBeginExtensionInstall(const std::string& extension_id,
41 const std::string& extension_name,
42 const gfx::ImageSkia& installing_icon,
44 bool is_platform_app) OVERRIDE;
45 virtual void OnDownloadProgress(const std::string& extension_id,
46 int percent_downloaded) OVERRIDE;
47 virtual void OnInstallFailure(const std::string& extension_id) OVERRIDE;
48 virtual void OnExtensionInstalled(
49 const extensions::Extension* extension) OVERRIDE;
50 virtual void OnExtensionLoaded(
51 const extensions::Extension* extension) OVERRIDE;
52 virtual void OnExtensionUnloaded(
53 const extensions::Extension* extension) OVERRIDE;
54 virtual void OnExtensionUninstalled(
55 const extensions::Extension* extension) OVERRIDE;
56 virtual void OnAppsReordered() OVERRIDE;
57 virtual void OnAppInstalledToAppList(
58 const std::string& extension_id) OVERRIDE;
59 virtual void OnShutdown() OVERRIDE;
62 PrefChangeRegistrar pref_change_registrar_;
65 ObserverList<RecommendedAppsObserver, true> observers_;
67 DISALLOW_COPY_AND_ASSIGN(RecommendedApps);
70 } // namespace app_list
72 #endif // CHROME_BROWSER_UI_APP_LIST_RECOMMENDED_APPS_H_