JSObject* HTMLFormControlsCollection::NamedItem(JSContext* aCx, const nsAString& aName, ErrorResult& aError) { nsISupports* item = NamedItemInternal(aName, true); if (!item) { return nullptr; } JS::Rooted<JSObject*> wrapper(aCx, nsWrapperCache::GetWrapper()); JSAutoCompartment ac(aCx, wrapper); JS::Rooted<JS::Value> v(aCx); if (!dom::WrapObject(aCx, wrapper, item, &v)) { aError.Throw(NS_ERROR_FAILURE); return nullptr; } return &v.toObject(); }
void HTMLFormControlsCollection::NamedGetter(const nsAString& aName, bool& aFound, Nullable<OwningRadioNodeListOrElement>& aResult) { nsISupports* item = NamedItemInternal(aName, true); if (!item) { aFound = false; return; } aFound = true; if (nsCOMPtr<Element> element = do_QueryInterface(item)) { aResult.SetValue().SetAsElement() = element; return; } if (nsCOMPtr<RadioNodeList> nodelist = do_QueryInterface(item)) { aResult.SetValue().SetAsRadioNodeList() = nodelist; return; } MOZ_ASSERT_UNREACHABLE("Should only have Elements and NodeLists here."); }