gecko/netwerk/test/unit/test_private_channel.js
Ehsan Akhgari 5236854e21 Bug 741059 - Part 1: Add APIs to nsIChannel to allow callers to override the private bit on the channel; r=jduell
This is probably the worst patch that I have ever written!

We add a setPrivate method to nsIPrivateBrowsingChannel which will be
implemented by channels who care about private browsing.  This allows the
client to explicitly override the private bit on the channel.
NS_UsePrivateBrowsing is also taught about this override bit using the
internal nsIPrivateBrowsingChannel::IsPrivateModeOverriden API.  This patch
implements the new API for HTTP, FTP and wyciwyg channels.  This also
modifies the IPC implementations of these channels to correctly transfer that
bit to the parent process if it has been set in the child process channel.
2012-09-04 20:37:45 -04:00

51 lines
1.2 KiB
JavaScript

//
// Private channel test
//
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cr = Components.results;
Cu.import("resource://testing-common/httpd.js");
var httpserver = new HttpServer();
var testpath = "/simple";
function run_test() {
// Simulate a profile dir for xpcshell
do_get_profile();
// Start off with an empty cache
evict_cache_entries();
httpserver.registerPathHandler(testpath, serverHandler);
httpserver.start(4444);
var channel = setupChannel(testpath);
channel.QueryInterface(Ci.nsIPrivateBrowsingChannel);
channel.setPrivate(true);
channel.asyncOpen(new ChannelListener(checkRequest, channel), null);
do_test_pending();
}
function setupChannel(path) {
var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
return chan = ios.newChannel("http://localhost:4444" + path, "", null)
.QueryInterface(Ci.nsIHttpChannel);
}
function serverHandler(metadata, response) {
response.write("HTTP/1.0 200 OK\r\n\r\nfoobar");
respose.finish();
}
function checkRequest(request, data, context) {
do_check_eq(get_device_entry_count("disk"), 0);
do_check_eq(get_device_entry_count("memory"), 1);
httpserver.stop(do_test_finished);
}