#ifndef CHROME_BROWSER_UI_APP_LIST_RECOMMENDED_APPS_H_
#define CHROME_BROWSER_UI_APP_LIST_RECOMMENDED_APPS_H_
#include <vector>
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/observer_list.h"
#include "base/prefs/pref_change_registrar.h"
#include "chrome/browser/extensions/install_observer.h"
class Profile;
namespace app_list {
class RecommendedAppsObserver;
class RecommendedApps : public extensions::InstallObserver {
public:
typedef std::vector<scoped_refptr<const extensions::Extension> > Apps;
explicit RecommendedApps(Profile* profile);
virtual ~RecommendedApps();
void AddObserver(RecommendedAppsObserver* observer);
void RemoveObserver(RecommendedAppsObserver* observer);
const Apps& apps() const { return apps_; }
private:
void Update();
virtual void OnExtensionInstalled(
const extensions::Extension* extension) OVERRIDE;
virtual void OnExtensionLoaded(
const extensions::Extension* extension) OVERRIDE;
virtual void OnExtensionUnloaded(
const extensions::Extension* extension) OVERRIDE;
virtual void OnExtensionUninstalled(
const extensions::Extension* extension) OVERRIDE;
Profile* profile_;
PrefChangeRegistrar pref_change_registrar_;
Apps apps_;
ObserverList<RecommendedAppsObserver, true> observers_;
DISALLOW_COPY_AND_ASSIGN(RecommendedApps);
};
}
#endif