@@ -707,13 +707,99 @@ var TESTS = [
707707 return result ;
708708 } ) ( )
709709 } ,
710+ {
711+ // Non-vendor prefixed @keyframes rule, from Twitter Bootstrap (progress-bars):
712+ input : '@keyframes progress-bar-stripes {\n from { background-position: 0 0; }\n to { background-position: 40px 0; }\n}' ,
713+ result : ( function ( ) {
714+ var result = {
715+ cssRules : [
716+ {
717+ name : "progress-bar-stripes" ,
718+ _vendorPrefix : undefined ,
719+ cssRules : [
720+ {
721+ keyText : "from" ,
722+ style : {
723+ 0 : "background-position" ,
724+ 'background-position' : "0 0" ,
725+ length : 1
726+ }
727+ } ,
728+ {
729+ keyText : "to" ,
730+ style : {
731+ 0 : "background-position" ,
732+ 'background-position' : "40px 0" ,
733+ length : 1
734+ }
735+ }
736+ ] ,
737+ parentRule : null
738+ }
739+ ] ,
740+ parentStyleSheet : null
741+ } ;
742+ result . cssRules [ 0 ] . parentStyleSheet = result . cssRules [ 0 ] . cssRules [ 0 ] . parentStyleSheet = result . cssRules [ 0 ] . cssRules [ 1 ] . parentStyleSheet = result ;
743+ result . cssRules [ 0 ] . cssRules [ 0 ] . parentRule = result . cssRules [ 0 ] . cssRules [ 1 ] . parentRule = result . cssRules [ 0 ] ;
744+ result . cssRules [ 0 ] . cssRules [ 0 ] . style . parentRule = result . cssRules [ 0 ] . cssRules [ 0 ] ;
745+ result . cssRules [ 0 ] . cssRules [ 1 ] . style . parentRule = result . cssRules [ 0 ] . cssRules [ 1 ] ;
746+ return result ;
747+ } ) ( )
748+ } ,
749+ {
750+ input : "@-some-ridiculously-long-vendor-prefix-that-must-be-supported-keyframes therulename /*comment*/{0%{top:0px; left:0px; background:red;}100% {top:4em; left:40px; background:maroon;}}" ,
751+ result : ( function ( ) {
752+ var result = {
753+ cssRules : [
754+ {
755+ name : "therulename" ,
756+ _vendorPrefix : '-some-ridiculously-long-vendor-prefix-that-must-be-supported-' ,
757+ cssRules : [
758+ {
759+ keyText : "0%" ,
760+ style : {
761+ 0 : "top" ,
762+ 1 : "left" ,
763+ 2 : "background" ,
764+ top : "0px" ,
765+ left : "0px" ,
766+ background : "red" ,
767+ length : 3
768+ }
769+ } ,
770+ {
771+ keyText : "100%" ,
772+ style : {
773+ 0 : "top" ,
774+ 1 : "left" ,
775+ 2 : "background" ,
776+ top : "4em" ,
777+ left : "40px" ,
778+ background : "maroon" ,
779+ length : 3
780+ }
781+ }
782+ ] ,
783+ parentRule : null
784+ }
785+ ] ,
786+ parentStyleSheet : null
787+ } ;
788+ result . cssRules [ 0 ] . parentStyleSheet = result . cssRules [ 0 ] . cssRules [ 0 ] . parentStyleSheet = result . cssRules [ 0 ] . cssRules [ 1 ] . parentStyleSheet = result ;
789+ result . cssRules [ 0 ] . cssRules [ 0 ] . parentRule = result . cssRules [ 0 ] . cssRules [ 1 ] . parentRule = result . cssRules [ 0 ] ;
790+ result . cssRules [ 0 ] . cssRules [ 0 ] . style . parentRule = result . cssRules [ 0 ] . cssRules [ 0 ] ;
791+ result . cssRules [ 0 ] . cssRules [ 1 ] . style . parentRule = result . cssRules [ 0 ] . cssRules [ 1 ] ;
792+ return result ;
793+ } ) ( )
794+ } ,
710795 {
711796 input : "@-webkit-keyframes mymove {\nfrom {top:0px}\nto {top:200px}\n}" ,
712797 result : ( function ( ) {
713798 var result = {
714799 cssRules : [
715800 {
716801 name : "mymove" ,
802+ _vendorPrefix : '-webkit-' ,
717803 cssRules : [
718804 {
719805 keyText : "from" ,
@@ -751,6 +837,7 @@ var TESTS = [
751837 cssRules : [
752838 {
753839 name : "mymovepercent" ,
840+ _vendorPrefix : '-webkit-' ,
754841 cssRules : [
755842 {
756843 keyText : "0%" ,
@@ -813,7 +900,7 @@ describe('parse', function() {
813900} ) ;
814901
815902/**
816- * Recurcively remove all keys which start with '_'
903+ * Recursively remove all keys which start with '_', except "_vendorPrefix", which needs to be tested against.
817904 * @param {Object } object
818905 */
819906function removeUnderscored ( object ) {
@@ -823,7 +910,7 @@ function removeUnderscored(object) {
823910 var keys = Object . keys ( object ) ;
824911 for ( var i = 0 , length = keys . length ; i < length ; i ++ ) {
825912 var key = keys [ i ] ;
826- if ( key [ 0 ] === '_' ) {
913+ if ( key [ 0 ] === '_' && key !== '_vendorPrefix' ) {
827914 delete object [ key ] ;
828915 } else {
829916 var value = object [ key ] ;
0 commit comments