зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1581859: Part 2b - Add LOAD_FLAGS_IS_REFRESH to all navigations triggered by meta refreshes. r=nika
The extension framework needs to set specific flags on navigations triggered by meta refresh headers. Adding this to the load type of all navigations triggered by meta refreshes allows it to do this without tracking docshells on which refreshes are attempted so that it can make inferences. Differential Revision: https://phabricator.services.mozilla.com/D108726
This commit is contained in:
Родитель
6410970b1e
Коммит
6f0d80b656
|
@ -274,6 +274,9 @@ static void LogShellLoadType(nsIDocShell* aDocShell) {
|
|||
case LOAD_REFRESH:
|
||||
printf("refresh; ");
|
||||
break;
|
||||
case LOAD_REFRESH_REPLACE:
|
||||
printf("refresh replace; ");
|
||||
break;
|
||||
case LOAD_RELOAD_CHARSET_CHANGE:
|
||||
printf("reload charset change; ");
|
||||
break;
|
||||
|
|
|
@ -5328,7 +5328,7 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal,
|
|||
* we have in mind (15000 ms as defined by REFRESH_REDIRECT_TIMER).
|
||||
* Pass a REPLACE flag to LoadURI().
|
||||
*/
|
||||
loadState->SetLoadType(LOAD_NORMAL_REPLACE);
|
||||
loadState->SetLoadType(LOAD_REFRESH_REPLACE);
|
||||
|
||||
/* For redirects we mimic HTTP, which passes the
|
||||
* original referrer.
|
||||
|
@ -5800,6 +5800,7 @@ nsresult nsDocShell::Embed(nsIContentViewer* aContentViewer,
|
|||
// Determine if this type of load should update history
|
||||
switch (mLoadType) {
|
||||
case LOAD_NORMAL_REPLACE:
|
||||
case LOAD_REFRESH_REPLACE:
|
||||
case LOAD_STOP_CONTENT_AND_REPLACE:
|
||||
case LOAD_RELOAD_BYPASS_CACHE:
|
||||
case LOAD_RELOAD_BYPASS_PROXY:
|
||||
|
@ -11093,7 +11094,7 @@ bool nsDocShell::OnNewURI(nsIURI* aURI, nsIChannel* aChannel,
|
|||
// in session history.
|
||||
if (!mozilla::SessionHistoryInParent() && rootSH &&
|
||||
((mLoadType & (LOAD_CMD_HISTORY | LOAD_CMD_RELOAD)) ||
|
||||
mLoadType == LOAD_NORMAL_REPLACE)) {
|
||||
mLoadType == LOAD_NORMAL_REPLACE || mLoadType == LOAD_REFRESH_REPLACE)) {
|
||||
mPreviousEntryIndex = rootSH->Index();
|
||||
if (!mozilla::SessionHistoryInParent()) {
|
||||
rootSH->LegacySHistory()->UpdateIndex();
|
||||
|
|
|
@ -77,6 +77,10 @@ enum LoadType : uint32_t {
|
|||
nsIWebNavigation::LOAD_FLAGS_IS_LINK),
|
||||
LOAD_REFRESH = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL,
|
||||
nsIWebNavigation::LOAD_FLAGS_IS_REFRESH),
|
||||
LOAD_REFRESH_REPLACE =
|
||||
MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL,
|
||||
nsIWebNavigation::LOAD_FLAGS_IS_REFRESH |
|
||||
nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
|
||||
LOAD_RELOAD_CHARSET_CHANGE =
|
||||
MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD,
|
||||
nsIWebNavigation::LOAD_FLAGS_CHARSET_CHANGE),
|
||||
|
@ -142,6 +146,7 @@ static inline bool IsValidLoadType(uint32_t aLoadType) {
|
|||
case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
|
||||
case LOAD_LINK:
|
||||
case LOAD_REFRESH:
|
||||
case LOAD_REFRESH_REPLACE:
|
||||
case LOAD_RELOAD_CHARSET_CHANGE:
|
||||
case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE:
|
||||
case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE:
|
||||
|
@ -173,6 +178,11 @@ static inline nsDOMNavigationTiming::Type ConvertLoadTypeToNavigationType(
|
|||
case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
|
||||
case LOAD_LINK:
|
||||
case LOAD_STOP_CONTENT:
|
||||
// FIXME: It isn't clear that LOAD_REFRESH_REPLACE should have a different
|
||||
// navigation type than LOAD_REFRESH. Those loads historically used the
|
||||
// LOAD_NORMAL_REPLACE type, and therefore wound up with TYPE_NAVIGATE by
|
||||
// default.
|
||||
case LOAD_REFRESH_REPLACE:
|
||||
case LOAD_REPLACE_BYPASS_CACHE:
|
||||
result = nsDOMNavigationTiming::TYPE_NAVIGATE;
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче