From 02ac3d372060393f4c0a6a0f29a95dd9f0ee8fda Mon Sep 17 00:00:00 2001 From: Anne van Kesteren Date: Tue, 18 Nov 2014 15:45:24 +0100 Subject: [PATCH] An extension of single-byte-decoder.html that tackles CSS (not finished) --- encoding/resources/single-byte-raw-css-loader.py | 3 +++ encoding/resources/single-byte-raw-css.py | 10 ++++++++++ encoding/single-byte-decoder.html | 11 +++++++++++ 3 files changed, 24 insertions(+) create mode 100644 encoding/resources/single-byte-raw-css-loader.py create mode 100644 encoding/resources/single-byte-raw-css.py diff --git a/encoding/resources/single-byte-raw-css-loader.py b/encoding/resources/single-byte-raw-css-loader.py new file mode 100644 index 00000000000000..533f7e92a81912 --- /dev/null +++ b/encoding/resources/single-byte-raw-css-loader.py @@ -0,0 +1,3 @@ +def main(request, response): + response.headers.set("Content-Type", "text/html;charset=utf-8") + response.content = "" diff --git a/encoding/resources/single-byte-raw-css.py b/encoding/resources/single-byte-raw-css.py new file mode 100644 index 00000000000000..648b7a56a4eb6a --- /dev/null +++ b/encoding/resources/single-byte-raw-css.py @@ -0,0 +1,10 @@ +def main(request, response): + response.headers.set("Content-Type", "text/css;charset=" + request.GET.first("label")) + bytes = [] + for byte in xrange(255): + if byte in [0x0A, 0x0C, 0x0D, 0x22, 0x5C]: + bytes.append(chr(0x5C)) + bytes.append(chr(byte)) + else: + bytes.append(chr(byte)) + response.content = "body::before { content:\"" + "".join(bytes) + "\" }" diff --git a/encoding/single-byte-decoder.html b/encoding/single-byte-decoder.html index e92af46b2bf0b2..1351c2178fdd33 100644 --- a/encoding/single-byte-decoder.html +++ b/encoding/single-byte-decoder.html @@ -171,6 +171,17 @@ t.add_cleanup(function() { document.body.removeChild(frame) }) document.body.appendChild(frame) }, encoding.name + ": " + label + " (document.characterSet)") + + async_test(function(t) { + var frame = document.createElement("iframe"), + name = encoding.name + frame.src = "resources/single-byte-raw-css-loader.py?label=" + label + frame.onload = t.step_func_done(function() { + assert_equals(frame.contentWindow.getComputedStyle(frame.contentDocument.body, "::before").content, "x") + }) + t.add_cleanup(function() { document.body.removeChild(frame) }) + document.body.appendChild(frame) + }, encoding.name + ": " + label + " (CSS)") } }