diff --git a/content/base/src/nsDocument.cpp b/content/base/src/nsDocument.cpp index 07be131a395..842f5b0a6b4 100644 --- a/content/base/src/nsDocument.cpp +++ b/content/base/src/nsDocument.cpp @@ -9487,6 +9487,10 @@ nsDocument::UpdateVisibilityState() VisibilityState oldState = mVisibilityState; mVisibilityState = GetVisibilityState(); if (oldState != mVisibilityState) { + nsContentUtils::DispatchTrustedEvent(this, static_cast(this), + NS_LITERAL_STRING("visibilitychange"), + /* bubbles = */ true, + /* cancelable = */ false); nsContentUtils::DispatchTrustedEvent(this, static_cast(this), NS_LITERAL_STRING("mozvisibilitychange"), /* bubbles = */ true, @@ -9522,6 +9526,12 @@ nsDocument::PostVisibilityUpdateEvent() NS_IMETHODIMP nsDocument::GetMozHidden(bool* aHidden) +{ + return GetHidden(aHidden); +} + +NS_IMETHODIMP +nsDocument::GetHidden(bool* aHidden) { *aHidden = mVisibilityState != eVisible; return NS_OK; @@ -9529,6 +9539,12 @@ nsDocument::GetMozHidden(bool* aHidden) NS_IMETHODIMP nsDocument::GetMozVisibilityState(nsAString& aState) +{ + return GetVisibilityState(aState); +} + +NS_IMETHODIMP +nsDocument::GetVisibilityState(nsAString& aState) { // This needs to stay in sync with the VisibilityState enum. static const char states[][8] = { diff --git a/content/base/src/nsDocument.h b/content/base/src/nsDocument.h index 7f55887afef..0235edad50d 100644 --- a/content/base/src/nsDocument.h +++ b/content/base/src/nsDocument.h @@ -1258,7 +1258,7 @@ protected: nsRefPtr mTiming; private: friend class nsUnblockOnloadEvent; - // This needs to stay in sync with the list in GetMozVisibilityState. + // This needs to stay in sync with the list in GetVisibilityState. enum VisibilityState { eHidden = 0, eVisible, diff --git a/dom/interfaces/core/nsIDOMDocument.idl b/dom/interfaces/core/nsIDOMDocument.idl index ff7d91c41cd..8bfc6ba833a 100644 --- a/dom/interfaces/core/nsIDOMDocument.idl +++ b/dom/interfaces/core/nsIDOMDocument.idl @@ -27,7 +27,7 @@ interface nsIDOMLocation; * http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html */ -[scriptable, uuid(22af46a3-64ac-430a-bcc7-d0a9aefe474f)] +[scriptable, uuid(31ce7ae7-15d5-4fc8-912b-ae0e23e93146)] interface nsIDOMDocument : nsIDOMNode { readonly attribute nsIDOMDocumentType doctype; @@ -385,7 +385,9 @@ interface nsIDOMDocument : nsIDOMNode /** * Visibility API implementation. */ + readonly attribute boolean hidden; readonly attribute boolean mozHidden; + readonly attribute DOMString visibilityState; readonly attribute DOMString mozVisibilityState; /**