NaCl: Update revision in DEPS, r12770 -> r12773
[chromium-blink-merge.git] / chrome / browser / ui / app_list / search / app_result.h
blob6872f9c7b8d312ca9e8091d76330248d556e7d61
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_SEARCH_APP_RESULT_H_
6 #define CHROME_BROWSER_UI_APP_LIST_SEARCH_APP_RESULT_H_
8 #include <string>
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 #include "chrome/browser/ui/extensions/extension_enable_flow_delegate.h"
17 class AppListControllerDelegate;
18 class ExtensionEnableFlow;
19 class Profile;
21 namespace extensions {
22 class InstallTracker;
25 namespace app_list {
27 class AppContextMenu;
28 class TokenizedString;
29 class TokenizedStringMatch;
31 class AppResult : public ChromeSearchResult,
32 public extensions::IconImage::Observer,
33 public AppContextMenuDelegate,
34 public ExtensionEnableFlowDelegate,
35 public extensions::InstallObserver {
36 public:
37 AppResult(Profile* profile,
38 const std::string& app_id,
39 AppListControllerDelegate* controller);
40 virtual ~AppResult();
42 void UpdateFromMatch(const TokenizedString& title,
43 const TokenizedStringMatch& match);
45 // ChromeSearchResult overides:
46 virtual void Open(int event_flags) OVERRIDE;
47 virtual void InvokeAction(int action_index, int event_flags) OVERRIDE;
48 virtual scoped_ptr<ChromeSearchResult> Duplicate() OVERRIDE;
49 virtual ui::MenuModel* GetContextMenuModel() OVERRIDE;
50 virtual ChromeSearchResultType GetType() OVERRIDE;
52 private:
53 void StartObservingInstall();
54 void StopObservingInstall();
56 // Checks if extension is disabled and if enable flow should be started.
57 // Returns true if extension enable flow is started or there is already one
58 // running.
59 bool RunExtensionEnableFlow();
61 // Updates the app item's icon, if necessary making it gray.
62 void UpdateIcon();
64 // extensions::IconImage::Observer overrides:
65 virtual void OnExtensionIconImageChanged(
66 extensions::IconImage* image) OVERRIDE;
68 // AppContextMenuDelegate overrides:
69 virtual void ExecuteLaunchCommand(int event_flags) OVERRIDE;
71 // ExtensionEnableFlowDelegate overrides:
72 virtual void ExtensionEnableFlowFinished() OVERRIDE;
73 virtual void ExtensionEnableFlowAborted(bool user_initiated) OVERRIDE;
75 // extensions::InstallObserver overrides:
76 virtual void OnBeginExtensionInstall(
77 const ExtensionInstallParams& params) OVERRIDE;
78 virtual void OnDownloadProgress(const std::string& extension_id,
79 int percent_downloaded) OVERRIDE;
80 virtual void OnInstallFailure(const std::string& extension_id) OVERRIDE;
81 virtual void OnExtensionInstalled(
82 const extensions::Extension* extension) OVERRIDE;
83 virtual void OnExtensionLoaded(
84 const extensions::Extension* extension) OVERRIDE;
85 virtual void OnExtensionUnloaded(
86 const extensions::Extension* extension) OVERRIDE;
87 virtual void OnExtensionUninstalled(
88 const extensions::Extension* extension) OVERRIDE;
89 virtual void OnAppsReordered() OVERRIDE;
90 virtual void OnAppInstalledToAppList(
91 const std::string& extension_id) OVERRIDE;
92 virtual void OnShutdown() OVERRIDE;
94 Profile* profile_;
95 const std::string app_id_;
96 AppListControllerDelegate* controller_;
98 bool is_platform_app_;
99 scoped_ptr<extensions::IconImage> icon_;
100 scoped_ptr<AppContextMenu> context_menu_;
101 scoped_ptr<ExtensionEnableFlow> extension_enable_flow_;
103 extensions::InstallTracker* install_tracker_; // Not owned.
105 DISALLOW_COPY_AND_ASSIGN(AppResult);
108 } // namespace app_list
110 #endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_APP_RESULT_H_