diff --git a/dom/tests/mochitest/ajax/offline/Makefile.in b/dom/tests/mochitest/ajax/offline/Makefile.in index d22e26cf0a6..8e944a3e2e5 100644 --- a/dom/tests/mochitest/ajax/offline/Makefile.in +++ b/dom/tests/mochitest/ajax/offline/Makefile.in @@ -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) diff --git a/uriloader/prefetch/nsOfflineCacheUpdate.cpp b/uriloader/prefetch/nsOfflineCacheUpdate.cpp index 3936b51328a..88c03e76844 100644 --- a/uriloader/prefetch/nsOfflineCacheUpdate.cpp +++ b/uriloader/prefetch/nsOfflineCacheUpdate.cpp @@ -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 =