зеркало из https://github.com/mozilla/pjs.git
Bug 341112: LOAD_FLAGS_BYPASS_CACHE flag of nsIWebNavigation::loadURI doesn't work, patch by Nickolay Ponomarev <asqueella@gmail.com>, r=biesi, sr=darin
This commit is contained in:
Родитель
0b9ac2067a
Коммит
5a74b67fdf
|
@ -538,6 +538,15 @@ ConvertDocShellLoadInfoToLoadType(nsDocShellInfoLoadType aDocShellLoadType)
|
|||
case nsIDocShellLoadInfo::loadHistory:
|
||||
loadType = LOAD_HISTORY;
|
||||
break;
|
||||
case nsIDocShellLoadInfo::loadNormalBypassCache:
|
||||
loadType = LOAD_NORMAL_BYPASS_CACHE;
|
||||
break;
|
||||
case nsIDocShellLoadInfo::loadNormalBypassProxy:
|
||||
loadType = LOAD_NORMAL_BYPASS_PROXY;
|
||||
break;
|
||||
case nsIDocShellLoadInfo::loadNormalBypassProxyAndCache:
|
||||
loadType = LOAD_NORMAL_BYPASS_PROXY_AND_CACHE;
|
||||
break;
|
||||
case nsIDocShellLoadInfo::loadReloadNormal:
|
||||
loadType = LOAD_RELOAD_NORMAL;
|
||||
break;
|
||||
|
@ -568,6 +577,8 @@ ConvertDocShellLoadInfoToLoadType(nsDocShellInfoLoadType aDocShellLoadType)
|
|||
case nsIDocShellLoadInfo::loadStopContentAndReplace:
|
||||
loadType = LOAD_STOP_CONTENT_AND_REPLACE;
|
||||
break;
|
||||
default:
|
||||
NS_NOTREACHED("Unexpected nsDocShellInfoLoadType value");
|
||||
}
|
||||
|
||||
return loadType;
|
||||
|
@ -588,6 +599,15 @@ nsDocShell::ConvertLoadTypeToDocShellLoadInfo(PRUint32 aLoadType)
|
|||
case LOAD_NORMAL_EXTERNAL:
|
||||
docShellLoadType = nsIDocShellLoadInfo::loadNormalExternal;
|
||||
break;
|
||||
case LOAD_NORMAL_BYPASS_CACHE:
|
||||
docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassCache;
|
||||
break;
|
||||
case LOAD_NORMAL_BYPASS_PROXY:
|
||||
docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassProxy;
|
||||
break;
|
||||
case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
|
||||
docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassProxyAndCache;
|
||||
break;
|
||||
case LOAD_HISTORY:
|
||||
docShellLoadType = nsIDocShellLoadInfo::loadHistory;
|
||||
break;
|
||||
|
@ -622,6 +642,8 @@ nsDocShell::ConvertLoadTypeToDocShellLoadInfo(PRUint32 aLoadType)
|
|||
case LOAD_STOP_CONTENT_AND_REPLACE:
|
||||
docShellLoadType = nsIDocShellLoadInfo::loadStopContentAndReplace;
|
||||
break;
|
||||
default:
|
||||
NS_NOTREACHED("Unexpected load type value");
|
||||
}
|
||||
|
||||
return docShellLoadType;
|
||||
|
@ -2630,7 +2652,7 @@ nsDocShell::GetChildSHEntry(PRInt32 aChildOffset, nsISHEntry ** aResult)
|
|||
PRUint32 loadType = nsIDocShellLoadInfo::loadHistory;
|
||||
mLSHE->GetLoadType(&loadType);
|
||||
// If the user did a shift-reload on this frameset page,
|
||||
// we don't want to load the subframes from history.
|
||||
// we don't want to load the subframes from history.
|
||||
if (loadType == nsIDocShellLoadInfo::loadReloadBypassCache ||
|
||||
loadType == nsIDocShellLoadInfo::loadReloadBypassProxy ||
|
||||
loadType == nsIDocShellLoadInfo::loadReloadBypassProxyAndCache ||
|
||||
|
@ -2940,7 +2962,7 @@ nsDocShell::LoadURI(const PRUnichar * aURI,
|
|||
rv = CreateLoadInfo(getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
PRUint32 loadType = MAKE_LOAD_TYPE(LOAD_NORMAL, aLoadFlags);
|
||||
PRUint32 loadType = MAKE_LOAD_TYPE(LOAD_NORMAL, aLoadFlags);
|
||||
loadInfo->SetLoadType(ConvertLoadTypeToDocShellLoadInfo(loadType));
|
||||
loadInfo->SetPostDataStream(aPostStream);
|
||||
loadInfo->SetReferrer(aReferringURI);
|
||||
|
@ -3245,13 +3267,9 @@ nsDocShell::Reload(PRUint32 aReloadFlags)
|
|||
NS_ASSERTION(((aReloadFlags & 0xf) == 0),
|
||||
"Reload command not updated to use load flags!");
|
||||
|
||||
// XXXTAB Convert reload type to our type
|
||||
LoadType type = LOAD_RELOAD_NORMAL;
|
||||
if (aReloadFlags & LOAD_FLAGS_BYPASS_CACHE &&
|
||||
aReloadFlags & LOAD_FLAGS_BYPASS_PROXY)
|
||||
type = LOAD_RELOAD_BYPASS_PROXY_AND_CACHE;
|
||||
else if (aReloadFlags & LOAD_FLAGS_CHARSET_CHANGE)
|
||||
type = LOAD_RELOAD_CHARSET_CHANGE;
|
||||
PRUint32 loadType = MAKE_LOAD_TYPE(LOAD_RELOAD_NORMAL, aReloadFlags);
|
||||
NS_ENSURE_TRUE(IsValidLoadType(loadType), NS_ERROR_INVALID_ARG);
|
||||
|
||||
// Send notifications to the HistoryListener if any, about the impending reload
|
||||
nsCOMPtr<nsISHistory> rootSH;
|
||||
rv = GetRootSessionHistory(getter_AddRefs(rootSH));
|
||||
|
@ -3270,10 +3288,10 @@ nsDocShell::Reload(PRUint32 aReloadFlags)
|
|||
|
||||
/* If you change this part of code, make sure bug 45297 does not re-occur */
|
||||
if (mOSHE) {
|
||||
rv = LoadHistoryEntry(mOSHE, type);
|
||||
rv = LoadHistoryEntry(mOSHE, loadType);
|
||||
}
|
||||
else if (mLSHE) { // In case a reload happened before the current load is done
|
||||
rv = LoadHistoryEntry(mLSHE, type);
|
||||
rv = LoadHistoryEntry(mLSHE, loadType);
|
||||
}
|
||||
else {
|
||||
nsAutoString contentTypeHint;
|
||||
|
@ -3295,7 +3313,7 @@ nsDocShell::Reload(PRUint32 aReloadFlags)
|
|||
NS_LossyConvertUTF16toASCII(contentTypeHint).get(),
|
||||
nsnull, // No post data
|
||||
nsnull, // No headers data
|
||||
type, // Load type
|
||||
loadType, // Load type
|
||||
nsnull, // No SHEntry
|
||||
PR_TRUE,
|
||||
nsnull, // No nsIDocShell
|
||||
|
@ -4692,9 +4710,9 @@ nsDocShell::Embed(nsIContentViewer * aContentViewer,
|
|||
|
||||
PRBool updateHistory = PR_TRUE;
|
||||
|
||||
// Determine if this type of load should update history
|
||||
// Determine if this type of load should update history
|
||||
switch (mLoadType) {
|
||||
case LOAD_RELOAD_CHARSET_CHANGE: //don't perserve history in charset reload
|
||||
case LOAD_RELOAD_CHARSET_CHANGE: // don't preserve history in charset reload
|
||||
case LOAD_NORMAL_REPLACE:
|
||||
case LOAD_STOP_CONTENT_AND_REPLACE:
|
||||
case LOAD_RELOAD_BYPASS_CACHE:
|
||||
|
@ -7084,6 +7102,11 @@ nsresult nsDocShell::DoChannelLoad(nsIChannel * aChannel,
|
|||
loadFlags |= nsIRequest::VALIDATE_ALWAYS;
|
||||
break;
|
||||
|
||||
case LOAD_NORMAL_BYPASS_CACHE:
|
||||
case LOAD_NORMAL_BYPASS_PROXY:
|
||||
case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
|
||||
case LOAD_RELOAD_BYPASS_CACHE:
|
||||
case LOAD_RELOAD_BYPASS_PROXY:
|
||||
case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
|
||||
loadFlags |= nsIRequest::LOAD_BYPASS_CACHE;
|
||||
break;
|
||||
|
@ -7441,9 +7464,10 @@ nsDocShell::OnNewURI(nsIURI * aURI, nsIChannel * aChannel,
|
|||
* for the page. Save the new cacheKey in Session History.
|
||||
* see bug 90098
|
||||
*/
|
||||
if (aChannel && aLoadType == LOAD_RELOAD_BYPASS_CACHE ||
|
||||
aLoadType == LOAD_RELOAD_BYPASS_PROXY ||
|
||||
aLoadType == LOAD_RELOAD_BYPASS_PROXY_AND_CACHE) {
|
||||
if (aChannel &&
|
||||
(aLoadType == LOAD_RELOAD_BYPASS_CACHE ||
|
||||
aLoadType == LOAD_RELOAD_BYPASS_PROXY ||
|
||||
aLoadType == LOAD_RELOAD_BYPASS_PROXY_AND_CACHE)) {
|
||||
NS_ASSERTION(!updateHistory,
|
||||
"We shouldn't be updating history for forced reloads!");
|
||||
|
||||
|
|
|
@ -66,6 +66,9 @@ enum LoadType {
|
|||
LOAD_NORMAL_REPLACE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY),
|
||||
LOAD_NORMAL_EXTERNAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_FROM_EXTERNAL),
|
||||
LOAD_HISTORY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_HISTORY, nsIWebNavigation::LOAD_FLAGS_NONE),
|
||||
LOAD_NORMAL_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
|
||||
LOAD_NORMAL_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
|
||||
LOAD_NORMAL_BYPASS_PROXY_AND_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE | nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
|
||||
LOAD_RELOAD_NORMAL = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_NONE),
|
||||
LOAD_RELOAD_BYPASS_CACHE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE),
|
||||
LOAD_RELOAD_BYPASS_PROXY = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_RELOAD, nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY),
|
||||
|
@ -92,6 +95,9 @@ static inline PRBool IsValidLoadType(PRUint32 aLoadType)
|
|||
case LOAD_NORMAL:
|
||||
case LOAD_NORMAL_REPLACE:
|
||||
case LOAD_NORMAL_EXTERNAL:
|
||||
case LOAD_NORMAL_BYPASS_CACHE:
|
||||
case LOAD_NORMAL_BYPASS_PROXY:
|
||||
case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
|
||||
case LOAD_HISTORY:
|
||||
case LOAD_RELOAD_NORMAL:
|
||||
case LOAD_RELOAD_BYPASS_CACHE:
|
||||
|
|
|
@ -82,6 +82,9 @@ interface nsIDocShellLoadInfo : nsISupports
|
|||
const long loadStopContent = 11;
|
||||
const long loadStopContentAndReplace = 12;
|
||||
const long loadNormalExternal = 13;
|
||||
const long loadNormalBypassCache = 14;
|
||||
const long loadNormalBypassProxy = 15;
|
||||
const long loadNormalBypassProxyAndCache = 16;
|
||||
|
||||
/** Contains a load type as specified by the load* constants */
|
||||
attribute nsDocShellInfoLoadType loadType;
|
||||
|
|
|
@ -207,7 +207,7 @@ function viewPartialSourceForSelection(selection)
|
|||
}
|
||||
|
||||
// all our content is held by the data:URI and URIs are internally stored as utf-8 (see nsIURI.idl)
|
||||
var loadFlags = Components.interfaces.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE;
|
||||
var loadFlags = Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE;
|
||||
getBrowser().webNavigation
|
||||
.loadURI("view-source:data:text/html;charset=utf-8," + encodeURIComponent(tmpNode.innerHTML),
|
||||
loadFlags, null, null, null);
|
||||
|
|
Загрузка…
Ссылка в новой задаче