Index: LayoutTests/http/tests/eventsource/script-tests/eventsource-content-type-charset.js |
diff --git a/LayoutTests/http/tests/eventsource/script-tests/eventsource-content-type-charset.js b/LayoutTests/http/tests/eventsource/script-tests/eventsource-content-type-charset.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8fb52feb51834e71a116a160823423772dfcac0d |
--- /dev/null |
+++ b/LayoutTests/http/tests/eventsource/script-tests/eventsource-content-type-charset.js |
@@ -0,0 +1,80 @@ |
+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(); |