blob: 8fb52feb51834e71a116a160823423772dfcac0d [file] [log] [blame]
if (self.importScripts)
importScripts("/js-test-resources/js-test.js");
description("Test EventSource with an event-stream with a Content-Type with a charset is still recognized.");
// Test for bug https://bugs.webkit.org/show_bug.cgi?id=45372
self.jsTestIsAsync = true;
var es;
function shouldGetMessage() {
debug("Content type: " + es.contentType);
shouldBeFalse("!!es.sawError");
shouldBeTrue("es.sawMessage");
shouldBeTrue("es.sawOpen");
}
function shouldFail() {
debug("Content type: " + es.contentType);
shouldBeTrue("es.sawError");
shouldBeFalse("!!es.sawMessage");
shouldBeFalse("!!es.sawOpen");
}
var i = 0;
var contentTypes = [ 'text/event-stream; charset=UTF-8',
'text/event-stream; charset=windows-1251',
'text/event-stream; charset=utf-8',
'text/event-stream; charset="UTF-8"',
'text/event-stream-foobar;'
];
var expectedResultCallback = [ shouldGetMessage,
shouldFail,
shouldGetMessage,
shouldGetMessage,
shouldFail
];
function openListener(evt)
{
evt.target.sawOpen = true;
}
function messageListener(evt)
{
evt.target.sawMessage = true;
evt.target.successCallback(evt.target);
evt.target.close();
next();
}
function errorListener(evt)
{
evt.target.sawError = true;
evt.target.successCallback(evt.target);
evt.target.close();
next();
}
function startRequest()
{
shouldNotThrow("es = new EventSource(\"/eventsource/resources/response-content-type-charset.php?contentType=" + escape(contentTypes[i]) + "\")");
es.onopen = openListener;
es.onmessage = messageListener;
es.onerror = errorListener;
es.successCallback = expectedResultCallback[i];
es.contentType = contentTypes[i];
++i;
}
function next()
{
if (i >= contentTypes.length) {
finishJSTest();
return;
}
startRequest();
}
startRequest();