|  | // 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/strings/string16.h" | 
|  |  | 
|  | namespace extensions { | 
|  |  | 
|  | // Simple error class for CrxInstaller. | 
|  | class CrxInstallError { | 
|  | public: | 
|  | // Typed errors that need to be handled specially by clients. | 
|  | // ERROR_OFF_STORE for disallowed off-store installations. | 
|  | // ERROR_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. | 
|  | // ERROR_HASH_MISMATCH if the expected extension SHA256 hash sum is different | 
|  | // from the actual one. | 
|  | enum Type { | 
|  | ERROR_NONE, | 
|  | ERROR_OFF_STORE, | 
|  | ERROR_DECLINED, | 
|  | ERROR_HASH_MISMATCH, | 
|  | ERROR_OTHER | 
|  | }; | 
|  |  | 
|  | CrxInstallError() : type_(ERROR_NONE) {} | 
|  |  | 
|  | explicit CrxInstallError(const base::string16& message) | 
|  | : type_(message.empty() ? ERROR_NONE : ERROR_OTHER), message_(message) {} | 
|  |  | 
|  | CrxInstallError(Type type, const base::string16& message) | 
|  | : type_(type), message_(message) {} | 
|  |  | 
|  | Type type() const { return type_; } | 
|  | const base::string16& message() const { return message_; } | 
|  |  | 
|  | private: | 
|  | Type type_; | 
|  | base::string16 message_; | 
|  | }; | 
|  |  | 
|  | }  // namespace extensions | 
|  |  | 
|  | #endif  // EXTENSIONS_BROWSER_INSTALL_CRX_INSTALL_ERROR_H_ |