aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-04-01 22:51:51 +0530
committerbors-servo <lbergstrom+bors@mozilla.com>2016-04-01 22:51:51 +0530
commit7d79df4a05948e0ce6e3abc6bef0f833d8bf541e (patch)
treeda2adbe296aba690add7a8d3cd0402447a2a5d1f
parent0397e2a24d3e5c988b089ef100002397f4cabdfa (diff)
parent3c6cc642ee43375fecb191004b49bedf1b6c4146 (diff)
downloadservo-7d79df4a05948e0ce6e3abc6bef0f833d8bf541e.tar.gz
servo-7d79df4a05948e0ce6e3abc6bef0f833d8bf541e.zip
Auto merge of #10304 - Ms2ger:cookie-averse, r=nox
Implement Document::cookie correctly for cookie-averse documents. <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10304) <!-- Reviewable:end -->
-rw-r--r--components/script/dom/document.rs23
-rw-r--r--tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-cookie.html.ini5
2 files changed, 21 insertions, 7 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index a24580d0f95..12b47cf4d96 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -1467,6 +1467,19 @@ impl Document {
let target = node.upcast();
event.fire(target);
}
+
+ /// https://html.spec.whatwg.org/multipage/#cookie-averse-document-object
+ fn is_cookie_averse(&self) -> bool {
+ /// https://url.spec.whatwg.org/#network-scheme
+ fn url_has_network_scheme(url: &Url) -> bool {
+ match &*url.scheme {
+ "ftp" | "http" | "https" => true,
+ _ => false,
+ }
+ }
+
+ self.browsing_context.is_none() || !url_has_network_scheme(&self.url)
+ }
}
#[derive(PartialEq, HeapSizeOf)]
@@ -2397,7 +2410,10 @@ impl DocumentMethods for Document {
// https://html.spec.whatwg.org/multipage/#dom-document-cookie
fn GetCookie(&self) -> Fallible<DOMString> {
- // TODO: return empty string for cookie-averse Document
+ if self.is_cookie_averse() {
+ return Ok(DOMString::new());
+ }
+
let url = self.url();
if !is_scheme_host_port_tuple(&url) {
return Err(Error::Security);
@@ -2410,7 +2426,10 @@ impl DocumentMethods for Document {
// https://html.spec.whatwg.org/multipage/#dom-document-cookie
fn SetCookie(&self, cookie: DOMString) -> ErrorResult {
- // TODO: ignore for cookie-averse Document
+ if self.is_cookie_averse() {
+ return Ok(());
+ }
+
let url = self.url();
if !is_scheme_host_port_tuple(url) {
return Err(Error::Security);
diff --git a/tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-cookie.html.ini b/tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-cookie.html.ini
deleted file mode 100644
index 74249d5a63d..00000000000
--- a/tests/wpt/metadata/html/dom/documents/resource-metadata-management/document-cookie.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[document-cookie.html]
- type: testharness
- [getting cookie for a cookie-averse document returns empty string, setting does nothing]
- expected: FAIL
-