190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_WEBSTORE_WEBSTORE_RESULT_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CHROME_BROWSER_UI_APP_LIST_SEARCH_WEBSTORE_WEBSTORE_RESULT_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <string> 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/basictypes.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/weak_ptr.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/install_observer.h" 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/app_list/search/chrome_search_result.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass AppListControllerDelegate; 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Profile; 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace extensions { 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass InstallTracker; 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace app_list { 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebstoreResult : public ChromeSearchResult, 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public extensions::InstallObserver { 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) WebstoreResult(Profile* profile, 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& app_id, 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& localized_name, 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL& icon_url, 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch AppListControllerDelegate* controller); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~WebstoreResult(); 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // ChromeSearchResult overides: 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void Open(int event_flags) OVERRIDE; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void InvokeAction(int action_index, int event_flags) OVERRIDE; 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual scoped_ptr<ChromeSearchResult> Duplicate() OVERRIDE; 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ChromeSearchResultType GetType() OVERRIDE; 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void UpdateActions(); 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void SetDefaultDetails(); 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnIconLoaded(); 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void StartInstall(bool launch_ephemeral_app); 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void InstallCallback(bool success, const std::string& error); 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void StartObservingInstall(); 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void StopObservingInstall(); 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // extensions::InstallObserver overrides: 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void OnBeginExtensionInstall( 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const ExtensionInstallParams& params) OVERRIDE; 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnDownloadProgress(const std::string& extension_id, 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int percent_downloaded) OVERRIDE; 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnInstallFailure(const std::string& extension_id) OVERRIDE; 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnExtensionInstalled( 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const extensions::Extension* extension) OVERRIDE; 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnExtensionLoaded( 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const extensions::Extension* extension) OVERRIDE; 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnExtensionUnloaded( 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const extensions::Extension* extension) OVERRIDE; 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnExtensionUninstalled( 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const extensions::Extension* extension) OVERRIDE; 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnAppsReordered() OVERRIDE; 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnAppInstalledToAppList( 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& extension_id) OVERRIDE; 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnShutdown() OVERRIDE; 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Profile* profile_; 7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string app_id_; 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string localized_name_; 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const GURL icon_url_; 7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::ImageSkia icon_; 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::WeakPtrFactory<WebstoreResult> weak_factory_; 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch AppListControllerDelegate* controller_; 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch extensions::InstallTracker* install_tracker_; // Not owned. 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WebstoreResult); 8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace app_list 8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_WEBSTORE_WEBSTORE_RESULT_H_ 88