зеркало из https://github.com/mozilla/gecko-dev.git
Bug 761076 - FileHandle: Add optional location parameter to LockedFile.truncate(). r=sicking
This commit is contained in:
Родитель
a2815ce44d
Коммит
c40661fb2e
|
@ -662,7 +662,9 @@ LockedFile::Append(const jsval& aValue,
|
|||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
LockedFile::Truncate(nsIDOMFileRequest** _retval)
|
||||
LockedFile::Truncate(PRUint64 aLocation,
|
||||
PRUint8 aOptionalArgCount,
|
||||
nsIDOMFileRequest** _retval)
|
||||
{
|
||||
NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
|
||||
|
||||
|
@ -682,12 +684,18 @@ LockedFile::Truncate(nsIDOMFileRequest** _retval)
|
|||
nsRefPtr<FileRequest> fileRequest = GenerateFileRequest();
|
||||
NS_ENSURE_TRUE(fileRequest, NS_ERROR_DOM_FILEHANDLE_UNKNOWN_ERR);
|
||||
|
||||
PRUint64 location = aOptionalArgCount ? aLocation : mLocation;
|
||||
|
||||
nsRefPtr<TruncateHelper> helper =
|
||||
new TruncateHelper(this, fileRequest, mLocation);
|
||||
new TruncateHelper(this, fileRequest, location);
|
||||
|
||||
nsresult rv = helper->Enqueue();
|
||||
NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_FILEHANDLE_UNKNOWN_ERR);
|
||||
|
||||
if (aOptionalArgCount) {
|
||||
mLocation = aLocation;
|
||||
}
|
||||
|
||||
fileRequest.forget(_retval);
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ dictionary DOMFileMetadataParameters
|
|||
boolean lastModified;
|
||||
};
|
||||
|
||||
[scriptable, builtinclass, uuid(63055eeb-cc19-468b-bafa-7b7961796340)]
|
||||
[scriptable, builtinclass, uuid(e1f69cc5-c6ce-4850-bc09-c4211b1d4290)]
|
||||
interface nsIDOMLockedFile : nsISupports
|
||||
{
|
||||
readonly attribute nsIDOMFileHandle fileHandle;
|
||||
|
@ -49,8 +49,9 @@ interface nsIDOMLockedFile : nsISupports
|
|||
nsIDOMFileRequest
|
||||
append(in jsval value);
|
||||
|
||||
[optional_argc]
|
||||
nsIDOMFileRequest
|
||||
truncate();
|
||||
truncate([optional] in unsigned long long location);
|
||||
|
||||
nsIDOMFileRequest
|
||||
flush();
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
is(lockedFile.location, 100000, "Correct location");
|
||||
|
||||
for (let i = 0; i < 10; i++) {
|
||||
let location = lockedFile.location - 10000
|
||||
let location = lockedFile.location - 10000;
|
||||
lockedFile.location = location;
|
||||
|
||||
request = lockedFile.truncate();
|
||||
|
@ -46,6 +46,27 @@
|
|||
|
||||
is(event.target.result.size, location, "Correct size");
|
||||
}
|
||||
|
||||
request = lockedFile.write(testBuffer);
|
||||
request.onsuccess = grabEventAndContinueHandler;
|
||||
event = yield;
|
||||
|
||||
let location = lockedFile.location;
|
||||
for (let i = 0; i < 10; i++) {
|
||||
location -= 10000;
|
||||
|
||||
request = lockedFile.truncate(location);
|
||||
request.onsuccess = grabEventAndContinueHandler;
|
||||
event = yield;
|
||||
|
||||
is(lockedFile.location, location, "Correct location");
|
||||
|
||||
request = lockedFile.getMetadata({ size: true });
|
||||
request.onsuccess = grabEventAndContinueHandler;
|
||||
event = yield;
|
||||
|
||||
is(event.target.result.size, location, "Correct size");
|
||||
}
|
||||
}
|
||||
|
||||
finishTest();
|
||||
|
|
Загрузка…
Ссылка в новой задаче