mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 1367406 - Part 3: Expose computed modules through .modules getter, r=froydnj
MozReview-Commit-ID: F6aDnlwr9jt
This commit is contained in:
parent
148f1a81e4
commit
061c6a26b0
@ -144,12 +144,35 @@ nsHangDetails::GetStack(JSContext* aCx, JS::MutableHandle<JS::Value> aVal)
|
||||
NS_IMETHODIMP
|
||||
nsHangDetails::GetModules(JSContext* aCx, JS::MutableHandleValue aVal)
|
||||
{
|
||||
size_t length = 0;
|
||||
auto& modules = mDetails.mStack.GetModules();
|
||||
size_t length = modules.Length();
|
||||
JS::RootedObject retObj(aCx, JS_NewArrayObject(aCx, length));
|
||||
if (!retObj) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < length; ++i) {
|
||||
const HangStack::Module& module = modules[i];
|
||||
JS::RootedObject jsModule(aCx, JS_NewArrayObject(aCx, 2));
|
||||
if (!jsModule) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
JS::RootedString name(aCx, JS_NewUCStringCopyN(aCx, module.mName.BeginReading(), module.mName.Length()));
|
||||
if (!JS_DefineElement(aCx, jsModule, 0, name, JSPROP_ENUMERATE)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
JS::RootedString breakpadId(aCx, JS_NewStringCopyN(aCx, module.mBreakpadId.BeginReading(), module.mBreakpadId.Length()));
|
||||
if (!JS_DefineElement(aCx, jsModule, 1, breakpadId, JSPROP_ENUMERATE)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if (!JS_DefineElement(aCx, retObj, i, jsModule, JSPROP_ENUMERATE)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
|
||||
aVal.setObject(*retObj);
|
||||
return NS_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user