summaryrefslogtreecommitdiffstats
path: root/extensions/browser/extension_error.cc
diff options
context:
space:
mode:
authorrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-07 00:08:08 +0000
committerrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-07 00:08:08 +0000
commit2fb9bd24e13c39b4708ec809987d2fbfe511729a (patch)
tree3f2dd55814e720d33213f4dcaa816e12de053fd4 /extensions/browser/extension_error.cc
parentcc81ed067fe64090a35f3ce25a444b263010dbcf (diff)
downloadchromium_src-2fb9bd24e13c39b4708ec809987d2fbfe511729a.zip
chromium_src-2fb9bd24e13c39b4708ec809987d2fbfe511729a.tar.gz
chromium_src-2fb9bd24e13c39b4708ec809987d2fbfe511729a.tar.bz2
Follows https://codereview.chromium.org/22938005/
Add UI elements for extension runtime (javascript) errors on the chrome:extensions page. Include a stack trace and, if possible, links to the source code. TBR=finnur@chromium.org BUG=21734 Review URL: https://chromiumcodereview.appspot.com/23624002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221824 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/extension_error.cc')
-rw-r--r--extensions/browser/extension_error.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/extensions/browser/extension_error.cc b/extensions/browser/extension_error.cc
index 02c218e..3b476f7 100644
--- a/extensions/browser/extension_error.cc
+++ b/extensions/browser/extension_error.cc
@@ -120,6 +120,17 @@ bool ManifestError::IsEqualImpl(const ExtensionError* rhs) const {
return true;
}
+////////////////////////////////////////////////////////////////////////////////
+// RuntimeError
+
+// Static JSON keys.
+const char RuntimeError::kColumnNumberKey[] = "columnNumber";
+const char RuntimeError::kContextUrlKey[] = "contextUrl";
+const char RuntimeError::kFunctionNameKey[] = "functionName";
+const char RuntimeError::kLineNumberKey[] = "lineNumber";
+const char RuntimeError::kStackTraceKey[] = "stackTrace";
+const char RuntimeError::kUrlKey[] = "url";
+
RuntimeError::RuntimeError(const std::string& extension_id,
bool from_incognito,
const string16& source,
@@ -141,6 +152,26 @@ RuntimeError::RuntimeError(const std::string& extension_id,
RuntimeError::~RuntimeError() {
}
+scoped_ptr<DictionaryValue> RuntimeError::ToValue() const {
+ scoped_ptr<DictionaryValue> value = ExtensionError::ToValue();
+ value->SetString(kContextUrlKey, context_url_.spec());
+
+ ListValue* trace_value = new ListValue;
+ for (StackTrace::const_iterator iter = stack_trace_.begin();
+ iter != stack_trace_.end(); ++iter) {
+ DictionaryValue* frame_value = new DictionaryValue;
+ frame_value->SetInteger(kLineNumberKey, iter->line_number);
+ frame_value->SetInteger(kColumnNumberKey, iter->column_number);
+ frame_value->SetString(kUrlKey, iter->source);
+ frame_value->SetString(kFunctionNameKey, iter->function);
+ trace_value->Append(frame_value);
+ }
+
+ value->Set(kStackTraceKey, trace_value);
+
+ return value.Pass();
+}
+
std::string RuntimeError::PrintForTest() const {
std::string result = ExtensionError::PrintForTest() +
"\n Type: RuntimeError"