| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_EXTENSIONS_WEBSTORE_INSTALLER_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_WEBSTORE_INSTALLER_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_WEBSTORE_INSTALLER_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_WEBSTORE_INSTALLER_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 namespace base { | 31 namespace base { |
| 32 class FilePath; | 32 class FilePath; |
| 33 } | 33 } |
| 34 | 34 |
| 35 namespace content { | 35 namespace content { |
| 36 class WebContents; | 36 class WebContents; |
| 37 } | 37 } |
| 38 | 38 |
| 39 namespace extensions { | 39 namespace extensions { |
| 40 | 40 |
| 41 class CrxInstaller; |
| 41 class Extension; | 42 class Extension; |
| 42 class Manifest; | 43 class Manifest; |
| 43 | 44 |
| 44 // Downloads and installs extensions from the web store. | 45 // Downloads and installs extensions from the web store. |
| 45 class WebstoreInstaller : public content::NotificationObserver, | 46 class WebstoreInstaller : public content::NotificationObserver, |
| 46 public content::DownloadItem::Observer, | 47 public content::DownloadItem::Observer, |
| 47 public content::WebContentsObserver, | 48 public content::WebContentsObserver, |
| 48 public base::RefCountedThreadSafe< | 49 public base::RefCountedThreadSafe< |
| 49 WebstoreInstaller, content::BrowserThread::DeleteOnUIThread> { | 50 WebstoreInstaller, content::BrowserThread::DeleteOnUIThread> { |
| 50 public: | 51 public: |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 // Downloads and installs a single Crx with the given |extension_id|. | 222 // Downloads and installs a single Crx with the given |extension_id|. |
| 222 // This function is used for both the extension Crx and dependences. | 223 // This function is used for both the extension Crx and dependences. |
| 223 void DownloadCrx(const std::string& extension_id, InstallSource source); | 224 void DownloadCrx(const std::string& extension_id, InstallSource source); |
| 224 | 225 |
| 225 // Starts downloading the extension to |file_path|. | 226 // Starts downloading the extension to |file_path|. |
| 226 void StartDownload(const base::FilePath& file_path); | 227 void StartDownload(const base::FilePath& file_path); |
| 227 | 228 |
| 228 // Updates the InstallTracker with the latest download progress. | 229 // Updates the InstallTracker with the latest download progress. |
| 229 void UpdateDownloadProgress(); | 230 void UpdateDownloadProgress(); |
| 230 | 231 |
| 232 // Creates and starts CrxInstaller for the downloaded extension package. |
| 233 void StartCrxInstaller(const content::DownloadItem& item); |
| 234 |
| 231 // Reports an install |error| to the delegate for the given extension if this | 235 // Reports an install |error| to the delegate for the given extension if this |
| 232 // managed its installation. This also removes the associated PendingInstall. | 236 // managed its installation. This also removes the associated PendingInstall. |
| 233 void ReportFailure(const std::string& error, FailureReason reason); | 237 void ReportFailure(const std::string& error, FailureReason reason); |
| 234 | 238 |
| 235 // Reports a successful install to the delegate for the given extension if | 239 // Reports a successful install to the delegate for the given extension if |
| 236 // this managed its installation. This also removes the associated | 240 // this managed its installation. This also removes the associated |
| 237 // PendingInstall. | 241 // PendingInstall. |
| 238 void ReportSuccess(); | 242 void ReportSuccess(); |
| 239 | 243 |
| 240 // Records stats regarding an interrupted webstore download item. | 244 // Records stats regarding an interrupted webstore download item. |
| 241 void RecordInterrupt(const content::DownloadItem* download) const; | 245 void RecordInterrupt(const content::DownloadItem* download) const; |
| 242 | 246 |
| 243 content::NotificationRegistrar registrar_; | 247 content::NotificationRegistrar registrar_; |
| 244 Profile* profile_; | 248 Profile* profile_; |
| 245 Delegate* delegate_; | 249 Delegate* delegate_; |
| 246 std::string id_; | 250 std::string id_; |
| 247 InstallSource install_source_; | 251 InstallSource install_source_; |
| 248 // The DownloadItem is owned by the DownloadManager and is valid from when | 252 // The DownloadItem is owned by the DownloadManager and is valid from when |
| 249 // OnDownloadStarted is called (with no error) until OnDownloadDestroyed(). | 253 // OnDownloadStarted is called (with no error) until OnDownloadDestroyed(). |
| 250 content::DownloadItem* download_item_; | 254 content::DownloadItem* download_item_; |
| 251 // Used to periodically update the extension's download status. This will | 255 // Used to periodically update the extension's download status. This will |
| 252 // trigger at least every second, though sometimes more frequently (depending | 256 // trigger at least every second, though sometimes more frequently (depending |
| 253 // on number of modules, etc). | 257 // on number of modules, etc). |
| 254 base::OneShotTimer<WebstoreInstaller> download_progress_timer_; | 258 base::OneShotTimer<WebstoreInstaller> download_progress_timer_; |
| 255 scoped_ptr<Approval> approval_; | 259 scoped_ptr<Approval> approval_; |
| 256 GURL download_url_; | 260 GURL download_url_; |
| 261 scoped_refptr<CrxInstaller> crx_installer_; |
| 257 | 262 |
| 258 // Pending modules. | 263 // Pending modules. |
| 259 std::list<SharedModuleInfo::ImportInfo> pending_modules_; | 264 std::list<SharedModuleInfo::ImportInfo> pending_modules_; |
| 260 // Total extension modules we need download and install (the main module and | 265 // Total extension modules we need download and install (the main module and |
| 261 // depedences). | 266 // depedences). |
| 262 int total_modules_; | 267 int total_modules_; |
| 263 bool download_started_; | 268 bool download_started_; |
| 264 }; | 269 }; |
| 265 | 270 |
| 266 } // namespace extensions | 271 } // namespace extensions |
| 267 | 272 |
| 268 #endif // CHROME_BROWSER_EXTENSIONS_WEBSTORE_INSTALLER_H_ | 273 #endif // CHROME_BROWSER_EXTENSIONS_WEBSTORE_INSTALLER_H_ |
| OLD | NEW |