Bug 595305 - Factor cookie third-party URI code into separate API. Tests. r=bent, a=betaN+

This commit is contained in:
Dan Witte 2010-10-19 09:37:03 -07:00
Родитель f90d6cec5d
Коммит 734265ed01
6 изменённых файлов: 146 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,84 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Test ThirdPartyUtil methods. See mozIThirdPartyUtil.
Components.utils.import("resource://gre/modules/NetUtil.jsm");
let Cc = Components.classes;
let Ci = Components.interfaces;
let NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG;
function do_check_throws(f, result, stack)
{
if (!stack) {
try {
// We might not have a 'Components' object.
stack = Components.stack.caller;
} catch (e) {
}
}
try {
f();
} catch (exc) {
do_check_eq(exc.result, result);
return;
}
do_throw("expected " + result + " exception, none thrown", stack);
}
function run_test() {
let util = Cc["@mozilla.org/thirdpartyutil;1"].getService(Ci.mozIThirdPartyUtil);
// Create URIs and channels pointing to foo.com and bar.com.
// We will use these to put foo.com into first and third party contexts.
let spec1 = "http://foo.com/foo.html";
let spec2 = "http://bar.com/bar.html";
let uri1 = NetUtil.newURI(spec1);
let uri2 = NetUtil.newURI(spec2);
let channel1 = NetUtil.newChannel(uri1);
let channel2 = NetUtil.newChannel(uri2);
// Create some file:// URIs.
let filespec1 = "file://foo.txt";
let filespec2 = "file://bar.txt";
let fileuri1 = NetUtil.newURI(filespec1);
let fileuri2 = NetUtil.newURI(filespec2);
let filechannel1 = NetUtil.newChannel(fileuri1);
let filechannel2 = NetUtil.newChannel(fileuri2);
// Test isThirdPartyURI.
do_check_false(util.isThirdPartyURI(uri1, uri1));
do_check_true(util.isThirdPartyURI(uri1, uri2));
do_check_true(util.isThirdPartyURI(uri2, uri1));
do_check_false(util.isThirdPartyURI(fileuri1, fileuri1));
do_check_false(util.isThirdPartyURI(fileuri1, fileuri2));
do_check_true(util.isThirdPartyURI(uri1, fileuri1));
do_check_throws(function() { util.isThirdPartyURI(uri1, null); },
NS_ERROR_INVALID_ARG);
do_check_throws(function() { util.isThirdPartyURI(null, uri1); },
NS_ERROR_INVALID_ARG);
do_check_throws(function() { util.isThirdPartyURI(null, null); },
NS_ERROR_INVALID_ARG);
// We can't test isThirdPartyWindow since we can't really set up a window
// heirarchy. We leave that to mochitests.
// Test isThirdPartyChannel. As above, we can't test the bits that require
// a load context or window heirarchy.
do_check_throws(function() { util.isThirdPartyChannel(null); },
NS_ERROR_INVALID_ARG);
do_check_throws(function() { util.isThirdPartyChannel(channel1); },
NS_ERROR_INVALID_ARG);
do_check_throws(function() { util.isThirdPartyChannel(channel1, uri1); },
NS_ERROR_INVALID_ARG);
do_check_true(util.isThirdPartyChannel(channel1, uri2));
let httpchannel1 = channel1.QueryInterface(Ci.nsIHttpChannelInternal);
httpchannel1.forceAllowThirdPartyCookie = true;
do_check_false(util.isThirdPartyChannel(channel1));
do_check_false(util.isThirdPartyChannel(channel1, uri1));
do_check_true(util.isThirdPartyChannel(channel1, uri2));
}

Просмотреть файл

@ -51,6 +51,10 @@ _TEST_FILES = \
file_domain_inner.html \
file_domain_inner_inner.html \
test_differentdomain.html \
test_different_domain_in_hierarchy.html \
file_domain_hierarchy_inner.html \
file_domain_hierarchy_inner_inner.html \
file_domain_hierarchy_inner_inner_inner.html \
test_image.html \
file_image_inner.html \
file_image_inner_inner.html \

Просмотреть файл

@ -0,0 +1,14 @@
<!DOCTYPE HTML>
<html>
<head>
<META HTTP-EQUIV="Set-Cookie" CONTENT="meta=tag">
<script type="text/javascript">
document.cookie = "can=has";
// send a message to our test document, to say we're done loading
window.opener.postMessage("message", "http://mochi.test:8888");
</script>
<body>
<iframe name="frame1" src="http://example.com/tests/extensions/cookie/test/file_domain_hierarchy_inner_inner.html"></iframe>
</body>
</html>

Просмотреть файл

@ -0,0 +1,14 @@
<!DOCTYPE HTML>
<html>
<head>
<META HTTP-EQUIV="Set-Cookie" CONTENT="meta2=tag2">
<script type="text/javascript">
document.cookie = "can2=has2";
// send a message to our test document, to say we're done loading
window.parent.opener.postMessage("message", "http://mochi.test:8888");
</script>
<body>
<iframe name="frame1" src="http://example.org/tests/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html"></iframe>
</body>
</html>

Просмотреть файл

@ -0,0 +1,14 @@
<!DOCTYPE HTML>
<html>
<head>
<META HTTP-EQUIV="Set-Cookie" CONTENT="meta3=tag3">
<script type="text/javascript">
document.cookie = "can3=has3";
// send a message to our test document, to say we're done loading
window.parent.parent.opener.postMessage("message", "http://mochi.test:8888");
</script>
</head>
<body>
</body>
</html>

Просмотреть файл

@ -0,0 +1,16 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test cookie requests from within a window hierarchy of different base domains</title>
<script type="text/javascript" src="/MochiKit/packed.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_domain_hierarchy_inner.html', 3, 3)">
<p id="display"></p>
<pre id="test">
<script class="testbody" type="text/javascript" src="file_testcommon.js">
</script>
</pre>
</body>
</html>