From 46351f586bc544461b1930d80f04864afa50e162 Mon Sep 17 00:00:00 2001 From: tophf Date: Wed, 15 Jul 2015 17:29:45 +0300 Subject: [PATCH 1/3] fix @keyframes: consume trailing whitespace --- src/css/Parser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/css/Parser.js b/src/css/Parser.js index 36059ee9..c4aa5148 100644 --- a/src/css/Parser.js +++ b/src/css/Parser.js @@ -1988,6 +1988,7 @@ Parser.prototype = function(){ this._readWhitespace(); tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); }, From 866ad1ad3d7bebc3b12ab3d8ac09b8930dcb6453 Mon Sep 17 00:00:00 2001 From: tophf Date: Wed, 15 Jul 2015 17:32:32 +0300 Subject: [PATCH 2/3] fix line, col in "enddocument" event --- src/css/Parser.js | 1 + tests/css/CSSParserTests.htm | 2 +- tests/css/Parser.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/css/Parser.js b/src/css/Parser.js index c4aa5148..e63aff4c 100644 --- a/src/css/Parser.js +++ b/src/css/Parser.js @@ -810,6 +810,7 @@ Parser.prototype = function(){ } tokenStream.mustMatch(Tokens.RBRACE); + token = tokenStream.token(); this._readWhitespace(); this.fire({ diff --git a/tests/css/CSSParserTests.htm b/tests/css/CSSParserTests.htm index 4c464c43..ae099bae 100644 --- a/tests/css/CSSParserTests.htm +++ b/tests/css/CSSParserTests.htm @@ -1645,7 +1645,7 @@

CSS Parser Tests

parser.addListener("enddocument", function(event) { assert.areEqual(1, event.line, "Line should be 1"); - assert.areEqual(1, event.col, "Column should be 1"); + assert.areEqual(25, event.col, "Column should be 25"); calledEnd = true; }); diff --git a/tests/css/Parser.js b/tests/css/Parser.js index 791576c6..f5fd55bf 100644 --- a/tests/css/Parser.js +++ b/tests/css/Parser.js @@ -1821,7 +1821,7 @@ parser.addListener("enddocument", function(event) { Assert.areEqual(1, event.line, "Line should be 1"); - Assert.areEqual(1, event.col, "Column should be 1"); + Assert.areEqual(25, event.col, "Column should be 25"); calledEnd = true; }); From c2b59857c2c1492ce8f32a5b46f23f3bde6aa842 Mon Sep 17 00:00:00 2001 From: tophf Date: Wed, 15 Jul 2015 17:34:17 +0300 Subject: [PATCH 3/3] support @keyframes and @document inside @document blocks --- src/css/Parser.js | 21 ++++++++++----------- tests/css/CSSParserTests.htm | 12 ++++++++++++ tests/css/Parser.js | 12 ++++++++++++ 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/css/Parser.js b/src/css/Parser.js index e63aff4c..db7ab132 100644 --- a/src/css/Parser.js +++ b/src/css/Parser.js @@ -795,17 +795,16 @@ Parser.prototype = function(){ col: token.startCol }); - while(true) { - if (tokenStream.peek() === Tokens.PAGE_SYM){ - this._page(); - } else if (tokenStream.peek() === Tokens.FONT_FACE_SYM){ - this._font_face(); - } else if (tokenStream.peek() === Tokens.VIEWPORT_SYM){ - this._viewport(); - } else if (tokenStream.peek() === Tokens.MEDIA_SYM){ - this._media(); - } else if (!this._ruleset()){ - break; + var ok = true; + while (ok) { + switch (tokenStream.peek()) { + case Tokens.PAGE_SYM: this._page(); break; + case Tokens.FONT_FACE_SYM: this._font_face(); break; + case Tokens.VIEWPORT_SYM: this._viewport(); break; + case Tokens.MEDIA_SYM: this._media(); break; + case Tokens.KEYFRAMES_SYM: this._keyframes(); break; + case Tokens.DOCUMENT_SYM: this._document(); break; + default: ok = !!this._ruleset(); } } diff --git a/tests/css/CSSParserTests.htm b/tests/css/CSSParserTests.htm index ae099bae..b09061c3 100644 --- a/tests/css/CSSParserTests.htm +++ b/tests/css/CSSParserTests.htm @@ -1632,6 +1632,18 @@

CSS Parser Tests

assert.isTrue(valid); }, + testDocumentWithKeyframes: function(){ + var parser = new Parser({ strict: true}), + valid = true; + + parser.addListener("error", function(event) { + valid = false; + }); + + var result = parser.parse("@document url-prefix() { @keyframes 'diagonal-slide' { from { left: 0; top: 0; } to { left: 100px; top: 100px; } } }"); + assert.isTrue(valid); + }, + testDocumentEventFires: function(){ var parser = new Parser({ strict:true}), calledStart = false, diff --git a/tests/css/Parser.js b/tests/css/Parser.js index f5fd55bf..7ae463d5 100644 --- a/tests/css/Parser.js +++ b/tests/css/Parser.js @@ -1808,6 +1808,18 @@ Assert.isTrue(valid); }, + testDocumentWithKeyframes: function(){ + var parser = new Parser({ strict: true}), + valid = true; + + parser.addListener("error", function(event) { + valid = false; + }); + + var result = parser.parse("@document url-prefix() { @keyframes 'diagonal-slide' { from { left: 0; top: 0; } to { left: 100px; top: 100px; } } }"); + Assert.isTrue(valid); + }, + testDocumentEventFires: function(){ var parser = new Parser({ strict:true}), calledStart = false,