Add Error Console UI for install warnings to the chrome:extensions page (hidden behind the error console switch).

Snazzy Images: http://imgur.com/a/7QnMo#0 (updated 9/3)

BUG=21734

Review URL: https://chromiumcodereview.appspot.com/22938005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221527 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/extensions/browser/extension_error.h b/extensions/browser/extension_error.h
index ceb1504..7e02bb3 100644
--- a/extensions/browser/extension_error.h
+++ b/extensions/browser/extension_error.h
@@ -10,10 +10,15 @@
 
 #include "base/compiler_specific.h"
 #include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "extensions/common/stack_frame.h"
 #include "url/gurl.h"
 
+namespace base {
+class DictionaryValue;
+}
+
 namespace extensions {
 
 class ExtensionError {
@@ -25,6 +30,9 @@
 
   virtual ~ExtensionError();
 
+  // Serializes the ExtensionError into JSON format.
+  virtual scoped_ptr<base::DictionaryValue> ToValue() const;
+
   virtual std::string PrintForTest() const;
 
   // Return true if this error and |rhs| are considered equal, and should be
@@ -40,6 +48,14 @@
   size_t occurrences() const { return occurrences_; }
   void set_occurrences(size_t occurrences) { occurrences_ = occurrences; }
 
+  // Keys used for retrieving JSON values.
+  static const char kExtensionIdKey[];
+  static const char kFromIncognitoKey[];
+  static const char kLevelKey[];
+  static const char kMessageKey[];
+  static const char kSourceKey[];
+  static const char kTypeKey[];
+
  protected:
   ExtensionError(Type type,
                  const std::string& extension_id,
@@ -78,10 +94,17 @@
                 const base::string16& manifest_specific);
   virtual ~ManifestError();
 
+  virtual scoped_ptr<base::DictionaryValue> ToValue() const OVERRIDE;
+
   virtual std::string PrintForTest() const OVERRIDE;
 
   const base::string16& manifest_key() const { return manifest_key_; }
   const base::string16& manifest_specific() const { return manifest_specific_; }
+
+  // Keys used for retrieving JSON values.
+  static const char kManifestKeyKey[];
+  static const char kManifestSpecificKey[];
+
  private:
   virtual bool IsEqualImpl(const ExtensionError* rhs) const OVERRIDE;