⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 283410 in webkit


Ignore:
Timestamp:
Oct 1, 2021, 3:12:09 PM (5 years ago)
Author:
ysuzuki@apple.com
Message:

Disable new incumbent-window until it is fully implemented
https://bugs.webkit.org/show_bug.cgi?id=230261
<rdar://problem/83099726>

Reviewed by Chris Dumez and Geoffrey Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/html/webappapis/scripting/events/compile-event-handler-settings-objects-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent-expected.txt:

Source/JavaScriptCore:

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::globalObjectOfClosestCodeBlock):

  • runtime/JSObject.cpp:

(JSC::JSObject::getOwnPropertyDescriptor):

  • runtime/PropertySlot.h:

Source/WebCore:

This patch disables new incumbent-window until it is fully implemented to avoid compatibility issue.

  • bindings/js/JSDOMConvertCallbacks.h:

(WebCore::Converter<IDLCallbackFunction<T>>::convert):
(WebCore::Converter<IDLCallbackInterface<T>>::convert):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::callerGlobalObject):
(WebCore::legacyActiveGlobalObjectForAccessor):

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::incumbentDOMWindow):
(WebCore::legacyActiveDOMWindowForAccessor):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GetJSCAttributesForAttribute):
(GenerateCallWith):

  • page/Location.idl:

LayoutTests:

  • http/tests/security/frameNavigation/context-for-location-href-gopd-expected.txt:
Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r283407 r283410  
     12021-10-01  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Disable new incumbent-window until it is fully implemented
     4        https://bugs.webkit.org/show_bug.cgi?id=230261
     5        <rdar://problem/83099726>
     6
     7        Reviewed by Chris Dumez and Geoffrey Garen.
     8
     9        * http/tests/security/frameNavigation/context-for-location-href-gopd-expected.txt:
     10
    1112021-10-01  Lauro Moura  <lmoura@igalia.com>
    212
  • trunk/LayoutTests/http/tests/security/frameNavigation/context-for-location-href-gopd-expected.txt

    r280256 r283410  
    1 document.referrer = http://127.0.0.1:8000/security/frameNavigation/context-for-location-href-gopd.html
     1document.referrer = http://127.0.0.1:8000/security/frameNavigation/resources/middle-frame-for-location.html
    22
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r283398 r283410  
     12021-10-01  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Disable new incumbent-window until it is fully implemented
     4        https://bugs.webkit.org/show_bug.cgi?id=230261
     5        <rdar://problem/83099726>
     6
     7        Reviewed by Chris Dumez and Geoffrey Garen.
     8
     9        * web-platform-tests/html/webappapis/scripting/events/compile-event-handler-settings-objects-expected.txt:
     10        * web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent-expected.txt:
     11
    1122021-10-01  Myles C. Maxfield  <mmaxfield@apple.com>
    213
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/compile-event-handler-settings-objects-expected.txt

    r280256 r283410  
    22PASS The Function instance must be created in the Realm of the node document
    33FAIL The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document assert_equals: expected "/html/webappapis/scripting/events/resources/open-window.html" but got "/html/webappapis/scripting/events/open-window.html"
    4 PASS The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document
     4FAIL The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document assert_equals: expected "iframe" but got "parent frame"
    55
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent-expected.txt

    r280256 r283410  
    33PASS Sanity check: this all works as expected with no promises involved
    44PASS Fulfillment handler on fulfilled promise
    5 FAIL Fulfillment handler on fulfilled promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent.html"
     5FAIL Fulfillment handler on fulfilled promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/current/current.html"
    66PASS Rejection handler on rejected promise
    7 FAIL Rejection handler on rejected promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent.html"
     7FAIL Rejection handler on rejected promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/current/current.html"
    88PASS Fulfillment handler on pending-then-fulfilled promise
    9 FAIL Fulfillment handler on pending-then-fulfilled promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent.html"
     9FAIL Fulfillment handler on pending-then-fulfilled promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/current/current.html"
    1010PASS Rejection handler on pending-then-rejected promise
    11 FAIL Rejection handler on pending-then-rejected promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent.html"
     11FAIL Rejection handler on pending-then-rejected promise, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/current/current.html"
    1212PASS Thenable resolution
    13 FAIL Thenable resolution, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent.html"
     13FAIL Thenable resolution, using backup incumbent settings object stack assert_equals: expected "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/promise-job-incumbent-incumbent.html" but got "http://localhost:8800/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/resources/current/current.html"
    1414
  • trunk/Source/JavaScriptCore/ChangeLog

    r283389 r283410  
     12021-10-01  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Disable new incumbent-window until it is fully implemented
     4        https://bugs.webkit.org/show_bug.cgi?id=230261
     5        <rdar://problem/83099726>
     6
     7        Reviewed by Chris Dumez and Geoffrey Garen.
     8
     9        * interpreter/CallFrame.cpp:
     10        (JSC::CallFrame::globalObjectOfClosestCodeBlock):
     11        * runtime/JSObject.cpp:
     12        (JSC::JSObject::getOwnPropertyDescriptor):
     13        * runtime/PropertySlot.h:
     14
    1152021-10-01  Xan López  <xan@igalia.com>
    216
  • trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp

    r280256 r283410  
    248248JSGlobalObject* CallFrame::globalObjectOfClosestCodeBlock(VM& vm, CallFrame* callFrame)
    249249{
     250    // FIXME: We need to handle JSONP interpretation case in ProgramExecutable since it does not have vm.topCallFrame.
     251    // rdar://83691438
    250252    JSGlobalObject* globalObject = nullptr;
    251253    StackVisitor::visit(callFrame, vm, [&](StackVisitor& visitor) {
  • trunk/Source/JavaScriptCore/runtime/JSObject.cpp

    r280505 r283410  
    36783678        descriptor.setAccessorDescriptor((slot.attributes() | PropertyAttribute::Accessor) & ~PropertyAttribute::CustomAccessor);
    36793679        JSGlobalObject* slotBaseGlobalObject = slot.slotBase()->globalObject(vm);
     3680        if (slot.attributes() & PropertyAttribute::DOMLegacyAccessor)
     3681            slotBaseGlobalObject = globalObject;
    36803682        if (slot.customGetter())
    36813683            descriptor.setGetter(createCustomGetterFunction(slotBaseGlobalObject, vm, propertyName, slot.customGetter(), slot.domAttribute()));
  • trunk/Source/JavaScriptCore/runtime/PropertySlot.h

    r280256 r283410  
    4646    CustomAccessor    = 1 << 5,
    4747    CustomValue       = 1 << 6,
     48    DOMLegacyAccessor = 1 << 7, // property is a DOM legacy accessor, which holds caller's global object when it is materialized.
    4849    CustomAccessorOrValue = CustomAccessor | CustomValue,
    4950    AccessorOrCustomAccessorOrValue = Accessor | CustomAccessor | CustomValue,
  • trunk/Source/WebCore/ChangeLog

    r283402 r283410  
     12021-10-01  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Disable new incumbent-window until it is fully implemented
     4        https://bugs.webkit.org/show_bug.cgi?id=230261
     5        <rdar://problem/83099726>
     6
     7        Reviewed by Chris Dumez and Geoffrey Garen.
     8
     9        This patch disables new incumbent-window until it is fully implemented to avoid compatibility issue.
     10
     11        * bindings/js/JSDOMConvertCallbacks.h:
     12        (WebCore::Converter<IDLCallbackFunction<T>>::convert):
     13        (WebCore::Converter<IDLCallbackInterface<T>>::convert):
     14        * bindings/js/JSDOMGlobalObject.cpp:
     15        (WebCore::callerGlobalObject):
     16        (WebCore::legacyActiveGlobalObjectForAccessor):
     17        * bindings/js/JSDOMGlobalObject.h:
     18        * bindings/js/JSDOMWindowBase.cpp:
     19        (WebCore::incumbentDOMWindow):
     20        (WebCore::legacyActiveDOMWindowForAccessor):
     21        * bindings/js/JSDOMWindowBase.h:
     22        * bindings/scripts/CodeGeneratorJS.pm:
     23        (GetJSCAttributesForAttribute):
     24        (GenerateCallWith):
     25        * page/Location.idl:
     26
    1272021-10-01  Chris Dumez  <cdumez@apple.com>
    228
  • trunk/Source/WebCore/bindings/js/JSDOMConvertCallbacks.h

    r281520 r283410  
    4646        }
    4747
    48         JSDOMGlobalObject* incumbentGlobalObject = &globalObject;
    49         if (auto* globalObject = JSC::CallFrame::globalObjectOfClosestCodeBlock(vm, vm.topCallFrame))
    50             incumbentGlobalObject = JSC::jsCast<JSDOMGlobalObject*>(globalObject);
    51        
    52         return T::create(JSC::asObject(value), incumbentGlobalObject);
     48        return T::create(JSC::asObject(value), &callerGlobalObject(globalObject, vm.topCallFrame));
    5349    }
    5450};
     
    8480        }
    8581
    86         JSDOMGlobalObject* incumbentGlobalObject = &globalObject;
    87         if (auto* globalObject = JSC::CallFrame::globalObjectOfClosestCodeBlock(vm, vm.topCallFrame))
    88             incumbentGlobalObject = JSC::jsCast<JSDOMGlobalObject*>(globalObject);
    89 
    90         return T::create(JSC::asObject(value), incumbentGlobalObject);
     82        return T::create(JSC::asObject(value), &callerGlobalObject(globalObject, vm.topCallFrame));
    9183    }
    9284};
  • trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp

    r282395 r283410  
    6262#include <JavaScriptCore/JSInternalPromise.h>
    6363#include <JavaScriptCore/StructureInlines.h>
     64#include <JavaScriptCore/VMEntryScope.h>
    6465#include <JavaScriptCore/VMTrapsInlines.h>
    6566#include <JavaScriptCore/WasmStreamingCompiler.h>
     
    582583}
    583584
     585static JSDOMGlobalObject& callerGlobalObject(JSC::JSGlobalObject& lexicalGlobalObject, JSC::CallFrame* callFrame, bool skipFirstFrame, bool lookUpFromVMEntryScope)
     586{
     587    VM& vm = lexicalGlobalObject.vm();
     588    if (callFrame) {
     589        class GetCallerGlobalObjectFunctor {
     590        public:
     591            GetCallerGlobalObjectFunctor(bool skipFirstFrame)
     592                : m_skipFirstFrame(skipFirstFrame)
     593            { }
     594
     595            StackVisitor::Status operator()(StackVisitor& visitor) const
     596            {
     597                if (m_skipFirstFrame) {
     598                    if (!m_hasSkippedFirstFrame) {
     599                        m_hasSkippedFirstFrame = true;
     600                        return StackVisitor::Continue;
     601                    }
     602                }
     603
     604                if (auto* codeBlock = visitor->codeBlock())
     605                    m_globalObject = codeBlock->globalObject();
     606                else {
     607                    ASSERT(visitor->callee().rawPtr());
     608                    // FIXME: Callee is not an object if the caller is Web Assembly.
     609                    // Figure out what to do here. We can probably get the global object
     610                    // from the top-most Wasm Instance. https://bugs.webkit.org/show_bug.cgi?id=165721
     611                    if (visitor->callee().isCell() && visitor->callee().asCell()->isObject())
     612                        m_globalObject = jsCast<JSObject*>(visitor->callee().asCell())->globalObject();
     613                }
     614                return StackVisitor::Done;
     615            }
     616
     617            JSC::JSGlobalObject* globalObject() const { return m_globalObject; }
     618
     619        private:
     620            bool m_skipFirstFrame { false };
     621            mutable bool m_hasSkippedFirstFrame { false };
     622            mutable JSC::JSGlobalObject* m_globalObject { nullptr };
     623        };
     624
     625        GetCallerGlobalObjectFunctor iter(skipFirstFrame);
     626        callFrame->iterate(vm, iter);
     627        if (iter.globalObject())
     628            return *jsCast<JSDOMGlobalObject*>(iter.globalObject());
     629    }
     630
     631    // In the case of legacyActiveGlobalObjectForAccessor, it is possible that vm.topCallFrame is nullptr when the script is evaluated as JSONP.
     632    // Since we put JSGlobalObject to VMEntryScope, we can retrieve the right globalObject from that.
     633    // For callerGlobalObject, we do not check vm.entryScope to keep it the old behavior.
     634    if (lookUpFromVMEntryScope) {
     635        if (vm.entryScope) {
     636            if (auto* result = vm.entryScope->globalObject())
     637                return *jsCast<JSDOMGlobalObject*>(result);
     638        }
     639    }
     640
     641    // If we cannot find JSGlobalObject in caller frames, we just return the current lexicalGlobalObject.
     642    return *jsCast<JSDOMGlobalObject*>(&lexicalGlobalObject);
     643}
     644
     645JSDOMGlobalObject& callerGlobalObject(JSC::JSGlobalObject& lexicalGlobalObject, JSC::CallFrame* callFrame)
     646{
     647    constexpr bool skipFirstFrame = true;
     648    constexpr bool lookUpFromVMEntryScope = false;
     649    return callerGlobalObject(lexicalGlobalObject, callFrame, skipFirstFrame, lookUpFromVMEntryScope);
     650}
     651
     652JSDOMGlobalObject& legacyActiveGlobalObjectForAccessor(JSC::JSGlobalObject& lexicalGlobalObject, JSC::CallFrame* callFrame)
     653{
     654    constexpr bool skipFirstFrame = false;
     655    constexpr bool lookUpFromVMEntryScope = true;
     656    return callerGlobalObject(lexicalGlobalObject, callFrame, skipFirstFrame, lookUpFromVMEntryScope);
     657}
     658
    584659} // namespace WebCore
  • trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h

    r280256 r283410  
    144144
    145145JSDOMGlobalObject* toJSDOMGlobalObject(ScriptExecutionContext&, DOMWrapperWorld&);
     146WEBCORE_EXPORT JSDOMGlobalObject& callerGlobalObject(JSC::JSGlobalObject&, JSC::CallFrame*);
     147JSDOMGlobalObject& legacyActiveGlobalObjectForAccessor(JSC::JSGlobalObject&, JSC::CallFrame*);
    146148
    147149template<class JSClass>
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp

    r280256 r283410  
    285285DOMWindow& incumbentDOMWindow(JSGlobalObject& fallbackGlobalObject, CallFrame& callFrame)
    286286{
    287     if (auto* globalObject = CallFrame::globalObjectOfClosestCodeBlock(fallbackGlobalObject.vm(), &callFrame))
    288         return asJSDOMWindow(globalObject)->wrapped();
    289     return asJSDOMWindow(&fallbackGlobalObject)->wrapped();
     287    return asJSDOMWindow(&callerGlobalObject(fallbackGlobalObject, &callFrame))->wrapped();
    290288}
    291289
    292290DOMWindow& incumbentDOMWindow(JSGlobalObject& fallbackGlobalObject)
    293291{
    294     VM& vm = fallbackGlobalObject.vm();
    295     if (auto* globalObject = CallFrame::globalObjectOfClosestCodeBlock(vm, vm.topCallFrame))
    296         return asJSDOMWindow(globalObject)->wrapped();
    297     return asJSDOMWindow(&fallbackGlobalObject)->wrapped();
     292    return asJSDOMWindow(&callerGlobalObject(fallbackGlobalObject, fallbackGlobalObject.vm().topCallFrame))->wrapped();
    298293}
    299294
     
    307302    VM& vm = lexicalGlobalObject.vm();
    308303    return asJSDOMWindow(vm.deprecatedVMEntryGlobalObject(&lexicalGlobalObject))->wrapped();
     304}
     305
     306DOMWindow& legacyActiveDOMWindowForAccessor(JSGlobalObject& fallbackGlobalObject, CallFrame& callFrame)
     307{
     308    return asJSDOMWindow(&legacyActiveGlobalObjectForAccessor(fallbackGlobalObject, &callFrame))->wrapped();
     309}
     310
     311DOMWindow& legacyActiveDOMWindowForAccessor(JSGlobalObject& fallbackGlobalObject)
     312{
     313    return asJSDOMWindow(&legacyActiveGlobalObjectForAccessor(fallbackGlobalObject, fallbackGlobalObject.vm().topCallFrame))->wrapped();
    309314}
    310315
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h

    r280256 r283410  
    127127DOMWindow& firstDOMWindow(JSC::JSGlobalObject&);
    128128
     129DOMWindow& legacyActiveDOMWindowForAccessor(JSC::JSGlobalObject&, JSC::CallFrame&);
     130DOMWindow& legacyActiveDOMWindowForAccessor(JSC::JSGlobalObject&);
     131
    129132// FIXME: This should probably be removed in favor of one of the other DOMWindow accessors. It is intended
    130133//        to provide the document specfied as the 'responsible document' in the algorithm for document.open()
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r283233 r283410  
    20512051    push(@specials, "JSC::PropertyAttribute::ReadOnly") if IsReadonly($attribute);
    20522052    push(@specials, "JSC::PropertyAttribute::CustomAccessor") unless $isGlobalConstructor or IsJSBuiltin($interface, $attribute);
     2053    push(@specials, "JSC::PropertyAttribute::DOMLegacyAccessor") if $attribute->extendedAttributes->{LegacyActiveWindowForAccessor};
    20532054    push(@specials, "JSC::PropertyAttribute::DOMAttribute") if IsAcceleratedDOMAttribute($interface, $attribute);
    20542055    push(@specials, "JSC::PropertyAttribute::DOMJITAttribute") if $attribute->extendedAttributes->{DOMJIT};
     
    59805981        push(@callWithArgs, "incumbentDOMWindow(*$globalObject" . ($callFrameReference ? ", " . $callFrameReference : "") . ")");
    59815982    }
     5983    if ($codeGenerator->ExtendedAttributeContains($callWith, "LegacyActiveWindowForAccessor")) {
     5984        AddToImplIncludes("DOMWindow.h");
     5985        AddToImplIncludes("JSDOMWindowBase.h");
     5986        push(@callWithArgs, "legacyActiveDOMWindowForAccessor(*$globalObject" . ($callFrameReference ? ", " . $callFrameReference : "") . ")");
     5987    }
    59825988    if ($codeGenerator->ExtendedAttributeContains($callWith, "FirstWindow")) {
    59835989        AddToImplIncludes("DOMWindow.h");
  • trunk/Source/WebCore/page/Location.idl

    r280826 r283410  
    4444    Exposed=Window
    4545] interface Location {
    46     [SetterCallWith=IncumbentWindow&FirstWindow, DoNotCheckSecurityOnSetter] stringifier attribute USVString href;
     46    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow, DoNotCheckSecurityOnSetter] stringifier attribute USVString href;
    4747
    4848    // FIXME: We should use IncumbentWindow once we found why https://bugs.webkit.org/show_bug.cgi?id=228943 issue occured.
     
    5252
    5353    // URI decomposition attributes
    54     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString protocol;
    55     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString host;
    56     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString hostname;
    57     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString port;
    58     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString pathname;
    59     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString search;
    60     [SetterCallWith=IncumbentWindow&FirstWindow] attribute USVString hash;
     54    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString protocol;
     55    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString host;
     56    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString hostname;
     57    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString port;
     58    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString pathname;
     59    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString search;
     60    [SetterCallWith=LegacyActiveWindowForAccessor&FirstWindow] attribute USVString hash;
    6161
    6262    readonly attribute USVString origin;
Note: See TracChangeset for help on using the changeset viewer.