⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsdomwindowbase.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    wargs.x = WindowFeatures::floatFeature(features, "dialogleft", screenRect.x(), screenRect.right() - wargs.width, -1);    wargs.xSet = wargs.x > 0;    wargs.y = WindowFeatures::floatFeature(features, "dialogtop", screenRect.y(), screenRect.bottom() - wargs.height, -1);    wargs.ySet = wargs.y > 0;    if (WindowFeatures::boolFeature(features, "center", true)) {        if (!wargs.xSet) {            wargs.x = screenRect.x() + (screenRect.width() - wargs.width) / 2;            wargs.xSet = true;        }        if (!wargs.ySet) {            wargs.y = screenRect.y() + (screenRect.height() - wargs.height) / 2;            wargs.ySet = true;        }    }    wargs.dialog = true;    wargs.resizable = WindowFeatures::boolFeature(features, "resizable");    wargs.scrollbarsVisible = WindowFeatures::boolFeature(features, "scroll", true);    wargs.statusBarVisible = WindowFeatures::boolFeature(features, "status", !trusted);    wargs.menuBarVisible = false;    wargs.toolBarVisible = false;    wargs.locationBarVisible = false;    wargs.fullscreen = false;    Frame* dialogFrame = createWindow(exec, frame, url, "", wargs, dialogArgs);    if (!dialogFrame)        return jsUndefined();    JSDOMWindow* dialogWindow = toJSDOMWindow(dialogFrame);    // Get the return value either just before clearing the dialog window's    // properties (in JSDOMWindowBase::clear), or when on return from runModal.    JSValuePtr returnValue = noValue();    dialogWindow->setReturnValueSlot(&returnValue);    dialogFrame->page()->chrome()->runModal();    dialogWindow->setReturnValueSlot(0);    // If we don't have a return value, get it now.    // Either JSDOMWindowBase::clear was not called yet, or there was no return value,    // and in that case, there's no harm in trying again (no benefit either).    if (!returnValue)        returnValue = dialogWindow->getDirect(Identifier(exec, "returnValue"));    return returnValue ? returnValue : jsUndefined();}} // namespace WebCoreusing namespace WebCore;JSValuePtr jsDOMWindowBaseCrypto(ExecState*, const Identifier&, const PropertySlot&){    return jsUndefined(); // FIXME: implement this}JSValuePtr jsDOMWindowBaseEvent(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->currentEvent())        return jsUndefined();    return toJS(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->currentEvent());}JSValuePtr jsDOMWindowBaseImage(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSImageConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));}#if !ENABLE(CHANNEL_MESSAGING)JSValuePtr jsDOMWindowBaseMessageChannel(ExecState*, const Identifier&, const PropertySlot&){    return jsUndefined();}#elseJSValuePtr jsDOMWindowBaseMessageChannel(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSMessageChannelConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));}#endifJSValuePtr jsDOMWindowBaseOption(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSOptionConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));}JSValuePtr jsDOMWindowBaseWebKitCSSMatrix(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSWebKitCSSMatrixConstructor>(exec);} JSValuePtr jsDOMWindowBaseXMLHttpRequest(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSXMLHttpRequestConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));}JSValuePtr jsDOMWindowBaseAudio(ExecState* exec, const Identifier&, const PropertySlot& slot){#if ENABLE(VIDEO)    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    if (!MediaPlayer::isAvailable())        return jsUndefined();    return getDOMConstructor<JSAudioConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));#else    UNUSED_PARAM(exec);    UNUSED_PARAM(slot);    return jsUndefined();#endif}JSValuePtr jsDOMWindowBaseWebKitPoint(ExecState* exec, const Identifier&, const PropertySlot& slot){    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSWebKitPointConstructor>(exec);}JSValuePtr jsDOMWindowBaseWorker(ExecState* exec, const Identifier&, const PropertySlot& slot){#if ENABLE(WORKERS)    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSWorkerConstructor>(exec);#else    UNUSED_PARAM(exec);    UNUSED_PARAM(slot);    return jsUndefined();#endif}JSValuePtr jsDOMWindowBaseXSLTProcessor(ExecState* exec, const Identifier&, const PropertySlot& slot){#if ENABLE(XSLT)    if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))        return jsUndefined();    return getDOMConstructor<JSXSLTProcessorConstructor>(exec);#else    UNUSED_PARAM(exec);    UNUSED_PARAM(slot);    return jsUndefined();#endif}void setJSDOMWindowBaseEvent(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Event"), value);}void setJSDOMWindowBaseAudio(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Audio"), value);}void setJSDOMWindowBaseImage(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Image"), value);}void setJSDOMWindowBaseMessageChannel(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "MessageChannel"), value);}void setJSDOMWindowBaseOption(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Option"), value);}void setJSDOMWindowBaseWorker(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Worker"), value);}void setJSDOMWindowBaseWebKitCSSMatrix(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "WebKitCSSMatrix"), value);}void setJSDOMWindowBaseWebKitPoint(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "WebKitPoint"), value);}void setJSDOMWindowBaseXMLHttpRequest(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "XMLHttpRequest"), value);}void setJSDOMWindowBaseXSLTProcessor(ExecState* exec, JSObject* thisObject, JSValuePtr value){    if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))        return;    // Shadowing a built-in constructor    static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "XSLTProcessor"), value);}namespace WebCore {JSValuePtr JSDOMWindowBase::childFrameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot){    return toJS(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->impl()->frame()->tree()->child(AtomicString(propertyName))->domWindow());}JSValuePtr JSDOMWindowBase::indexGetter(ExecState* exec, const Identifier&, const PropertySlot& slot){    return toJS(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->impl()->frame()->tree()->child(slot.index())->domWindow());}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());}bool JSDOMWindowBase::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot){    // Check for child frames by name before built-in properties to    // match Mozilla. This does not match IE, but some sites end up    // naming frames things that conflict with window properties that    // are in Moz but not IE. Since we have some of these, we have to do    // it the Moz way.    if (impl()->frame()->tree()->child(propertyName)) {        slot.setCustom(this, childFrameGetter);        return true;    }    const HashEntry* entry = JSDOMWindowBaseTable.entry(exec, propertyName);    if (entry) {        if (entry->attributes() & Function) {            if (entry->function() == windowProtoFuncShowModalDialog) {                if (!canShowModalDialog(impl()->frame()))                    return false;            }            if (allowsAccessFrom(exec))                setUpStaticFunctionSlot(exec, entry, this, propertyName, slot);            else                slot.setUndefined();        } else            slot.setCustom(this, entry->propertyGetter());        return true;    }    // Do prototype lookup early so that functions and attributes in the prototype can have    // precedence over the index and name getters.      JSValuePtr proto = prototype();    if (proto.isObject()) {        if (asObject(proto)->getPropertySlot(exec, propertyName, slot)) {            if (!allowsAccessFrom(exec))                slot.setUndefined();            return true;        }    }    // FIXME: Search the whole frame hierachy somewhere around here.    // We need to test the correct priority order.    // allow window[1] or parent[1] etc. (#56983)    bool ok;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -