summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--serde_v8/src/de.rs18
-rw-r--r--tools/wpt/expectation.json30
2 files changed, 3 insertions, 45 deletions
diff --git a/serde_v8/src/de.rs b/serde_v8/src/de.rs
index f351d7870..b0237d514 100644
--- a/serde_v8/src/de.rs
+++ b/serde_v8/src/de.rs
@@ -154,12 +154,8 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de>
V: Visitor<'de>,
{
if self.input.is_string() {
- // TODO(@AaronO): implement a `.to_rust_string -> Option<String>` in rusty-v8
let v8_string = v8::Local::<v8::String>::try_from(self.input).unwrap();
- let string = match v8_to_rust_string(self.scope, v8_string) {
- Some(string) => string,
- None => return Err(Error::ExpectedUtf8),
- };
+ let string = v8_string.to_rust_string_lossy(self.scope);
visitor.visit_string(string)
} else {
Err(Error::ExpectedString)
@@ -619,15 +615,3 @@ impl<'de, 'a, 'b, 's> de::VariantAccess<'de>
de::Deserializer::deserialize_struct(&mut d, "", fields, visitor)
}
}
-
-// Like v8::String::to_rust_string_lossy except returns None on non-utf8
-fn v8_to_rust_string(
- scope: &mut v8::HandleScope,
- s: v8::Local<v8::String>,
-) -> Option<String> {
- let string = s.to_rust_string_lossy(scope);
- match string.find(std::char::REPLACEMENT_CHARACTER) {
- Some(_) => None,
- None => Some(string),
- }
-}
diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json
index afdc0cb1f..4d6016104 100644
--- a/tools/wpt/expectation.json
+++ b/tools/wpt/expectation.json
@@ -683,8 +683,6 @@
"Stringification of new URLSearchParams(\"hi=there&thank=you\")"
],
"url-constructor.any.html": [
- "Parsing: <https://x/�?�#�> against <about:blank>",
- "Parsing: <http://example.com/\ud800𐟾\udfff﷐﷏﷯ﷰ￾￿?\ud800𐟾\udfff﷐﷏﷯ﷰ￾￿> against <about:blank>",
"Parsing: <file://%43%7C> against <about:blank>",
"Parsing: <file://%43|> against <about:blank>",
"Parsing: <file://C%7C> against <about:blank>",
@@ -740,10 +738,7 @@
"Parsing: <> against <non-spec:/..//p>",
"Parsing: <path> against <non-spec:/..//p>"
],
- "url-origin.any.html": [
- "Origin parsing: <http://example.com/\ud800𐟾\udfff﷐﷏﷯ﷰ￾￿?\ud800𐟾\udfff﷐﷏﷯ﷰ￾￿> against <about:blank>",
- "Origin parsing: <https://x/�?�#�> against <about:blank>"
- ],
+ "url-origin.any.html": true,
"url-searchparams.any.html": true,
"url-setters-stripping.any.html": [
"Setting protocol with leading U+0000 (https:)",
@@ -777,12 +772,7 @@
"urlsearchparams-getall.any.html": true,
"urlsearchparams-has.any.html": true,
"urlsearchparams-set.any.html": true,
- "urlsearchparams-sort.any.html": [
- "Parse and sort: �=x&&�=a",
- "URL parse and sort: �=x&&�=a",
- "Parse and sort: é&e�&é",
- "URL parse and sort: é&e�&é"
- ],
+ "urlsearchparams-sort.any.html": true,
"urlsearchparams-stringifier.any.html": true
},
"fetch": {
@@ -1088,33 +1078,17 @@
"storage_session_window_open.window.html": false,
"storage_set_value_enumerate.window.html": true,
"storage_setitem.window.html": [
- "localStorage[\"\ud800\"]",
"localStorage[] = \"\ud800\"",
- "localStorage[\"\udbff\"]",
"localStorage[] = \"\udbff\"",
- "localStorage[\"\udc00\"]",
"localStorage[] = \"\udc00\"",
- "localStorage[\"\udfff\"]",
"localStorage[] = \"\udfff\"",
- "localStorage[\"\\ufffd\"]",
- "localStorage[] = \"\\ufffd\"",
- "localStorage[\"\ud83ca\"]",
"localStorage[] = \"\ud83ca\"",
- "localStorage[\"a\udf4d\"]",
"localStorage[] = \"a\udf4d\"",
- "sessionStorage[\"\ud800\"]",
"sessionStorage[] = \"\ud800\"",
- "sessionStorage[\"\udbff\"]",
"sessionStorage[] = \"\udbff\"",
- "sessionStorage[\"\udc00\"]",
"sessionStorage[] = \"\udc00\"",
- "sessionStorage[\"\udfff\"]",
"sessionStorage[] = \"\udfff\"",
- "sessionStorage[\"\\ufffd\"]",
- "sessionStorage[] = \"\\ufffd\"",
- "sessionStorage[\"\ud83ca\"]",
"sessionStorage[] = \"\ud83ca\"",
- "sessionStorage[\"a\udf4d\"]",
"sessionStorage[] = \"a\udf4d\""
],
"storage_string_conversion.window.html": true,