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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_ERROR_H_
6#define CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_ERROR_H_
7
8#include "base/strings/string16.h"
9
10namespace extensions {
11
12// Simple error class for CrxInstaller.
13class CrxInstallerError {
14 public:
15  // Typed errors that need to be handled specially by clients.
16  enum Type {
17    ERROR_NONE,
18    ERROR_OFF_STORE,
19    ERROR_OTHER
20  };
21
22  CrxInstallerError() : type_(ERROR_NONE) {
23  }
24
25  explicit CrxInstallerError(const base::string16& message)
26      : type_(message.empty() ? ERROR_NONE : ERROR_OTHER),
27        message_(message) {
28  }
29
30  CrxInstallerError(Type type, const base::string16& message)
31      : type_(type), message_(message) {
32  }
33
34  Type type() const { return type_; }
35  const base::string16& message() const { return message_; }
36
37 private:
38  Type type_;
39  base::string16 message_;
40};
41
42}  // namespace extensions
43
44#endif  // CHROME_BROWSER_EXTENSIONS_CRX_INSTALLER_ERROR_H_
45