зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1099092 - Navigation Timing has incorrect values when page is load via link with target=_blank attribute r=bz
This commit is contained in:
Родитель
bb16ca59a7
Коммит
601b80dfaf
|
@ -195,6 +195,7 @@
|
|||
#include "mozilla/dom/EncodingUtils.h"
|
||||
#include "mozilla/dom/ScriptSettings.h"
|
||||
#include "mozilla/dom/URLSearchParams.h"
|
||||
#include "nsPerformance.h"
|
||||
|
||||
#ifdef MOZ_TOOLKIT_SEARCH
|
||||
#include "nsIBrowserSearchService.h"
|
||||
|
@ -859,6 +860,7 @@ nsDocShell::nsDocShell():
|
|||
mInvisible(false),
|
||||
mHasLoadedNonBlankURI(false),
|
||||
mDefaultLoadFlags(nsIRequest::LOAD_NORMAL),
|
||||
mBlankTiming(false),
|
||||
mFrameType(eFrameTypeRegular),
|
||||
mOwnOrContainingAppId(nsIScriptSecurityManager::UNKNOWN_APP_ID),
|
||||
mParentCharsetSource(0),
|
||||
|
@ -1770,11 +1772,22 @@ nsDocShell::FirePageHideNotification(bool aIsUnload)
|
|||
void
|
||||
nsDocShell::MaybeInitTiming()
|
||||
{
|
||||
if (mTiming) {
|
||||
if (mTiming && !mBlankTiming) {
|
||||
return;
|
||||
}
|
||||
|
||||
mTiming = new nsDOMNavigationTiming();
|
||||
if (mScriptGlobal && mBlankTiming) {
|
||||
nsPIDOMWindow* innerWin = mScriptGlobal->GetCurrentInnerWindow();
|
||||
if (innerWin && innerWin->GetPerformance()) {
|
||||
mTiming = innerWin->GetPerformance()->GetDOMTiming();
|
||||
mBlankTiming = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mTiming) {
|
||||
mTiming = new nsDOMNavigationTiming();
|
||||
}
|
||||
|
||||
mTiming->NotifyNavigationStart();
|
||||
}
|
||||
|
||||
|
@ -7869,6 +7882,7 @@ nsDocShell::CreateAboutBlankContentViewer(nsIPrincipal* aPrincipal,
|
|||
// have one before entering this function.
|
||||
if (!hadTiming) {
|
||||
mTiming = nullptr;
|
||||
mBlankTiming = true;
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
|
|
@ -929,6 +929,11 @@ protected:
|
|||
|
||||
nsRefPtr<nsDOMNavigationTiming> mTiming;
|
||||
|
||||
// This flag means that mTiming has been initialized but nulled out.
|
||||
// We will check the innerWin's timing before creating a new one
|
||||
// in MaybeInitTiming()
|
||||
bool mBlankTiming;
|
||||
|
||||
// Are we a regular frame, a browser frame, or an app frame?
|
||||
FrameType mFrameType;
|
||||
|
||||
|
|
|
@ -185,11 +185,11 @@ DOMTimeMilliSec
|
|||
nsPerformanceTiming::RedirectStart()
|
||||
{
|
||||
if (!IsInitialized()) {
|
||||
return mZeroTime;
|
||||
return 0;
|
||||
}
|
||||
// We have to check if all the redirect URIs had the same origin (since there
|
||||
// is no check in RedirectStartHighRes())
|
||||
if (mAllRedirectsSameOrigin) {
|
||||
if (mAllRedirectsSameOrigin && mRedirectCount) {
|
||||
return static_cast<int64_t>(RedirectStartHighRes());
|
||||
}
|
||||
return 0;
|
||||
|
@ -218,11 +218,11 @@ DOMTimeMilliSec
|
|||
nsPerformanceTiming::RedirectEnd()
|
||||
{
|
||||
if (!IsInitialized()) {
|
||||
return mZeroTime;
|
||||
return 0;
|
||||
}
|
||||
// We have to check if all the redirect URIs had the same origin (since there
|
||||
// is no check in RedirectEndHighRes())
|
||||
if (mAllRedirectsSameOrigin) {
|
||||
if (mAllRedirectsSameOrigin && mRedirectCount) {
|
||||
return static_cast<int64_t>(RedirectEndHighRes());
|
||||
}
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче