diff options
author | rdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-07 00:08:08 +0000 |
---|---|---|
committer | rdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-07 00:08:08 +0000 |
commit | 2fb9bd24e13c39b4708ec809987d2fbfe511729a (patch) | |
tree | 3f2dd55814e720d33213f4dcaa816e12de053fd4 /extensions/browser/extension_error.cc | |
parent | cc81ed067fe64090a35f3ce25a444b263010dbcf (diff) | |
download | chromium_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.cc | 31 |
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" |