зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1267718 - Add a nsPIDOMWindow::GetScriptableParentOrNull method. r=bz
MozReview-Commit-ID: 9L33Wq0fBF6
This commit is contained in:
Родитель
91fa002ac4
Коммит
258f5b6244
|
@ -387,8 +387,8 @@ AudioChannelService::GetState(nsPIDOMWindowOuter* aWindow, uint32_t aAudioChanne
|
||||||
// TODO : distiguish between suspend and mute, it would be done in bug1242874.
|
// TODO : distiguish between suspend and mute, it would be done in bug1242874.
|
||||||
*aMuted = *aMuted || window->GetMediaSuspended() || window->GetAudioMuted();
|
*aMuted = *aMuted || window->GetMediaSuspended() || window->GetAudioMuted();
|
||||||
|
|
||||||
nsCOMPtr<nsPIDOMWindowOuter> win = window->GetScriptableParent();
|
nsCOMPtr<nsPIDOMWindowOuter> win = window->GetScriptableParentOrNull();
|
||||||
if (window == win) {
|
if (!win) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3658,8 +3658,8 @@ nsPIDOMWindowInner::CreatePerformanceObjectIfNeeded()
|
||||||
// If we are dealing with an iframe, we will need the parent's performance
|
// If we are dealing with an iframe, we will need the parent's performance
|
||||||
// object (so we can add the iframe as a resource of that page).
|
// object (so we can add the iframe as a resource of that page).
|
||||||
nsPerformance* parentPerformance = nullptr;
|
nsPerformance* parentPerformance = nullptr;
|
||||||
nsCOMPtr<nsPIDOMWindowOuter> parentWindow = GetScriptableParent();
|
nsCOMPtr<nsPIDOMWindowOuter> parentWindow = GetScriptableParentOrNull();
|
||||||
if (GetOuterWindow() != parentWindow) {
|
if (parentWindow) {
|
||||||
nsPIDOMWindowInner* parentInnerWindow = nullptr;
|
nsPIDOMWindowInner* parentInnerWindow = nullptr;
|
||||||
if (parentWindow) {
|
if (parentWindow) {
|
||||||
parentInnerWindow = parentWindow->GetCurrentInnerWindow();
|
parentInnerWindow = parentWindow->GetCurrentInnerWindow();
|
||||||
|
@ -3878,6 +3878,19 @@ nsGlobalWindow::GetScriptableParent()
|
||||||
return parent.get();
|
return parent.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Behavies identically to GetScriptableParent extept that it returns null
|
||||||
|
* if GetScriptableParent would return this window.
|
||||||
|
*/
|
||||||
|
nsPIDOMWindowOuter*
|
||||||
|
nsGlobalWindow::GetScriptableParentOrNull()
|
||||||
|
{
|
||||||
|
FORWARD_TO_OUTER(GetScriptableParentOrNull, (), nullptr);
|
||||||
|
|
||||||
|
nsPIDOMWindowOuter* parent = GetScriptableParent();
|
||||||
|
return (Cast(parent) == this) ? nullptr : parent;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nsPIDOMWindow::GetParent (when called from C++) is just a wrapper around
|
* nsPIDOMWindow::GetParent (when called from C++) is just a wrapper around
|
||||||
* GetRealParent.
|
* GetRealParent.
|
||||||
|
|
|
@ -896,6 +896,7 @@ public:
|
||||||
already_AddRefed<nsPIDOMWindowOuter> GetParent(mozilla::ErrorResult& aError);
|
already_AddRefed<nsPIDOMWindowOuter> GetParent(mozilla::ErrorResult& aError);
|
||||||
already_AddRefed<nsPIDOMWindowOuter> GetParent() override;
|
already_AddRefed<nsPIDOMWindowOuter> GetParent() override;
|
||||||
nsPIDOMWindowOuter* GetScriptableParent() override;
|
nsPIDOMWindowOuter* GetScriptableParent() override;
|
||||||
|
nsPIDOMWindowOuter* GetScriptableParentOrNull() override;
|
||||||
mozilla::dom::Element* GetFrameElementOuter();
|
mozilla::dom::Element* GetFrameElementOuter();
|
||||||
mozilla::dom::Element* GetFrameElement(mozilla::ErrorResult& aError);
|
mozilla::dom::Element* GetFrameElement(mozilla::ErrorResult& aError);
|
||||||
already_AddRefed<nsIDOMElement> GetFrameElement() override;
|
already_AddRefed<nsIDOMElement> GetFrameElement() override;
|
||||||
|
|
|
@ -118,6 +118,12 @@ public:
|
||||||
virtual nsPIDOMWindowOuter* GetScriptableParent() = 0;
|
virtual nsPIDOMWindowOuter* GetScriptableParent() = 0;
|
||||||
virtual already_AddRefed<nsPIWindowRoot> GetTopWindowRoot() = 0;
|
virtual already_AddRefed<nsPIWindowRoot> GetTopWindowRoot() = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Behavies identically to GetScriptableParent extept that it returns null
|
||||||
|
* if GetScriptableParent would return this window.
|
||||||
|
*/
|
||||||
|
virtual nsPIDOMWindowOuter* GetScriptableParentOrNull() = 0;
|
||||||
|
|
||||||
// Inner windows only.
|
// Inner windows only.
|
||||||
virtual nsresult RegisterIdleObserver(nsIIdleObserver* aIdleObserver) = 0;
|
virtual nsresult RegisterIdleObserver(nsIIdleObserver* aIdleObserver) = 0;
|
||||||
virtual nsresult UnregisterIdleObserver(nsIIdleObserver* aIdleObserver) = 0;
|
virtual nsresult UnregisterIdleObserver(nsIIdleObserver* aIdleObserver) = 0;
|
||||||
|
|
|
@ -3275,8 +3275,8 @@ TabParent::AudioChannelChangeNotification(nsPIDOMWindowOuter* aWindow,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsPIDOMWindowOuter> win = window->GetScriptableParent();
|
nsCOMPtr<nsPIDOMWindowOuter> win = window->GetScriptableParentOrNull();
|
||||||
if (window == win) {
|
if (!win) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче