Bug 466314 - updatingImplicit.html \(used by test_offlineMode.html and test_updatingManifest.html\) crashes SeaMonkey, r=dcamp, sr=jst

This commit is contained in:
Honza Bambas 2009-01-29 16:22:53 +01:00
parent 74eee262d7
commit 0d4109c626
4 changed files with 15 additions and 9 deletions

View File

@ -59,9 +59,11 @@ _TEST_FILES = \
test_changingManifest.html \
test_refetchManifest.html \
test_offlineIFrame.html \
test_offlineMode.html \
test_bug445544.html \
test_foreign.html \
test_fallback.html \
test_updatingManifest.html \
445544_part1.html \
445544_part2.html \
445544.cacheManifest \
@ -87,6 +89,9 @@ _TEST_FILES = \
foreign2.cacheManifest \
foreign2.cacheManifest^headers^ \
foreign2.html \
notonwhitelist.html \
onwhitelist.html \
onwhitelist.html^headers^ \
updatingIFrame.html \
updatingIFrame.html^headers^ \
updatingImplicit.html \
@ -104,12 +109,5 @@ _TEST_FILES = \
offlineChild.html \
$(NULL)
# Bug 466314 - updatingImplicit.html (used by test_offlineMode.html and test_updatingManifest.html) crashes SeaMonkey
# test_offlineMode.html \
# notonwhitelist.html \
# test_updatingManifest.html \
# onwhitelist.html \
# onwhitelist.html^headers^ \
libs:: $(_TEST_FILES)
$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)

View File

@ -187,7 +187,7 @@ failEvent: function(e)
},
// The offline API as specified has no way to watch the load of a resource
// added with applicationCache.add().
// added with applicationCache.mozAdd().
waitForAdd: function(url, onFinished) {
// Check every half second for ten seconds.
var numChecks = 20;

View File

@ -28,7 +28,7 @@ var gGotOnError = false;
function manifestUpdated()
{
applicationCache.add("http://localhost:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html");
applicationCache.mozAdd("http://localhost:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html");
OfflineTest.waitForAdd("http://localhost:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html", dynamicAdded);
}

View File

@ -67,6 +67,7 @@
#include "nsServiceManagerUtils.h"
#include "nsStreamUtils.h"
#include "nsThreadUtils.h"
#include "nsProxyRelease.h"
#include "prlog.h"
static nsOfflineCacheUpdateService *gOfflineCacheUpdateService = nsnull;
@ -1828,6 +1829,13 @@ nsOfflineCacheUpdate::Finish()
{
LOG(("nsOfflineCacheUpdate::Finish [%p]", this));
// Because call to service->UpdateFinished(this) at the end of this method
// may relese the last reference to this object but we still want to work
// with it after Finish() call ended, make sure to release this instance in
// the next thread loop round.
NS_ADDREF_THIS();
NS_ProxyRelease(NS_GetCurrentThread(), this, PR_TRUE);
mState = STATE_FINISHED;
nsOfflineCacheUpdateService* service =