static JSValue namedItemGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName) { JSDOMWindowBase* thisObj = jsCast<JSDOMWindow*>(asObject(slotBase)); Document* document = thisObj->impl()->frame()->document(); ASSERT(BindingSecurity::shouldAllowAccessToDOMWindow(exec, thisObj->impl())); ASSERT(document); ASSERT(document->isHTMLDocument()); RefPtr<HTMLCollection> collection = document->windowNamedItems(propertyNameToAtomicString(propertyName)); if (collection->hasExactlyOneItem()) return toJS(exec, thisObj, collection->item(0)); return toJS(exec, thisObj, WTF::getPtr(collection)); }
JSC::JSValue JSDOMWindowBase::moduleLoaderEvaluate(JSC::JSGlobalObject* globalObject, JSC::ExecState* exec, JSC::JSValue moduleKey, JSC::JSValue moduleRecord) { JSDOMWindowBase* thisObject = JSC::jsCast<JSDOMWindowBase*>(globalObject); if (RefPtr<Document> document = thisObject->impl().document()) return document->moduleLoader()->evaluate(globalObject, exec, moduleKey, moduleRecord); return JSC::jsUndefined(); }
JSC::JSInternalPromise* JSDOMWindowBase::moduleLoaderFetch(JSC::JSGlobalObject* globalObject, JSC::ExecState* exec, JSC::JSValue moduleKey) { JSDOMWindowBase* thisObject = JSC::jsCast<JSDOMWindowBase*>(globalObject); if (RefPtr<Document> document = thisObject->impl().document()) return document->moduleLoader()->fetch(globalObject, exec, moduleKey); JSC::JSInternalPromiseDeferred* deferred = JSC::JSInternalPromiseDeferred::create(exec, globalObject); return deferred->reject(exec, jsUndefined()); }
static EncodedJSValue namedItemGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName) { JSDOMWindowBase* thisObj = jsCast<JSDOMWindow*>(slotBase); Document* document = thisObj->impl().frame()->document(); ASSERT(BindingSecurity::shouldAllowAccessToDOMWindow(exec, thisObj->impl())); ASSERT(document); ASSERT(document->isHTMLDocument()); AtomicStringImpl* atomicPropertyName = findAtomicString(propertyName); if (!atomicPropertyName || !toHTMLDocument(document)->hasWindowNamedItem(*atomicPropertyName)) return JSValue::encode(jsUndefined()); if (UNLIKELY(toHTMLDocument(document)->windowNamedItemContainsMultipleElements(*atomicPropertyName))) { RefPtr<HTMLCollection> collection = document->windowNamedItems(atomicPropertyName); ASSERT(collection->length() > 1); return JSValue::encode(toJS(exec, thisObj->globalObject(), WTF::getPtr(collection))); } return JSValue::encode(toJS(exec, thisObj->globalObject(), toHTMLDocument(document)->windowNamedItem(*atomicPropertyName))); }
JSValuePtr JSDOMWindowBase::namedItemGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot) { JSDOMWindowBase* thisObj = static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())); Document* doc = thisObj->impl()->frame()->document(); ASSERT(thisObj->allowsAccessFrom(exec)); ASSERT(doc); ASSERT(doc->isHTMLDocument()); RefPtr<HTMLCollection> collection = doc->windowNamedItems(propertyName); if (collection->length() == 1) return toJS(exec, collection->firstItem()); return toJS(exec, collection.get()); }
static JSValue namedItemGetter(ExecState* exec, JSValue slotBase, const Identifier& propertyName) { JSDOMWindowBase* thisObj = static_cast<JSDOMWindow*>(asObject(slotBase)); Document* document = thisObj->impl()->frame()->document(); ASSERT(thisObj->allowsAccessFrom(exec)); ASSERT(document); ASSERT(document->isHTMLDocument()); RefPtr<HTMLCollection> collection = document->windowNamedItems(identifierToString(propertyName)); if (collection->length() == 1) return toJS(exec, collection->firstItem()); return toJS(exec, collection.get()); }