diff --git a/build/autoconf/mozconfig-find b/build/autoconf/mozconfig-find index 31f5b71b58e2..2018f0a4e132 100755 --- a/build/autoconf/mozconfig-find +++ b/build/autoconf/mozconfig-find @@ -46,6 +46,27 @@ # topsrcdir=$1 +abspath() { + if uname -s | grep -q MINGW; then + # We have no way to figure out whether we're in gmake or pymake right + # now. gmake gives us Unix-style paths while pymake gives us Windows-style + # paths, so attempt to handle both. + regexes='^\([A-Za-z]:\|\\\\\|\/\) ^\/' + else + regexes='^\/' + fi + + for regex in $regexes; do + if echo $1 | grep -q $regex; then + echo $1 + exit 0 + fi + done + + # If we're at this point, we have a relative path + echo `pwd`/$1 +} + for _config in "$MOZCONFIG" \ "$MOZ_MYCONFIG" do @@ -66,7 +87,7 @@ for _config in "$MOZCONFIG" \ "$HOME/.mozmyconfig.sh" do if test -f "$_config"; then - echo "$_config"; + echo `abspath $_config` exit 0 fi done diff --git a/build/win32/Makefile.in b/build/win32/Makefile.in index 07a837b17f49..581162b256c0 100644 --- a/build/win32/Makefile.in +++ b/build/win32/Makefile.in @@ -42,6 +42,8 @@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk +NO_PROFILE_GUIDED_OPTIMIZE = 1 + ifdef ENABLE_TESTS ifdef _MSC_VER diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 70931c8b8a36..f7e75ae87145 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -215,6 +215,14 @@ #include "nsPluginError.h" #include "nsContentUtils.h" +#include "nsContentErrors.h" +#include "nsIChannelPolicy.h" +#include "nsIContentSecurityPolicy.h" + +#include "nsXULAppAPI.h" + +#include "nsDOMNavigationTiming.h" +#include "nsITimedChannel.h" static NS_DEFINE_CID(kDOMScriptObjectFactoryCID, NS_DOM_SCRIPT_OBJECT_FACTORY_CID); @@ -225,15 +233,6 @@ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID); #define DEBUG_PAGE_CACHE #endif -#include "nsContentErrors.h" -#include "nsIChannelPolicy.h" -#include "nsIContentSecurityPolicy.h" - -#include "nsXULAppAPI.h" - -#include "nsDOMNavigationTiming.h" -#include "nsITimedChannel.h" - using namespace mozilla; // Number of documents currently loading @@ -922,7 +921,8 @@ NS_IMETHODIMP nsDocShell::GetInterface(const nsIID & aIID, void **aSink) *aSink = mScriptGlobal; } else if ((aIID.Equals(NS_GET_IID(nsPIDOMWindow)) || - aIID.Equals(NS_GET_IID(nsIDOMWindow))) && + aIID.Equals(NS_GET_IID(nsIDOMWindow)) || + aIID.Equals(NS_GET_IID(nsIDOMWindowInternal))) && NS_SUCCEEDED(EnsureScriptEnvironment())) { return mScriptGlobal->QueryInterface(aIID, aSink); } diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 2fcfb5631d7c..c0e95a79d6a1 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -262,6 +262,7 @@ using mozilla::TimeDuration; nsIDOMStorageList *nsGlobalWindow::sGlobalStorageList = nsnull; nsGlobalWindow::WindowByIdTable *nsGlobalWindow::sWindowsById = nsnull; +bool nsGlobalWindow::sWarnedAboutWindowInternal = false; static nsIEntropyCollector *gEntropyCollector = nsnull; static PRInt32 gRefCnt = 0; @@ -1348,6 +1349,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGlobalWindow) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIScriptGlobalObject) NS_INTERFACE_MAP_ENTRY(nsIDOMWindow) NS_INTERFACE_MAP_ENTRY(nsIDOMJSWindow) + if (aIID.Equals(NS_GET_IID(nsIDOMWindowInternal))) { + foundInterface = static_cast(this); + if (!sWarnedAboutWindowInternal) { + sWarnedAboutWindowInternal = true; + nsContentUtils::ReportToConsole(nsContentUtils::eDOM_PROPERTIES, + "nsIDOMWindowInternalWarning", + nsnull, 0, nsnull, EmptyString(), 0, 0, + nsIScriptError::warningFlag, + "Extensions", mWindowID); + } + } else NS_INTERFACE_MAP_ENTRY(nsIScriptGlobalObject) NS_INTERFACE_MAP_ENTRY(nsIScriptObjectPrincipal) NS_INTERFACE_MAP_ENTRY(nsIDOMEventTarget) @@ -4926,8 +4938,7 @@ nsGlobalWindow::Focus() return NS_OK; } - nsIDOMWindow *caller = - static_cast(nsContentUtils::GetWindowFromCaller()); + nsIDOMWindow *caller = nsContentUtils::GetWindowFromCaller(); nsCOMPtr opener; GetOpener(getter_AddRefs(opener)); diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h index d9b1d72e41be..b1178938941b 100644 --- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -967,6 +967,7 @@ protected: static nsIDOMStorageList* sGlobalStorageList; static WindowByIdTable* sWindowsById; + static bool sWarnedAboutWindowInternal; }; /* diff --git a/dom/base/nsPIDOMWindow.h b/dom/base/nsPIDOMWindow.h index baee60ad607c..9409f04c2d65 100644 --- a/dom/base/nsPIDOMWindow.h +++ b/dom/base/nsPIDOMWindow.h @@ -80,10 +80,10 @@ class nsIArray; class nsPIWindowRoot; #define NS_PIDOMWINDOW_IID \ -{ 0x1bfacc26, 0xad77, 0x42bb, \ - { 0xb9, 0xbb, 0xa0, 0x19, 0xc8, 0x27, 0x5c, 0x0e } } +{ 0xeee816d2, 0x2f08, 0x4b34, \ + { 0x97, 0x47, 0x5e, 0x5a, 0xcd, 0xc3, 0x56, 0xfa } } -class nsPIDOMWindow : public nsIDOMWindow +class nsPIDOMWindow : public nsIDOMWindowInternal { public: NS_DECLARE_STATIC_IID_ACCESSOR(NS_PIDOMWINDOW_IID) diff --git a/dom/indexedDB/nsIIDBCursor.idl b/dom/indexedDB/nsIIDBCursor.idl index d690b0df5978..bf9a2384738a 100644 --- a/dom/indexedDB/nsIIDBCursor.idl +++ b/dom/indexedDB/nsIIDBCursor.idl @@ -42,10 +42,6 @@ interface nsIIDBRequest; interface nsIVariant; -%{C++ -#include "jspubtd.h" -%} - /** * IDBCursor interface. See * http://dev.w3.org/2006/webapi/WebSimpleDB/#idl-def-IDBCursor for more diff --git a/dom/indexedDB/nsIIDBDatabase.idl b/dom/indexedDB/nsIIDBDatabase.idl index 899c35a8e0a5..5f550fb13ee4 100644 --- a/dom/indexedDB/nsIIDBDatabase.idl +++ b/dom/indexedDB/nsIIDBDatabase.idl @@ -46,10 +46,6 @@ interface nsIIDBTransaction; interface nsIDOMDOMStringList; interface nsIDOMEventListener; -%{C++ -#include "jspubtd.h" -%} - /** * IDBDatabase interface. See * http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBDatabase diff --git a/dom/indexedDB/nsIIDBFactory.idl b/dom/indexedDB/nsIIDBFactory.idl index 5e25c3e14739..fcd3c06be487 100644 --- a/dom/indexedDB/nsIIDBFactory.idl +++ b/dom/indexedDB/nsIIDBFactory.idl @@ -44,10 +44,6 @@ interface nsIIDBKeyRange; interface nsIIDBRequest; interface nsIVariant; -%{C++ -#include "jspubtd.h" -%} - /** * Interface that defines the indexedDB property on a window. See * http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBFactory diff --git a/dom/indexedDB/nsIIDBObjectStore.idl b/dom/indexedDB/nsIIDBObjectStore.idl index 4bdee3f0238e..0bd1ae30f83f 100644 --- a/dom/indexedDB/nsIIDBObjectStore.idl +++ b/dom/indexedDB/nsIIDBObjectStore.idl @@ -46,10 +46,6 @@ interface nsIIDBTransaction; interface nsIVariant; interface nsIDOMDOMStringList; -%{C++ -#include "jspubtd.h" -%} - /** * nsIIDBObjectStore interface. See * http://dev.w3.org/2006/webapi/WebSimpleDB/#idl-def-nsIIDBObjectStore diff --git a/dom/interfaces/base/nsIDOMWindow.idl b/dom/interfaces/base/nsIDOMWindow.idl index 18d16d5340e0..a2eaccecc43b 100644 --- a/dom/interfaces/base/nsIDOMWindow.idl +++ b/dom/interfaces/base/nsIDOMWindow.idl @@ -41,10 +41,6 @@ #include "domstubs.idl" -%{ C++ -#include "jspubtd.h" -%} - interface nsIAnimationFrameListener; interface nsIControllers; interface nsIDOMBlob; @@ -448,3 +444,10 @@ interface nsIDOMWindowPerformance : nsISupports */ readonly attribute nsIDOMPerformance performance; }; + +/** + * Empty interface for compatibility with older versions. + * @deprecated Use nsIDOMWindow instead + */ +[scriptable, uuid(8614bdb7-5b07-4d00-a7ba-4d44697a343d)] +interface nsIDOMWindowInternal : nsIDOMWindow {}; diff --git a/dom/interfaces/events/nsIDOMMessageEvent.idl b/dom/interfaces/events/nsIDOMMessageEvent.idl index b5a75292ae85..284ad888b687 100644 --- a/dom/interfaces/events/nsIDOMMessageEvent.idl +++ b/dom/interfaces/events/nsIDOMMessageEvent.idl @@ -38,10 +38,6 @@ #include "nsIDOMEvent.idl" -%{ C++ -#include "jspubtd.h" -%} - /** * The nsIDOMMessageEvent interface is used for server-sent events and for * cross-domain messaging. diff --git a/dom/interfaces/events/nsIDOMNotifyAudioAvailableEvent.idl b/dom/interfaces/events/nsIDOMNotifyAudioAvailableEvent.idl index 1d16812f0057..0cbe9958fa3e 100644 --- a/dom/interfaces/events/nsIDOMNotifyAudioAvailableEvent.idl +++ b/dom/interfaces/events/nsIDOMNotifyAudioAvailableEvent.idl @@ -40,10 +40,6 @@ #include "nsIDOMEvent.idl" #include "nsIVariant.idl" -%{ C++ -#include "jspubtd.h" -%} - [scriptable, uuid(6250652d-7a6a-49a4-a2ee-9114e1e83427)] interface nsIDOMNotifyAudioAvailableEvent : nsIDOMEvent { diff --git a/dom/interfaces/html/nsIDOMHTMLDocument.idl b/dom/interfaces/html/nsIDOMHTMLDocument.idl index 4593fd9fa9b7..fd23bef8688d 100644 --- a/dom/interfaces/html/nsIDOMHTMLDocument.idl +++ b/dom/interfaces/html/nsIDOMHTMLDocument.idl @@ -39,10 +39,6 @@ #include "nsIDOMDocument.idl" -%{C++ -#include "jspubtd.h" -%} - /** * The nsIDOMHTMLDocument interface is the interface to a [X]HTML * document object. diff --git a/dom/interfaces/json/nsIJSON.idl b/dom/interfaces/json/nsIJSON.idl index a833a6c6dae3..49af4482085c 100644 --- a/dom/interfaces/json/nsIJSON.idl +++ b/dom/interfaces/json/nsIJSON.idl @@ -42,10 +42,6 @@ interface nsIInputStream; interface nsIOutputStream; interface nsIScriptGlobalObject; -%{ C++ -#include "jspubtd.h" -%} - [ptr] native JSValPtr(jsval); [ptr] native JSContext(JSContext); diff --git a/dom/locales/en-US/chrome/dom/dom.properties b/dom/locales/en-US/chrome/dom/dom.properties index 3a63cd3f8ad4..550c9326f127 100644 --- a/dom/locales/en-US/chrome/dom/dom.properties +++ b/dom/locales/en-US/chrome/dom/dom.properties @@ -108,6 +108,6 @@ IsSupportedWarning=Use of attributes' isSupported() is deprecated. IsEqualNodeWarning=Use of attributes' isEqualNode() is deprecated. TextContentWarning=Use of attributes' textContent attribute is deprecated. Use value instead. EnablePrivilegeWarning=Use of enablePrivilege is deprecated. Please use code that runs with the system principal (e.g. an extension) instead. - nsIJSONDecodeDeprecatedWarning=nsIJSON.decode is deprecated. Please use JSON.parse instead. nsIJSONEncodeDeprecatedWarning=nsIJSON.encode is deprecated. Please use JSON.stringify instead. +nsIDOMWindowInternalWarning=Use of nsIDOMWindowInternal is deprecated. Use nsIDOMWindow instead. diff --git a/embedding/components/windowwatcher/public/nsPIWindowWatcher.idl b/embedding/components/windowwatcher/public/nsPIWindowWatcher.idl index cae07616c828..7c52736afd79 100644 --- a/embedding/components/windowwatcher/public/nsPIWindowWatcher.idl +++ b/embedding/components/windowwatcher/public/nsPIWindowWatcher.idl @@ -48,10 +48,6 @@ interface nsIWebBrowserChrome; interface nsIDocShellTreeItem; interface nsIArray; -%{C++ -#include "jspubtd.h" -%} - [uuid(8624594a-28d7-4bc3-8d12-b1c2b9eefd90)] interface nsPIWindowWatcher : nsISupports diff --git a/xpcom/ds/nsIVariant.idl b/xpcom/ds/nsIVariant.idl index 1d67cd1a2210..09f156441100 100644 --- a/xpcom/ds/nsIVariant.idl +++ b/xpcom/ds/nsIVariant.idl @@ -77,10 +77,6 @@ interface nsIDataType : nsISupports const PRUint16 VTYPE_EMPTY = 255; }; -%{ C++ -#include "jspubtd.h" -%} - /** * XPConnect has magic to transparently convert between nsIVariant and JS types. * We mark the interface [scriptable] so that JS can use methods diff --git a/xpcom/idl-parser/xpidl.py b/xpcom/idl-parser/xpidl.py index 172837d5737f..9bb4c6c56b22 100644 --- a/xpcom/idl-parser/xpidl.py +++ b/xpcom/idl-parser/xpidl.py @@ -859,6 +859,8 @@ class Method(object): def needsJSTypes(self): if self.implicit_jscontext: return True + if self.type == "jsval": + return True for p in self.params: t = p.realtype if isinstance(t, Native) and t.specialtype == "jsval": diff --git a/xpfe/appshell/src/nsXULWindow.cpp b/xpfe/appshell/src/nsXULWindow.cpp index e3decd09efe0..8c2b8fefbc25 100644 --- a/xpfe/appshell/src/nsXULWindow.cpp +++ b/xpfe/appshell/src/nsXULWindow.cpp @@ -89,7 +89,6 @@ #include "nsWebShellWindow.h" // get rid of this one, too... #include "prenv.h" - #include "mozilla/Preferences.h" using namespace mozilla; @@ -201,7 +200,15 @@ NS_IMETHODIMP nsXULWindow::GetInterface(const nsIID& aIID, void** aSink) } if (aIID.Equals(NS_GET_IID(nsIDOMWindow))) { return GetWindowDOMWindow(reinterpret_cast(aSink)); - } + } + if (aIID.Equals(NS_GET_IID(nsIDOMWindowInternal))) { + nsIDOMWindow* domWindow = nsnull; + rv = GetWindowDOMWindow(&domWindow); + nsIDOMWindowInternal* domWindowInternal = + static_cast(domWindow); + *aSink = domWindowInternal; + return rv; + } if (aIID.Equals(NS_GET_IID(nsIWebBrowserChrome)) && NS_SUCCEEDED(EnsureContentTreeOwner()) && NS_SUCCEEDED(mContentTreeOwner->QueryInterface(aIID, aSink)))