| 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_CRX_INSTALLER_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 // Extensions will be installed into service->install_directory(), then | 81 // Extensions will be installed into service->install_directory(), then |
| 82 // registered with |service|. This does a silent install - see below for | 82 // registered with |service|. This does a silent install - see below for |
| 83 // other options. | 83 // other options. |
| 84 static scoped_refptr<CrxInstaller> CreateSilent(ExtensionService* service); | 84 static scoped_refptr<CrxInstaller> CreateSilent(ExtensionService* service); |
| 85 | 85 |
| 86 // Same as above, but use |client| to generate a confirmation prompt. | 86 // Same as above, but use |client| to generate a confirmation prompt. |
| 87 static scoped_refptr<CrxInstaller> Create( | 87 static scoped_refptr<CrxInstaller> Create( |
| 88 ExtensionService* service, | 88 ExtensionService* service, |
| 89 scoped_ptr<ExtensionInstallPrompt> client); | 89 std::unique_ptr<ExtensionInstallPrompt> client); |
| 90 | 90 |
| 91 // Same as the previous method, except use the |approval| to bypass the | 91 // Same as the previous method, except use the |approval| to bypass the |
| 92 // prompt. Note that the caller retains ownership of |approval|. | 92 // prompt. Note that the caller retains ownership of |approval|. |
| 93 static scoped_refptr<CrxInstaller> Create( | 93 static scoped_refptr<CrxInstaller> Create( |
| 94 ExtensionService* service, | 94 ExtensionService* service, |
| 95 scoped_ptr<ExtensionInstallPrompt> client, | 95 std::unique_ptr<ExtensionInstallPrompt> client, |
| 96 const WebstoreInstaller::Approval* approval); | 96 const WebstoreInstaller::Approval* approval); |
| 97 | 97 |
| 98 // Install the crx in |source_file|. | 98 // Install the crx in |source_file|. |
| 99 void InstallCrx(const base::FilePath& source_file); | 99 void InstallCrx(const base::FilePath& source_file); |
| 100 void InstallCrxFile(const CRXFileInfo& source_file); | 100 void InstallCrxFile(const CRXFileInfo& source_file); |
| 101 | 101 |
| 102 // Convert the specified user script into an extension and install it. | 102 // Convert the specified user script into an extension and install it. |
| 103 void InstallUserScript(const base::FilePath& source_file, | 103 void InstallUserScript(const base::FilePath& source_file, |
| 104 const GURL& download_url); | 104 const GURL& download_url); |
| 105 | 105 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 // The currently installed version of the extension, for updates. Will be | 208 // The currently installed version of the extension, for updates. Will be |
| 209 // invalid if this isn't an update. | 209 // invalid if this isn't an update. |
| 210 const base::Version& current_version() const { return current_version_; } | 210 const base::Version& current_version() const { return current_version_; } |
| 211 | 211 |
| 212 private: | 212 private: |
| 213 friend class ::ExtensionServiceTest; | 213 friend class ::ExtensionServiceTest; |
| 214 friend class ExtensionUpdaterTest; | 214 friend class ExtensionUpdaterTest; |
| 215 friend class ExtensionCrxInstallerTest; | 215 friend class ExtensionCrxInstallerTest; |
| 216 | 216 |
| 217 CrxInstaller(base::WeakPtr<ExtensionService> service_weak, | 217 CrxInstaller(base::WeakPtr<ExtensionService> service_weak, |
| 218 scoped_ptr<ExtensionInstallPrompt> client, | 218 std::unique_ptr<ExtensionInstallPrompt> client, |
| 219 const WebstoreInstaller::Approval* approval); | 219 const WebstoreInstaller::Approval* approval); |
| 220 ~CrxInstaller() override; | 220 ~CrxInstaller() override; |
| 221 | 221 |
| 222 // Converts the source user script to an extension. | 222 // Converts the source user script to an extension. |
| 223 void ConvertUserScriptOnFileThread(); | 223 void ConvertUserScriptOnFileThread(); |
| 224 | 224 |
| 225 // Converts the source web app to an extension. | 225 // Converts the source web app to an extension. |
| 226 void ConvertWebAppOnFileThread(const WebApplicationInfo& web_app); | 226 void ConvertWebAppOnFileThread(const WebApplicationInfo& web_app); |
| 227 | 227 |
| 228 // Called after OnUnpackSuccess as a last check to see whether the install | 228 // Called after OnUnpackSuccess as a last check to see whether the install |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 | 314 |
| 315 // An expected hash sum for the .crx file. | 315 // An expected hash sum for the .crx file. |
| 316 std::string expected_hash_; | 316 std::string expected_hash_; |
| 317 | 317 |
| 318 // True if installation failed due to a hash sum mismatch. | 318 // True if installation failed due to a hash sum mismatch. |
| 319 bool hash_check_failed_; | 319 bool hash_check_failed_; |
| 320 | 320 |
| 321 // A parsed copy of the expected manifest, before any transformations like | 321 // A parsed copy of the expected manifest, before any transformations like |
| 322 // localization have taken place. If |approved_| is true, then the | 322 // localization have taken place. If |approved_| is true, then the |
| 323 // extension's manifest must match this for the install to proceed. | 323 // extension's manifest must match this for the install to proceed. |
| 324 scoped_ptr<Manifest> expected_manifest_; | 324 std::unique_ptr<Manifest> expected_manifest_; |
| 325 | 325 |
| 326 // The level of checking when comparing the actual manifest against | 326 // The level of checking when comparing the actual manifest against |
| 327 // the |expected_manifest_|. | 327 // the |expected_manifest_|. |
| 328 WebstoreInstaller::ManifestCheckLevel expected_manifest_check_level_; | 328 WebstoreInstaller::ManifestCheckLevel expected_manifest_check_level_; |
| 329 | 329 |
| 330 // If valid, specifies the minimum version we'll install. Installation will | 330 // If valid, specifies the minimum version we'll install. Installation will |
| 331 // fail if the actual version is smaller. | 331 // fail if the actual version is smaller. |
| 332 base::Version minimum_version_; | 332 base::Version minimum_version_; |
| 333 | 333 |
| 334 // If valid, contains the expected version of the extension we're installing. | 334 // If valid, contains the expected version of the extension we're installing. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 354 // Whether to create an app shortcut after successful installation. This is | 354 // Whether to create an app shortcut after successful installation. This is |
| 355 // set based on the user's selection in the UI and can only ever be true for | 355 // set based on the user's selection in the UI and can only ever be true for |
| 356 // apps. | 356 // apps. |
| 357 bool create_app_shortcut_; | 357 bool create_app_shortcut_; |
| 358 | 358 |
| 359 // The ordinal of the NTP apps page |extension_| will be shown on. | 359 // The ordinal of the NTP apps page |extension_| will be shown on. |
| 360 syncer::StringOrdinal page_ordinal_; | 360 syncer::StringOrdinal page_ordinal_; |
| 361 | 361 |
| 362 // A parsed copy of the unmodified original manifest, before any | 362 // A parsed copy of the unmodified original manifest, before any |
| 363 // transformations like localization have taken place. | 363 // transformations like localization have taken place. |
| 364 scoped_ptr<Manifest> original_manifest_; | 364 std::unique_ptr<Manifest> original_manifest_; |
| 365 | 365 |
| 366 // If valid, contains the current version of the extension we're | 366 // If valid, contains the current version of the extension we're |
| 367 // installing (for upgrades). | 367 // installing (for upgrades). |
| 368 base::Version current_version_; | 368 base::Version current_version_; |
| 369 | 369 |
| 370 // The icon we will display in the installation UI, if any. | 370 // The icon we will display in the installation UI, if any. |
| 371 scoped_ptr<SkBitmap> install_icon_; | 371 std::unique_ptr<SkBitmap> install_icon_; |
| 372 | 372 |
| 373 // The temp directory extension resources were unpacked to. We own this and | 373 // The temp directory extension resources were unpacked to. We own this and |
| 374 // must delete it when we are done with it. | 374 // must delete it when we are done with it. |
| 375 base::FilePath temp_dir_; | 375 base::FilePath temp_dir_; |
| 376 | 376 |
| 377 // The frontend we will report results back to. | 377 // The frontend we will report results back to. |
| 378 base::WeakPtr<ExtensionService> service_weak_; | 378 base::WeakPtr<ExtensionService> service_weak_; |
| 379 | 379 |
| 380 // The client we will work with to do the installation. This can be NULL, in | 380 // The client we will work with to do the installation. This can be NULL, in |
| 381 // which case the install is silent. | 381 // which case the install is silent. |
| 382 scoped_ptr<ExtensionInstallPrompt> client_; | 382 std::unique_ptr<ExtensionInstallPrompt> client_; |
| 383 | 383 |
| 384 // The root of the unpacked extension directory. This is a subdirectory of | 384 // The root of the unpacked extension directory. This is a subdirectory of |
| 385 // temp_dir_, so we don't have to delete it explicitly. | 385 // temp_dir_, so we don't have to delete it explicitly. |
| 386 base::FilePath unpacked_extension_root_; | 386 base::FilePath unpacked_extension_root_; |
| 387 | 387 |
| 388 // True when the CRX being installed was just downloaded. | 388 // True when the CRX being installed was just downloaded. |
| 389 // Used to trigger extra checks before installing. | 389 // Used to trigger extra checks before installing. |
| 390 bool apps_require_extension_mime_type_; | 390 bool apps_require_extension_mime_type_; |
| 391 | 391 |
| 392 // Allows for the possibility of a normal install (one in which a |client| | 392 // Allows for the possibility of a normal install (one in which a |client| |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 | 440 |
| 441 // Performs requirements, policy and blacklist checks on the extension. | 441 // Performs requirements, policy and blacklist checks on the extension. |
| 442 ExtensionInstallChecker install_checker_; | 442 ExtensionInstallChecker install_checker_; |
| 443 | 443 |
| 444 DISALLOW_COPY_AND_ASSIGN(CrxInstaller); | 444 DISALLOW_COPY_AND_ASSIGN(CrxInstaller); |
| 445 }; | 445 }; |
| 446 | 446 |
| 447 } // namespace extensions | 447 } // namespace extensions |
| 448 | 448 |
| 449 #endif // CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_H_ | 449 #endif // CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_H_ |
| OLD | NEW |