mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 13:25:37 +00:00
Bug 1143504 - Disconnect the Cache object from its actor when it gets cycle collected; r=bkelly
This commit is contained in:
parent
46d09574e9
commit
8734ffb7e3
18
dom/cache/Cache.cpp
vendored
18
dom/cache/Cache.cpp
vendored
@ -78,7 +78,17 @@ using mozilla::dom::workers::WorkerPrivate;
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(mozilla::dom::cache::Cache);
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(mozilla::dom::cache::Cache);
|
||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(Cache, mGlobal, mRequestPromises)
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(mozilla::dom::cache::Cache)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(mozilla::dom::cache::Cache)
|
||||
tmp->DisconnectFromActor();
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mGlobal, mRequestPromises)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(mozilla::dom::cache::Cache)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGlobal, mRequestPromises)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(mozilla::dom::cache::Cache)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Cache)
|
||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
||||
@ -533,6 +543,12 @@ Cache::RejectedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue)
|
||||
}
|
||||
|
||||
Cache::~Cache()
|
||||
{
|
||||
DisconnectFromActor();
|
||||
}
|
||||
|
||||
void
|
||||
Cache::DisconnectFromActor()
|
||||
{
|
||||
if (mActor) {
|
||||
mActor->StartDestroy();
|
||||
|
3
dom/cache/Cache.h
vendored
3
dom/cache/Cache.h
vendored
@ -107,6 +107,9 @@ public:
|
||||
private:
|
||||
~Cache();
|
||||
|
||||
// Called when we're destroyed or CCed.
|
||||
void DisconnectFromActor();
|
||||
|
||||
// TODO: Replace with actor-per-request model during refactor (bug 1110485)
|
||||
RequestId AddRequestPromise(Promise* aPromise, ErrorResult& aRv);
|
||||
already_AddRefed<Promise> RemoveRequestPromise(RequestId aRequestId);
|
||||
|
Loading…
Reference in New Issue
Block a user