$OpenBSD$ index eb01c46..ffbd2df 100644 --- dom/base/nsDOMClassInfo.cpp.orig Fri Feb 20 15:40:37 2015 +++ dom/base/nsDOMClassInfo.cpp Fri Feb 20 15:40:37 2015 @@ -2727,11 +2727,6 @@ OldBindingConstructorEnabled(const nsGlobalNameStruct *aStruct, return true; } -static nsresult -LookupComponentsShim(JSContext *cx, JS::Handle global, - nsPIDOMWindow *win, - JS::MutableHandle desc); - bool nsWindowSH::NameStructEnabled(JSContext* aCx, nsGlobalWindow *aWin, const nsAString& aName, @@ -2770,10 +2765,6 @@ nsWindowSH::GlobalResolve(nsGlobalWindow *aWin, JSContext *cx, JS::Handle obj, JS::Handle id, JS::MutableHandle desc) { - if (id == XPCJSRuntime::Get()->GetStringID(XPCJSRuntime::IDX_COMPONENTS)) { - return LookupComponentsShim(cx, obj, aWin, desc); - } - #ifdef USE_CONTROLLERS_SHIM if (id == XPCJSRuntime::Get()->GetStringID(XPCJSRuntime::IDX_CONTROLLERS) && !xpc::IsXrayWrapper(obj) && @@ -3157,94 +3148,6 @@ LocationSetterUnwrapper(JSContext *cx, JS::Handle obj_, JS::Handle(cx, obj, id, strict, vp); } -struct InterfaceShimEntry { - const char *geckoName; - const char *domName; -}; - -// We add shims from Components.interfaces.nsIDOMFoo to window.Foo for each -// interface that has interface constants that sites might be getting off -// of Ci. -const InterfaceShimEntry kInterfaceShimMap[] = -{ { "nsIDOMFileReader", "FileReader" }, - { "nsIXMLHttpRequest", "XMLHttpRequest" }, - { "nsIDOMDOMException", "DOMException" }, - { "nsIDOMNode", "Node" }, - { "nsIDOMCSSPrimitiveValue", "CSSPrimitiveValue" }, - { "nsIDOMCSSRule", "CSSRule" }, - { "nsIDOMCSSValue", "CSSValue" }, - { "nsIDOMEvent", "Event" }, - { "nsIDOMNSEvent", "Event" }, - { "nsIDOMKeyEvent", "KeyEvent" }, - { "nsIDOMMouseEvent", "MouseEvent" }, - { "nsIDOMMouseScrollEvent", "MouseScrollEvent" }, - { "nsIDOMMutationEvent", "MutationEvent" }, - { "nsIDOMSimpleGestureEvent", "SimpleGestureEvent" }, - { "nsIDOMUIEvent", "UIEvent" }, - { "nsIDOMHTMLMediaElement", "HTMLMediaElement" }, - { "nsIDOMMediaError", "MediaError" }, - { "nsIDOMOfflineResourceList", "OfflineResourceList" }, - { "nsIDOMRange", "Range" }, - { "nsIDOMSVGLength", "SVGLength" }, - { "nsIDOMNodeFilter", "NodeFilter" }, - { "nsIDOMXPathResult", "XPathResult" } }; - -static nsresult -LookupComponentsShim(JSContext *cx, JS::Handle global, - nsPIDOMWindow *win, - JS::MutableHandle desc) -{ - // Keep track of how often this happens. - Telemetry::Accumulate(Telemetry::COMPONENTS_SHIM_ACCESSED_BY_CONTENT, true); - - // Warn once. - nsCOMPtr doc = win->GetExtantDoc(); - if (doc) { - doc->WarnOnceAbout(nsIDocument::eComponents, /* asError = */ true); - } - - // Create a fake Components object. - JS::Rooted components(cx, JS_NewObject(cx, nullptr, JS::NullPtr(), global)); - NS_ENSURE_TRUE(components, NS_ERROR_OUT_OF_MEMORY); - - // Create a fake interfaces object. - JS::Rooted interfaces(cx, JS_NewObject(cx, nullptr, JS::NullPtr(), global)); - NS_ENSURE_TRUE(interfaces, NS_ERROR_OUT_OF_MEMORY); - bool ok = - JS_DefineProperty(cx, components, "interfaces", interfaces, - JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY, - JS_PropertyStub, JS_StrictPropertyStub); - NS_ENSURE_TRUE(ok, NS_ERROR_OUT_OF_MEMORY); - - // Define a bunch of shims from the Ci.nsIDOMFoo to window.Foo for DOM - // interfaces with constants. - for (uint32_t i = 0; i < ArrayLength(kInterfaceShimMap); ++i) { - - // Grab the names from the table. - const char *geckoName = kInterfaceShimMap[i].geckoName; - const char *domName = kInterfaceShimMap[i].domName; - - // Look up the appopriate interface object on the global. - JS::Rooted v(cx, JS::UndefinedValue()); - ok = JS_GetProperty(cx, global, domName, &v); - NS_ENSURE_TRUE(ok, NS_ERROR_OUT_OF_MEMORY); - if (!v.isObject()) { - NS_WARNING("Unable to find interface object on global"); - continue; - } - - // Define the shim on the interfaces object. - ok = JS_DefineProperty(cx, interfaces, geckoName, v, - JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY, - JS_PropertyStub, JS_StrictPropertyStub); - NS_ENSURE_TRUE(ok, NS_ERROR_OUT_OF_MEMORY); - } - - FillPropertyDescriptor(desc, global, JS::ObjectValue(*components), false); - - return NS_OK; -} - NS_IMETHODIMP nsWindowSH::NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj_, jsid id_, JSObject **objp,