mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #15767 - charlesvdv:blob-close, r=nox
Remove support for Blob::{close, isClosed} <!-- Please describe your changes on the following line: --> <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #15660 <!-- Either: --> - [x] There are tests for these changes <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15767) <!-- Reviewable:end -->
This commit is contained in:
commit
1b1fadb8b8
5 changed files with 5 additions and 59 deletions
|
@ -18,7 +18,6 @@ use ipc_channel::ipc;
|
|||
use net_traits::{CoreResourceMsg, IpcSend};
|
||||
use net_traits::blob_url_store::{BlobBuf, get_blob_origin};
|
||||
use net_traits::filemanager_thread::{FileManagerThreadMsg, ReadFileProgress, RelativePos};
|
||||
use std::cell::Cell;
|
||||
use std::mem;
|
||||
use std::ops::Index;
|
||||
use std::path::PathBuf;
|
||||
|
@ -75,7 +74,6 @@ pub struct Blob {
|
|||
blob_impl: DOMRefCell<BlobImpl>,
|
||||
/// content-type string
|
||||
type_string: String,
|
||||
is_closed: Cell<bool>,
|
||||
}
|
||||
|
||||
impl Blob {
|
||||
|
@ -95,7 +93,6 @@ impl Blob {
|
|||
// NOTE: Guarding the format correctness here,
|
||||
// https://w3c.github.io/FileAPI/#dfn-type
|
||||
type_string: normalize_type_string(&type_string),
|
||||
is_closed: Cell::new(false),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -297,9 +294,7 @@ impl Blob {
|
|||
|
||||
impl Drop for Blob {
|
||||
fn drop(&mut self) {
|
||||
if !self.IsClosed() {
|
||||
self.clean_up_file_resource();
|
||||
}
|
||||
self.clean_up_file_resource();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -375,25 +370,6 @@ impl BlobMethods for Blob {
|
|||
let rel_pos = RelativePos::from_opts(start, end);
|
||||
Blob::new_sliced(self, rel_pos, content_type.unwrap_or(DOMString::from("")))
|
||||
}
|
||||
|
||||
// https://w3c.github.io/FileAPI/#dfn-isClosed
|
||||
fn IsClosed(&self) -> bool {
|
||||
self.is_closed.get()
|
||||
}
|
||||
|
||||
// https://w3c.github.io/FileAPI/#dfn-close
|
||||
fn Close(&self) {
|
||||
// Step 1
|
||||
if self.is_closed.get() {
|
||||
return;
|
||||
}
|
||||
|
||||
// Step 2
|
||||
self.is_closed.set(true);
|
||||
|
||||
// Step 3
|
||||
self.clean_up_file_resource();
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the normalized, MIME-parsable type string
|
||||
|
|
|
@ -375,20 +375,11 @@ impl FileReader {
|
|||
if self.ready_state.get() == FileReaderReadyState::Loading {
|
||||
return Err(Error::InvalidState);
|
||||
}
|
||||
|
||||
// Step 2
|
||||
let global = self.global();
|
||||
if blob.IsClosed() {
|
||||
let exception = DOMException::new(&global, DOMErrorName::InvalidStateError);
|
||||
self.error.set(Some(&exception));
|
||||
|
||||
self.dispatch_progress_event(atom!("error"), 0, None);
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// Step 3
|
||||
self.change_ready_state(FileReaderReadyState::Loading);
|
||||
|
||||
// Step 4
|
||||
// Step 3
|
||||
let blob_contents = Arc::new(blob.get_bytes().unwrap_or(vec![]));
|
||||
|
||||
let type_ = blob.Type();
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods;
|
||||
use dom::bindings::codegen::Bindings::URLBinding::{self, URLMethods};
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
|
@ -102,12 +101,6 @@ impl URL {
|
|||
/// and should not be trusted. See issue https://github.com/servo/servo/issues/11722
|
||||
let origin = get_blob_origin(&global.get_url());
|
||||
|
||||
if blob.IsClosed() {
|
||||
// Generate a dummy id
|
||||
let id = Uuid::new_v4();
|
||||
return DOMString::from(URL::unicode_serialization_blob_url(&origin, &id));
|
||||
}
|
||||
|
||||
let id = blob.get_blob_url_id();
|
||||
|
||||
DOMString::from(URL::unicode_serialization_blob_url(&origin, &id))
|
||||
|
@ -116,13 +109,10 @@ impl URL {
|
|||
// https://w3c.github.io/FileAPI/#dfn-revokeObjectURL
|
||||
pub fn RevokeObjectURL(global: &GlobalScope, url: DOMString) {
|
||||
/*
|
||||
If the url refers to a Blob that has a readability state of CLOSED OR
|
||||
if the value provided for the url argument is not a Blob URL, OR
|
||||
If the value provided for the url argument is not a Blob URL OR
|
||||
if the value provided for the url argument does not have an entry in the Blob URL Store,
|
||||
|
||||
this method call does nothing. User agents may display a message on the error console.
|
||||
|
||||
NOTE: The first step is unnecessary, since closed blobs do not exist in the store
|
||||
*/
|
||||
let origin = get_blob_origin(&global.get_url());
|
||||
|
||||
|
|
|
@ -11,21 +11,15 @@ interface Blob {
|
|||
|
||||
readonly attribute unsigned long long size;
|
||||
readonly attribute DOMString type;
|
||||
readonly attribute boolean isClosed;
|
||||
|
||||
//slice Blob into byte-ranged chunks
|
||||
|
||||
// slice Blob into byte-ranged chunks
|
||||
Blob slice([Clamp] optional long long start,
|
||||
[Clamp] optional long long end,
|
||||
optional DOMString contentType);
|
||||
void close();
|
||||
|
||||
};
|
||||
|
||||
dictionary BlobPropertyBag {
|
||||
|
||||
DOMString type = "";
|
||||
|
||||
};
|
||||
|
||||
typedef (/*ArrayBuffer or ArrayBufferView or */Blob or DOMString) BlobPart;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue