☠☠ backed out by c84673c64f39 ☠ ☠ | |
author | Masatoshi Kimura <VYV03354@nifty.ne.jp> |
Wed, 31 Jul 2013 09:25:31 -0400 | |
changeset 140782 | 9c6dc3897c17585bb1b73fefd986302f66c94443 |
parent 140781 | 710c7f7c8e4c204876ba23083417b61c2333a1af |
child 140783 | e27bd873b413e11e3c197b3b07f79d79899d4d22 |
push id | 25041 |
push user | kwierso@gmail.com |
push date | Thu, 01 Aug 2013 00:32:15 +0000 |
treeherder | mozilla-central@05d3797276d3 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mrbkap |
bugs | 898136 |
milestone | 25.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
dom/base/nsDOMClassInfo.cpp | file | annotate | diff | comparison | revisions | |
dom/interfaces/base/moz.build | file | annotate | diff | comparison | revisions | |
dom/interfaces/base/nsIDOMGlobalObjectConstructor.idl | file | annotate | diff | comparison | revisions |
--- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -251,17 +251,16 @@ using mozilla::dom::workers::ResolveWork #include "BluetoothDevice.h" #endif #include "DOMCameraManager.h" #include "DOMCameraControl.h" #include "DOMCameraCapabilities.h" #include "nsIOpenWindowEventDetail.h" #include "nsIAsyncScrollEventDetail.h" -#include "nsIDOMGlobalObjectConstructor.h" #include "nsIDOMCanvasRenderingContext2D.h" #include "LockedFile.h" #include "nsDebug.h" #include "mozilla/dom/BindingUtils.h" #include "mozilla/Likely.h" #ifdef MOZ_TIME_MANAGER @@ -2724,86 +2723,32 @@ BaseStubConstructor(nsIWeakReference* aW native = do_CreateInstance(*name_struct->mData->mConstructorCID, &rv); } if (NS_FAILED(rv)) { NS_ERROR("Failed to create the object"); return rv; } nsCOMPtr<nsIJSNativeInitializer> initializer(do_QueryInterface(native)); - nsCOMPtr<nsIDOMGlobalObjectConstructor> constructor(do_QueryInterface(native)); - if (initializer || constructor) { + if (initializer) { // Initialize object using the current inner window, but only if // the caller can access it. nsCOMPtr<nsPIDOMWindow> owner = do_QueryReferent(aWeakOwner); nsPIDOMWindow* outerWindow = owner ? owner->GetOuterWindow() : nullptr; nsPIDOMWindow* currentInner = outerWindow ? outerWindow->GetCurrentInnerWindow() : nullptr; if (!currentInner || (owner != currentInner && !nsContentUtils::CanCallerAccess(currentInner))) { return NS_ERROR_DOM_SECURITY_ERR; } - if (initializer) { - rv = initializer->Initialize(currentInner, cx, obj, args); - if (NS_FAILED(rv)) { - return rv; - } - } else { - nsCOMPtr<nsIXPConnectWrappedJS> wrappedJS = do_QueryInterface(native); - - JS::Rooted<JSObject*> thisObject(cx, wrappedJS->GetJSObject()); - if (!thisObject) { - return NS_ERROR_UNEXPECTED; - } - - nsCxPusher pusher; - pusher.Push(cx); - - JSAutoCompartment ac(cx, thisObject); - - JS::Rooted<JS::Value> funval(cx); - if (!JS_GetProperty(cx, thisObject, "constructor", &funval) || - !funval.isObject()) { - return NS_ERROR_UNEXPECTED; - } - - // Check if the object is even callable. - NS_ENSURE_STATE(JS_ObjectIsCallable(cx, &funval.toObject())); - { - // wrap parameters in the target compartment - // we also pass in the calling window as the first argument - unsigned argc = args.length() + 1; - nsAutoArrayPtr<JS::Value> argv(new JS::Value[argc]); - JS::AutoArrayRooter rooter(cx, 0, argv); - - nsCOMPtr<nsIXPConnectJSObjectHolder> holder; - nsCOMPtr<nsIDOMWindow> currentWin(do_GetInterface(currentInner)); - rv = WrapNative(cx, obj, currentWin, &NS_GET_IID(nsIDOMWindow), - true, &argv[0], getter_AddRefs(holder)); - if (!JS_WrapValue(cx, &argv[0])) - return NS_ERROR_FAILURE; - rooter.changeLength(1); - - for (size_t i = 1; i < argc; ++i) { - argv[i] = args[i - 1]; - if (!JS_WrapValue(cx, &argv[i])) - return NS_ERROR_FAILURE; - rooter.changeLength(i + 1); - } - - JS::Rooted<JS::Value> frval(cx); - bool ret = JS_CallFunctionValue(cx, thisObject, funval, argc, argv, - frval.address()); - - if (!ret) { - return NS_ERROR_FAILURE; - } - } + rv = initializer->Initialize(currentInner, cx, obj, args); + if (NS_FAILED(rv)) { + return rv; } } return WrapNative(cx, obj, native, true, args.rval().address()); } static nsresult DefineInterfaceConstants(JSContext *cx, JS::Handle<JSObject*> obj, const nsIID *aIID)
--- a/dom/interfaces/base/moz.build +++ b/dom/interfaces/base/moz.build @@ -11,17 +11,16 @@ XPIDL_SOURCES += [ 'nsIContentPrefService.idl', 'nsIContentPrefService2.idl', 'nsIContentURIGrouper.idl', 'nsIDOMCRMFObject.idl', 'nsIDOMChromeWindow.idl', 'nsIDOMClientRect.idl', 'nsIDOMClientRectList.idl', 'nsIDOMConstructor.idl', - 'nsIDOMGlobalObjectConstructor.idl', 'nsIDOMGlobalPropertyInitializer.idl', 'nsIDOMHistory.idl', 'nsIDOMJSWindow.idl', 'nsIDOMLocation.idl', 'nsIDOMMediaQueryList.idl', 'nsIDOMModalContentWindow.idl', 'nsIDOMNavigator.idl', 'nsIDOMPkcs11.idl',
deleted file mode 100644 --- a/dom/interfaces/base/nsIDOMGlobalObjectConstructor.idl +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "domstubs.idl" - -[scriptable, uuid(cb439c73-0129-4289-a349-c5216e6b912a)] -interface nsIDOMGlobalObjectConstructor : nsISupports -{ - /* - * JS use only - * - * The constructor() method will be called with any parameters passed - * to the object constructor. - * If the JS implementation returns a value, it will be ignored. - */ - void constructor(); -};