Backout 2838ba825479, 991404facac2, 7f6e22f10b99, 30a4e0cf7130, ad2c42efbe57, and 1f07f04ec01d (Bug 760067, Bug 767096, Bug 765158, Bug 729182) due to xpcshell orange.
This commit is contained in:
@@ -290,11 +290,13 @@ nsOfflineCacheUpdateItem::nsOfflineCacheUpdateItem(nsIURI *aURI,
|
||||
nsIURI *aReferrerURI,
|
||||
nsIApplicationCache *aApplicationCache,
|
||||
nsIApplicationCache *aPreviousApplicationCache,
|
||||
const nsACString &aClientID,
|
||||
PRUint32 type)
|
||||
: mURI(aURI)
|
||||
, mReferrerURI(aReferrerURI)
|
||||
, mApplicationCache(aApplicationCache)
|
||||
, mPreviousApplicationCache(aPreviousApplicationCache)
|
||||
, mClientID(aClientID)
|
||||
, mItemType(type)
|
||||
, mChannel(nsnull)
|
||||
, mState(nsIDOMLoadStatus::UNINITIALIZED)
|
||||
@@ -338,10 +340,6 @@ nsOfflineCacheUpdateItem::OpenChannel(nsOfflineCacheUpdate *aUpdate)
|
||||
rv = appCacheChannel->SetApplicationCache(mPreviousApplicationCache);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Set the new application cache as the targer for write.
|
||||
rv = appCacheChannel->SetApplicationCacheForWrite(mApplicationCache);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// configure HTTP specific stuff
|
||||
nsCOMPtr<nsIHttpChannel> httpChannel =
|
||||
do_QueryInterface(mChannel);
|
||||
@@ -352,6 +350,25 @@ nsOfflineCacheUpdateItem::OpenChannel(nsOfflineCacheUpdate *aUpdate)
|
||||
false);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsICachingChannel> cachingChannel =
|
||||
do_QueryInterface(mChannel);
|
||||
if (cachingChannel) {
|
||||
rv = cachingChannel->SetCacheForOfflineUse(true);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIFile> cacheDirectory;
|
||||
rv = mApplicationCache->GetCacheDirectory(getter_AddRefs(cacheDirectory));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = cachingChannel->SetProfileDirectory(cacheDirectory);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!mClientID.IsEmpty()) {
|
||||
rv = cachingChannel->SetOfflineCacheClientID(mClientID);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
}
|
||||
|
||||
rv = mChannel->AsyncOpen(this, nsnull);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
@@ -488,10 +505,22 @@ nsOfflineCacheUpdateItem::AsyncOnChannelRedirect(nsIChannel *aOldChannel,
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsIApplicationCacheChannel> appCacheChannel =
|
||||
nsCOMPtr<nsICachingChannel> newCachingChannel =
|
||||
do_QueryInterface(aNewChannel);
|
||||
if (appCacheChannel) {
|
||||
rv = appCacheChannel->SetApplicationCacheForWrite(mApplicationCache);
|
||||
if (newCachingChannel) {
|
||||
rv = newCachingChannel->SetCacheForOfflineUse(true);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!mClientID.IsEmpty()) {
|
||||
rv = newCachingChannel->SetOfflineCacheClientID(mClientID);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIFile> cacheDirectory;
|
||||
rv = mApplicationCache->GetCacheDirectory(getter_AddRefs(cacheDirectory));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = newCachingChannel->SetProfileDirectory(cacheDirectory);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
@@ -655,9 +684,10 @@ nsOfflineCacheUpdateItem::GetStatus(PRUint16 *aStatus)
|
||||
nsOfflineManifestItem::nsOfflineManifestItem(nsIURI *aURI,
|
||||
nsIURI *aReferrerURI,
|
||||
nsIApplicationCache *aApplicationCache,
|
||||
nsIApplicationCache *aPreviousApplicationCache)
|
||||
nsIApplicationCache *aPreviousApplicationCache,
|
||||
const nsACString &aClientID)
|
||||
: nsOfflineCacheUpdateItem(aURI, aReferrerURI,
|
||||
aApplicationCache, aPreviousApplicationCache,
|
||||
aApplicationCache, aPreviousApplicationCache, aClientID,
|
||||
nsIApplicationCache::ITEM_MANIFEST)
|
||||
, mParserState(PARSE_INIT)
|
||||
, mNeedsUpdate(true)
|
||||
@@ -1234,6 +1264,9 @@ nsOfflineCacheUpdate::Init(nsIURI *aManifestURI,
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
rv = mApplicationCache->GetClientID(mClientID);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = nsOfflineCacheUpdateService::OfflineAppPinnedForURI(aDocumentURI,
|
||||
NULL,
|
||||
&mPinned);
|
||||
@@ -1259,6 +1292,7 @@ nsOfflineCacheUpdate::InitPartial(nsIURI *aManifestURI,
|
||||
LOG(("nsOfflineCacheUpdate::InitPartial [%p]", this));
|
||||
|
||||
mPartialUpdate = true;
|
||||
mClientID = clientID;
|
||||
mDocumentURI = aDocumentURI;
|
||||
|
||||
mManifestURI = aManifestURI;
|
||||
@@ -1269,7 +1303,7 @@ nsOfflineCacheUpdate::InitPartial(nsIURI *aManifestURI,
|
||||
do_GetService(NS_APPLICATIONCACHESERVICE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = cacheService->GetApplicationCache(clientID,
|
||||
rv = cacheService->GetApplicationCache(mClientID,
|
||||
getter_AddRefs(mApplicationCache));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
@@ -1596,7 +1630,8 @@ nsOfflineCacheUpdate::Begin()
|
||||
mManifestItem = new nsOfflineManifestItem(mManifestURI,
|
||||
mDocumentURI,
|
||||
mApplicationCache,
|
||||
mPreviousApplicationCache);
|
||||
mPreviousApplicationCache,
|
||||
mClientID);
|
||||
if (!mManifestItem) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
@@ -1864,12 +1899,8 @@ nsOfflineCacheUpdate::ScheduleImplicit()
|
||||
rv = mPreviousApplicationCache->GetClientID(clientID);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
else if (mApplicationCache) {
|
||||
rv = mApplicationCache->GetClientID(clientID);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
else {
|
||||
NS_ERROR("Offline cache update not having set mApplicationCache?");
|
||||
clientID = mClientID;
|
||||
}
|
||||
|
||||
rv = update->InitPartial(mManifestURI, clientID, mDocumentURI);
|
||||
@@ -2107,6 +2138,7 @@ nsOfflineCacheUpdate::AddURI(nsIURI *aURI, PRUint32 aType)
|
||||
mDocumentURI,
|
||||
mApplicationCache,
|
||||
mPreviousApplicationCache,
|
||||
mClientID,
|
||||
aType);
|
||||
if (!item) return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user