Bug 1271280 - Places shutdown blockers have wrong names and are not properly reporting state. r=adw draft
authorMarco Bonardo <mbonardo@mozilla.com>
Mon, 09 May 2016 15:27:59 +0200
changeset 364849 76ee6e493286654c061202050145c9685cc2383d
parent 364848 971309aa7df1443f1c5980339194bb79cfecec8e
child 520399 91cdda4df22e63a76a13ff86e0a4e753b9510888
push id17577
push usermak77@bonardo.net
push dateMon, 09 May 2016 14:42:15 +0000
reviewersadw
bugs1271280
milestone49.0a1
Bug 1271280 - Places shutdown blockers have wrong names and are not properly reporting state. r=adw MozReview-Commit-ID: CQlm5ZGgBwK
toolkit/components/places/Shutdown.cpp
--- 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)