Bug 1271280 - Places shutdown blockers have wrong names and are not properly reporting state. r=adw
MozReview-Commit-ID: CQlm5ZGgBwK
--- a/toolkit/components/places/Shutdown.cpp
+++ b/toolkit/components/places/Shutdown.cpp
@@ -29,44 +29,48 @@ NS_IMETHODIMP
PlacesShutdownBlocker::GetName(nsAString& aName)
{
aName = mName;
return NS_OK;
}
// nsIAsyncShutdownBlocker
NS_IMETHODIMP
-PlacesShutdownBlocker::GetState(nsIPropertyBag** aState)
+PlacesShutdownBlocker::GetState(nsIPropertyBag** _state)
{
- nsresult rv;
+ NS_ENSURE_ARG_POINTER(_state);
+
nsCOMPtr<nsIWritablePropertyBag2> bag =
- do_CreateInstance("@mozilla.org/hash-property-bag;1", &rv);
- if (NS_WARN_IF(NS_FAILED(rv))) return rv;
+ do_CreateInstance("@mozilla.org/hash-property-bag;1");
+ NS_ENSURE_TRUE(bag, NS_ERROR_OUT_OF_MEMORY);
+ bag.forget(_state);
// Put `mState` in field `progress`
RefPtr<nsVariant> progress = new nsVariant();
- rv = progress->SetAsUint8(mState);
+ nsresult rv = progress->SetAsUint8(mState);
if (NS_WARN_IF(NS_FAILED(rv))) return rv;
- rv = bag->SetPropertyAsInterface(NS_LITERAL_STRING("progress"), progress);
+ rv = static_cast<nsIWritablePropertyBag2*>(*_state)->SetPropertyAsInterface(
+ NS_LITERAL_STRING("progress"), progress);
if (NS_WARN_IF(NS_FAILED(rv))) return rv;
// Put `mBarrier`'s state in field `barrier`, if possible
if (!mBarrier) {
return NS_OK;
}
nsCOMPtr<nsIPropertyBag> barrierState;
rv = mBarrier->GetState(getter_AddRefs(barrierState));
if (NS_FAILED(rv)) {
return NS_OK;
}
RefPtr<nsVariant> barrier = new nsVariant();
rv = barrier->SetAsInterface(NS_GET_IID(nsIPropertyBag), barrierState);
if (NS_WARN_IF(NS_FAILED(rv))) return rv;
- rv = bag->SetPropertyAsInterface(NS_LITERAL_STRING("Barrier"), barrier);
+ rv = static_cast<nsIWritablePropertyBag2*>(*_state)->SetPropertyAsInterface(
+ NS_LITERAL_STRING("Barrier"), barrier);
if (NS_WARN_IF(NS_FAILED(rv))) return rv;
return NS_OK;
}
// nsIAsyncShutdownBlocker
NS_IMETHODIMP
PlacesShutdownBlocker::BlockShutdown(nsIAsyncShutdownClient* aParentClient)
@@ -148,17 +152,17 @@ NS_IMPL_ISUPPORTS_INHERITED(
ClientsShutdownBlocker,
PlacesShutdownBlocker,
nsIAsyncShutdownCompletionCallback
)
////////////////////////////////////////////////////////////////////////////////
ConnectionShutdownBlocker::ConnectionShutdownBlocker(Database* aDatabase)
- : PlacesShutdownBlocker(NS_LITERAL_STRING("Places Clients shutdown"))
+ : PlacesShutdownBlocker(NS_LITERAL_STRING("Places Connection shutdown"))
, mDatabase(aDatabase)
{
// Do nothing.
}
// nsIAsyncShutdownBlocker
NS_IMETHODIMP
ConnectionShutdownBlocker::BlockShutdown(nsIAsyncShutdownClient* aParentClient)