Bug 1186806 - Part 3: Replace nsBaseHashtable::EnumerateRead() with iterators in HTMLMediaElement. r=khuey
This commit is contained in:
@@ -1706,36 +1706,6 @@ NS_IMETHODIMP HTMLMediaElement::SetVolume(double aVolume)
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
// Helper struct with arguments for our hash iterator.
|
||||
typedef struct MOZ_STACK_CLASS {
|
||||
JSContext* cx;
|
||||
JS::Handle<JSObject*> tags;
|
||||
bool error;
|
||||
} MetadataIterCx;
|
||||
|
||||
PLDHashOperator
|
||||
HTMLMediaElement::BuildObjectFromTags(nsCStringHashKey::KeyType aKey,
|
||||
nsCString aValue,
|
||||
void* aUserArg)
|
||||
{
|
||||
MetadataIterCx* args = static_cast<MetadataIterCx*>(aUserArg);
|
||||
|
||||
nsString wideValue = NS_ConvertUTF8toUTF16(aValue);
|
||||
JS::Rooted<JSString*> string(args->cx, JS_NewUCStringCopyZ(args->cx, wideValue.Data()));
|
||||
if (!string) {
|
||||
NS_WARNING("Failed to perform string copy");
|
||||
args->error = true;
|
||||
return PL_DHASH_STOP;
|
||||
}
|
||||
if (!JS_DefineProperty(args->cx, args->tags, aKey.Data(), string, JSPROP_ENUMERATE)) {
|
||||
NS_WARNING("Failed to set metadata property");
|
||||
args->error = true;
|
||||
return PL_DHASH_STOP;
|
||||
}
|
||||
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
void
|
||||
HTMLMediaElement::MozGetMetadata(JSContext* cx,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
@@ -1752,12 +1722,16 @@ HTMLMediaElement::MozGetMetadata(JSContext* cx,
|
||||
return;
|
||||
}
|
||||
if (mTags) {
|
||||
MetadataIterCx iter = {cx, tags, false};
|
||||
mTags->EnumerateRead(BuildObjectFromTags, static_cast<void*>(&iter));
|
||||
if (iter.error) {
|
||||
NS_WARNING("couldn't create metadata object!");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
for (auto iter = mTags->ConstIter(); !iter.Done(); iter.Next()) {
|
||||
nsString wideValue = NS_ConvertUTF8toUTF16(iter.UserData());
|
||||
JS::Rooted<JSString*> string(cx,
|
||||
JS_NewUCStringCopyZ(cx, wideValue.Data()));
|
||||
if (!string || !JS_DefineProperty(cx, tags, iter.Key().Data(), string,
|
||||
JSPROP_ENUMERATE)) {
|
||||
NS_WARNING("couldn't create metadata object!");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user