From 588cdc46b34fd8ee3dae76d4e71c2f30b9f216fb Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Sat, 31 May 2014 07:15:38 -0700 Subject: [PATCH] Back out b1935bebcf0e (bug 1018482) for assertion failures --- dom/base/nsDOMWindowUtils.cpp | 502 +++++++++++++++++++++++++--------- 1 file changed, 378 insertions(+), 124 deletions(-) diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp index 37af59d49564..f051fa5770b0 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -181,7 +181,9 @@ nsDOMWindowUtils::GetLayerTransaction() NS_IMETHODIMP nsDOMWindowUtils::GetImageAnimationMode(uint16_t *aMode) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aMode); *aMode = 0; @@ -196,7 +198,9 @@ nsDOMWindowUtils::GetImageAnimationMode(uint16_t *aMode) NS_IMETHODIMP nsDOMWindowUtils::SetImageAnimationMode(uint16_t aMode) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsPresContext* presContext = GetPresContext(); if (presContext) { @@ -211,7 +215,9 @@ nsDOMWindowUtils::GetDocCharsetIsForced(bool *aIsForced) { *aIsForced = false; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIDocument* doc = GetDocument(); *aIsForced = doc && @@ -223,7 +229,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetDocumentMetadata(const nsAString& aName, nsAString& aValue) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIDocument* doc = GetDocument(); if (doc) { @@ -239,7 +247,9 @@ nsDOMWindowUtils::GetDocumentMetadata(const nsAString& aName, NS_IMETHODIMP nsDOMWindowUtils::Redraw(uint32_t aCount, uint32_t *aDurationOut) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (aCount == 0) aCount = 1; @@ -268,7 +278,9 @@ nsDOMWindowUtils::Redraw(uint32_t aCount, uint32_t *aDurationOut) NS_IMETHODIMP nsDOMWindowUtils::SetCSSViewport(float aWidthPx, float aHeightPx) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (!(aWidthPx >= 0.0 && aHeightPx >= 0.0)) { return NS_ERROR_ILLEGAL_VALUE; @@ -316,7 +328,9 @@ nsDOMWindowUtils::SetDisplayPortForElement(float aXPx, float aYPx, nsIDOMElement* aElement, uint32_t aPriority) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (!presShell) { @@ -395,7 +409,9 @@ nsDOMWindowUtils::SetDisplayPortMarginsForElement(float aLeftMargin, nsIDOMElement* aElement, uint32_t aPriority) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (!presShell) { @@ -437,7 +453,9 @@ nsDOMWindowUtils::SetDisplayPortBaseForElement(int32_t aX, int32_t aHeight, nsIDOMElement* aElement) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (!presShell) { @@ -466,7 +484,9 @@ nsDOMWindowUtils::SetDisplayPortBaseForElement(int32_t aX, NS_IMETHODIMP nsDOMWindowUtils::SetResolution(float aXResolution, float aYResolution) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (!presShell) { @@ -485,7 +505,9 @@ nsDOMWindowUtils::SetResolution(float aXResolution, float aYResolution) NS_IMETHODIMP nsDOMWindowUtils::GetResolution(float* aXResolution, float* aYResolution) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (!presShell) { @@ -507,7 +529,9 @@ nsDOMWindowUtils::GetResolution(float* aXResolution, float* aYResolution) NS_IMETHODIMP nsDOMWindowUtils::GetIsResolutionSet(bool* aIsResolutionSet) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (!presShell) { @@ -523,7 +547,9 @@ nsDOMWindowUtils::GetIsResolutionSet(bool* aIsResolutionSet) { NS_IMETHODIMP nsDOMWindowUtils::SetIsFirstPaint(bool aIsFirstPaint) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (presShell) { @@ -536,7 +562,9 @@ nsDOMWindowUtils::SetIsFirstPaint(bool aIsFirstPaint) NS_IMETHODIMP nsDOMWindowUtils::GetIsFirstPaint(bool *aIsFirstPaint) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (presShell) { @@ -549,7 +577,9 @@ nsDOMWindowUtils::GetIsFirstPaint(bool *aIsFirstPaint) NS_IMETHODIMP nsDOMWindowUtils::GetPresShellId(uint32_t *aPresShellId) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIPresShell* presShell = GetPresShell(); if (presShell) { @@ -683,7 +713,9 @@ nsDOMWindowUtils::SendMouseEventCommon(const nsAString& aType, bool *aPreventDefault, bool aIsSynthesized) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsPoint offset; @@ -776,7 +808,9 @@ nsDOMWindowUtils::SendPointerEvent(const nsAString& aType, uint8_t aOptionalArgCount, bool* aPreventDefault) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsPoint offset; @@ -848,7 +882,9 @@ nsDOMWindowUtils::SendWheelEvent(float aX, int32_t aLineOrPageDeltaY, uint32_t aOptions) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsPoint offset; @@ -984,7 +1020,9 @@ nsDOMWindowUtils::SendTouchEventCommon(const nsAString& aType, bool aToWindow, bool* aPreventDefault) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsPoint offset; @@ -1060,7 +1098,9 @@ nsDOMWindowUtils::SendKeyEvent(const nsAString& aType, uint32_t aAdditionalFlags, bool* aDefaultActionTaken) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -1172,7 +1212,9 @@ nsDOMWindowUtils::SendNativeKeyEvent(int32_t aNativeKeyboardLayout, const nsAString& aCharacters, const nsAString& aUnmodifiedCharacters) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -1190,7 +1232,9 @@ nsDOMWindowUtils::SendNativeMouseEvent(int32_t aScreenX, int32_t aModifierFlags, nsIDOMElement* aElement) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidgetForElement(aElement); @@ -1212,7 +1256,9 @@ nsDOMWindowUtils::SendNativeMouseScrollEvent(int32_t aScreenX, uint32_t aAdditionalFlags, nsIDOMElement* aElement) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidgetForElement(aElement); @@ -1236,7 +1282,9 @@ nsDOMWindowUtils::SendNativeTouchPoint(uint32_t aPointerId, double aPressure, uint32_t aOrientation) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) { @@ -1258,7 +1306,9 @@ nsDOMWindowUtils::SendNativeTouchTap(int32_t aScreenX, int32_t aScreenY, bool aLongTap) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) { @@ -1270,7 +1320,9 @@ nsDOMWindowUtils::SendNativeTouchTap(int32_t aScreenX, NS_IMETHODIMP nsDOMWindowUtils::ClearNativeTouchSequence() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) { @@ -1282,7 +1334,9 @@ nsDOMWindowUtils::ClearNativeTouchSequence() NS_IMETHODIMP nsDOMWindowUtils::ActivateNativeMenuItemAt(const nsAString& indexString) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -1295,7 +1349,9 @@ nsDOMWindowUtils::ActivateNativeMenuItemAt(const nsAString& indexString) NS_IMETHODIMP nsDOMWindowUtils::ForceUpdateNativeMenuAt(const nsAString& indexString) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -1349,7 +1405,9 @@ nsDOMWindowUtils::GetWidgetForElement(nsIDOMElement* aElement) NS_IMETHODIMP nsDOMWindowUtils::Focus(nsIDOMElement* aElement) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); nsIFocusManager* fm = nsFocusManager::GetFocusManager(); @@ -1368,7 +1426,12 @@ nsDOMWindowUtils::GarbageCollect(nsICycleCollectorListener *aListener, int32_t aExtraForgetSkippableCalls) { PROFILER_LABEL("GC", "GarbageCollect"); - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + // Always permit this in debug builds. +#ifndef DEBUG + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } +#endif nsJSContext::GarbageCollectNow(JS::gcreason::DOM_UTILS); nsJSContext::CycleCollectNow(aListener, aExtraForgetSkippableCalls); @@ -1380,7 +1443,12 @@ NS_IMETHODIMP nsDOMWindowUtils::CycleCollect(nsICycleCollectorListener *aListener, int32_t aExtraForgetSkippableCalls) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + // Always permit this in debug builds. +#ifndef DEBUG + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } +#endif nsJSContext::CycleCollectNow(aListener, aExtraForgetSkippableCalls); return NS_OK; @@ -1389,7 +1457,9 @@ nsDOMWindowUtils::CycleCollect(nsICycleCollectorListener *aListener, NS_IMETHODIMP nsDOMWindowUtils::RunNextCollectorTimer() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsJSContext::RunNextCollectorTimer(); @@ -1405,7 +1475,9 @@ nsDOMWindowUtils::SendSimpleGestureEvent(const nsAString& aType, int32_t aModifiers, uint32_t aClickCount) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsPoint offset; @@ -1470,7 +1542,9 @@ nsDOMWindowUtils::ElementFromPoint(float aX, float aY, bool aFlushLayout, nsIDOMElement** aReturn) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_STATE(doc); @@ -1490,7 +1564,9 @@ nsDOMWindowUtils::NodesFromRect(float aX, float aY, bool aFlushLayout, nsIDOMNodeList** aReturn) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_STATE(doc); @@ -1503,7 +1579,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetTranslationNodes(nsIDOMNode* aRoot, nsITranslationNodeList** aRetVal) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aRetVal); nsCOMPtr root = do_QueryInterface(aRoot); @@ -1604,7 +1682,9 @@ nsDOMWindowUtils::CompareCanvases(nsIDOMHTMLCanvasElement *aCanvas1, uint32_t* aMaxDifference, uint32_t* retVal) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (aCanvas1 == nullptr || aCanvas2 == nullptr || @@ -1670,7 +1750,9 @@ nsDOMWindowUtils::CompareCanvases(nsIDOMHTMLCanvasElement *aCanvas1, NS_IMETHODIMP nsDOMWindowUtils::GetIsMozAfterPaintPending(bool *aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aResult); *aResult = false; @@ -1684,7 +1766,9 @@ nsDOMWindowUtils::GetIsMozAfterPaintPending(bool *aResult) NS_IMETHODIMP nsDOMWindowUtils::ClearMozAfterPaintEvents() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsPresContext* presContext = GetPresContext(); if (!presContext) @@ -1696,7 +1780,9 @@ nsDOMWindowUtils::ClearMozAfterPaintEvents() NS_IMETHODIMP nsDOMWindowUtils::DisableNonTestMouseEvents(bool aDisable) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -1711,7 +1797,9 @@ nsDOMWindowUtils::DisableNonTestMouseEvents(bool aDisable) NS_IMETHODIMP nsDOMWindowUtils::SuppressEventHandling(bool aSuppress) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE); @@ -1727,7 +1815,9 @@ nsDOMWindowUtils::SuppressEventHandling(bool aSuppress) static nsresult getScrollXYAppUnits(nsWeakPtr aWindow, bool aFlushLayout, nsPoint& aScrollPos) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(aWindow); nsCOMPtr doc = window ? window->GetExtantDoc() : nullptr; @@ -1775,7 +1865,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetScrollbarSize(bool aFlushLayout, int32_t* aWidth, int32_t* aHeight) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } *aWidth = 0; *aHeight = 0; @@ -1804,7 +1896,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetBoundsWithoutFlushing(nsIDOMElement *aElement, nsIDOMClientRect** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -1830,7 +1924,9 @@ nsDOMWindowUtils::GetBoundsWithoutFlushing(nsIDOMElement *aElement, NS_IMETHODIMP nsDOMWindowUtils::GetRootBounds(nsIDOMClientRect** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIDocument* doc = GetDocument(); NS_ENSURE_STATE(doc); @@ -1861,7 +1957,9 @@ nsDOMWindowUtils::GetRootBounds(nsIDOMClientRect** aResult) NS_IMETHODIMP nsDOMWindowUtils::GetIMEIsOpen(bool *aState) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aState); @@ -1885,7 +1983,9 @@ nsDOMWindowUtils::GetIMEIsOpen(bool *aState) NS_IMETHODIMP nsDOMWindowUtils::GetIMEStatus(uint32_t *aState) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aState); @@ -1901,7 +2001,9 @@ nsDOMWindowUtils::GetIMEStatus(uint32_t *aState) NS_IMETHODIMP nsDOMWindowUtils::GetFocusedInputType(char** aType) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aType); @@ -1919,7 +2021,9 @@ NS_IMETHODIMP nsDOMWindowUtils::FindElementWithViewId(nsViewID aID, nsIDOMElement** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsRefPtr content = nsLayoutUtils::FindContentFor(aID); return content ? CallQueryInterface(content, aResult) : NS_OK; @@ -1948,7 +2052,9 @@ nsDOMWindowUtils::GetFullZoom(float* aFullZoom) { *aFullZoom = 1.0f; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsPresContext* presContext = GetPresContext(); if (!presContext) { @@ -1966,7 +2072,9 @@ nsDOMWindowUtils::DispatchDOMEventViaPresShell(nsIDOMNode* aTarget, bool aTrusted, bool* aRetVal) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_STATE(aEvent); aEvent->SetTrusted(aTrusted); @@ -2005,7 +2113,9 @@ nsDOMWindowUtils::SendCompositionEvent(const nsAString& aType, const nsAString& aData, const nsAString& aLocale) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -2046,7 +2156,9 @@ nsDOMWindowUtils::CreateCompositionStringSynthesizer( NS_ENSURE_ARG_POINTER(aResult); *aResult = nullptr; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_NOT_AVAILABLE); @@ -2064,7 +2176,9 @@ nsDOMWindowUtils::SendQueryContentEvent(uint32_t aType, { *aResult = nullptr; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2164,7 +2278,9 @@ nsDOMWindowUtils::SendSelectionSetEvent(uint32_t aOffset, { *aResult = false; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -2193,7 +2309,9 @@ NS_IMETHODIMP nsDOMWindowUtils::SendContentCommandEvent(const nsAString& aType, nsITransferable * aTransferable) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // get the widget to send the event to nsCOMPtr widget = GetWidget(); @@ -2231,7 +2349,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetClassName(JS::Handle aObject, JSContext* aCx, char** aName) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // Our argument must be a non-null object. if (aObject.isPrimitive()) { @@ -2250,7 +2370,9 @@ nsDOMWindowUtils::GetVisitedDependentComputedStyle( { aResult.Truncate(); - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -2270,7 +2392,9 @@ nsDOMWindowUtils::GetVisitedDependentComputedStyle( NS_IMETHODIMP nsDOMWindowUtils::EnterModalState() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -2282,7 +2406,9 @@ nsDOMWindowUtils::EnterModalState() NS_IMETHODIMP nsDOMWindowUtils::LeaveModalState() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -2294,7 +2420,9 @@ nsDOMWindowUtils::LeaveModalState() NS_IMETHODIMP nsDOMWindowUtils::IsInModalState(bool *retval) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -2308,7 +2436,9 @@ nsDOMWindowUtils::GetParent(JS::Handle aObject, JSContext* aCx, JS::MutableHandle aParent) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // First argument must be an object. if (aObject.isPrimitive()) { @@ -2331,7 +2461,9 @@ nsDOMWindowUtils::GetParent(JS::Handle aObject, NS_IMETHODIMP nsDOMWindowUtils::GetOuterWindowID(uint64_t *aWindowID) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -2344,7 +2476,9 @@ nsDOMWindowUtils::GetOuterWindowID(uint64_t *aWindowID) NS_IMETHODIMP nsDOMWindowUtils::GetCurrentInnerWindowID(uint64_t *aWindowID) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_NOT_AVAILABLE); @@ -2362,7 +2496,9 @@ nsDOMWindowUtils::GetCurrentInnerWindowID(uint64_t *aWindowID) NS_IMETHODIMP nsDOMWindowUtils::SuspendTimeouts() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2375,7 +2511,9 @@ nsDOMWindowUtils::SuspendTimeouts() NS_IMETHODIMP nsDOMWindowUtils::ResumeTimeouts() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2388,7 +2526,9 @@ nsDOMWindowUtils::ResumeTimeouts() NS_IMETHODIMP nsDOMWindowUtils::GetLayerManagerType(nsAString& aType) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) @@ -2406,7 +2546,9 @@ nsDOMWindowUtils::GetLayerManagerType(nsAString& aType) NS_IMETHODIMP nsDOMWindowUtils::GetLayerManagerRemote(bool* retval) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) @@ -2423,7 +2565,9 @@ nsDOMWindowUtils::GetLayerManagerRemote(bool* retval) NS_IMETHODIMP nsDOMWindowUtils::StartFrameTimeRecording(uint32_t *startIndex) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(startIndex); @@ -2450,7 +2594,9 @@ nsDOMWindowUtils::StopFrameTimeRecording(uint32_t startIndex, uint32_t *frameCount, float **frameIntervals) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(frameCount); NS_ENSURE_ARG_POINTER(frameIntervals); @@ -2480,7 +2626,9 @@ nsDOMWindowUtils::StopFrameTimeRecording(uint32_t startIndex, NS_IMETHODIMP nsDOMWindowUtils::BeginTabSwitch() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) @@ -2521,7 +2669,9 @@ ComputeAnimationValue(nsCSSProperty aProperty, NS_IMETHODIMP nsDOMWindowUtils::AdvanceTimeAndRefresh(int64_t aMilliseconds) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsRefreshDriver* driver = GetPresContext()->RefreshDriver(); driver->AdvanceTimeAndRefresh(aMilliseconds); @@ -2537,7 +2687,9 @@ nsDOMWindowUtils::AdvanceTimeAndRefresh(int64_t aMilliseconds) NS_IMETHODIMP nsDOMWindowUtils::RestoreNormalRefresh() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // Kick the compositor out of test mode before the refresh driver, so that // the refresh driver doesn't send an update that gets ignored by the @@ -2556,7 +2708,9 @@ nsDOMWindowUtils::RestoreNormalRefresh() NS_IMETHODIMP nsDOMWindowUtils::GetIsTestControllingRefreshes(bool *aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsPresContext* pc = GetPresContext(); *aResult = @@ -2621,7 +2775,9 @@ nsDOMWindowUtils::ComputeAnimationDistance(nsIDOMElement* aElement, const nsAString& aValue2, double* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsresult rv; nsCOMPtr content = do_QueryInterface(aElement, &rv); @@ -2665,7 +2821,9 @@ nsDOMWindowUtils::RenderDocument(const nsRect& aRect, nscolor aBackgroundColor, gfxContext* aThebesContext) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE); @@ -2681,7 +2839,9 @@ nsDOMWindowUtils::RenderDocument(const nsRect& aRect, NS_IMETHODIMP nsDOMWindowUtils::GetCursorType(int16_t *aCursor) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aCursor); @@ -2714,7 +2874,9 @@ nsDOMWindowUtils::GetCursorType(int16_t *aCursor) NS_IMETHODIMP nsDOMWindowUtils::GetDisplayDPI(float *aDPI) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr widget = GetWidget(); if (!widget) @@ -2730,7 +2892,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetOuterWindowWithId(uint64_t aWindowID, nsIDOMWindow** aWindow) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // XXX This method is deprecated. See bug 865664. nsContentUtils::ReportToConsole(nsIScriptError::warningFlag, @@ -2747,7 +2911,9 @@ nsDOMWindowUtils::GetOuterWindowWithId(uint64_t aWindowID, NS_IMETHODIMP nsDOMWindowUtils::GetContainerElement(nsIDOMElement** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -2763,7 +2929,9 @@ NS_IMETHODIMP nsDOMWindowUtils::WrapDOMFile(nsIFile *aFile, nsIDOMFile **aDOMFile) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (!aFile) { return NS_ERROR_FAILURE; @@ -2808,7 +2976,9 @@ CheckLeafLayers(Layer* aLayer, const nsIntPoint& aOffset, nsIntRegion* aCoveredR NS_IMETHODIMP nsDOMWindowUtils::LeafLayersPartitionWindow(bool* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } *aResult = true; #ifdef DEBUG @@ -2840,7 +3010,9 @@ nsDOMWindowUtils::LeafLayersPartitionWindow(bool* aResult) NS_IMETHODIMP nsDOMWindowUtils::GetMayHaveTouchEventListeners(bool* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2853,7 +3025,9 @@ nsDOMWindowUtils::GetMayHaveTouchEventListeners(bool* aResult) NS_IMETHODIMP nsDOMWindowUtils::CheckAndClearPaintedState(nsIDOMElement* aElement, bool* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (!aElement) { return NS_ERROR_INVALID_ARG; @@ -2888,7 +3062,9 @@ nsDOMWindowUtils::CheckAndClearPaintedState(nsIDOMElement* aElement, bool* aResu NS_IMETHODIMP nsDOMWindowUtils::EnableDialogs() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2900,7 +3076,9 @@ nsDOMWindowUtils::EnableDialogs() NS_IMETHODIMP nsDOMWindowUtils::DisableDialogs() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2912,7 +3090,9 @@ nsDOMWindowUtils::DisableDialogs() NS_IMETHODIMP nsDOMWindowUtils::AreDialogsEnabled(bool* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -2933,7 +3113,9 @@ GetFileOrBlob(const nsAString& aName, JS::Handle aBlobParts, JS::Handle aParameters, JSContext* aCx, uint8_t aOptionalArgCount, nsISupports** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsresult rv; @@ -2966,7 +3148,9 @@ nsDOMWindowUtils::GetFile(const nsAString& aName, JS::Handle aBlobPar JS::Handle aParameters, JSContext* aCx, uint8_t aOptionalArgCount, nsIDOMFile** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr file; nsresult rv = GetFileOrBlob(aName, aBlobParts, aParameters, aCx, @@ -2984,7 +3168,9 @@ nsDOMWindowUtils::GetBlob(JS::Handle aBlobParts, JS::Handle aParameters, JSContext* aCx, uint8_t aOptionalArgCount, nsIDOMBlob** aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr blob; nsresult rv = GetFileOrBlob(NullString(), aBlobParts, aParameters, aCx, @@ -3001,7 +3187,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetFileId(JS::Handle aFile, JSContext* aCx, int64_t* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (!aFile.isPrimitive()) { JSObject* obj = aFile.toObjectOrNull(); @@ -3033,7 +3221,9 @@ nsDOMWindowUtils::GetFileReferences(const nsAString& aDatabaseName, int64_t aId, int32_t* aSliceRefCnt, JSContext* aCx, bool* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -3074,7 +3264,9 @@ nsDOMWindowUtils::GetFileReferences(const nsAString& aDatabaseName, int64_t aId, NS_IMETHODIMP nsDOMWindowUtils::IsIncrementalGCEnabled(JSContext* cx, bool* aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } *aResult = JS::IsIncrementalGCEnabled(JS_GetRuntime(cx)); return NS_OK; @@ -3083,7 +3275,9 @@ nsDOMWindowUtils::IsIncrementalGCEnabled(JSContext* cx, bool* aResult) NS_IMETHODIMP nsDOMWindowUtils::StartPCCountProfiling(JSContext* cx) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } js::StartPCCountProfiling(cx); return NS_OK; @@ -3092,7 +3286,9 @@ nsDOMWindowUtils::StartPCCountProfiling(JSContext* cx) NS_IMETHODIMP nsDOMWindowUtils::StopPCCountProfiling(JSContext* cx) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } js::StopPCCountProfiling(cx); return NS_OK; @@ -3101,7 +3297,9 @@ nsDOMWindowUtils::StopPCCountProfiling(JSContext* cx) NS_IMETHODIMP nsDOMWindowUtils::PurgePCCounts(JSContext* cx) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } js::PurgePCCounts(cx); return NS_OK; @@ -3110,7 +3308,9 @@ nsDOMWindowUtils::PurgePCCounts(JSContext* cx) NS_IMETHODIMP nsDOMWindowUtils::GetPCCountScriptCount(JSContext* cx, int32_t *result) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } *result = js::GetPCCountScriptCount(cx); return NS_OK; @@ -3119,7 +3319,9 @@ nsDOMWindowUtils::GetPCCountScriptCount(JSContext* cx, int32_t *result) NS_IMETHODIMP nsDOMWindowUtils::GetPCCountScriptSummary(int32_t script, JSContext* cx, nsAString& result) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } JSString *text = js::GetPCCountScriptSummary(cx, script); if (!text) @@ -3136,7 +3338,9 @@ nsDOMWindowUtils::GetPCCountScriptSummary(int32_t script, JSContext* cx, nsAStri NS_IMETHODIMP nsDOMWindowUtils::GetPCCountScriptContents(int32_t script, JSContext* cx, nsAString& result) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } JSString *text = js::GetPCCountScriptContents(cx, script); if (!text) @@ -3153,7 +3357,9 @@ nsDOMWindowUtils::GetPCCountScriptContents(int32_t script, JSContext* cx, nsAStr NS_IMETHODIMP nsDOMWindowUtils::GetPaintingSuppressed(bool *aPaintingSuppressed) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_TRUE(window, NS_ERROR_FAILURE); @@ -3170,7 +3376,9 @@ nsDOMWindowUtils::GetPaintingSuppressed(bool *aPaintingSuppressed) NS_IMETHODIMP nsDOMWindowUtils::GetPlugins(JSContext* cx, JS::MutableHandle aPlugins) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_STATE(doc); @@ -3232,7 +3440,9 @@ MaybeReflowForInflationScreenWidthChange(nsPresContext *aPresContext) NS_IMETHODIMP nsDOMWindowUtils::SetScrollPositionClampingScrollPortSize(float aWidth, float aHeight) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (!(aWidth >= 0.0 && aHeight >= 0.0)) { return NS_ERROR_ILLEGAL_VALUE; @@ -3262,7 +3472,9 @@ NS_IMETHODIMP nsDOMWindowUtils::SetContentDocumentFixedPositionMargins(float aTop, float aRight, float aBottom, float aLeft) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (!(aTop >= 0.0f && aRight >= 0.0f && aBottom >= 0.0f && aLeft >= 0.0f)) { return NS_ERROR_ILLEGAL_VALUE; @@ -3286,7 +3498,9 @@ nsresult nsDOMWindowUtils::RemoteFrameFullscreenChanged(nsIDOMElement* aFrameElement, const nsAString& aNewOrigin) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_STATE(doc); @@ -3298,7 +3512,9 @@ nsDOMWindowUtils::RemoteFrameFullscreenChanged(nsIDOMElement* aFrameElement, nsresult nsDOMWindowUtils::RemoteFrameFullscreenReverted() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr doc = GetDocument(); NS_ENSURE_STATE(doc); @@ -3310,7 +3526,9 @@ nsDOMWindowUtils::RemoteFrameFullscreenReverted() nsresult nsDOMWindowUtils::ExitFullscreen() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsIDocument::ExitFullscreen(nullptr, /* async */ false); return NS_OK; @@ -3321,7 +3539,9 @@ nsDOMWindowUtils::SelectAtPoint(float aX, float aY, uint32_t aSelectBehavior, bool *_retval) { *_retval = false; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsSelectionAmount amount; switch (aSelectBehavior) { @@ -3411,7 +3631,9 @@ convertSheetType(uint32_t aSheetType) NS_IMETHODIMP nsDOMWindowUtils::LoadSheet(nsIURI *aSheetURI, uint32_t aSheetType) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aSheetURI); NS_ENSURE_ARG(aSheetType == AGENT_SHEET || @@ -3429,7 +3651,9 @@ nsDOMWindowUtils::LoadSheet(nsIURI *aSheetURI, uint32_t aSheetType) NS_IMETHODIMP nsDOMWindowUtils::RemoveSheet(nsIURI *aSheetURI, uint32_t aSheetType) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_ARG_POINTER(aSheetURI); NS_ENSURE_ARG(aSheetType == AGENT_SHEET || @@ -3448,7 +3672,9 @@ nsDOMWindowUtils::RemoveSheet(nsIURI *aSheetURI, uint32_t aSheetType) NS_IMETHODIMP nsDOMWindowUtils::GetIsHandlingUserInput(bool* aHandlingUserInput) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } *aHandlingUserInput = EventStateManager::IsHandlingUserInput(); @@ -3458,7 +3684,9 @@ nsDOMWindowUtils::GetIsHandlingUserInput(bool* aHandlingUserInput) NS_IMETHODIMP nsDOMWindowUtils::AllowScriptsToClose() { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); static_cast(window.get())->AllowScriptsToClose(); @@ -3468,7 +3696,9 @@ nsDOMWindowUtils::AllowScriptsToClose() NS_IMETHODIMP nsDOMWindowUtils::GetIsParentWindowMainWidgetVisible(bool* aIsVisible) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // this should reflect the "is parent window visible" logic in // nsWindowWatcher::OpenWindowInternal() @@ -3503,7 +3733,9 @@ NS_IMETHODIMP nsDOMWindowUtils::IsNodeDisabledForEvents(nsIDOMNode* aNode, bool* aRetVal) { *aRetVal = false; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr n = do_QueryInterface(aNode); nsINode* node = n; while (node) { @@ -3555,7 +3787,9 @@ nsDOMWindowUtils::DispatchEventToChromeOnly(nsIDOMEventTarget* aTarget, bool* aRetVal) { *aRetVal = false; - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } NS_ENSURE_STATE(aTarget && aEvent); aEvent->GetInternalNSEvent()->mFlags.mOnlyChromeDispatch = true; aTarget->DispatchEvent(aEvent, aRetVal); @@ -3565,7 +3799,9 @@ nsDOMWindowUtils::DispatchEventToChromeOnly(nsIDOMEventTarget* aTarget, NS_IMETHODIMP nsDOMWindowUtils::RunInStableState(nsIRunnable *runnable) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr appShell(do_GetService(kAppShellCID)); if (!appShell) { @@ -3578,7 +3814,9 @@ nsDOMWindowUtils::RunInStableState(nsIRunnable *runnable) NS_IMETHODIMP nsDOMWindowUtils::RunBeforeNextEvent(nsIRunnable *runnable) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr appShell(do_GetService(kAppShellCID)); if (!appShell) { @@ -3593,7 +3831,9 @@ nsDOMWindowUtils::GetOMTAStyle(nsIDOMElement* aElement, const nsAString& aProperty, nsAString& aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr element = do_QueryInterface(aElement); if (!element) { @@ -3654,7 +3894,9 @@ nsDOMWindowUtils::GetOMTAOrComputedStyle(nsIDOMElement* aElement, const nsAString& aProperty, nsAString& aResult) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } // Try to get OMTA style nsresult rv = GetOMTAStyle(aElement, aProperty, aResult); @@ -3679,7 +3921,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetContentAPZTestData(JSContext* aContext, JS::MutableHandleValue aOutContentTestData) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (nsIWidget* widget = GetWidget()) { nsRefPtr lm = widget->GetLayerManager(); @@ -3698,7 +3942,9 @@ NS_IMETHODIMP nsDOMWindowUtils::GetCompositorAPZTestData(JSContext* aContext, JS::MutableHandleValue aOutCompositorTestData) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } if (nsIWidget* widget = GetWidget()) { nsRefPtr lm = widget->GetLayerManager(); @@ -3718,7 +3964,9 @@ nsDOMWindowUtils::GetCompositorAPZTestData(JSContext* aContext, NS_IMETHODIMP nsDOMWindowUtils::GetAudioMuted(bool* aMuted) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -3729,7 +3977,9 @@ nsDOMWindowUtils::GetAudioMuted(bool* aMuted) NS_IMETHODIMP nsDOMWindowUtils::SetAudioMuted(bool aMuted) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -3740,7 +3990,9 @@ nsDOMWindowUtils::SetAudioMuted(bool aMuted) NS_IMETHODIMP nsDOMWindowUtils::GetAudioVolume(float* aVolume) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window); @@ -3751,7 +4003,9 @@ nsDOMWindowUtils::GetAudioVolume(float* aVolume) NS_IMETHODIMP nsDOMWindowUtils::SetAudioVolume(float aVolume) { - MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome()); + if (!nsContentUtils::IsCallerChrome()) { + return NS_ERROR_DOM_SECURITY_ERR; + } nsCOMPtr window = do_QueryReferent(mWindow); NS_ENSURE_STATE(window);