зеркало из https://github.com/mozilla/gecko-dev.git
Bug 369787 - calling nsHttpChannel::SetContentType on a closed channel doesn't work as expected.p=Sylvain Pasche <sylvain.pasche@gmail.com>r=biesi, sr=darin
This commit is contained in:
Родитель
4f83fa46f3
Коммит
79da1f0638
|
@ -3431,7 +3431,7 @@ nsHttpChannel::GetContentType(nsACString &value)
|
|||
NS_IMETHODIMP
|
||||
nsHttpChannel::SetContentType(const nsACString &value)
|
||||
{
|
||||
if (mListener) {
|
||||
if (mListener || mWasOpened) {
|
||||
if (!mResponseHead)
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
do_import_script("netwerk/test/httpserver/httpd.js");
|
||||
|
||||
var server;
|
||||
var BUGID = "331825";
|
||||
const BUGID = "331825";
|
||||
|
||||
function TestListener() {
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
do_import_script("netwerk/test/httpserver/httpd.js");
|
||||
|
||||
const BUGID = "369787";
|
||||
var server = null;
|
||||
var channel = null;
|
||||
|
||||
function change_content_type() {
|
||||
var origType = channel.contentType;
|
||||
const newType = "x-foo/x-bar";
|
||||
channel.contentType = newType;
|
||||
do_check_eq(channel.contentType, newType);
|
||||
channel.contentType = origType;
|
||||
do_check_eq(channel.contentType, origType);
|
||||
}
|
||||
|
||||
function TestListener() {
|
||||
}
|
||||
TestListener.prototype.onStartRequest = function(request, context) {
|
||||
change_content_type();
|
||||
}
|
||||
TestListener.prototype.onStopRequest = function(request, context, status) {
|
||||
change_content_type();
|
||||
|
||||
do_timeout(0, "after_channel_closed()");
|
||||
}
|
||||
|
||||
function after_channel_closed() {
|
||||
try {
|
||||
change_content_type();
|
||||
} finally {
|
||||
server.stop();
|
||||
do_test_finished();
|
||||
}
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
// start server
|
||||
server = new nsHttpServer();
|
||||
|
||||
server.registerPathHandler("/bug" + BUGID, bug369787);
|
||||
|
||||
server.start(4444);
|
||||
|
||||
// make request
|
||||
channel =
|
||||
Components.classes["@mozilla.org/network/io-service;1"].
|
||||
getService(Components.interfaces.nsIIOService).
|
||||
newChannel("http://localhost:4444/bug" + BUGID, null, null);
|
||||
|
||||
channel.QueryInterface(Components.interfaces.nsIHttpChannel);
|
||||
channel.asyncOpen(new TestListener(), null);
|
||||
|
||||
do_test_pending();
|
||||
}
|
||||
|
||||
// PATH HANDLER FOR /bug369787
|
||||
function bug369787(metadata, response) {
|
||||
/* do nothing */
|
||||
}
|
Загрузка…
Ссылка в новой задаче