Bug 963921 - Clients of the JS API should use JS_DefineElement where appropriate r=smaug

This commit is contained in:
Jon Coppeard 2015-03-02 13:31:15 +00:00
parent 8c8822c93b
commit a451fdfd83
12 changed files with 50 additions and 42 deletions

View File

@ -514,7 +514,7 @@ nsFrameMessageManager::GetDelayedScripts(JSContext* aCx, JS::MutableHandle<JS::V
pair = JS_NewArrayObject(aCx, pairElts);
NS_ENSURE_TRUE(pair, NS_ERROR_OUT_OF_MEMORY);
NS_ENSURE_TRUE(JS_SetElement(aCx, array, i, pair),
NS_ENSURE_TRUE(JS_DefineElement(aCx, array, i, pair, JSPROP_ENUMERATE),
NS_ERROR_OUT_OF_MEMORY);
}
@ -696,7 +696,7 @@ nsFrameMessageManager::SendMessage(const nsAString& aMessageName,
retval[i].Length(), &ret)) {
return NS_ERROR_UNEXPECTED;
}
NS_ENSURE_TRUE(JS_SetElement(aCx, dataArray, i, ret),
NS_ENSURE_TRUE(JS_DefineElement(aCx, dataArray, i, ret, JSPROP_ENUMERATE),
NS_ERROR_OUT_OF_MEMORY);
}

View File

@ -452,7 +452,8 @@ private:
return rv;
}
if (NS_WARN_IF(!JS_SetElement(aCx, array, index, value))) {
if (NS_WARN_IF(!JS_DefineElement(aCx, array, index, value,
JSPROP_ENUMERATE))) {
IDB_REPORT_INTERNAL_ERR();
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
}
@ -505,7 +506,8 @@ private:
return rv;
}
if (NS_WARN_IF(!JS_SetElement(aCx, array, index, value))) {
if (NS_WARN_IF(!JS_DefineElement(aCx, array, index, value,
JSPROP_ENUMERATE))) {
IDB_REPORT_INTERNAL_ERR();
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
}
@ -1094,7 +1096,7 @@ BackgroundFactoryRequestChild::Recv__delete__(
IDBOpenDBRequest* request = GetOpenDBRequest();
MOZ_ASSERT(request);
request->NoteComplete();
if (NS_WARN_IF(!result)) {

View File

@ -218,7 +218,7 @@ Key::DecodeJSValInternal(const unsigned char*& aPos, const unsigned char* aEnd,
aTypeOffset = 0;
if (!JS_SetElement(aCx, array, index++, val)) {
if (!JS_DefineElement(aCx, array, index++, val, JSPROP_ENUMERATE)) {
NS_WARNING("Failed to set array element!");
IDB_REPORT_INTERNAL_ERR();
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;

View File

@ -359,7 +359,7 @@ KeyPath::ExtractKeyAsJSVal(JSContext* aCx, const JS::Value& aValue,
return rv;
}
if (!JS_SetElement(aCx, arrayObj, i, value)) {
if (!JS_DefineElement(aCx, arrayObj, i, value, JSPROP_ENUMERATE)) {
IDB_REPORT_INTERNAL_ERR();
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
}
@ -471,7 +471,7 @@ KeyPath::ToJSVal(JSContext* aCx, JS::MutableHandle<JS::Value> aValue) const
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
}
if (!JS_SetElement(aCx, array, i, val)) {
if (!JS_DefineElement(aCx, array, i, val, JSPROP_ENUMERATE)) {
IDB_REPORT_INTERNAL_ERR();
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
}

View File

@ -587,7 +587,7 @@ MmsMessage::GetAttachments(JSContext* aCx, JS::MutableHandle<JS::Value> aAttachm
return NS_ERROR_FAILURE;
}
if (!JS_SetElement(aCx, attachments, i, attachmentObj)) {
if (!JS_DefineElement(aCx, attachments, i, attachmentObj, JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
}

View File

@ -197,7 +197,7 @@ MobileMessageCallback::NotifyMessageDeleted(bool *aDeleted, uint32_t aSize)
JS::Rooted<JSObject*> deleteArrayObj(cx, JS_NewArrayObject(cx, aSize));
for (uint32_t i = 0; i < aSize; i++) {
JS_SetElement(cx, deleteArrayObj, i, aDeleted[i]);
JS_DefineElement(cx, deleteArrayObj, i, aDeleted[i], JSPROP_ENUMERATE);
}
JS::Rooted<JS::Value> deleteArrayVal(cx, JS::ObjectValue(*deleteArrayObj));

View File

@ -120,7 +120,7 @@ GetParamsFromSendMmsMessageRequest(JSContext* aCx,
JS::Rooted<JSObject*> obj(aCx,
MmsAttachmentDataToJSObject(aCx, aRequest.attachments().ElementAt(i)));
NS_ENSURE_TRUE(obj, false);
if (!JS_SetElement(aCx, attachmentArray, i, obj)) {
if (!JS_DefineElement(aCx, attachmentArray, i, obj, JSPROP_ENUMERATE)) {
return false;
}
}

View File

@ -34,8 +34,8 @@ nsTArrayToJSArray(JSContext* aCx, const nsTArray<T>& aSourceArray,
rv = nsContentUtils::WrapNative(aCx, obj, &wrappedVal);
NS_ENSURE_SUCCESS(rv, rv);
if (!JS_SetElement(aCx, arrayObj, index, wrappedVal)) {
NS_WARNING("JS_SetElement failed!");
if (!JS_DefineElement(aCx, arrayObj, index, wrappedVal, JSPROP_ENUMERATE)) {
NS_WARNING("JS_DefineElement failed!");
return NS_ERROR_FAILURE;
}
}
@ -74,8 +74,8 @@ nsTArrayToJSArray<nsString>(JSContext* aCx,
return NS_ERROR_OUT_OF_MEMORY;
}
if (!JS_SetElement(aCx, arrayObj, index, s)) {
NS_WARNING("JS_SetElement failed!");
if (!JS_DefineElement(aCx, arrayObj, index, s, JSPROP_ENUMERATE)) {
NS_WARNING("JS_DefineElement failed!");
return NS_ERROR_FAILURE;
}
}

View File

@ -1280,7 +1280,7 @@ XPCConvert::NativeArray2JS(MutableHandleValue d, const void** s,
PR_BEGIN_MACRO \
for (i = 0; i < count; i++) { \
if (!NativeData2JS(&current, ((_t*)*s)+i, type, iid, pErr) || \
!JS_SetElement(cx, array, i, current)) \
!JS_DefineElement(cx, array, i, current, JSPROP_ENUMERATE)) \
goto failure; \
} \
PR_END_MACRO

View File

@ -95,7 +95,7 @@ StatementRow::GetProperty(nsIXPConnectWrappedNative *aWrapper,
// Copy the blob over to the JS array.
for (uint32_t i = 0; i < length; i++) {
if (!::JS_SetElement(aCtx, scope, i, blob[i])) {
if (!::JS_DefineElement(aCtx, scope, i, blob[i], JSPROP_ENUMERATE)) {
*_retval = false;
return NS_OK;
}

View File

@ -119,7 +119,7 @@ PlaceInfo::GetVisits(JSContext* aContext,
JS::Rooted<JSObject*> jsobj(aContext, wrapper->GetJSObject());
NS_ENSURE_STATE(jsobj);
bool rc = JS_SetElement(aContext, visits, idx, jsobj);
bool rc = JS_DefineElement(aContext, visits, idx, jsobj, JSPROP_ENUMERATE);
NS_ENSURE_TRUE(rc, NS_ERROR_UNEXPECTED);
}

View File

@ -1923,8 +1923,8 @@ TelemetryImpl::ReflectSQL(const SlowSQLEntryType *entry,
if (!arrayObj) {
return false;
}
return (JS_SetElement(cx, arrayObj, 0, stat->hitCount)
&& JS_SetElement(cx, arrayObj, 1, stat->totalTime)
return (JS_DefineElement(cx, arrayObj, 0, stat->hitCount, JSPROP_ENUMERATE)
&& JS_DefineElement(cx, arrayObj, 1, stat->totalTime, JSPROP_ENUMERATE)
&& JS_DefineProperty(cx, obj, sql.BeginReading(), arrayObj,
JSPROP_ENUMERATE));
}
@ -2523,13 +2523,16 @@ TelemetryImpl::GetChromeHangs(JSContext *cx, JS::MutableHandle<JS::Value> ret)
const size_t length = stacks.GetStackCount();
for (size_t i = 0; i < length; ++i) {
if (!JS_SetElement(cx, durationArray, i, mHangReports.GetDuration(i))) {
if (!JS_DefineElement(cx, durationArray, i, mHangReports.GetDuration(i),
JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
if (!JS_SetElement(cx, systemUptimeArray, i, mHangReports.GetSystemUptime(i))) {
if (!JS_DefineElement(cx, systemUptimeArray, i, mHangReports.GetSystemUptime(i),
JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
if (!JS_SetElement(cx, firefoxUptimeArray, i, mHangReports.GetFirefoxUptime(i))) {
if (!JS_DefineElement(cx, firefoxUptimeArray, i, mHangReports.GetFirefoxUptime(i),
JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
const nsTArray<HangReports::AnnotationInfo>& annotationInfo =
@ -2542,7 +2545,7 @@ TelemetryImpl::GetChromeHangs(JSContext *cx, JS::MutableHandle<JS::Value> ret)
}
JS::RootedValue indexValue(cx);
indexValue.setNumber(annotationInfo[iterIndex].mHangIndex);
if (!JS_SetElement(cx, keyValueArray, 0, indexValue)) {
if (!JS_DefineElement(cx, keyValueArray, 0, indexValue, JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
JS::Rooted<JSObject*> jsAnnotation(cx, JS_NewPlainObject(cx));
@ -2564,11 +2567,11 @@ TelemetryImpl::GetChromeHangs(JSContext *cx, JS::MutableHandle<JS::Value> ret)
return NS_ERROR_FAILURE;
}
}
if (!JS_SetElement(cx, keyValueArray, 1, jsAnnotation)) {
if (!JS_DefineElement(cx, keyValueArray, 1, jsAnnotation, JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
if (!JS_SetElement(cx, annotationsArray, iterIndex,
keyValueArray)) {
if (!JS_DefineElement(cx, annotationsArray, iterIndex,
keyValueArray, JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
}
@ -2604,7 +2607,8 @@ CreateJSStackObject(JSContext *cx, const CombinedStacks &stacks) {
if (!moduleInfoArray) {
return nullptr;
}
if (!JS_SetElement(cx, moduleArray, moduleIndex, moduleInfoArray)) {
if (!JS_DefineElement(cx, moduleArray, moduleIndex, moduleInfoArray,
JSPROP_ENUMERATE)) {
return nullptr;
}
@ -2615,7 +2619,7 @@ CreateJSStackObject(JSContext *cx, const CombinedStacks &stacks) {
if (!str) {
return nullptr;
}
if (!JS_SetElement(cx, moduleInfoArray, index++, str)) {
if (!JS_DefineElement(cx, moduleInfoArray, index++, str, JSPROP_ENUMERATE)) {
return nullptr;
}
@ -2624,7 +2628,7 @@ CreateJSStackObject(JSContext *cx, const CombinedStacks &stacks) {
if (!id) {
return nullptr;
}
if (!JS_SetElement(cx, moduleInfoArray, index++, id)) {
if (!JS_DefineElement(cx, moduleInfoArray, index++, id, JSPROP_ENUMERATE)) {
return nullptr;
}
}
@ -2646,7 +2650,7 @@ CreateJSStackObject(JSContext *cx, const CombinedStacks &stacks) {
return nullptr;
}
if (!JS_SetElement(cx, reportArray, i, pcArray)) {
if (!JS_DefineElement(cx, reportArray, i, pcArray, JSPROP_ENUMERATE)) {
return nullptr;
}
@ -2660,13 +2664,14 @@ CreateJSStackObject(JSContext *cx, const CombinedStacks &stacks) {
}
int modIndex = (std::numeric_limits<uint16_t>::max() == frame.mModIndex) ?
-1 : frame.mModIndex;
if (!JS_SetElement(cx, framePair, 0, modIndex)) {
if (!JS_DefineElement(cx, framePair, 0, modIndex, JSPROP_ENUMERATE)) {
return nullptr;
}
if (!JS_SetElement(cx, framePair, 1, static_cast<double>(frame.mOffset))) {
if (!JS_DefineElement(cx, framePair, 1, static_cast<double>(frame.mOffset),
JSPROP_ENUMERATE)) {
return nullptr;
}
if (!JS_SetElement(cx, pcArray, pcIndex, framePair)) {
if (!JS_DefineElement(cx, pcArray, pcIndex, framePair, JSPROP_ENUMERATE)) {
return nullptr;
}
}
@ -2799,13 +2804,14 @@ CreateJSTimeHistogram(JSContext* cx, const Telemetry::TimeHistogram& time)
}
/* In a Chromium-style histogram, the first bucket is an "under" bucket
that represents all values below the histogram's range. */
if (!JS_SetElement(cx, ranges, 0, time.GetBucketMin(0)) ||
!JS_SetElement(cx, counts, 0, 0)) {
if (!JS_DefineElement(cx, ranges, 0, time.GetBucketMin(0), JSPROP_ENUMERATE) ||
!JS_DefineElement(cx, counts, 0, 0, JSPROP_ENUMERATE)) {
return nullptr;
}
for (size_t i = 0; i < ArrayLength(time); i++) {
if (!JS_SetElement(cx, ranges, i + 1, time.GetBucketMax(i)) ||
!JS_SetElement(cx, counts, i + 1, time[i])) {
if (!JS_DefineElement(cx, ranges, i + 1, time.GetBucketMax(i),
JSPROP_ENUMERATE) ||
!JS_DefineElement(cx, counts, i + 1, time[i], JSPROP_ENUMERATE)) {
return nullptr;
}
}
@ -2825,7 +2831,7 @@ CreateJSHangStack(JSContext* cx, const Telemetry::HangStack& stack)
}
for (size_t i = 0; i < stack.length(); i++) {
JS::RootedString string(cx, JS_NewStringCopyZ(cx, stack[i]));
if (!JS_SetElement(cx, ret, i, string)) {
if (!JS_DefineElement(cx, ret, i, string, JSPROP_ENUMERATE)) {
return nullptr;
}
}
@ -2885,7 +2891,7 @@ CreateJSThreadHangStats(JSContext* cx, const Telemetry::ThreadHangStats& thread)
}
for (size_t i = 0; i < thread.mHangs.length(); i++) {
JS::RootedObject obj(cx, CreateJSHangHistogram(cx, thread.mHangs[i]));
if (!JS_SetElement(cx, hangs, i, obj)) {
if (!JS_DefineElement(cx, hangs, i, obj, JSPROP_ENUMERATE)) {
return nullptr;
}
}
@ -2914,7 +2920,7 @@ TelemetryImpl::GetThreadHangStats(JSContext* cx, JS::MutableHandle<JS::Value> re
histogram; histogram = iter.GetNext()) {
JS::RootedObject obj(cx,
CreateJSThreadHangStats(cx, *histogram));
if (!JS_SetElement(cx, retObj, threadIndex++, obj)) {
if (!JS_DefineElement(cx, retObj, threadIndex++, obj, JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
}
@ -2925,7 +2931,7 @@ TelemetryImpl::GetThreadHangStats(JSContext* cx, JS::MutableHandle<JS::Value> re
for (size_t i = 0; i < mThreadHangStats.length(); i++) {
JS::RootedObject obj(cx,
CreateJSThreadHangStats(cx, mThreadHangStats[i]));
if (!JS_SetElement(cx, retObj, threadIndex++, obj)) {
if (!JS_DefineElement(cx, retObj, threadIndex++, obj, JSPROP_ENUMERATE)) {
return NS_ERROR_FAILURE;
}
}