polymer-paper-rails 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (558) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/components/core-animation/README.md +4 -0
  3. data/app/assets/components/core-animation/bower.json +8 -0
  4. data/app/assets/components/core-animation/core-animation-group.html +169 -0
  5. data/app/assets/components/core-animation/core-animation.html +524 -0
  6. data/app/assets/components/core-animation/demo.html +149 -0
  7. data/app/assets/components/core-animation/index.html +22 -0
  8. data/app/assets/components/core-animation/web-animations.html +10 -0
  9. data/app/assets/components/core-collapse/README.md +4 -0
  10. data/app/assets/components/core-collapse/bower.json +7 -0
  11. data/app/assets/components/core-collapse/core-collapse.css +16 -0
  12. data/app/assets/components/core-collapse/core-collapse.html +262 -0
  13. data/app/assets/components/core-collapse/demo.html +93 -0
  14. data/app/assets/components/core-collapse/index.html +22 -0
  15. data/app/assets/components/core-component-page/README.md +6 -0
  16. data/app/assets/components/core-component-page/bowager-logo.png +0 -0
  17. data/app/assets/components/core-component-page/bower.json +8 -0
  18. data/app/assets/components/core-component-page/core-component-page.html +37 -0
  19. data/app/assets/components/core-component-page/demo.html +23 -0
  20. data/app/assets/components/core-component-page/index.html +22 -0
  21. data/app/assets/components/core-drawer-panel/README.md +4 -0
  22. data/app/assets/components/core-drawer-panel/bower.json +8 -0
  23. data/app/assets/components/core-drawer-panel/core-drawer-panel.css +147 -0
  24. data/app/assets/components/core-drawer-panel/core-drawer-panel.html +339 -0
  25. data/app/assets/components/core-drawer-panel/demo.html +73 -0
  26. data/app/assets/components/core-drawer-panel/index.html +22 -0
  27. data/app/assets/components/core-drawer-panel/metadata.html +37 -0
  28. data/app/assets/components/core-elements/README.md +4 -0
  29. data/app/assets/components/core-elements/bower.json +29 -0
  30. data/app/assets/components/core-elements/demo.html +105 -0
  31. data/app/assets/components/core-elements/demos/core-toolbar.html +98 -0
  32. data/app/assets/components/core-elements/metadata.html +23 -0
  33. data/app/assets/components/core-elements/paper-elements.html +37 -0
  34. data/app/assets/components/core-field/README.md +4 -0
  35. data/app/assets/components/core-field/bower.json +7 -0
  36. data/app/assets/components/core-field/core-field.css +38 -0
  37. data/app/assets/components/core-field/core-field.html +35 -0
  38. data/app/assets/components/core-field/demo.html +67 -0
  39. data/app/assets/components/core-field/index.html +22 -0
  40. data/app/assets/components/core-field/metadata.html +26 -0
  41. data/app/assets/components/core-header-panel/README.md +4 -0
  42. data/app/assets/components/core-header-panel/bower.json +7 -0
  43. data/app/assets/components/core-header-panel/core-header-panel.css +75 -0
  44. data/app/assets/components/core-header-panel/core-header-panel.html +225 -0
  45. data/app/assets/components/core-header-panel/demo.html +100 -0
  46. data/app/assets/components/core-header-panel/index.html +23 -0
  47. data/app/assets/components/core-header-panel/metadata.html +37 -0
  48. data/app/assets/components/core-icon/README.md +4 -0
  49. data/app/assets/components/core-icon/bower.json +8 -0
  50. data/app/assets/components/{core/icon → core-icon}/core-icon.css +3 -12
  51. data/app/assets/components/core-icon/core-icon.html +189 -0
  52. data/app/assets/components/core-icon/demo.html +44 -0
  53. data/app/assets/components/core-icon/index.html +22 -0
  54. data/app/assets/components/core-icon/metadata.html +21 -0
  55. data/app/assets/components/core-icon-button/README.md +4 -0
  56. data/app/assets/components/core-icon-button/bower.json +7 -0
  57. data/app/assets/components/core-icon-button/core-icon-button.css +75 -0
  58. data/app/assets/components/core-icon-button/core-icon-button.html +81 -0
  59. data/app/assets/components/core-icon-button/demo.html +35 -0
  60. data/app/assets/components/core-icon-button/index.html +22 -0
  61. data/app/assets/components/core-icon-button/metadata.html +20 -0
  62. data/app/assets/components/core-icons/README.md +4 -0
  63. data/app/assets/components/core-icons/av-icons.html +46 -0
  64. data/app/assets/components/core-icons/bower.json +9 -0
  65. data/app/assets/components/core-icons/communication-icons.html +59 -0
  66. data/app/assets/components/core-icons/core-icons.html +278 -0
  67. data/app/assets/components/core-icons/demo.html +96 -0
  68. data/app/assets/components/core-icons/device-icons.html +59 -0
  69. data/app/assets/components/core-icons/editor-icons.html +67 -0
  70. data/app/assets/components/core-icons/hardware-icons.html +58 -0
  71. data/app/assets/components/core-icons/image-icons.html +146 -0
  72. data/app/assets/components/core-icons/index.html +22 -0
  73. data/app/assets/components/core-icons/maps-icons.html +69 -0
  74. data/app/assets/components/core-icons/notification-icons.html +50 -0
  75. data/app/assets/components/core-icons/png-icons.html +19 -0
  76. data/app/assets/components/core-icons/social-icons.html +52 -0
  77. data/app/assets/components/core-iconset/README.md +4 -0
  78. data/app/assets/components/core-iconset/bower.json +9 -0
  79. data/app/assets/components/{core/iconset/core-iconset.html.erb → core-iconset/core-iconset.html} +29 -24
  80. data/app/assets/components/core-iconset/demo.html +62 -0
  81. data/app/assets/components/core-iconset/index.html +22 -0
  82. data/app/assets/components/core-iconset/my-icons-big.png +0 -0
  83. data/app/assets/components/core-iconset/my-icons.png +0 -0
  84. data/app/assets/components/core-iconset-svg/README.md +4 -0
  85. data/app/assets/components/core-iconset-svg/bower.json +8 -0
  86. data/app/assets/components/core-iconset-svg/core-iconset-svg.html +168 -0
  87. data/app/assets/components/core-iconset-svg/demo.html +66 -0
  88. data/app/assets/components/core-iconset-svg/index.html +22 -0
  89. data/app/assets/components/core-iconset-svg/svg-sample-icons.html +68 -0
  90. data/app/assets/components/core-input/README.md +2 -0
  91. data/app/assets/components/core-input/bower.json +6 -0
  92. data/app/assets/components/core-input/core-input.css +45 -0
  93. data/app/assets/components/{core/input/core-input.html.erb → core-input/core-input.html} +164 -95
  94. data/app/assets/components/core-input/demo.html +142 -0
  95. data/app/assets/components/core-input/index.html +22 -0
  96. data/app/assets/components/core-input/metadata.html +20 -0
  97. data/app/assets/components/core-item/README.md +4 -0
  98. data/app/assets/components/core-item/bower.json +8 -0
  99. data/app/assets/components/core-item/core-item.css +44 -0
  100. data/app/assets/components/core-item/core-item.html +74 -0
  101. data/app/assets/components/core-item/demo.html +92 -0
  102. data/app/assets/components/core-item/index.html +22 -0
  103. data/app/assets/components/core-item/metadata.html +24 -0
  104. data/app/assets/components/core-media-query/README.md +4 -0
  105. data/app/assets/components/core-media-query/bower.json +7 -0
  106. data/app/assets/components/{core/media-query → core-media-query}/core-media-query.html +1 -0
  107. data/app/assets/components/core-media-query/demo.html +44 -0
  108. data/app/assets/components/core-media-query/index.html +22 -0
  109. data/app/assets/components/core-menu/README.md +4 -0
  110. data/app/assets/components/core-menu/bower.json +9 -0
  111. data/app/assets/components/{core/menu → core-menu}/core-menu.css +0 -0
  112. data/app/assets/components/{core/menu/core-menu.html.erb → core-menu/core-menu.html} +3 -3
  113. data/app/assets/components/{core/menu → core-menu}/core-submenu.css +0 -0
  114. data/app/assets/components/{core/menu/core-submenu.html.erb → core-menu/core-submenu.html} +10 -10
  115. data/app/assets/components/core-menu/demo.html +101 -0
  116. data/app/assets/components/core-menu/index.html +22 -0
  117. data/app/assets/components/core-menu/metadata.html +62 -0
  118. data/app/assets/components/core-meta/README.md +4 -0
  119. data/app/assets/components/core-meta/bower.json +7 -0
  120. data/app/assets/components/{core/meta → core-meta}/core-meta.html +24 -22
  121. data/app/assets/components/core-meta/demo.html +58 -0
  122. data/app/assets/components/core-meta/index.html +22 -0
  123. data/app/assets/components/core-overlay/README.md +4 -0
  124. data/app/assets/components/core-overlay/bower.json +8 -0
  125. data/app/assets/components/{core/overlay → core-overlay}/core-key-helper.html +2 -0
  126. data/app/assets/components/{core/overlay → core-overlay}/core-overlay-layer.html +112 -112
  127. data/app/assets/components/{core/overlay/core-overlay.html.erb → core-overlay/core-overlay.html} +77 -51
  128. data/app/assets/components/core-overlay/demo.html +155 -0
  129. data/app/assets/components/core-overlay/index.html +22 -0
  130. data/app/assets/components/core-popup-menu/README.md +6 -0
  131. data/app/assets/components/core-popup-menu/bower.json +13 -0
  132. data/app/assets/components/core-popup-menu/core-popup-menu.css +28 -0
  133. data/app/assets/components/core-popup-menu/core-popup-menu.html +198 -0
  134. data/app/assets/components/core-popup-menu/core-popup-overlay.html +111 -0
  135. data/app/assets/components/core-popup-menu/demo.html +542 -0
  136. data/app/assets/components/core-popup-menu/index.html +22 -0
  137. data/app/assets/components/core-popup-menu/metadata.html +62 -0
  138. data/app/assets/components/core-range/README.md +2 -0
  139. data/app/assets/components/core-range/bower.json +7 -0
  140. data/app/assets/components/{core/range → core-range}/core-range.html +17 -15
  141. data/app/assets/components/core-range/demo.html +64 -0
  142. data/app/assets/components/core-range/index.html +22 -0
  143. data/app/assets/components/core-scroll-header-panel/README.md +4 -0
  144. data/app/assets/components/core-scroll-header-panel/bower.json +11 -0
  145. data/app/assets/components/core-scroll-header-panel/core-scroll-header-panel.css +58 -0
  146. data/app/assets/components/core-scroll-header-panel/core-scroll-header-panel.html +313 -0
  147. data/app/assets/components/core-scroll-header-panel/demo.html +111 -0
  148. data/app/assets/components/core-scroll-header-panel/demos/demo1.html +80 -0
  149. data/app/assets/components/core-scroll-header-panel/demos/demo2.html +82 -0
  150. data/app/assets/components/core-scroll-header-panel/demos/demo3.html +81 -0
  151. data/app/assets/components/core-scroll-header-panel/demos/demo4.html +109 -0
  152. data/app/assets/components/core-scroll-header-panel/demos/demo5.html +109 -0
  153. data/app/assets/components/core-scroll-header-panel/demos/demo6.html +113 -0
  154. data/app/assets/components/core-scroll-header-panel/demos/demo7.html +120 -0
  155. data/app/assets/components/core-scroll-header-panel/demos/demo8.html +122 -0
  156. data/app/assets/components/core-scroll-header-panel/demos/demo9.html +100 -0
  157. data/app/assets/components/core-scroll-header-panel/demos/images/bg2.jpg +0 -0
  158. data/app/assets/components/core-scroll-header-panel/demos/images/bg3.jpg +0 -0
  159. data/app/assets/components/core-scroll-header-panel/demos/images/bg5.jpg +0 -0
  160. data/app/assets/components/core-scroll-header-panel/demos/images/bg6.jpg +0 -0
  161. data/app/assets/components/core-scroll-header-panel/demos/images/bg9.jpg +0 -0
  162. data/app/assets/components/core-scroll-header-panel/demos/lorem-ipsum.html +42 -0
  163. data/app/assets/components/core-scroll-header-panel/index.html +22 -0
  164. data/app/assets/components/core-scroll-header-panel/metadata.html +41 -0
  165. data/app/assets/components/core-selection/README.md +4 -0
  166. data/app/assets/components/core-selection/bower.json +7 -0
  167. data/app/assets/components/{core/selection → core-selection}/core-selection.html +6 -5
  168. data/app/assets/components/core-selection/demo.html +59 -0
  169. data/app/assets/components/core-selection/index.html +22 -0
  170. data/app/assets/components/core-selector/README.md +4 -0
  171. data/app/assets/components/core-selector/bower.json +8 -0
  172. data/app/assets/components/{core/selector/core-selector.html.erb → core-selector/core-selector.html} +53 -16
  173. data/app/assets/components/core-selector/demo.html +106 -0
  174. data/app/assets/components/core-selector/index.html +22 -0
  175. data/app/assets/components/core-selector/metadata.html +20 -0
  176. data/app/assets/components/core-style/README.md +4 -0
  177. data/app/assets/components/core-style/bower.json +7 -0
  178. data/app/assets/components/{core/style → core-style}/core-style.html +387 -386
  179. data/app/assets/components/core-style/demo.html +58 -0
  180. data/app/assets/components/core-style/elements.html +55 -0
  181. data/app/assets/components/core-style/index.html +22 -0
  182. data/app/assets/components/core-style/my-theme.html +73 -0
  183. data/app/assets/components/core-toolbar/README.md +4 -0
  184. data/app/assets/components/core-toolbar/bower.json +7 -0
  185. data/app/assets/components/core-toolbar/core-toolbar.css +110 -0
  186. data/app/assets/components/core-toolbar/core-toolbar.html +74 -0
  187. data/app/assets/components/core-toolbar/demo.html +107 -0
  188. data/app/assets/components/core-toolbar/index.html +22 -0
  189. data/app/assets/components/core-toolbar/metadata.html +28 -0
  190. data/app/assets/components/core-transition/README.md +2 -0
  191. data/app/assets/components/core-transition/bower.json +8 -0
  192. data/app/assets/components/core-transition/core-transition-css.html +221 -0
  193. data/app/assets/components/{core/transition → core-transition}/core-transition-overlay.css +1 -1
  194. data/app/assets/components/core-transition/core-transition.html +140 -0
  195. data/app/assets/components/core-transition/demo.html +87 -0
  196. data/app/assets/components/core-transition/index.html +22 -0
  197. data/app/assets/components/font-roboto/roboto.html +9 -0
  198. data/app/assets/components/paper-button/README.md +4 -0
  199. data/app/assets/components/paper-button/bower.json +11 -0
  200. data/app/assets/components/paper-button/demo.html +99 -0
  201. data/app/assets/components/paper-button/demo2.html +136 -0
  202. data/app/assets/components/paper-button/index.html +22 -0
  203. data/app/assets/components/paper-button/metadata.html +17 -0
  204. data/app/assets/components/paper-button/paper-button.css +11 -1
  205. data/app/assets/components/paper-button/{paper-button.html.erb → paper-button.html} +9 -8
  206. data/app/assets/components/paper-checkbox/README.md +4 -0
  207. data/app/assets/components/paper-checkbox/bower.json +8 -0
  208. data/app/assets/components/paper-checkbox/demo.html +113 -0
  209. data/app/assets/components/paper-checkbox/index.html +22 -0
  210. data/app/assets/components/paper-checkbox/metadata.html +17 -0
  211. data/app/assets/components/paper-checkbox/paper-checkbox.css +49 -48
  212. data/app/assets/components/paper-checkbox/{paper-checkbox.html.erb → paper-checkbox.html} +110 -104
  213. data/app/assets/components/paper-dialog/README.md +4 -0
  214. data/app/assets/components/paper-dialog/bower.json +10 -0
  215. data/app/assets/components/paper-dialog/demo.html +85 -0
  216. data/app/assets/components/paper-dialog/index.html +22 -0
  217. data/app/assets/components/paper-dialog/{paper-dialog-transition.html.erb → paper-dialog-transition.html} +3 -3
  218. data/app/assets/components/paper-dialog/paper-dialog.css +52 -0
  219. data/app/assets/components/paper-dialog/{paper-dialog.html.erb → paper-dialog.html} +7 -7
  220. data/app/assets/components/paper-dropdown/README.md +9 -0
  221. data/app/assets/components/paper-dropdown/bower.json +12 -0
  222. data/app/assets/components/paper-dropdown/demo.html +345 -0
  223. data/app/assets/components/paper-dropdown/index.html +22 -0
  224. data/app/assets/components/paper-dropdown/paper-dropdown.css +48 -0
  225. data/app/assets/components/paper-dropdown/paper-dropdown.html +191 -0
  226. data/app/assets/components/paper-fab/README.md +4 -0
  227. data/app/assets/components/paper-fab/bower.json +8 -0
  228. data/app/assets/components/paper-fab/demo.html +72 -0
  229. data/app/assets/components/paper-fab/demo2.html +103 -0
  230. data/app/assets/components/paper-fab/index.html +22 -0
  231. data/app/assets/components/paper-fab/metadata.html +36 -0
  232. data/app/assets/components/paper-fab/paper-fab.css +11 -2
  233. data/app/assets/components/paper-fab/{paper-fab.html.erb → paper-fab.html} +3 -2
  234. data/app/assets/components/paper-focusable/README.md +4 -0
  235. data/app/assets/components/paper-focusable/bower.json +7 -0
  236. data/app/assets/components/paper-focusable/demo.html +155 -0
  237. data/app/assets/components/paper-focusable/paper-focusable.html +2 -0
  238. data/app/assets/components/paper-icon-button/README.md +4 -0
  239. data/app/assets/components/paper-icon-button/bower.json +9 -0
  240. data/app/assets/components/paper-icon-button/demo.html +102 -0
  241. data/app/assets/components/paper-icon-button/index.html +22 -0
  242. data/app/assets/components/paper-icon-button/metadata.html +21 -0
  243. data/app/assets/components/paper-icon-button/paper-icon-button.css +1 -1
  244. data/app/assets/components/paper-icon-button/{paper-icon-button.html.erb → paper-icon-button.html} +7 -7
  245. data/app/assets/components/paper-icon-button/pulse-ink.css +20 -0
  246. data/app/assets/components/paper-input/README.md +4 -0
  247. data/app/assets/components/paper-input/bower.json +11 -0
  248. data/app/assets/components/paper-input/demo.html +124 -0
  249. data/app/assets/components/paper-input/index.html +22 -0
  250. data/app/assets/components/paper-input/metadata.html +23 -0
  251. data/app/assets/components/paper-input/paper-input.css +152 -0
  252. data/app/assets/components/paper-input/paper-input.html +314 -0
  253. data/app/assets/components/paper-item/README.md +4 -0
  254. data/app/assets/components/paper-item/bower.json +9 -0
  255. data/app/assets/components/paper-item/demo.html +39 -0
  256. data/app/assets/components/paper-item/index.html +22 -0
  257. data/app/assets/components/paper-item/metadata.html +23 -0
  258. data/app/assets/components/paper-item/paper-item.css +15 -2
  259. data/app/assets/components/paper-item/{paper-item.html.erb → paper-item.html} +7 -6
  260. data/app/assets/components/paper-menu-button/README.md +4 -0
  261. data/app/assets/components/paper-menu-button/bower.json +16 -0
  262. data/app/assets/components/paper-menu-button/demo.html +95 -0
  263. data/app/assets/components/paper-menu-button/index.html +22 -0
  264. data/app/assets/components/paper-menu-button/metadata.html +21 -0
  265. data/app/assets/components/paper-menu-button/{paper-menu-button-transition.html.erb → paper-menu-button-transition.html} +31 -26
  266. data/app/assets/components/paper-menu-button/paper-menu-button.css +5 -9
  267. data/app/assets/components/paper-menu-button/{paper-menu-button.html.erb → paper-menu-button.html} +52 -20
  268. data/app/assets/components/paper-progress/README.md +4 -0
  269. data/app/assets/components/paper-progress/bower.json +8 -0
  270. data/app/assets/components/paper-progress/demo.html +107 -0
  271. data/app/assets/components/paper-progress/index.html +22 -0
  272. data/app/assets/components/paper-progress/metadata.html +17 -0
  273. data/app/assets/components/paper-progress/paper-progress.css +1 -1
  274. data/app/assets/components/paper-progress/{paper-progress.html.erb → paper-progress.html} +23 -23
  275. data/app/assets/components/paper-radio-button/README.md +4 -0
  276. data/app/assets/components/paper-radio-button/bower.json +7 -0
  277. data/app/assets/components/paper-radio-button/demo.html +75 -0
  278. data/app/assets/components/paper-radio-button/index.html +22 -0
  279. data/app/assets/components/paper-radio-button/metadata.html +17 -0
  280. data/app/assets/components/paper-radio-button/paper-radio-button.css +14 -8
  281. data/app/assets/components/paper-radio-button/{paper-radio-button.html.erb → paper-radio-button.html} +38 -29
  282. data/app/assets/components/paper-radio-group/README.md +4 -0
  283. data/app/assets/components/paper-radio-group/bower.json +9 -0
  284. data/app/assets/components/paper-radio-group/demo.html +82 -0
  285. data/app/assets/components/paper-radio-group/index.html +22 -0
  286. data/app/assets/components/paper-radio-group/metadata.html +22 -0
  287. data/app/assets/components/paper-radio-group/{paper-radio-group.html.erb → paper-radio-group.html} +16 -16
  288. data/app/assets/components/paper-ripple/README.md +4 -0
  289. data/app/assets/components/paper-ripple/bower.json +9 -0
  290. data/app/assets/components/paper-ripple/demo.html +418 -0
  291. data/app/assets/components/paper-ripple/index.html +22 -0
  292. data/app/assets/components/paper-ripple/metadata.html +20 -0
  293. data/app/assets/components/paper-ripple/paper-ripple.html +3 -2
  294. data/app/assets/components/paper-ripple/raw.html +799 -0
  295. data/app/assets/components/paper-shadow/README.md +4 -0
  296. data/app/assets/components/paper-shadow/bower.json +7 -0
  297. data/app/assets/components/paper-shadow/demo.html +252 -0
  298. data/app/assets/components/paper-shadow/index.html +22 -0
  299. data/app/assets/components/paper-shadow/metadata.html +17 -0
  300. data/app/assets/components/paper-shadow/paper-shadow.css +11 -1
  301. data/app/assets/components/paper-shadow/{paper-shadow.html.erb → paper-shadow.html} +11 -4
  302. data/app/assets/components/paper-slider/README.md +4 -0
  303. data/app/assets/components/paper-slider/bower.json +9 -0
  304. data/app/assets/components/paper-slider/demo.html +151 -0
  305. data/app/assets/components/paper-slider/index.html +22 -0
  306. data/app/assets/components/paper-slider/metadata.html +20 -0
  307. data/app/assets/components/paper-slider/paper-slider.css +58 -26
  308. data/app/assets/components/paper-slider/{paper-slider.html.erb → paper-slider.html} +72 -75
  309. data/app/assets/components/paper-tabs/README.md +4 -0
  310. data/app/assets/components/paper-tabs/bower.json +12 -0
  311. data/app/assets/components/paper-tabs/demo.html +166 -0
  312. data/app/assets/components/paper-tabs/index.html +22 -0
  313. data/app/assets/components/paper-tabs/metadata.html +58 -0
  314. data/app/assets/components/paper-tabs/{paper-tab.html.erb → paper-tab.html} +10 -10
  315. data/app/assets/components/paper-tabs/paper-tabs.css +1 -1
  316. data/app/assets/components/paper-tabs/{paper-tabs.html.erb → paper-tabs.html} +29 -25
  317. data/app/assets/components/paper-toast/README.md +4 -0
  318. data/app/assets/components/paper-toast/bower.json +10 -0
  319. data/app/assets/components/paper-toast/demo.html +67 -0
  320. data/app/assets/components/paper-toast/index.html +22 -0
  321. data/app/assets/components/paper-toast/metadata.html +20 -0
  322. data/app/assets/components/paper-toast/paper-toast.css +80 -0
  323. data/app/assets/components/paper-toast/{paper-toast.html.erb → paper-toast.html} +39 -39
  324. data/app/assets/components/paper-toggle-button/README.md +4 -0
  325. data/app/assets/components/paper-toggle-button/bower.json +8 -0
  326. data/app/assets/components/paper-toggle-button/demo.html +77 -0
  327. data/app/assets/components/paper-toggle-button/index.html +22 -0
  328. data/app/assets/components/paper-toggle-button/metadata.html +17 -0
  329. data/app/assets/components/paper-toggle-button/paper-toggle-button.css +1 -1
  330. data/app/assets/components/paper-toggle-button/{paper-toggle-button.html.erb → paper-toggle-button.html} +39 -20
  331. data/app/assets/components/platform/README.md +6 -0
  332. data/app/assets/components/platform/bower.json +16 -0
  333. data/app/assets/components/platform/build.log +35 -0
  334. data/app/assets/components/platform/platform.js +16 -0
  335. data/app/assets/components/platform/platform.js.map +1 -0
  336. data/app/assets/components/polymer/README.md +17 -0
  337. data/app/assets/components/polymer/bower.json +8 -0
  338. data/app/assets/components/polymer/build.log +35 -0
  339. data/app/assets/components/polymer/layout.html +286 -0
  340. data/app/assets/components/polymer/polymer.html +13 -0
  341. data/app/assets/components/polymer/polymer.js +14 -0
  342. data/app/assets/components/polymer/polymer.js.map +1 -0
  343. data/app/assets/components/sampler-scaffold/README.md +4 -0
  344. data/app/assets/components/sampler-scaffold/bower.json +12 -0
  345. data/app/assets/components/sampler-scaffold/demo.html +54 -0
  346. data/app/assets/components/sampler-scaffold/demos/checkbox.html +20 -0
  347. data/app/assets/components/sampler-scaffold/demos/color.html +20 -0
  348. data/app/assets/components/sampler-scaffold/demos/radio.html +20 -0
  349. data/app/assets/components/sampler-scaffold/demos/range.html +20 -0
  350. data/app/assets/components/sampler-scaffold/demos/string.html +20 -0
  351. data/app/assets/components/sampler-scaffold/index.html +22 -0
  352. data/app/assets/components/sampler-scaffold/sampler-scaffold.css +157 -0
  353. data/app/assets/components/sampler-scaffold/sampler-scaffold.html +224 -0
  354. data/app/assets/components/web-animations-js/COPYING +202 -0
  355. data/app/assets/components/web-animations-js/README.md +237 -0
  356. data/app/assets/components/web-animations-js/run-lint.sh +19 -0
  357. data/app/assets/components/web-animations-js/run-tests-android.sh +25 -0
  358. data/app/assets/components/web-animations-js/run-tests.sh +15 -0
  359. data/app/assets/components/web-animations-js/test/bootstrap.js +1266 -0
  360. data/app/assets/components/web-animations-js/test/img/error.png +0 -0
  361. data/app/assets/components/web-animations-js/test/img/success.png +0 -0
  362. data/app/assets/components/web-animations-js/test/img/unknown.png +0 -0
  363. data/app/assets/components/web-animations-js/test/perf/balls-add-compositing.html +147 -0
  364. data/app/assets/components/web-animations-js/test/perf/balls-replace-compositing.html +144 -0
  365. data/app/assets/components/web-animations-js/test/perf/perf.js +158 -0
  366. data/app/assets/components/web-animations-js/test/perf/updating-inline-style-during-animation.html +165 -0
  367. data/app/assets/components/web-animations-js/test/test-generator.html +240 -0
  368. data/app/assets/components/web-animations-js/test/test-results-post.html +3 -0
  369. data/app/assets/components/web-animations-js/test/test-runner.html +810 -0
  370. data/app/assets/components/web-animations-js/test/testcases/auto-test-box-shadow-checks.js +42 -0
  371. data/app/assets/components/web-animations-js/test/testcases/auto-test-box-shadow.html +40 -0
  372. data/app/assets/components/web-animations-js/test/testcases/auto-test-calc-checks.js +41 -0
  373. data/app/assets/components/web-animations-js/test/testcases/auto-test-calc.html +156 -0
  374. data/app/assets/components/web-animations-js/test/testcases/auto-test-change-playback-rate-checks.js +23 -0
  375. data/app/assets/components/web-animations-js/test/testcases/auto-test-circular-path-checks.js +65 -0
  376. data/app/assets/components/web-animations-js/test/testcases/auto-test-circular-path.html +83 -0
  377. data/app/assets/components/web-animations-js/test/testcases/auto-test-color-checks.js +101 -0
  378. data/app/assets/components/web-animations-js/test/testcases/auto-test-color-names-checks.js +431 -0
  379. data/app/assets/components/web-animations-js/test/testcases/auto-test-color-names.html +204 -0
  380. data/app/assets/components/web-animations-js/test/testcases/auto-test-color.html +117 -0
  381. data/app/assets/components/web-animations-js/test/testcases/auto-test-composite-transforms-checks.js +45 -0
  382. data/app/assets/components/web-animations-js/test/testcases/auto-test-composite-transforms.html +97 -0
  383. data/app/assets/components/web-animations-js/test/testcases/auto-test-compositor-checks.js +26 -0
  384. data/app/assets/components/web-animations-js/test/testcases/auto-test-compositor.html +68 -0
  385. data/app/assets/components/web-animations-js/test/testcases/auto-test-delay-checks.js +92 -0
  386. data/app/assets/components/web-animations-js/test/testcases/auto-test-delay.html +39 -0
  387. data/app/assets/components/web-animations-js/test/testcases/auto-test-element-animate-checks.js +8 -0
  388. data/app/assets/components/web-animations-js/test/testcases/auto-test-element-animate.html +30 -0
  389. data/app/assets/components/web-animations-js/test/testcases/auto-test-fill-values-checks.js +266 -0
  390. data/app/assets/components/web-animations-js/test/testcases/auto-test-fill-values.html +114 -0
  391. data/app/assets/components/web-animations-js/test/testcases/auto-test-font-weight-checks.js +26 -0
  392. data/app/assets/components/web-animations-js/test/testcases/auto-test-font-weight.html +43 -0
  393. data/app/assets/components/web-animations-js/test/testcases/auto-test-initial-checks.js +74 -0
  394. data/app/assets/components/web-animations-js/test/testcases/auto-test-initial.html +242 -0
  395. data/app/assets/components/web-animations-js/test/testcases/auto-test-inline-style-checks.js +17 -0
  396. data/app/assets/components/web-animations-js/test/testcases/auto-test-inline-style-fallback-checks.js +17 -0
  397. data/app/assets/components/web-animations-js/test/testcases/auto-test-inline-style-fallback.html +78 -0
  398. data/app/assets/components/web-animations-js/test/testcases/auto-test-inline-style-methods-checks.js +17 -0
  399. data/app/assets/components/web-animations-js/test/testcases/auto-test-inline-style-methods.html +70 -0
  400. data/app/assets/components/web-animations-js/test/testcases/auto-test-inline-style.html +69 -0
  401. data/app/assets/components/web-animations-js/test/testcases/auto-test-integer-checks.js +38 -0
  402. data/app/assets/components/web-animations-js/test/testcases/auto-test-integer.html +52 -0
  403. data/app/assets/components/web-animations-js/test/testcases/auto-test-iteration-start-checks.js +506 -0
  404. data/app/assets/components/web-animations-js/test/testcases/auto-test-iteration-start.html +160 -0
  405. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-alternate-checks.js +44 -0
  406. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-alternate-holes-checks.js +41 -0
  407. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-alternate-holes.html +48 -0
  408. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-alternate.html +50 -0
  409. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-basic-checks.js +162 -0
  410. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-basic.html +116 -0
  411. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-fill-checks.js +602 -0
  412. data/app/assets/components/web-animations-js/test/testcases/auto-test-iterations-fill.html +167 -0
  413. data/app/assets/components/web-animations-js/test/testcases/auto-test-keyframe-creation-checks.js +67 -0
  414. data/app/assets/components/web-animations-js/test/testcases/auto-test-keyframe-creation.html +109 -0
  415. data/app/assets/components/web-animations-js/test/testcases/auto-test-keyframe-easing-checks.js +65 -0
  416. data/app/assets/components/web-animations-js/test/testcases/auto-test-keyframe-easing.html +64 -0
  417. data/app/assets/components/web-animations-js/test/testcases/auto-test-length-units-checks.js +342 -0
  418. data/app/assets/components/web-animations-js/test/testcases/auto-test-length-units.html +103 -0
  419. data/app/assets/components/web-animations-js/test/testcases/auto-test-matrix-transforms-checks.js +56 -0
  420. data/app/assets/components/web-animations-js/test/testcases/auto-test-matrix-transforms.html +90 -0
  421. data/app/assets/components/web-animations-js/test/testcases/auto-test-motion-path-checks.js +110 -0
  422. data/app/assets/components/web-animations-js/test/testcases/auto-test-motion-path.html +133 -0
  423. data/app/assets/components/web-animations-js/test/testcases/auto-test-non-numeric-checks.js +26 -0
  424. data/app/assets/components/web-animations-js/test/testcases/auto-test-non-numeric.html +42 -0
  425. data/app/assets/components/web-animations-js/test/testcases/auto-test-parent-checks.js +38 -0
  426. data/app/assets/components/web-animations-js/test/testcases/auto-test-parent.html +52 -0
  427. data/app/assets/components/web-animations-js/test/testcases/auto-test-partial-keyframes-checks.js +27 -0
  428. data/app/assets/components/web-animations-js/test/testcases/auto-test-partial-keyframes.html +43 -0
  429. data/app/assets/components/web-animations-js/test/testcases/auto-test-path-checks.js +20 -0
  430. data/app/assets/components/web-animations-js/test/testcases/auto-test-path.html +41 -0
  431. data/app/assets/components/web-animations-js/test/testcases/auto-test-pause-checks.js +79 -0
  432. data/app/assets/components/web-animations-js/test/testcases/auto-test-pause.html +82 -0
  433. data/app/assets/components/web-animations-js/test/testcases/auto-test-perspective-checks.js +37 -0
  434. data/app/assets/components/web-animations-js/test/testcases/auto-test-perspective-origin-checks.js +61 -0
  435. data/app/assets/components/web-animations-js/test/testcases/auto-test-perspective-origin.html +94 -0
  436. data/app/assets/components/web-animations-js/test/testcases/auto-test-perspective.html +79 -0
  437. data/app/assets/components/web-animations-js/test/testcases/auto-test-playback-rate-checks.js +146 -0
  438. data/app/assets/components/web-animations-js/test/testcases/auto-test-playback-rate.html +128 -0
  439. data/app/assets/components/web-animations-js/test/testcases/auto-test-position-list-type-checks.js +73 -0
  440. data/app/assets/components/web-animations-js/test/testcases/auto-test-rectangle-checks.js +23 -0
  441. data/app/assets/components/web-animations-js/test/testcases/auto-test-rectangle.html +57 -0
  442. data/app/assets/components/web-animations-js/test/testcases/auto-test-reparent-checks.js +95 -0
  443. data/app/assets/components/web-animations-js/test/testcases/auto-test-reparent.html +60 -0
  444. data/app/assets/components/web-animations-js/test/testcases/auto-test-seq-speed-checks.js +69 -0
  445. data/app/assets/components/web-animations-js/test/testcases/auto-test-seq-speed.html +86 -0
  446. data/app/assets/components/web-animations-js/test/testcases/auto-test-shorthand-checks.js +197 -0
  447. data/app/assets/components/web-animations-js/test/testcases/auto-test-shorthand.html +115 -0
  448. data/app/assets/components/web-animations-js/test/testcases/auto-test-start-time-checks.js +58 -0
  449. data/app/assets/components/web-animations-js/test/testcases/auto-test-start-time-iterations-checks.js +92 -0
  450. data/app/assets/components/web-animations-js/test/testcases/auto-test-start-time-iterations.html +107 -0
  451. data/app/assets/components/web-animations-js/test/testcases/auto-test-start-time.html +90 -0
  452. data/app/assets/components/web-animations-js/test/testcases/auto-test-svg-anim-checks.js +23 -0
  453. data/app/assets/components/web-animations-js/test/testcases/auto-test-svg-anim.html +39 -0
  454. data/app/assets/components/web-animations-js/test/testcases/auto-test-svg-circle-checks.js +23 -0
  455. data/app/assets/components/web-animations-js/test/testcases/auto-test-svg-circle.html +38 -0
  456. data/app/assets/components/web-animations-js/test/testcases/auto-test-svg-color-checks.js +20 -0
  457. data/app/assets/components/web-animations-js/test/testcases/auto-test-svg-color.html +36 -0
  458. data/app/assets/components/web-animations-js/test/testcases/auto-test-text-shadow-checks.js +20 -0
  459. data/app/assets/components/web-animations-js/test/testcases/auto-test-text-shadow.html +37 -0
  460. data/app/assets/components/web-animations-js/test/testcases/auto-test-timing-functions-checks.js +89 -0
  461. data/app/assets/components/web-animations-js/test/testcases/auto-test-timing-functions.html +77 -0
  462. data/app/assets/components/web-animations-js/test/testcases/auto-test-to-animation-checks.js +58 -0
  463. data/app/assets/components/web-animations-js/test/testcases/auto-test-to-animation.html +83 -0
  464. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-3d-checks.js +134 -0
  465. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-3d.html +123 -0
  466. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-functions-checks.js +160 -0
  467. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-functions.html +158 -0
  468. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-origin-checks.js +37 -0
  469. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-origin.html +80 -0
  470. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-primitives-checks.js +292 -0
  471. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-primitives.html +97 -0
  472. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-units-checks.js +202 -0
  473. data/app/assets/components/web-animations-js/test/testcases/auto-test-transform-units.html +98 -0
  474. data/app/assets/components/web-animations-js/test/testcases/auto-test-visibility-checks.js +54 -0
  475. data/app/assets/components/web-animations-js/test/testcases/auto-test-visibility.html +80 -0
  476. data/app/assets/components/web-animations-js/test/testcases/auto-test-wrapping-bug-checks.js +58 -0
  477. data/app/assets/components/web-animations-js/test/testcases/auto-test-wrapping-bug.html +60 -0
  478. data/app/assets/components/web-animations-js/test/testcases/background.png +0 -0
  479. data/app/assets/components/web-animations-js/test/testcases/disabled-auto-test-change-playback-rate.html +65 -0
  480. data/app/assets/components/web-animations-js/test/testcases/disabled-auto-test-position-list-type.html +103 -0
  481. data/app/assets/components/web-animations-js/test/testcases/disabled-media.html +439 -0
  482. data/app/assets/components/web-animations-js/test/testcases/disabled-test-compositing-order.html +112 -0
  483. data/app/assets/components/web-animations-js/test/testcases/impl-test-deprecation.html +85 -0
  484. data/app/assets/components/web-animations-js/test/testcases/impl-test-from-css-value.html +219 -0
  485. data/app/assets/components/web-animations-js/test/testcases/impl-test-paced-timing-function.html +83 -0
  486. data/app/assets/components/web-animations-js/test/testcases/impl-test-totimelinetime.html +37 -0
  487. data/app/assets/components/web-animations-js/test/testcases/impl-unit-test-position-type.html +256 -0
  488. data/app/assets/components/web-animations-js/test/testcases/manual-test-add-player-onend.html +57 -0
  489. data/app/assets/components/web-animations-js/test/testcases/manual-test-preset-timings.html +71 -0
  490. data/app/assets/components/web-animations-js/test/testcases/manual-test-step.html +88 -0
  491. data/app/assets/components/web-animations-js/test/testcases/small.mp4 +0 -0
  492. data/app/assets/components/web-animations-js/test/testcases/small.webm +0 -0
  493. data/app/assets/components/web-animations-js/test/testcases/test-bounds.html +69 -0
  494. data/app/assets/components/web-animations-js/test/testcases/test-document-timeline.html +53 -0
  495. data/app/assets/components/web-animations-js/test/testcases/test-dynamic-load.html +65 -0
  496. data/app/assets/components/web-animations-js/test/testcases/test-fill-auto.html +78 -0
  497. data/app/assets/components/web-animations-js/test/testcases/test-getcurrent.html +324 -0
  498. data/app/assets/components/web-animations-js/test/testcases/test-keyframe-animation-effect.html +248 -0
  499. data/app/assets/components/web-animations-js/test/testcases/test-keyframe-composite-operation.html +182 -0
  500. data/app/assets/components/web-animations-js/test/testcases/test-null-target.html +66 -0
  501. data/app/assets/components/web-animations-js/test/testcases/test-pause-for-testing.html +52 -0
  502. data/app/assets/components/web-animations-js/test/testcases/test-player-addeventlistener.html +161 -0
  503. data/app/assets/components/web-animations-js/test/testcases/test-player-cleanup.html +79 -0
  504. data/app/assets/components/web-animations-js/test/testcases/test-player-finish-event.html +101 -0
  505. data/app/assets/components/web-animations-js/test/testcases/test-player-sort.html +48 -0
  506. data/app/assets/components/web-animations-js/test/testcases/test-player.html +786 -0
  507. data/app/assets/components/web-animations-js/test/testcases/test-pseudo-element-reference.html +38 -0
  508. data/app/assets/components/web-animations-js/test/testcases/test-repeated-pause.html +54 -0
  509. data/app/assets/components/web-animations-js/test/testcases/test-restart.html +115 -0
  510. data/app/assets/components/web-animations-js/test/testcases/test-reversed-player-active-phase.html +28 -0
  511. data/app/assets/components/web-animations-js/test/testcases/test-rotation-not-reversed.html +55 -0
  512. data/app/assets/components/web-animations-js/test/testcases/test-update-state.html +113 -0
  513. data/app/assets/components/web-animations-js/test/testcases/unit-test-clone.html +80 -0
  514. data/app/assets/components/web-animations-js/test/testcases/unit-test-delay.html +66 -0
  515. data/app/assets/components/web-animations-js/test/testcases/unit-test-dom-operations.html +164 -0
  516. data/app/assets/components/web-animations-js/test/testcases/unit-test-duration.html +66 -0
  517. data/app/assets/components/web-animations-js/test/testcases/unit-test-get-siblings.html +112 -0
  518. data/app/assets/components/web-animations-js/test/testcases/unit-test-modify-timing-params.html +105 -0
  519. data/app/assets/components/web-animations-js/test/testcases/unit-test-null-effect.html +43 -0
  520. data/app/assets/components/web-animations-js/test/testcases/unit-test-set-parent.html +111 -0
  521. data/app/assets/components/web-animations-js/test/testcases/unit-test-testharness-failure.html +54 -0
  522. data/app/assets/components/web-animations-js/test/testcases/unit-test-testharness.html +248 -0
  523. data/app/assets/components/web-animations-js/test/testcases/unit-test-unpause.html +68 -0
  524. data/app/assets/components/web-animations-js/test/testcases.js +93 -0
  525. data/app/assets/components/web-animations-js/test/testharness_timing.css +75 -0
  526. data/app/assets/components/web-animations-js/test/update-testcases.py +63 -0
  527. data/app/assets/components/web-animations-js/tools/android/config.sh +8 -0
  528. data/app/assets/components/web-animations-js/tools/android/setup.sh +152 -0
  529. data/app/assets/components/web-animations-js/tools/android/stop.sh +20 -0
  530. data/app/assets/components/web-animations-js/tools/python/requirements.txt +12 -0
  531. data/app/assets/components/web-animations-js/tools/python/run-tests.py +813 -0
  532. data/app/assets/components/web-animations-js/tools/python/setup.sh +60 -0
  533. data/app/assets/components/web-animations-js/tutorial/basic-animations/basic-animation-exercise-1.html +62 -0
  534. data/app/assets/components/web-animations-js/tutorial/basic-animations/basic-animation.html +120 -0
  535. data/app/assets/components/web-animations-js/tutorial/iframe-contents.html +29 -0
  536. data/app/assets/components/web-animations-js/tutorial/jquery.js +9555 -0
  537. data/app/assets/components/web-animations-js/tutorial/page-load.js +114 -0
  538. data/app/assets/components/web-animations-js/tutorial/parallel/parallel-exercise-1.html +58 -0
  539. data/app/assets/components/web-animations-js/tutorial/parallel/parallel.html +101 -0
  540. data/app/assets/components/web-animations-js/tutorial/sample-tutorial.html +44 -0
  541. data/app/assets/components/web-animations-js/tutorial/try-it-yourself.js +216 -0
  542. data/app/assets/components/web-animations-js/tutorial/tutorial-style.css +344 -0
  543. data/app/assets/components/web-animations-js/tutorial/tutorial-testing.js +84 -0
  544. data/app/assets/components/{core/animation → web-animations-js}/web-animations.js +77 -214
  545. data/lib/polymer-paper-rails/version.rb +1 -1
  546. metadata +540 -61
  547. data/app/assets/components/core/animation/web-animations.html.erb +0 -1
  548. data/app/assets/components/core/icon/core-icon.html.erb +0 -126
  549. data/app/assets/components/core/input/core-input.css +0 -35
  550. data/app/assets/components/core/list/core-list.css +0 -20
  551. data/app/assets/components/core/list/core-list.html.erb +0 -403
  552. data/app/assets/components/core/transition/core-transition-css.html.erb +0 -76
  553. data/app/assets/components/core/transition/core-transition.html.erb +0 -44
  554. data/app/assets/components/paper-input/error-100.png +0 -0
  555. data/app/assets/components/paper-input/error-200.png +0 -0
  556. data/app/assets/components/paper-input/paper-input.html.erb +0 -398
  557. data/app/assets/components/paper-input/paper-input.scss +0 -203
  558. data/app/assets/components/paper-menu-button/paper-menu-button-overlay.html.erb +0 -86
@@ -0,0 +1,52 @@
1
+ <!--
2
+ Copyright 2013 Google Inc. All Rights Reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ -->
16
+
17
+ <!DOCTYPE html><meta charset="UTF-8">
18
+
19
+ <style>
20
+ .anim {
21
+ position: absolute;
22
+ width: 50px;
23
+ height: 50px;
24
+ top: 0px;
25
+ border-radius: 50%;
26
+ }
27
+ </style>
28
+ <div class='anim' id='a' style='left: 0px; background-color: lightsteelblue'></div>
29
+ <div class='anim' id='b' style='left: 450px; background-color: red'></div>
30
+ <script src='../bootstrap.js'></script>
31
+ <script>
32
+ 'use strict';
33
+ var downRed = new AnimationGroup(
34
+ [new Animation(document.querySelector('#a'), {top: '600px'}, 4)]);
35
+ var downBlue = new AnimationGroup(
36
+ [new Animation(document.querySelector('#b'), {top: '600px'}, 4)],
37
+ {delay: 1});
38
+ document.timeline.play(downRed);
39
+ document.timeline.play(downBlue);
40
+ document.timeline._pauseAnimationsForTesting(2);
41
+
42
+ timing_test(function() {
43
+ at(0, function() {
44
+ assert_styles('#a', {'top':'300px'})
45
+ assert_styles('#b', {'top':'150px'})
46
+ });
47
+ at(12, function() {
48
+ assert_styles('#a', {'top':'300px'})
49
+ assert_styles('#b', {'top':'150px'})
50
+ });
51
+ }, 'Pausing all animations should work when players have different start delays.')
52
+ </script>
@@ -0,0 +1,161 @@
1
+ <!--
2
+ Copyright 2014 Google Inc. All Rights Reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ -->
16
+
17
+ <!DOCTYPE html><meta charset="UTF-8">
18
+ <style>
19
+ #target {
20
+ position: absolute;
21
+ left: 0px;
22
+ top: 0px;
23
+ width: 100px;
24
+ height: 100px;
25
+ background-color: green;
26
+ }
27
+ </style>
28
+ <div id="target"></div>
29
+ <script src="../bootstrap.js"></script>
30
+ <script>
31
+ 'use strict';
32
+
33
+ function createPlayer() {
34
+ return target.animate({ left: '100px' }, {
35
+ iterations: 2,
36
+ duration: 0.25,
37
+ });
38
+ }
39
+
40
+ var player;
41
+
42
+ player = createPlayer();
43
+ var singleEventHandler = false;
44
+ player.addEventListener('finish', function() { singleEventHandler = true; })
45
+ var testA = async_test('Check finish event with single handler');
46
+ player.addEventListener('finish', function() {
47
+ testA.step(function() { assert_true(singleEventHandler); });
48
+ testA.done();
49
+ });
50
+
51
+ player = createPlayer();
52
+ var eventHandlingCount = 0;
53
+ var addMultipleTimes = function() { eventHandlingCount++; };
54
+ player.addEventListener('finish', addMultipleTimes);
55
+ player.addEventListener('finish', addMultipleTimes);
56
+ var testB = async_test('Check finish event with single handler added multiple times');
57
+ player.addEventListener('finish', function() {
58
+ testB.step(function() { assert_equals(eventHandlingCount, 1); });
59
+ testB.done();
60
+ });
61
+
62
+ player = createPlayer();
63
+ var multiEventHandlerA = false;
64
+ var multiEventHandlerB = false;
65
+ var multiEventHandlerC = false;
66
+ player.addEventListener('finish', function() { multiEventHandlerA = true; })
67
+ player.addEventListener('finish', function() { multiEventHandlerB = true; })
68
+ player.addEventListener('finish', function() { multiEventHandlerC = true; })
69
+ var testC = async_test('Check finish event with multiple handlers');
70
+ player.addEventListener('finish', function() {
71
+ testC.step(function() { assert_true(multiEventHandlerA && multiEventHandlerB && multiEventHandlerC); });
72
+ testC.done();
73
+ });
74
+
75
+ player = createPlayer();
76
+ var retainEventHandler = false;
77
+ player.addEventListener('finish', function() { retainEventHandler = true; });
78
+ var removeEventHandler = true;
79
+ var eventHandlerToRemove = function() { removeEventHandler = false; }
80
+ player.addEventListener('finish', eventHandlerToRemove);
81
+ player.removeEventListener('finish', eventHandlerToRemove);
82
+ var testD = async_test('Check finish event with event handler removed');
83
+ player.addEventListener('finish', function() {
84
+ testD.step(function() { assert_true(retainEventHandler && removeEventHandler); });
85
+ testD.done();
86
+ });
87
+
88
+ player = createPlayer();
89
+ var onEventHandler = false;
90
+ player.onfinish = function() { onEventHandler = true; };
91
+ var testE = async_test('Check onfinish handler');
92
+ player.addEventListener('finish', function() {
93
+ testE.step(function() { assert_true(onEventHandler); });
94
+ testE.done();
95
+ });
96
+
97
+ player = createPlayer();
98
+ var clearOnEventHandler = true;
99
+ player.onfinish = function() { clearOnEventHandler = false; };
100
+ player.onfinish = null;
101
+ var testF = async_test('Check clearing onfinish handler');
102
+ player.addEventListener('finish', function() {
103
+ testF.step(function() { assert_true(clearOnEventHandler); });
104
+ testF.done();
105
+ });
106
+
107
+ player = createPlayer();
108
+ var onEventOrdering = '';
109
+ player.addEventListener('finish', function() { onEventOrdering += 'a'; });
110
+ player.onfinish = function() { onEventOrdering += '!'; };
111
+ player.addEventListener('finish', function() { onEventOrdering += 'b'; });
112
+ player.onfinish = function() { onEventOrdering += 'c'; };
113
+ player.addEventListener('finish', function() { onEventOrdering += 'd'; });
114
+ var testG = async_test('Check onfinish handler ordering and overriding');
115
+ player.addEventListener('finish', function() {
116
+ testG.step(function() { assert_equals(onEventOrdering, 'abcd'); });
117
+ testG.done();
118
+ });
119
+
120
+ player = createPlayer();
121
+ var onEventOrderingAfterRemoval = '';
122
+ var eventHandlerToRemoveA = function() { onEventOrderingAfterRemoval += '!'; };
123
+ var eventHandlerToRemoveB = function() { onEventOrderingAfterRemoval += '!!'; };
124
+ player.addEventListener('finish', function() { onEventOrderingAfterRemoval += 'a'; });
125
+ player.addEventListener('finish', eventHandlerToRemoveA);
126
+ player.onfinish = function() { onEventOrderingAfterRemoval += 'b'; };
127
+ player.addEventListener('finish', function() { onEventOrderingAfterRemoval += 'c'; });
128
+ player.addEventListener('finish', eventHandlerToRemoveB);
129
+ player.removeEventListener('finish', eventHandlerToRemoveA);
130
+ player.removeEventListener('finish', eventHandlerToRemoveB);
131
+ var testH = async_test('Check onfinish handler ordering after removal');
132
+ player.addEventListener('finish', function() {
133
+ testH.step(function() { assert_equals(onEventOrderingAfterRemoval, 'abc'); });
134
+ testH.done();
135
+ });
136
+
137
+ player = createPlayer();
138
+ var onEventDuplication = 0;
139
+ var duplicateFunctionA = function() { onEventDuplication += 1; };
140
+ player.addEventListener('finish', duplicateFunctionA);
141
+ player.onfinish = duplicateFunctionA;
142
+ var testI = async_test('Check onfinish handler duplication');
143
+ player.addEventListener('finish', function() {
144
+ testI.step(function() { assert_equals(onEventDuplication, 2); });
145
+ testI.done();
146
+ });
147
+
148
+ player = createPlayer();
149
+ var eventDuplication = 0;
150
+ var duplicateFunctionB = function() { eventDuplication += 1; };
151
+ player.addEventListener('finish', duplicateFunctionB);
152
+ player.addEventListener('finish', duplicateFunctionB);
153
+ var testJ = async_test('Check finish event handler duplication');
154
+ player.addEventListener('finish', function() {
155
+ testJ.step(function() { assert_equals(eventDuplication, 1); });
156
+ testJ.done();
157
+ });
158
+
159
+ timing_test(function() { at(1, function(){}); }, 'Force testharness to execute to 1 second.');
160
+
161
+ </script>
@@ -0,0 +1,79 @@
1
+ <!--
2
+ Copyright 2013 Google Inc. All Rights Reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ -->
16
+ <!DOCTYPE html><meta charset="UTF-8">
17
+ <div id='anim'></div>
18
+ <script>
19
+ var expected_failures = [
20
+ {
21
+ browser_configurations: [{ msie: true }],
22
+ tests: ['t=(3|5)s'],
23
+ message: 'IE returns rgba.',
24
+ }
25
+ ];
26
+ </script>
27
+ <script src="../bootstrap.js"></script>
28
+ <script>
29
+ "use strict";
30
+
31
+
32
+ document.timeline.play(new Animation(null, {},
33
+ {duration: 1, fill: 'forwards'}));
34
+ document.timeline.play(new Animation(null, {},
35
+ {duration: 1, fill: 'none'}));
36
+ var player = document.timeline.play(new Animation(anim,
37
+ [{backgroundColor: 'red'}, {backgroundColor: 'white'}],
38
+ {duration: 1, fill: 'none'}));
39
+
40
+ timing_test(function() {
41
+ at(0.5, function() {
42
+ assert_equals(document.timeline.getCurrentPlayers().length, 3,
43
+ "All animations current");
44
+ assert_equals(_WebAnimationsTestingUtilities._knownPlayers.length, 3,
45
+ "All animations known");
46
+ });
47
+ at(2, function() {
48
+ assert_equals(document.timeline.getCurrentPlayers().length, 0,
49
+ "No animations current");
50
+ assert_equals(_WebAnimationsTestingUtilities._knownPlayers.length, 1,
51
+ "Only animations with forward fill known");
52
+ });
53
+ at(3, function() {
54
+ player.currentTime = 0;
55
+ assert_equals(document.timeline.getCurrentPlayers().length, 1,
56
+ "Only restarted animation current");
57
+ assert_equals(_WebAnimationsTestingUtilities._knownPlayers.length, 2,
58
+ "Restarted and forward filling animations known");
59
+ assert_styles('#anim', [{"backgroundColor": 'rgb(255, 0, 0)'}],
60
+ "takes effect immediately");
61
+ });
62
+ at(3.5, function() {
63
+ assert_equals(document.timeline.getCurrentPlayers().length, 1,
64
+ "Only restarted animation current");
65
+ assert_equals(_WebAnimationsTestingUtilities._knownPlayers.length, 2,
66
+ "Restarted and forward filling animations known");
67
+ })
68
+
69
+ at(5, function() {
70
+ player.source.timing.duration = 4;
71
+ assert_equals(document.timeline.getCurrentPlayers().length, 1,
72
+ "Only restarted animation current");
73
+ assert_equals(_WebAnimationsTestingUtilities._knownPlayers.length, 2,
74
+ "Restarted and forward filling animations known");
75
+ assert_styles('#anim', [{"backgroundColor": 'rgb(255, 64, 64)'}],
76
+ "takes effect immediately");
77
+ });
78
+ });
79
+ </script>
@@ -0,0 +1,101 @@
1
+ <!--
2
+ Copyright 2014 Google Inc. All Rights Reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ -->
16
+
17
+ <!DOCTYPE html><meta charset="UTF-8">
18
+ <script src="../bootstrap.js"></script>
19
+ <script>
20
+ 'use strict';
21
+
22
+ function createPlayer() {
23
+ return document.timeline.play(new Animation(null, null, 200));
24
+ }
25
+
26
+ function assertFinishEvents(description, player, expectedEvents) {
27
+ var i = 0;
28
+
29
+ expectedEvents.forEach(function (expectedEvent, expectedIndex) {
30
+ var asyncTestHandle = async_test(description + ', t=' + expectedEvent.timelineTime);
31
+ // Testharness quirk: async_test won't time out if step is never called.
32
+ at(expectedEvent.timelineTime, function() {asyncTestHandle.step(function() {});});
33
+ player.addEventListener('finish', function(event) {
34
+ if (i === expectedIndex) {
35
+ asyncTestHandle.step(function() {
36
+ assert_equals(event.currentTime, expectedEvent.currentTime, 'event.currentTime');
37
+ assert_equals(event.timelineTime, expectedEvent.timelineTime, 'event.timelineTime');
38
+ assert_equals(event.target, player, 'event.target');
39
+ assert_approx_equals(document.timeline.currentTime, expectedEvent.timelineTime, 50, 'timeline.currentTime');
40
+ });
41
+ asyncTestHandle.done();
42
+ }
43
+ });
44
+ });
45
+
46
+ player.addEventListener('finish', function(event) {
47
+ if (i >= expectedEvents.length) {
48
+ test(function() {assert_true(false);}, 'More than ' + expectedEvents.length + ' events fired for test "' + description + '"');
49
+ }
50
+ i++;
51
+ });
52
+ }
53
+
54
+ var player;
55
+
56
+ player = createPlayer();
57
+ assertFinishEvents('Players should fire finished events when they complete', player, [
58
+ {timelineTime: 200, currentTime: 200},
59
+ ]);
60
+
61
+ player = createPlayer();
62
+ player.source = null;
63
+ assertFinishEvents('A player with no source should report finished on the next sample', player, [
64
+ {timelineTime: 0, currentTime: 0},
65
+ ]);
66
+
67
+ player = createPlayer();
68
+ player.currentTime = 200;
69
+ assertFinishEvents('Jumping to the end of a player\'s animation should fire the finish event', player, [
70
+ {timelineTime: 0, currentTime: 200},
71
+ ]);
72
+
73
+ player = createPlayer();
74
+ player.currentTime = 200;
75
+ player.currentTime = 1;
76
+ player.currentTime = 200;
77
+ assertFinishEvents('Jumping to the end of a player\'s animation twice should fire the finish event once', player, [
78
+ {timelineTime: 0, currentTime: 200},
79
+ ]);
80
+
81
+ var jumpingPlayer = createPlayer();
82
+ jumpingPlayer.currentTime = 200;
83
+ at(100, function() {jumpingPlayer.currentTime = 100;});
84
+ at(200, function() {jumpingPlayer.currentTime = 200;});
85
+ assertFinishEvents('Jumping to the end of a player\'s animation twice on different frames should fire the finish event twice', jumpingPlayer, [
86
+ {timelineTime: 0, currentTime: 200},
87
+ {timelineTime: 200, currentTime: 200},
88
+ ]);
89
+
90
+ var reversedPlayer = createPlayer();
91
+ reversedPlayer.currentTime = 100;
92
+ reversedPlayer.reverse();
93
+ assertFinishEvents('Reversed players should fire finish events when they reach the start of their animation', reversedPlayer, [
94
+ {timelineTime: 100, currentTime: 0},
95
+ ]);
96
+
97
+ // Force the test harness to sample periodically.
98
+ for (var t = 0; t < 500; t += 100) {
99
+ at(t, function() {});
100
+ }
101
+ </script>
@@ -0,0 +1,48 @@
1
+ <!--
2
+ Copyright 2013 Google Inc. All Rights Reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ -->
16
+
17
+ <!DOCTYPE html><meta charset="UTF-8">
18
+
19
+ <script src="../bootstrap.js"></script>
20
+ <script>
21
+ "use strict";
22
+
23
+ var globalVar = 0;
24
+ var incGlobalVar = function() {
25
+ globalVar += 1;
26
+ }
27
+ var failed = false;
28
+
29
+ for (var i = 0; i < 100; i++) {
30
+ document.timeline.play(new Animation(null, incGlobalVar, 1));
31
+ }
32
+
33
+ document.timeline.play(new Animation(null, function() {
34
+ if (globalVar !== 100) {
35
+ failed = true;
36
+ }
37
+ globalVar = 0;
38
+ }, 1));
39
+
40
+ // ensure at least one point is sampled
41
+ at(0, function() { });
42
+
43
+ timing_test(function() {
44
+ at(1, function() { assert_true(!failed); });
45
+ },
46
+ "the 101st animation should always come 101st");
47
+
48
+ </script>
@@ -0,0 +1,786 @@
1
+ <!--
2
+ Copyright 2013 Google Inc. All Rights Reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+
16
+ Written by Steph McArthur
17
+ -->
18
+
19
+ <!DOCTYPE html><meta charset="UTF-8">
20
+ <div id="anim"></div>
21
+
22
+ <script src="../bootstrap.js"></script>
23
+ <script>
24
+ var animation = new Animation(anim, {left: "100px"}, 100);
25
+ var dt = document.timeline;
26
+
27
+ // Test AnimationPlayer.timeline.
28
+ var player1 = dt.play(animation);
29
+ test(function() {assert_equals(player1.timeline, document.timeline)},
30
+ "AnimationPlayer.timeline is document timeline");
31
+
32
+ // Test that TimedItem.player and AnimationPlayer.source are consistent.
33
+ test(function() {assert_equals(player1.source, animation)},
34
+ "AnimationPlayer.source should be the Animation");
35
+ test(function() {assert_equals(animation.player, player1)},
36
+ "TimedItem.player should be the AnimationPlayer");
37
+
38
+ // Test that play() always returns a new AnimationPlayer.
39
+ var player2 = dt.play(animation);
40
+ test(function() {assert_not_equals(player2, player1)},
41
+ "Repeated calls to play() should create a new AnimationPlayer");
42
+ test(function() {assert_equals(animation.player, player2)},
43
+ "Repeated play(): TimedItem.player should be the AnimationPlayer");
44
+ test(function() {assert_equals(player2.source, animation)},
45
+ "Repeated play(): AnimationPlayer.source should be the Animation");
46
+ test(function() {assert_equals(player2.startTime, player1.startTime)},
47
+ "Repeated play(): Players should have same start time");
48
+
49
+ // Test explicit setting of AnimationPlayer.source.
50
+ player1.source = animation;
51
+ test(function() {assert_equals(player2.source, null)},
52
+ "Set AnimationPlayer.source: Old source should be null");
53
+ test(function() {assert_equals(player1.source, animation)},
54
+ "Set AnimationPlayer.source: New source should be the Animation");
55
+ test(function() {assert_equals(animation.player, player1)},
56
+ "Set AnimationPlayer.source: TimedItem.player should be the AnimationPlayer");
57
+
58
+ // Test that TimedItem.player gives null on a detached tree.
59
+ var animation2 =
60
+ new Animation(document.getElementById("anim"), {left: "100px"});
61
+ var animationGroup = new AnimationGroup([animation2]);
62
+ test(function() {assert_equals(animationGroup.player, null)},
63
+ "TimedItem.player should be null for root");
64
+ test(function() {assert_equals(animation2.player, null)},
65
+ "TimedItem.player should be null for leaf");
66
+
67
+ // Test that TimedItem.player remotes to the root of the tree.
68
+ var player3 = dt.play(animationGroup);
69
+ test(function() {assert_equals(animation2.player, player3)},
70
+ "TimedItem.player should remote");
71
+
72
+ // Test that calling play() on a TimedItem with a parent results in
73
+ // reparenting.
74
+ var player4 = dt.play(animation2);
75
+ test(function() {assert_equals(animation2.parent, null)},
76
+ "Animation should be reparented");
77
+ test(function() {assert_equals(animationGroup.children.length, 0)},
78
+ "Animation parent should be updated, leaving animationGroup.children.length = 0");
79
+ test(function() {assert_equals(player4.source, animation2)},
80
+ "AnimationPlayer should use reparented animation");
81
+
82
+ // Test that setting a parent on a TimedItem with an AnimationPlayer causes the
83
+ // player to be disconnected.
84
+ animationGroup.append(animation2);
85
+ test(function() {assert_equals(animationGroup.player, player3)},
86
+ "TimedItem.player should be updated for root");
87
+ test(function() {assert_equals(animation2.player, player3)},
88
+ "TimedItem.player should be updated for leaf");
89
+ test(function() {assert_equals(player4.source, null)},
90
+ "AnimationPlayer.source should be updated");
91
+ test(function() {assert_equals(animation2.parent, animationGroup)},
92
+ "Animation.parent should be updated");
93
+ test(function() {assert_equals(animationGroup.children.length, 1)},
94
+ "Animation parent should be updated, leaving animationGroup.children.length = 1");
95
+ test(function() {assert_equals(animationGroup.children[0], animation2)},
96
+ "Animation parent should be updated");
97
+
98
+ // Test that currentTime is zero before timeline starts.
99
+ test(function() {assert_equals(document.timeline.play(animation).currentTime, 0)},
100
+ "currentTime should be zero before Timeline starts");
101
+
102
+ // Test that startTime is zero before timeline starts.
103
+ test(function() {assert_equals(document.timeline.play(animation).startTime, 0)},
104
+ "startTime should be zero before Timeline starts");
105
+
106
+ // Test that setting currentTime has an effect before the timeline starts.
107
+ var player5 = dt.play(animation);
108
+ player5.currentTime = 42;
109
+ test(function() {assert_equals(player5.currentTime, 42)},
110
+ "player5 can be seeked before timeline starts");
111
+ timing_test(function() {
112
+ at(0.1, function() {
113
+ assert_equals(player5.currentTime, 42.1);
114
+ });
115
+ }, "player5's updates to currentTime should persist after Timeline starts");
116
+
117
+ // Test that setting startTime has an effect before the timeline starts.
118
+ var player6 = dt.play(animation.clone());
119
+ player6.startTime = 42;
120
+ test(function() {assert_equals(player6.currentTime, -42)},
121
+ "player6's currentTime should always be zero before Timeline starts");
122
+
123
+ // Test that an AnimationPlayer's TimedItem gets a null inherited time until the
124
+ // timeline starts.
125
+ var animation1 = new Animation(document.getElementById("anim"), {left: "100px"});
126
+ dt.play(animation1);
127
+ test(function() {assert_equals(animation1.localTime, null)},
128
+ "TimedItem's inherited time, and thus " +
129
+ "localTime should be null before Timeline starts");
130
+ timing_test(function() {
131
+ at(0.0, function() {assert_not_equals(animation1.localTime, null)});
132
+ }, "TimedItem's inherited time " +
133
+ "and thus localTime should not be null after Timeline starts");
134
+
135
+ // Test that TimedItem is updated immediately on calling Timeline.play() after
136
+ // the timeline starts.
137
+ var animation4 = new Animation(
138
+ document.getElementById("anim"), {left: "100px"});
139
+ test(function() {assert_equals(animation4.localTime, null)},
140
+ "localTime should be null before playing");
141
+ timing_test(function() {
142
+ at(0.0, function() {
143
+ document.timeline.play(animation4);
144
+ assert_equals(animation4.localTime, 0)
145
+ });
146
+ }, "localTime should be set by playing");
147
+
148
+ // Test that updates to currentTime take immediate effect.
149
+ timing_test(function() {
150
+ at(0.0, function() {
151
+ var animation5 = new Animation(
152
+ document.getElementById("anim"), {left: "100px"}, 100);
153
+ document.timeline.play(animation5).currentTime = 42;
154
+ assert_equals(animation5.localTime, 42);
155
+ });
156
+ }, "Updates to AnimationPlayer.currentTime should take immediate effect");
157
+
158
+ // Test that updates to source take immediate effect.
159
+ timing_test(function() {
160
+ at(0.0, function() {
161
+ var player = document.timeline.play(new Animation(
162
+ document.getElementById("anim"), {left: "100px"}));
163
+ var animation7 = new Animation(
164
+ document.getElementById("anim"), {left: "100px"});
165
+ player.source = animation7;
166
+ assert_equals(animation7.localTime, 0);
167
+ });
168
+ }, "Updates to AnimationPlayer.source should take immediate effect");
169
+
170
+ function createPlayer(duration) {
171
+ return document.timeline.play(new Animation(null, null, duration));
172
+ }
173
+
174
+ // Tests the initial values of the AnimationPlayer API.
175
+ timing_test(function() {
176
+ at(0, function() {
177
+ var anim = new Animation(null, null, 3);
178
+ assert_equals(anim.player, null, "player should be null initially");
179
+
180
+ // Check state after playing
181
+ document.timeline.play(anim);
182
+ assert_not_equals(anim.player, null, "player should be not be null when playing");
183
+ assert_equals(anim.player.source, anim, "Initial source content");
184
+ assert_equals(anim.player.timeline, document.timeline, "Initial document timeline");
185
+ assert_equals(anim.player.startTime, document.timeline.currentTime, "Initial start time");
186
+ assert_equals(anim.player.currentTime, 0, "Initial current time");
187
+ assert_equals(anim.player.timeLag, 0, "Initial time lag");
188
+ assert_equals(anim.player.playbackRate, 1, "Initial playback rate");
189
+ assert_false(anim.player.paused, "Initial paused state");
190
+ assert_false(anim.player.finished, "Initial finished state");
191
+ });
192
+ }, "Initial state");
193
+
194
+ // Test paused states after pausing.
195
+ test(function() {
196
+ var player = createPlayer(3);
197
+
198
+ // Pause
199
+ player.pause();
200
+ assert_true(player.paused, "Paused state after pausing");
201
+ assert_false(player.finished, "Finished state after pausing");
202
+
203
+ // Unpause
204
+ player.play();
205
+ assert_false(player.paused, "Paused state after unpausing");
206
+ assert_false(player.finished, "Finished state after unpausing");
207
+ }, "Pause");
208
+
209
+ // Test seeking behind startTime for a forwards player.
210
+ timing_test(function() {
211
+ var player = createPlayer(3);
212
+
213
+ // Seek before start
214
+ player.currentTime = -0.1;
215
+ assert_equals(player.currentTime, -0.1, "Current time after seeking before start");
216
+ assert_false(player.paused, "Paused state after seeking before start");
217
+ assert_false(player.finished, "Finished state after seeking before start");
218
+
219
+ // Check player does progress
220
+ at(0.2, function() {
221
+ assert_equals(player.currentTime, 0.1, "Current time should progress");
222
+ });
223
+ }, "Seek behind content (forwards)");
224
+
225
+ // Test players do not get bounded after updating startTime such that they are before the start time.
226
+ timing_test(function() {
227
+ var player = createPlayer(3);
228
+
229
+ // Set start time in the future
230
+ player.startTime = 0.1;
231
+
232
+ // Check state of player
233
+ assert_equals(player.currentTime, -0.1, "Current time while waiting to start");
234
+ assert_false(player.paused, "Paused state while waiting to start");
235
+ assert_false(player.finished, "Finished state while waiting to start");
236
+
237
+ // Check player starts automatically
238
+ at(0.2, function() {
239
+ assert_equals(player.currentTime, 0.1, "Current time should progress");
240
+ assert_false(player.paused, "Paused state after starting");
241
+ assert_false(player.finished, "Finished state after starting");
242
+ });
243
+ }, "No bounding at start");
244
+
245
+ // Test players get bounded when they finish their source content.
246
+ timing_test(function() {
247
+ var player = createPlayer(3);
248
+
249
+ // Seek to just before end
250
+ player.currentTime = 2.9;
251
+
252
+ // Check state of player
253
+ assert_equals(player.currentTime, 2.9, "Current time just before end");
254
+ assert_false(player.paused, "Paused state just before end");
255
+ assert_false(player.finished, "Finished state just before end");
256
+
257
+ // Check player after finishing
258
+ at(0.2, function() {
259
+ assert_equals(player.currentTime, 3.0, "Current time when bounded progress");
260
+ assert_false(player.paused, "Paused state after ending");
261
+ assert_true(player.finished, "Finished state after ending");
262
+ });
263
+ }, "Limiting at end (seek with current time)");
264
+
265
+ // Test players get bounded when they finish their source content after altering start time.
266
+ timing_test(function() {
267
+ var player = createPlayer(3);
268
+
269
+ // Seek to just before end using the start time
270
+ player.startTime -= 2.9;
271
+
272
+ // Check state of player
273
+ assert_equals(player.currentTime, 2.9, "Current time just before end");
274
+ assert_false(player.paused, "Paused state just before end");
275
+ assert_false(player.finished, "Finished state just before end");
276
+
277
+ // Check player after finishing
278
+ at(0.2, function() {
279
+ assert_equals(player.currentTime, 3.0, "Current time when bounded progress");
280
+ assert_false(player.paused, "Paused state after ending");
281
+ assert_true(player.finished, "Finished state after ending");
282
+ });
283
+ }, "Limiting at end (seek with start time)");
284
+
285
+ // Test reversing a player prior to starting doesn't snap the current time to the beginning.
286
+ timing_test(function() {
287
+ var player = createPlayer(3);
288
+
289
+ // Seek before start
290
+ player.currentTime = -0.1;
291
+
292
+ // Check state
293
+ assert_equals(player.currentTime, -0.1, "Current time before reversing");
294
+ assert_false(player.finished, "Finished state before reversing");
295
+
296
+ // Reverse
297
+ player.reverse();
298
+ assert_equals(player.currentTime, -0.1, "Current time after reversing");
299
+ assert_true(player.finished, "Finished state after reversing");
300
+ assert_equals(player.playbackRate, -1, "Playback rate after reversing");
301
+
302
+ // Check player after some time
303
+ at(0.2, function() {
304
+ assert_equals(player.currentTime, -0.1, "Current time later");
305
+ assert_true(player.finished, "Finished state later");
306
+ });
307
+ }, "reverse() before start");
308
+
309
+ // Test reversing a player at the start causes the player to become bounded.
310
+ timing_test(function() {
311
+ var player = createPlayer(3);
312
+
313
+ // Reverse
314
+ player.reverse();
315
+ assert_equals(player.currentTime, 0, "Current time after reversing");
316
+ assert_true(player.finished, "Finished state after reversing");
317
+ assert_equals(player.playbackRate, -1, "Playback rate after reversing");
318
+
319
+ // Check player after some time
320
+ at(0.2, function() {
321
+ assert_equals(player.currentTime, 0, "Current time later");
322
+ assert_true(player.finished, "Finished state later");
323
+ });
324
+ }, "reverse() at start");
325
+
326
+ // Test reversing a player halfway through an animation.
327
+ timing_test(function() {
328
+ var player = createPlayer(3);
329
+
330
+ // Seek midway
331
+ player.currentTime = 1.5;
332
+
333
+ // Reverse
334
+ player.reverse();
335
+ assert_equals(player.currentTime, 1.5, "Current time after reversing");
336
+ assert_false(player.finished, "Finished state after reversing");
337
+ assert_equals(player.playbackRate, -1, "Playback rate after reversing");
338
+
339
+ // Check player after some time
340
+ at(0.2, function() {
341
+ assert_equals(player.currentTime, 1.3, "Current time when reversing");
342
+ assert_false(player.finished, "Finished state later");
343
+ });
344
+ }, "reverse() while playing");
345
+
346
+ // Test reversing a player that has ended starts playing backwards.
347
+ timing_test(function() {
348
+ var player = createPlayer(3);
349
+
350
+ // Seek to just before the end
351
+ player.currentTime = 2.9;
352
+
353
+ // Wait to finish
354
+ at(0.2, function() {
355
+ assert_equals(player.currentTime, 3.0, "Current time when finished");
356
+ assert_true(player.finished, "Finished state after finished");
357
+
358
+ // Reverse
359
+ player.reverse();
360
+ assert_equals(player.currentTime, 3.0, "Current time after reversing");
361
+ assert_false(player.finished, "Finished state after reversing");
362
+ assert_equals(player.playbackRate, -1, "Playback rate after reversing");
363
+
364
+ // Check we actually reverse
365
+ at(0.2, function() {
366
+ assert_equals(player.currentTime, 2.8, "Current time after beginning reverse");
367
+ assert_false(player.finished, "Finished state after reversing");
368
+ });
369
+ });
370
+ }, "reverse() when finished");
371
+
372
+ // Test reversing a player seeked past the end will snap back to the end.
373
+ timing_test(function() {
374
+ var player = createPlayer(3);
375
+
376
+ // Seek to past the end
377
+ player.currentTime = 4.0
378
+
379
+ player.reverse();
380
+ assert_equals(player.currentTime, 3.0, "Current time after reversing");
381
+ assert_false(player.finished, "Finished state after reversing");
382
+ assert_equals(player.playbackRate, -1, "Playback rate after reversing");
383
+
384
+ // Check we actually reverse
385
+ at(0.2, function() {
386
+ assert_equals(player.currentTime, 2.8, "Current time after beginning reverse");
387
+ assert_false(player.finished, "Finished state after reversing");
388
+ });
389
+ }, "reverse() when seeked past end");
390
+
391
+ // Test player current time after adjusting start time.
392
+ test(function() {
393
+ var player = createPlayer(3);
394
+
395
+ player.startTime = 1;
396
+
397
+ assert_equals(player.currentTime, -1, "currentTime while waiting to start");
398
+ assert_false(player.finished, "Finished state while waiting to start");
399
+
400
+ // Then put it in range
401
+ player.startTime -= 2;
402
+ assert_equals(player.currentTime, 1, "currentTime after updating start time");
403
+ assert_false(player.finished, "Finished state while after updating start time");
404
+ }, "Adjust start time (1)");
405
+
406
+ // Test player current time after adjusting start time and playing.
407
+ timing_test(function() {
408
+ var player = createPlayer(3);
409
+
410
+ player.startTime = 1;
411
+
412
+ assert_equals(player.currentTime, -1, "currentTime while waiting to start");
413
+ assert_false(player.finished, "Finished state while waiting to start");
414
+
415
+ // Then adjust start time
416
+ player.startTime -= 0.75;
417
+
418
+ // Check player is still waiting
419
+ assert_equals(player.currentTime, -0.25, "currentTime while waiting to start");
420
+ assert_false(player.finished, "Finished state while still waiting to start");
421
+
422
+ // Verify the time *did* update though
423
+ at(0.5, function() {
424
+ assert_equals(player.currentTime, 0.25, "currentTime after starting to play");
425
+ assert_false(player.finished, "Finished state after starting to play");
426
+ });
427
+ }, "Adjust start time (2)");
428
+
429
+ // Test player bounding by changing start time.
430
+ test(function() {
431
+ var player = createPlayer(3);
432
+
433
+ // Put it past the end
434
+ player.startTime = -4;
435
+ assert_equals(player.currentTime, 3, "currentTime after end");
436
+ assert_true(player.finished, "Finished state after end");
437
+ }, "Adjust start time (3)");
438
+
439
+ // Test bounding and unbounding a player by modifying start time.
440
+ test(function() {
441
+ var player = createPlayer(3);
442
+
443
+ // Put player in limited stage
444
+ player.startTime = -4;
445
+
446
+ assert_equals(player.currentTime, 3, "currentTime state while limited");
447
+ assert_true(player.finished, "Finished state while limited");
448
+
449
+ // Then put it in range
450
+ player.startTime += 2;
451
+ assert_equals(player.currentTime, 2, "currentTime after updating start time");
452
+ assert_false(player.finished, "Finished state while after updating start time");
453
+ }, "Adjust start time (4)");
454
+
455
+ // Test seeking past end of player.
456
+ timing_test(function() {
457
+ var player = createPlayer(3);
458
+ player.currentTime = 4;
459
+ assert_equals(player.currentTime, 4, "currentTime before waiting");
460
+ at(0.2, function() {
461
+ assert_equals(player.currentTime, 4, "currentTime after waiting");
462
+ });
463
+ }, "Seeking past player content end and waiting");
464
+
465
+ // Test seeking before start of reversed player.
466
+ timing_test(function() {
467
+ var player = createPlayer(3);
468
+ player.playbackRate = -1;
469
+ player.currentTime = -1;
470
+ assert_equals(player.currentTime, -1, "currentTime before waiting");
471
+ at(0.2, function() {
472
+ assert_equals(player.currentTime, -1, "currentTime after waiting");
473
+ });
474
+ }, "Seeking before reversed player content start and waiting");
475
+
476
+ // Test reversing the playback rate of a bounded player.
477
+ timing_test(function() {
478
+ var player = createPlayer(3);
479
+
480
+ // Set up player to start in 0.1s
481
+ player.startTime = 0.1;
482
+
483
+ // Check state
484
+ assert_equals(player.currentTime, -0.1, "currentTime after while waiting to start");
485
+ assert_false(player.finished, "Finished state while waiting to start");
486
+
487
+ // Reverse playbackRate
488
+ player.playbackRate = -1;
489
+
490
+ // We should maintain the same current time
491
+ assert_equals(player.currentTime, -0.1, "currentTime after updating playbackRate");
492
+ assert_true(player.finished, "Finished state after updating playbackRate");
493
+
494
+ // If we wait a while we should be stuck at the end
495
+ at(0.2, function() {
496
+ assert_equals(player.currentTime, -0.1, "currentTime after waiting");
497
+ assert_true(player.finished, "Finished state after waiting");
498
+
499
+ // Call play and we should start from the end
500
+ player.play();
501
+ assert_equals(player.currentTime, 3, "currentTime after play()");
502
+ assert_false(player.finished, "Finished state after play()");
503
+ });
504
+ }, "Reversing playbackRate before start");
505
+
506
+ // Test normal current time progression of a player after being bounded and unbounded.
507
+ timing_test(function() {
508
+ // Set up player
509
+ var player = createPlayer(3);
510
+
511
+ // Seek to bounded time
512
+ player.currentTime = 4;
513
+
514
+ // Check state
515
+ assert_equals(player.currentTime, 4, "currentTime while bounded");
516
+ assert_true(player.finished, "Finished state while bounded");
517
+
518
+ // Seek to unbounded time
519
+ player.currentTime = 2;
520
+ assert_equals(player.currentTime, 2, "currentTime while unbounded");
521
+ assert_false(player.finished, "Finished state while unbounded");
522
+
523
+ // Check it actually is playing
524
+ at(0.2, function() {
525
+ assert_equals(player.currentTime, 2.2, "Current time after playing unbounded");
526
+ });
527
+ }, "Seeking from end to playing");
528
+
529
+ // Test finishing and replaying a player in reverse.
530
+ timing_test(function() {
531
+ // Set up player
532
+ var player = createPlayer(3);
533
+
534
+ // Seek to middle of interval and reverse
535
+ player.currentTime = 2;
536
+ player.reverse();
537
+
538
+ // Check state
539
+ assert_equals(player.currentTime, 2, "currentTime after reversing");
540
+ assert_false(player.finished, "Finished state after reversing");
541
+ assert_equals(player.playbackRate, -1, "Playback rate after reversing");
542
+ player.finish();
543
+ assert_equals(player.currentTime, 0, "currentTime after finishing");
544
+ assert_true(player.finished, "Finished state after finishing");
545
+
546
+ // Then play again
547
+ player.play();
548
+ assert_equals(player.currentTime, 3, "currentTime after playing again");
549
+ assert_false(player.finished, "Finished state after playing again");
550
+
551
+ // Check if actually progresses
552
+ at(0.2, function() {
553
+ assert_equals(player.currentTime, 2.8, "Current time after playing for a while");
554
+ });
555
+ }, "play() on a finished reversed player");
556
+
557
+ // Test player.play() seeking to start when behind the source content.
558
+ timing_test(function() {
559
+ // Set up player to start in 2s
560
+ var player = createPlayer(3);
561
+ player.startTime = 2;
562
+
563
+ // Check it is waiting to start
564
+ assert_equals(player.currentTime, -2, "currentTime while waiting");
565
+ assert_false(player.finished, "Finished state while waiting");
566
+
567
+ // Call play()
568
+ player.play();
569
+ assert_equals(player.currentTime, 0, "currentTime after calling play()");
570
+ assert_false(player.finished, "Finished state after calling play()");
571
+
572
+ // Check it really is playing
573
+ at(0.5, function() {
574
+ assert_equals(player.currentTime, 0.5, "Current time after playing for a while");
575
+ });
576
+ }, "play() on player waiting to start kick-starts it");
577
+
578
+ // Test seeking a player to the start of its animation.
579
+ timing_test(function() {
580
+ // Set up player to start in 2s
581
+ var player = createPlayer(3);
582
+ player.startTime = 2;
583
+
584
+ // Check it is waiting to start
585
+ assert_equals(player.currentTime, -2, "currentTime while waiting");
586
+ assert_false(player.finished, "Finished state while waiting");
587
+
588
+ // Set currentTime = 0
589
+ player.currentTime = 0;
590
+ assert_equals(player.currentTime, 0, "currentTime after setting currentTime = 0");
591
+ assert_false(player.finished, "Finished state after setting currentTime = 0");
592
+
593
+ // Check it is playing
594
+ at(0.5, function() {
595
+ assert_equals(player.currentTime, 0.5, "currentTime after waiting a while");
596
+ assert_false(player.finished, "Finished state after waiting a while");
597
+ });
598
+ }, "currentTime = 0 on player waiting to start is ok");
599
+
600
+ // Test player becoming unbounded after source content is extended.
601
+ timing_test(function() {
602
+ var player = createPlayer(3);
603
+
604
+ player.currentTime = 4;
605
+ assert_equals(player.currentTime, 4, "currentTime after setting currentTime = 4");
606
+ assert_true(player.finished, "Finished state after setting currentTime = 4");
607
+
608
+ // Check it is NOT playing
609
+ at(0.2, function() {
610
+ assert_equals(player.currentTime, 4, "currentTime after waiting a while");
611
+
612
+ // Extend source
613
+ player.source.timing.duration = 5;
614
+ assert_equals(player.currentTime, 4, "currentTime after extending source");
615
+ assert_false(player.finished, "Finished state after extending source");
616
+
617
+ // Check it IS playing
618
+ at(0.2, function() {
619
+ assert_equals(player.currentTime, 4.2, "currentTime after waiting a while again");
620
+ });
621
+ });
622
+ }, "Extending source unblocks player (seek past end)");
623
+
624
+ // Test player ending normally and becoming unbounded after source content is extended.
625
+ timing_test(function() {
626
+ var player = createPlayer(3);
627
+
628
+ // Set currentTime to just before the end
629
+ player.currentTime = 2.9;
630
+ assert_false(player.finished, "Finished state just before ending");
631
+
632
+ // Play to end
633
+ at(0.2, function() {
634
+ assert_equals(player.currentTime, 3, "currentTime after ending normally");
635
+ assert_true(player.finished, "Finished state after ending normally");
636
+
637
+ // Extend source
638
+ player.source.timing.duration = 5;
639
+ assert_equals(player.currentTime, 3.0, "currentTime after extending source");
640
+ assert_false(player.finished, "Finished state after extending source");
641
+
642
+ // Check it is playing
643
+ at(0.2, function() {
644
+ assert_equals(player.currentTime, 3.2, "currentTime after waiting a while again");
645
+ });
646
+ });
647
+ }, "Extending source unblocks player (end normally)");
648
+
649
+ // Test player becomes bounded after source content is shortened.
650
+ timing_test(function() {
651
+ var player = createPlayer(3);
652
+
653
+ // Set currentTime to just before the end
654
+ player.currentTime = 2;
655
+ assert_equals(player.currentTime, 2.0, "currentTime before shortening");
656
+ assert_false(player.finished, "Finished state before shortening");
657
+
658
+ // Shorten source
659
+ player.source.timing.duration = 1;
660
+ assert_equals(player.currentTime, 2.0, "currentTime after shortening");
661
+ assert_true(player.finished, "Finished state after shortening");
662
+
663
+ // Check it is not playing
664
+ at(0.2, function() {
665
+ assert_equals(player.currentTime, 2.0, "currentTime after shortening");
666
+ });
667
+ }, "Shortening source blocks player");
668
+
669
+ // Test playing player becomes bounded after source content is shortened.
670
+ timing_test(function() {
671
+ var player = createPlayer(3);
672
+
673
+ // Set currentTime to midway
674
+ player.currentTime = 1.5;
675
+ assert_equals(player.currentTime, 1.5, "currentTime before shortening");
676
+ assert_false(player.finished, "Finished state after seeking");
677
+
678
+ // Let it play for a while
679
+ at(0.2, function() {
680
+ assert_equals(player.currentTime, 1.7, "currentTime before shortening");
681
+ assert_false(player.finished, "Finished state before shortening");
682
+
683
+ // Shorten source
684
+ player.source.timing.duration = 1;
685
+ assert_equals(player.currentTime, 1.7, "currentTime after shortening");
686
+ assert_true(player.finished, "Finished state after shortening");
687
+ });
688
+ }, "Shortening source blocks player when playing");
689
+
690
+ // Test reversed player does not become bounded after its source content is shortened.
691
+ timing_test(function() {
692
+ var player = createPlayer(3);
693
+
694
+ // Set currentTime to just before the end
695
+ player.currentTime = 2;
696
+ player.reverse();
697
+ assert_equals(player.currentTime, 2.0, "currentTime before shortening");
698
+ assert_false(player.finished, "Finished state before shortening");
699
+
700
+ // Shorten source
701
+ player.source.timing.duration = 1;
702
+ assert_equals(player.currentTime, 2.0, "currentTime after shortening");
703
+ assert_false(player.finished, "Finished state after shortening");
704
+
705
+ // Check it is playing
706
+ at(0.2, function() {
707
+ assert_equals(player.currentTime, 1.8, "currentTime after shortening");
708
+ });
709
+ }, "Shortening source does not block in reverse");
710
+
711
+ // Test player becoming unbounded after duration 0 source content is extended.
712
+ timing_test(function() {
713
+ // Add empty animation
714
+ var player = createPlayer(0);
715
+
716
+ // Check we don't progress
717
+ assert_equals(player.currentTime, 0, "currentTime before adding content");
718
+ assert_true(player.finished, "Finished state before adding content");
719
+
720
+ // Wait and check we don't progress
721
+ at(0.2, function() {
722
+ assert_equals(player.currentTime, 0, "currentTime after waiting");
723
+ assert_true(player.finished, "Finished state after waiting");
724
+
725
+ // "Add" content
726
+ player.source.timing.duration = 3;
727
+
728
+ // We should pick up from 0, not jump 0.2s in
729
+ assert_equals(player.currentTime, 0, "currentTime after extending");
730
+ assert_false(player.finished, "Finished state after extending");
731
+
732
+ // Wait and check
733
+ at(0.2, function() {
734
+ assert_equals(player.currentTime, 0.2, "currentTime after extending and waiting");
735
+ });
736
+ });
737
+ }, "Async add content");
738
+
739
+ // Test negative player playback rate with negative current time.
740
+ timing_test(function() {
741
+ var player = createPlayer(3);
742
+
743
+ // Set a negative time and let it play for a while
744
+ player.currentTime = -1;
745
+ at(0.2, function() {
746
+ assert_equals(player.currentTime, -0.8, "currentTime after waiting");
747
+ assert_false(player.finished, "Finished state after waiting");
748
+
749
+ // Reverse
750
+ player.playbackRate = -1;
751
+ assert_equals(player.currentTime, -0.8, "currentTime after reversing");
752
+ assert_true(player.finished, "Finished state after reversing");
753
+ });
754
+ }, "Setting negative playback rate in negative space");
755
+
756
+ // Test reversed player becoming bounded when start of animation is reached.
757
+ timing_test(function() {
758
+ var player = createPlayer(3);
759
+
760
+ // Seek to just before end
761
+ player.reverse();
762
+ player.currentTime = 0.1;
763
+
764
+ // Check state of player
765
+ assert_equals(player.currentTime, 0.1, "Current time just before end");
766
+ assert_false(player.paused, "Paused state just before end");
767
+ assert_false(player.finished, "Finished state just before end");
768
+
769
+ // Check player after finishing
770
+ at(0.2, function() {
771
+ assert_equals(player.currentTime, 0, "Current time when limited");
772
+ assert_false(player.paused, "Paused state after ending");
773
+ assert_true(player.finished, "Finished state after ending");
774
+ });
775
+ }, "Limiting at start");
776
+
777
+ // Test the floating point accuracy of seeking a player.
778
+ test(function() {
779
+ var player = createPlayer(3);
780
+ // Setting a high playbackRate has caused the reported currentTime to differ
781
+ // from what was set in previous implementations of AnimationPlayer.
782
+ player.playbackRate = 123456;
783
+ player.currentTime = 1.618;
784
+ assert_equals(player.currentTime, 1.618, "currentTime after seeking to fractional time");
785
+ }, "currentTime preserves floating point accuracy after seeking");
786
+ </script>