| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef EXTENSIONS_BROWSER_INSTALL_CRX_INSTALL_ERROR_H_ |
| #define EXTENSIONS_BROWSER_INSTALL_CRX_INSTALL_ERROR_H_ |
| |
| #include "base/optional.h" |
| #include "base/strings/string16.h" |
| |
| namespace extensions { |
| |
| enum class SandboxedUnpackerFailureReason; |
| |
| // Typed errors that need to be handled specially by clients. |
| // Do not change the order of the entries or remove entries in this list. |
| enum class CrxInstallErrorType { |
| NONE = 0, |
| // DECLINED for situations when a .crx file seems to be OK, but there |
| // are some policy restrictions or unmet dependencies that prevent it from |
| // being installed. |
| DECLINED = 1, |
| // SANDBOXED_UNPACKER_FAILURE for sandboxed unpacker error. |
| // CrxInstallErrorDetail will give more detail about the failure. |
| SANDBOXED_UNPACKER_FAILURE = 2, |
| OTHER = 3, |
| }; |
| |
| // Extended error code that may help explain the error type. |
| // Do not change the order of the entries or remove entries in this list. |
| // Don't forget to update enums.xml when adding new entries. |
| enum class CrxInstallErrorDetail { |
| NONE, // 0 |
| CONVERT_USER_SCRIPT_TO_EXTENSION_FAILED, // 1 |
| UNEXPECTED_ID, // 2 |
| UNEXPECTED_VERSION, // 3 |
| MISMATCHED_VERSION, // 4 |
| MANIFEST_INVALID, // 5 |
| INSTALL_NOT_ENABLED, // 6 |
| OFFSTORE_INSTALL_DISALLOWED, // 7 |
| INCORRECT_APP_CONTENT_TYPE, // 8 |
| NOT_INSTALLED_FROM_GALLERY, // 9 |
| INCORRECT_INSTALL_HOST, // 10 |
| DEPENDENCY_NOT_SHARED_MODULE, // 11 |
| DEPENDENCY_OLD_VERSION, // 12 |
| DEPENDENCY_NOT_ALLOWLISTED, // 13 |
| UNSUPPORTED_REQUIREMENTS, // 14 |
| EXTENSION_IS_BLOCKLISTED, // 15 |
| DISALLOWED_BY_POLICY, // 16 |
| KIOSK_MODE_ONLY, // 17 |
| OVERLAPPING_WEB_EXTENT, // 18 |
| CANT_DOWNGRADE_VERSION, // 19 |
| MOVE_DIRECTORY_TO_PROFILE_FAILED, // 20 |
| CANT_LOAD_EXTENSION, // 21 |
| USER_CANCELED, // 22 |
| USER_ABORTED, // 23 |
| UPDATE_NON_EXISTING_EXTENSION, // 24 |
| |
| // Magic constant used by the histogram macros. |
| // Always update it to the max value. |
| kMaxValue = UPDATE_NON_EXISTING_EXTENSION, |
| }; |
| |
| // Simple error class for CrxInstaller. |
| class CrxInstallError { |
| public: |
| CrxInstallError(CrxInstallErrorType type, |
| CrxInstallErrorDetail detail, |
| const base::string16& message); |
| CrxInstallError(CrxInstallErrorType type, CrxInstallErrorDetail detail); |
| CrxInstallError(SandboxedUnpackerFailureReason reason, |
| const base::string16& message); |
| ~CrxInstallError(); |
| |
| CrxInstallError(const CrxInstallError& other); |
| CrxInstallError(CrxInstallError&& other); |
| CrxInstallError& operator=(const CrxInstallError& other); |
| CrxInstallError& operator=(CrxInstallError&& other); |
| |
| CrxInstallErrorType type() const { return type_; } |
| const base::string16& message() const { return message_; } |
| CrxInstallErrorDetail detail() const; |
| SandboxedUnpackerFailureReason sandbox_failure_detail() const; |
| |
| private: |
| CrxInstallErrorType type_; |
| CrxInstallErrorDetail detail_; |
| base::Optional<SandboxedUnpackerFailureReason> sandbox_failure_detail_; |
| base::string16 message_; |
| }; |
| |
| } // namespace extensions |
| |
| #endif // EXTENSIONS_BROWSER_INSTALL_CRX_INSTALL_ERROR_H_ |