Bug 341112: LOAD_FLAGS_BYPASS_CACHE flag of nsIWebNavigation::loadURI doesn't work, patch by Nickolay Ponomarev <asqueella@gmail.com>, r=biesi, sr=darin
git-svn-id: svn://10.0.0.236/trunk@201785 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -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!");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user