| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 EXTENSIONS_BROWSER_EXTENSION_ERROR_H_ | 5 #ifndef EXTENSIONS_BROWSER_EXTENSION_ERROR_H_ |
| 6 #define EXTENSIONS_BROWSER_EXTENSION_ERROR_H_ | 6 #define EXTENSIONS_BROWSER_EXTENSION_ERROR_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/strings/string16.h" | 14 #include "base/strings/string16.h" |
| 14 #include "extensions/common/stack_frame.h" | 15 #include "extensions/common/stack_frame.h" |
| 15 #include "url/gurl.h" | 16 #include "url/gurl.h" |
| 16 | 17 |
| 18 namespace base { |
| 19 class DictionaryValue; |
| 20 } |
| 21 |
| 17 namespace extensions { | 22 namespace extensions { |
| 18 | 23 |
| 19 class ExtensionError { | 24 class ExtensionError { |
| 20 public: | 25 public: |
| 21 enum Type { | 26 enum Type { |
| 22 MANIFEST_ERROR, | 27 MANIFEST_ERROR, |
| 23 RUNTIME_ERROR | 28 RUNTIME_ERROR |
| 24 }; | 29 }; |
| 25 | 30 |
| 26 virtual ~ExtensionError(); | 31 virtual ~ExtensionError(); |
| 27 | 32 |
| 33 // Serializes the ExtensionError into JSON format. |
| 34 virtual scoped_ptr<base::DictionaryValue> ToValue() const; |
| 35 |
| 28 virtual std::string PrintForTest() const; | 36 virtual std::string PrintForTest() const; |
| 29 | 37 |
| 30 // Return true if this error and |rhs| are considered equal, and should be | 38 // Return true if this error and |rhs| are considered equal, and should be |
| 31 // grouped together. | 39 // grouped together. |
| 32 bool IsEqual(const ExtensionError* rhs) const; | 40 bool IsEqual(const ExtensionError* rhs) const; |
| 33 | 41 |
| 34 Type type() const { return type_; } | 42 Type type() const { return type_; } |
| 35 const std::string& extension_id() const { return extension_id_; } | 43 const std::string& extension_id() const { return extension_id_; } |
| 36 bool from_incognito() const { return from_incognito_; } | 44 bool from_incognito() const { return from_incognito_; } |
| 37 logging::LogSeverity level() const { return level_; } | 45 logging::LogSeverity level() const { return level_; } |
| 38 const base::string16& source() const { return source_; } | 46 const base::string16& source() const { return source_; } |
| 39 const base::string16& message() const { return message_; } | 47 const base::string16& message() const { return message_; } |
| 40 size_t occurrences() const { return occurrences_; } | 48 size_t occurrences() const { return occurrences_; } |
| 41 void set_occurrences(size_t occurrences) { occurrences_ = occurrences; } | 49 void set_occurrences(size_t occurrences) { occurrences_ = occurrences; } |
| 42 | 50 |
| 51 // Keys used for retrieving JSON values. |
| 52 static const char kExtensionIdKey[]; |
| 53 static const char kFromIncognitoKey[]; |
| 54 static const char kLevelKey[]; |
| 55 static const char kMessageKey[]; |
| 56 static const char kSourceKey[]; |
| 57 static const char kTypeKey[]; |
| 58 |
| 43 protected: | 59 protected: |
| 44 ExtensionError(Type type, | 60 ExtensionError(Type type, |
| 45 const std::string& extension_id, | 61 const std::string& extension_id, |
| 46 bool from_incognito, | 62 bool from_incognito, |
| 47 logging::LogSeverity level, | 63 logging::LogSeverity level, |
| 48 const base::string16& source, | 64 const base::string16& source, |
| 49 const base::string16& message); | 65 const base::string16& message); |
| 50 | 66 |
| 51 virtual bool IsEqualImpl(const ExtensionError* rhs) const = 0; | 67 virtual bool IsEqualImpl(const ExtensionError* rhs) const = 0; |
| 52 | 68 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 71 }; | 87 }; |
| 72 | 88 |
| 73 class ManifestError : public ExtensionError { | 89 class ManifestError : public ExtensionError { |
| 74 public: | 90 public: |
| 75 ManifestError(const std::string& extension_id, | 91 ManifestError(const std::string& extension_id, |
| 76 const base::string16& message, | 92 const base::string16& message, |
| 77 const base::string16& manifest_key, | 93 const base::string16& manifest_key, |
| 78 const base::string16& manifest_specific); | 94 const base::string16& manifest_specific); |
| 79 virtual ~ManifestError(); | 95 virtual ~ManifestError(); |
| 80 | 96 |
| 97 virtual scoped_ptr<base::DictionaryValue> ToValue() const OVERRIDE; |
| 98 |
| 81 virtual std::string PrintForTest() const OVERRIDE; | 99 virtual std::string PrintForTest() const OVERRIDE; |
| 82 | 100 |
| 83 const base::string16& manifest_key() const { return manifest_key_; } | 101 const base::string16& manifest_key() const { return manifest_key_; } |
| 84 const base::string16& manifest_specific() const { return manifest_specific_; } | 102 const base::string16& manifest_specific() const { return manifest_specific_; } |
| 103 |
| 104 // Keys used for retrieving JSON values. |
| 105 static const char kManifestKeyKey[]; |
| 106 static const char kManifestSpecificKey[]; |
| 107 |
| 85 private: | 108 private: |
| 86 virtual bool IsEqualImpl(const ExtensionError* rhs) const OVERRIDE; | 109 virtual bool IsEqualImpl(const ExtensionError* rhs) const OVERRIDE; |
| 87 | 110 |
| 88 // If present, this indicates the feature in the manifest which caused the | 111 // If present, this indicates the feature in the manifest which caused the |
| 89 // error. | 112 // error. |
| 90 base::string16 manifest_key_; | 113 base::string16 manifest_key_; |
| 91 // If present, this is a more-specific location of the error - for instance, | 114 // If present, this is a more-specific location of the error - for instance, |
| 92 // a specific permission which is incorrect, rather than simply "permissions". | 115 // a specific permission which is incorrect, rather than simply "permissions". |
| 93 base::string16 manifest_specific_; | 116 base::string16 manifest_specific_; |
| 94 | 117 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 119 | 142 |
| 120 GURL context_url_; | 143 GURL context_url_; |
| 121 StackTrace stack_trace_; | 144 StackTrace stack_trace_; |
| 122 | 145 |
| 123 DISALLOW_COPY_AND_ASSIGN(RuntimeError); | 146 DISALLOW_COPY_AND_ASSIGN(RuntimeError); |
| 124 }; | 147 }; |
| 125 | 148 |
| 126 } // namespace extensions | 149 } // namespace extensions |
| 127 | 150 |
| 128 #endif // EXTENSIONS_BROWSER_EXTENSION_ERROR_H_ | 151 #endif // EXTENSIONS_BROWSER_EXTENSION_ERROR_H_ |
| OLD | NEW |