app_result.h revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
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_UI_APP_LIST_SEARCH_APP_RESULT_H_
6#define CHROME_BROWSER_UI_APP_LIST_SEARCH_APP_RESULT_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "chrome/browser/extensions/extension_icon_image.h"
12#include "chrome/browser/extensions/install_observer.h"
13#include "chrome/browser/ui/app_list/app_context_menu_delegate.h"
14#include "chrome/browser/ui/app_list/search/chrome_search_result.h"
15
16class AppListControllerDelegate;
17class Profile;
18
19namespace extensions {
20class InstallTracker;
21}
22
23namespace app_list {
24
25class AppContextMenu;
26class TokenizedString;
27class TokenizedStringMatch;
28
29class AppResult : public ChromeSearchResult,
30                  public extensions::IconImage::Observer,
31                  public AppContextMenuDelegate,
32                  public extensions::InstallObserver {
33 public:
34  AppResult(Profile* profile,
35            const std::string& app_id,
36            AppListControllerDelegate* controller);
37  virtual ~AppResult();
38
39  void UpdateFromMatch(const TokenizedString& title,
40                       const TokenizedStringMatch& match);
41
42  // ChromeSearchResult overides:
43  virtual void Open(int event_flags) OVERRIDE;
44  virtual void InvokeAction(int action_index, int event_flags) OVERRIDE;
45  virtual scoped_ptr<ChromeSearchResult> Duplicate() OVERRIDE;
46  virtual ui::MenuModel* GetContextMenuModel() OVERRIDE;
47  virtual ChromeSearchResultType GetType() OVERRIDE;
48
49 private:
50  void StartObservingInstall();
51  void StopObservingInstall();
52
53  // extensions::IconImage::Observer overrides:
54  virtual void OnExtensionIconImageChanged(
55      extensions::IconImage* image) OVERRIDE;
56
57  // AppContextMenuDelegate overrides:
58  virtual void ExecuteLaunchCommand(int event_flags) OVERRIDE;
59
60  // extensions::InstallObserver overrides:
61  virtual void OnBeginExtensionInstall(const std::string& extension_id,
62                                       const std::string& extension_name,
63                                       const gfx::ImageSkia& installing_icon,
64                                       bool is_app,
65                                       bool is_platform_app) OVERRIDE;
66  virtual void OnDownloadProgress(const std::string& extension_id,
67                                  int percent_downloaded) OVERRIDE;
68  virtual void OnInstallFailure(const std::string& extension_id) OVERRIDE;
69  virtual void OnExtensionInstalled(
70      const extensions::Extension* extension) OVERRIDE;
71  virtual void OnExtensionLoaded(
72      const extensions::Extension* extension) OVERRIDE;
73  virtual void OnExtensionUnloaded(
74      const extensions::Extension* extension) OVERRIDE;
75  virtual void OnExtensionUninstalled(
76      const extensions::Extension* extension) OVERRIDE;
77  virtual void OnAppsReordered() OVERRIDE;
78  virtual void OnAppInstalledToAppList(
79      const std::string& extension_id) OVERRIDE;
80  virtual void OnShutdown() OVERRIDE;
81
82  Profile* profile_;
83  const std::string app_id_;
84  AppListControllerDelegate* controller_;
85
86  bool is_platform_app_;
87  scoped_ptr<extensions::IconImage> icon_;
88  scoped_ptr<AppContextMenu> context_menu_;
89
90  extensions::InstallTracker* install_tracker_;  // Not owned.
91
92  DISALLOW_COPY_AND_ASSIGN(AppResult);
93};
94
95}  // namespace app_list
96
97#endif  // CHROME_BROWSER_UI_APP_LIST_SEARCH_APP_RESULT_H_
98