Make GetSuccessResult return an error code

This commit is contained in:
Ben Turner 2010-05-10 12:01:55 -07:00
parent b822e970e4
commit 8b1779aedd
5 changed files with 26 additions and 16 deletions

View File

@ -166,7 +166,10 @@ AsyncConnectionHelper::OnSuccess(nsIDOMEventTarget* aTarget)
return nsIIDBDatabaseException::UNKNOWN_ERR;
}
GetSuccessResult(variant);
PRUint16 result = GetSuccessResult(variant);
if (result != OK) {
return result;
}
if (NS_FAILED(variant->SetWritable(PR_FALSE))) {
NS_ERROR("Failed to make variant readonly!");
@ -201,10 +204,12 @@ AsyncConnectionHelper::OnError(nsIDOMEventTarget* aTarget,
aTarget->DispatchEvent(event, &dummy);
}
void
PRUint16
AsyncConnectionHelper::GetSuccessResult(nsIWritableVariant* /* aResult */)
{
NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
// Leave the variant set to empty.
return OK;
}

View File

@ -126,9 +126,10 @@ protected:
* This function is called from the default implementation of OnSuccess. A
* valid nsIWritableVariant is passed into the function which can be modified
* by the subclass. The default implementation returns an nsIVariant that is
* set to nsIDataType::VTYPE_EMPTY.
* set to nsIDataType::VTYPE_EMPTY. Returning anything other than OK from the
* GetSuccessResult function will trigger the OnError callback.
*/
virtual void GetSuccessResult(nsIWritableVariant* aVariant);
virtual PRUint16 GetSuccessResult(nsIWritableVariant* aVariant);
protected:
nsRefPtr<IDBDatabaseRequest> mDatabase;

View File

@ -43,7 +43,6 @@
#include "mozilla/Storage.h"
#include "nsDOMClassInfo.h"
#include "nsServiceManagerUtils.h"
#include "nsThreadUtils.h"
#include "AsyncConnectionHelper.h"
@ -108,7 +107,7 @@ public:
PRUint16 DoDatabaseWork();
PRUint16 OnSuccess(nsIDOMEventTarget* aTarget);
void GetSuccessResult(nsIWritableVariant* aResult);
PRUint16 GetSuccessResult(nsIWritableVariant* aResult);
protected:
// In-params.
@ -136,7 +135,7 @@ public:
PRUint16 DoDatabaseWork();
PRUint16 OnSuccess(nsIDOMEventTarget* aTarget);
void GetSuccessResult(nsIWritableVariant* aResult);
PRUint16 GetSuccessResult(nsIWritableVariant* aResult);
protected:
// In-params.
@ -153,7 +152,7 @@ public:
{ }
PRUint16 DoDatabaseWork();
void GetSuccessResult(nsIWritableVariant* aResult);
PRUint16 GetSuccessResult(nsIWritableVariant* aResult);
private:
// In-params.
@ -737,7 +736,7 @@ CreateObjectStoreHelper::OnSuccess(nsIDOMEventTarget* aTarget)
return AsyncConnectionHelper::OnSuccess(aTarget);
}
void
PRUint16
CreateObjectStoreHelper::GetSuccessResult(nsIWritableVariant* aResult)
{
nsCOMPtr<nsISupports> result =
@ -745,6 +744,7 @@ CreateObjectStoreHelper::GetSuccessResult(nsIWritableVariant* aResult)
NS_ASSERTION(result, "Failed to QI!");
aResult->SetAsISupports(result);
return OK;
}
PRUint16
@ -791,7 +791,7 @@ OpenObjectStoreHelper::OnSuccess(nsIDOMEventTarget* aTarget)
return AsyncConnectionHelper::OnSuccess(aTarget);
}
void
PRUint16
OpenObjectStoreHelper::GetSuccessResult(nsIWritableVariant* aResult)
{
nsCOMPtr<nsISupports> result =
@ -799,6 +799,7 @@ OpenObjectStoreHelper::GetSuccessResult(nsIWritableVariant* aResult)
NS_ASSERTION(result, "Failed to QI!");
aResult->SetAsISupports(result);
return OK;
}
PRUint16
@ -826,8 +827,9 @@ RemoveObjectStoreHelper::DoDatabaseWork()
return OK;
}
void
PRUint16
RemoveObjectStoreHelper::GetSuccessResult(nsIWritableVariant* /* aResult */)
{
mDatabase->OnObjectStoreRemoved(mName);
return OK;
}

View File

@ -84,7 +84,7 @@ public:
}
PRUint16 DoDatabaseWork();
void GetSuccessResult(nsIWritableVariant* aResult);
PRUint16 GetSuccessResult(nsIWritableVariant* aResult);
private:
// In-params.
@ -120,7 +120,7 @@ public:
PRUint16 OnSuccess(nsIDOMEventTarget* aTarget);
// Disabled until we can use nsIVariants with jsvals
//void GetSuccessResult(nsIWritableVariant* aResult);
//PRUint16 GetSuccessResult(nsIWritableVariant* aResult);
protected:
// In-params.
@ -508,7 +508,7 @@ PutHelper::DoDatabaseWork()
nsIIDBDatabaseException::UNKNOWN_ERR;
}
void
PRUint16
PutHelper::GetSuccessResult(nsIWritableVariant* aResult)
{
if (mAutoIncrement || mKeyString.IsVoid()) {
@ -517,6 +517,7 @@ PutHelper::GetSuccessResult(nsIWritableVariant* aResult)
else {
aResult->SetAsAString(mKeyString);
}
return OK;
}
PRUint16

View File

@ -80,7 +80,7 @@ public:
{ }
PRUint16 DoDatabaseWork();
void GetSuccessResult(nsIWritableVariant* aResult);
PRUint16 GetSuccessResult(nsIWritableVariant* aResult);
private:
// In-params.
@ -443,7 +443,7 @@ OpenDatabaseHelper::DoDatabaseWork()
return OK;
}
void
PRUint16
OpenDatabaseHelper::GetSuccessResult(nsIWritableVariant* aResult)
{
NS_ASSERTION(mConnection, "Should have a connection!");
@ -457,4 +457,5 @@ OpenDatabaseHelper::GetSuccessResult(nsIWritableVariant* aResult)
NS_ASSERTION(!mConnection, "Should have swapped out!");
aResult->SetAsISupports(static_cast<IDBRequest::Generator*>(db));
return OK;
}