mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 05:48:26 +00:00
Bug 1124898 - Stop exposing ex-nsIDOMChromeWindow things for random unprivileged things loaded in chrome docshells. r=bz
This commit is contained in:
parent
96e0d6a7dd
commit
c4cf5ef02f
@ -4342,10 +4342,11 @@ nsGlobalWindow::GetOwnPropertyNames(JSContext* aCx, nsTArray<nsString>& aNames,
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
nsGlobalWindow::IsChromeWindow(JSContext* aCx, JSObject* aObj)
|
||||
nsGlobalWindow::IsPrivilegedChromeWindow(JSContext* aCx, JSObject* aObj)
|
||||
{
|
||||
// For now, have to deal with XPConnect objects here.
|
||||
return xpc::WindowOrNull(aObj)->IsChromeWindow();
|
||||
return xpc::WindowOrNull(aObj)->IsChromeWindow() &&
|
||||
nsContentUtils::ObjectPrincipal(aObj) == nsContentUtils::GetSystemPrincipal();
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
|
@ -491,7 +491,7 @@ public:
|
||||
|
||||
void GetSupportedNames(nsTArray<nsString>& aNames);
|
||||
|
||||
static bool IsChromeWindow(JSContext* /* unused */, JSObject* aObj);
|
||||
static bool IsPrivilegedChromeWindow(JSContext* /* unused */, JSObject* aObj);
|
||||
|
||||
static bool IsShowModalDialogEnabled(JSContext* /* unused */ = nullptr,
|
||||
JSObject* /* unused */ = nullptr);
|
||||
|
@ -405,16 +405,16 @@ partial interface Window {
|
||||
|
||||
[Func="IsChromeOrXBL"]
|
||||
interface ChromeWindow {
|
||||
[Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
const unsigned short STATE_MAXIMIZED = 1;
|
||||
[Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
const unsigned short STATE_MINIMIZED = 2;
|
||||
[Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
const unsigned short STATE_NORMAL = 3;
|
||||
[Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
const unsigned short STATE_FULLSCREEN = 4;
|
||||
|
||||
[Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
readonly attribute unsigned short windowState;
|
||||
|
||||
/**
|
||||
@ -422,40 +422,40 @@ interface ChromeWindow {
|
||||
* utility functions implemented by chrome script. It will be null
|
||||
* for DOMWindows not corresponding to browsers.
|
||||
*/
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
attribute nsIBrowserDOMWindow? browserDOMWindow;
|
||||
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
void getAttention();
|
||||
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
void getAttentionWithCycleCount(long aCycleCount);
|
||||
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
void setCursor(DOMString cursor);
|
||||
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow", UnsafeInPrerendering]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow", UnsafeInPrerendering]
|
||||
void maximize();
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow", UnsafeInPrerendering]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow", UnsafeInPrerendering]
|
||||
void minimize();
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow", UnsafeInPrerendering]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow", UnsafeInPrerendering]
|
||||
void restore();
|
||||
|
||||
/**
|
||||
* Notify a default button is loaded on a dialog or a wizard.
|
||||
* defaultButton is the default button.
|
||||
*/
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
void notifyDefaultButtonLoaded(Element defaultButton);
|
||||
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
readonly attribute nsIMessageBroadcaster messageManager;
|
||||
|
||||
/**
|
||||
* Returns the message manager identified by the given group name that
|
||||
* manages all frame loaders belonging to that group.
|
||||
*/
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
nsIMessageBroadcaster getGroupMessageManager(DOMString aGroup);
|
||||
|
||||
/**
|
||||
@ -468,7 +468,7 @@ interface ChromeWindow {
|
||||
*
|
||||
* Throws NS_ERROR_NOT_IMPLEMENTED if the OS doesn't support this.
|
||||
*/
|
||||
[Throws, Func="nsGlobalWindow::IsChromeWindow"]
|
||||
[Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
|
||||
void beginWindowMove(Event mouseDownEvent, optional Element? panel = null);
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user