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