Bug 1644379 - Change DecodeString to return string by value. r=dom-workers-and-storage-reviewers,asuth

Differential Revision: https://phabricator.services.mozilla.com/D78881
This commit is contained in:
Simon Giesecke 2020-06-30 10:03:11 +00:00
parent 0f183e6ce2
commit 56ce33133e
2 changed files with 13 additions and 18 deletions

View File

@ -308,8 +308,7 @@ IDBResult<Key, IDBSpecialValue::Invalid> Key::ToLocaleAwareKey(
const uint8_t typeOffset = *it - eString;
MOZ_ASSERT((typeOffset % eArray == 0) && (typeOffset / eArray <= 2));
nsDependentString str;
DecodeString(it, end, str);
auto str = DecodeString(it, end);
auto result = res.EncodeLocaleString(str, typeOffset, aLocale);
if (NS_WARN_IF(!result.Is(Ok))) {
return result.PropagateNotOk<Key>();
@ -495,8 +494,7 @@ nsresult Key::DecodeJSValInternal(const EncodedDataType*& aPos,
aVal.setObject(*array);
} else if (*aPos - aTypeOffset == eString) {
nsString key;
DecodeString(aPos, aEnd, key);
auto key = DecodeString(aPos, aEnd);
if (!xpc::StringToJsval(aCx, key, aVal)) {
IDB_REPORT_INTERNAL_ERR();
return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR;
@ -624,8 +622,7 @@ IDBResult<void, IDBSpecialValue::Invalid> Key::EncodeAsString(
}
IDBResult<void, IDBSpecialValue::Invalid> Key::EncodeLocaleString(
const nsDependentString& aString, uint8_t aTypeOffset,
const nsCString& aLocale) {
const nsAString& aString, uint8_t aTypeOffset, const nsCString& aLocale) {
const int length = aString.Length();
if (length == 0) {
return Ok();
@ -751,16 +748,16 @@ void Key::DecodeStringy(const EncodedDataType*& aPos,
}
// static
void Key::DecodeString(const EncodedDataType*& aPos,
const EncodedDataType* const aEnd, nsString& aString) {
MOZ_ASSERT(aString.IsEmpty(), "aString should be empty on call!");
nsAutoString Key::DecodeString(const EncodedDataType*& aPos,
const EncodedDataType* const aEnd) {
nsAutoString res;
DecodeStringy<eString, char16_t>(
aPos, aEnd,
[&aString](char16_t** out, uint32_t decodedLength) {
return 0 != aString.GetMutableData(out, decodedLength);
[&res](char16_t** out, uint32_t decodedLength) {
return 0 != res.GetMutableData(out, decodedLength);
},
[] {});
return res;
}
void Key::EncodeNumber(double aFloat, uint8_t aType) {

View File

@ -132,8 +132,7 @@ class Key {
nsAutoString ToString() const {
MOZ_ASSERT(IsString());
const EncodedDataType* pos = BufferStart();
nsAutoString res;
DecodeString(pos, BufferEnd(), res);
auto res = DecodeString(pos, BufferEnd());
MOZ_ASSERT(pos >= BufferEnd());
return res;
}
@ -230,8 +229,7 @@ class Key {
uint8_t aType);
IDBResult<void, IDBSpecialValue::Invalid> EncodeLocaleString(
const nsDependentString& aString, uint8_t aTypeOffset,
const nsCString& aLocale);
const nsAString& aString, uint8_t aTypeOffset, const nsCString& aLocale);
void EncodeNumber(double aFloat, uint8_t aType);
@ -245,8 +243,8 @@ class Key {
const EncodedDataType* aEnd, JSContext* aCx,
JS::MutableHandle<JS::Value> aVal);
static void DecodeString(const EncodedDataType*& aPos,
const EncodedDataType* aEnd, nsString& aString);
static nsAutoString DecodeString(const EncodedDataType*& aPos,
const EncodedDataType* aEnd);
static double DecodeNumber(const EncodedDataType*& aPos,
const EncodedDataType* aEnd);