Bug 803964 - Cannot show window object with inspect viewer in remote web console; r=bz

This commit is contained in:
Mihai Sucan 2012-10-24 13:01:54 +03:00
parent af24b27547
commit 2476780676
5 changed files with 27 additions and 7 deletions

View File

@ -566,6 +566,12 @@ static NS_DEFINE_CID(kDOMSOF_CID, NS_DOM_SCRIPT_OBJECT_FACTORY_CID);
static const char kDOMStringBundleURL[] =
"chrome://global/locale/dom/dom.properties";
#ifdef MOZ_DISABLE_DOMCRYPTO
static const bool domCryptoEnabled = false;
#else
static const bool domCryptoEnabled = true;
#endif
// NOTE: DEFAULT_SCRIPTABLE_FLAGS and DOM_DEFAULT_SCRIPTABLE_FLAGS
// are defined in nsIDOMClassInfo.h.
@ -2390,7 +2396,8 @@ nsDOMClassInfo::RegisterExternalClasses()
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsIDOMWindowPerformance, \
nsGlobalWindow::HasPerformanceSupport()) \
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver, \
nsDOMTouchEvent::PrefEnabled())
nsDOMTouchEvent::PrefEnabled()) \
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsIWindowCrypto, domCryptoEnabled)
nsresult
nsDOMClassInfo::Init()

View File

@ -1245,6 +1245,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGlobalWindow)
NS_INTERFACE_MAP_ENTRY(nsIDOMWindowPerformance)
NS_INTERFACE_MAP_ENTRY(nsITouchEventReceiver)
NS_INTERFACE_MAP_ENTRY(nsIInlineEventHandlers)
NS_INTERFACE_MAP_ENTRY(nsIWindowCrypto)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(Window)
OUTER_WINDOW_ONLY
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY

View File

@ -270,7 +270,8 @@ class nsGlobalWindow : public nsPIDOMWindow,
public PRCListStr,
public nsIDOMWindowPerformance,
public nsITouchEventReceiver,
public nsIInlineEventHandlers
public nsIInlineEventHandlers,
public nsIWindowCrypto
{
public:
friend class nsDOMMozURLProperty;
@ -335,6 +336,9 @@ public:
// nsIInlineEventHandlers
NS_DECL_NSIINLINEEVENTHANDLERS
// nsIWindowCrypto
NS_DECL_NSIWINDOWCRYPTO
// nsPIDOMWindow
virtual NS_HIDDEN_(nsPIDOMWindow*) GetPrivateRoot();
virtual NS_HIDDEN_(void) ActivateOrDeactivate(bool aActivate);

View File

@ -32,7 +32,7 @@ interface nsIDOMMozURLProperty : nsISupports
* @see <http://www.whatwg.org/html/#window>
*/
[scriptable, uuid(43933989-912e-4b6a-b889-3c9fc9dd9ed4)]
[scriptable, uuid(148ab425-5d38-40fd-9fe0-0eae9fed81df)]
interface nsIDOMWindow : nsISupports
{
// the current browsing context
@ -365,9 +365,6 @@ interface nsIDOMWindow : nsISupports
[noscript] readonly attribute nsIPrompt prompter;
readonly attribute boolean closed;
// http://wiki.whatwg.org/wiki/Crypto
readonly attribute nsIDOMCrypto crypto;
readonly attribute nsIDOMPkcs11 pkcs11;
// XXX Shouldn't this be in nsIDOMChromeWindow?
/* [replaceable] controllers */
@ -517,6 +514,17 @@ interface nsIDOMWindowPerformance : nsISupports
readonly attribute nsISupports performance;
};
[scriptable, uuid(2ed9ace1-172c-443f-b92f-c4f74bf8f2c5)]
interface nsIWindowCrypto : nsISupports
{
/**
* A namespace to hold crypto related data and statistics.
* http://wiki.whatwg.org/wiki/Crypto
*/
readonly attribute nsIDOMCrypto crypto;
readonly attribute nsIDOMPkcs11 pkcs11;
};
/**
* Empty interface for compatibility with older versions.
* @deprecated Use nsIDOMWindow instead

View File

@ -484,7 +484,7 @@ nsNSSComponent::DispatchEventToWindow(nsIDOMWindow *domWin,
// NOTE: it's not an error to say that we aren't going to dispatch
// the event.
{
nsCOMPtr<nsIDOMWindow> domWindow = domWin;
nsCOMPtr<nsIWindowCrypto> domWindow = do_QueryInterface(domWin);
if (!domWindow) {
return NS_OK; // nope, it's not an internal window
}