12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_INSTALL_OBSERVER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_INSTALL_OBSERVER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <string> 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/gfx/image/image_skia.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Extension; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class InstallObserver { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) struct ExtensionInstallParams { 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ExtensionInstallParams( 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string extension_id, 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string extension_name, 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::ImageSkia installing_icon, 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool is_app, 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool is_platform_app); 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string extension_id; 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string extension_name; 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::ImageSkia installing_icon; 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool is_app; 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool is_platform_app; 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool is_ephemeral; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }; 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called at the beginning of the complete installation process, i.e., this 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // is called before the extension download begins. 36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnBeginExtensionInstall(const ExtensionInstallParams& params) {} 37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Called when the Extension begins the download process. This typically 39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // happens right after OnBeginExtensionInstall(), unless the extension has 40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // already been downloaded. 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnBeginExtensionDownload(const std::string& extension_id) {} 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called whenever the extension download is updated. 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Note: Some extensions have multiple modules, so the percent included here 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // is a simple calculation of: 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // (finished_files * 100 + current_file_progress) / (total files * 100). 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnDownloadProgress(const std::string& extension_id, 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int percent_downloaded) {} 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Called when the necessary downloads have completed, and the crx 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // installation is due to start. 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnBeginCrxInstall(const std::string& extension_id) {} 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Called when installation of a crx has completed (either successfully or 550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // not). 560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void OnFinishCrxInstall(const std::string& extension_id, 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool success) {} 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called if the extension fails to install. 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnInstallFailure(const std::string& extension_id) {} 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Called when an extension or an app is installed to the app list. These are 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // simply forwarded from the chrome::NOTIFICATIONs. 64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnDisabledExtensionUpdated(const Extension* extension) {} 65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnAppInstalledToAppList(const std::string& extension_id) {} 66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called when the app list is reordered. 68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnAppsReordered() {} 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notifies observers that the observed object is going away. 71effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void OnShutdown() {} 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~InstallObserver() {} 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_INSTALL_OBSERVER_H_ 80