mirror of
https://github.com/servo/servo.git
synced 2025-10-01 09:09:15 +01:00
Propagate privacy information of iframes to corresponding pipelines. Make iframes of differing privacy values be considered cross-origin.
Make the constellation hand out separate private and public channels for the pipeline content to communicate with the resource thread as necessary.
This commit is contained in:
parent
a5778fb5da
commit
7e2b4d163b
14 changed files with 294 additions and 138 deletions
|
@ -6616,6 +6616,12 @@
|
|||
"url": "/_mozilla/mozilla/mozbrowser/mozbrowsertitlechangedeagerly_event.html"
|
||||
}
|
||||
],
|
||||
"mozilla/mozbrowser/private_browsing.html": [
|
||||
{
|
||||
"path": "mozilla/mozbrowser/private_browsing.html",
|
||||
"url": "/_mozilla/mozilla/mozbrowser/private_browsing.html"
|
||||
}
|
||||
],
|
||||
"mozilla/mozbrowser/redirect.html": [
|
||||
{
|
||||
"path": "mozilla/mozbrowser/redirect.html",
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<html><body><div id="test">Normal iFrame</div></body>
|
||||
<script>alert(document.cookie)</script>
|
||||
</html>
|
|
@ -0,0 +1,4 @@
|
|||
<span id="cookie"></span>
|
||||
<script>
|
||||
document.querySelector('#cookie').innerHTML = document.cookie;
|
||||
</script>
|
|
@ -0,0 +1,13 @@
|
|||
<html>
|
||||
<body>
|
||||
<div id="test">Private iFrame</div>
|
||||
</body>
|
||||
<script>document.cookie = "private=active;path=/";</script>
|
||||
<iframe src="iframe_privateContent_grandchild.html"></iframe>
|
||||
<script>
|
||||
var iframe = document.querySelector('iframe');
|
||||
iframe.onload = function() {
|
||||
alert(document.cookie + ' ' + iframe.contentDocument.querySelector('#cookie').textContent);
|
||||
};
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,44 @@
|
|||
<head>
|
||||
<meta charset="utf8" />
|
||||
<title>Private browsing</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
var privateFrame = document.createElement("iframe");
|
||||
privateFrame.mozbrowser = true;
|
||||
privateFrame.mozprivatebrowsing = true;
|
||||
|
||||
var gotGrandchildResult = false;
|
||||
privateFrame.addEventListener("mozbrowsershowmodalprompt", t.step_func(e => {
|
||||
assert_equals(e.detail.message, 'private=active private=active');
|
||||
gotGrandchildResult = true;
|
||||
}));
|
||||
|
||||
privateFrame.onload = t.step_func(function() {
|
||||
assert_true(gotGrandchildResult);
|
||||
|
||||
var parent = privateFrame.parentNode;
|
||||
parent.removeChild(privateFrame);
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var promptDisplay = false;
|
||||
iframe.mozbrowser = true;
|
||||
iframe.onload = t.step_func(function() {
|
||||
assert_true(promptDisplay);
|
||||
t.done();
|
||||
});
|
||||
iframe.addEventListener("mozbrowsershowmodalprompt", t.step_func(e => {
|
||||
promptDisplay = true;
|
||||
assert_equals(e.detail.message, "");
|
||||
}));
|
||||
iframe.src = "iframe_contentDocument_inner.html";
|
||||
parent.appendChild(iframe);
|
||||
});
|
||||
privateFrame.src = "iframe_privateContent_inner.html";
|
||||
document.body.appendChild(privateFrame);
|
||||
});
|
||||
</script>
|
||||
</body>
|
Loading…
Add table
Add a link
Reference in a new issue