File: effect-composition.html

package info (click to toggle)
thunderbird 1%3A68.10.0-1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 2,754,812 kB
  • sloc: cpp: 5,411,679; javascript: 4,161,772; ansic: 2,639,702; python: 763,064; java: 346,606; xml: 266,623; asm: 265,884; sh: 117,270; lisp: 41,340; makefile: 23,560; perl: 18,042; objc: 5,277; yacc: 1,778; ada: 1,681; pascal: 1,673; lex: 1,417; cs: 879; exp: 527; awk: 495; php: 436; ruby: 221; sed: 69; csh: 27
file content (85 lines) | stat: -rw-r--r-- 2,753 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<!doctype html>
<meta charset=utf-8>
<title>Effect composition</title>
<link rel="help" href="https://drafts.csswg.org/web-animations/#effect-composition">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="../../testcommon.js"></script>
<div id="log"></div>
<script>
'use strict';

for (const composite of ['accumulate', 'add']) {
  test(t => {
    const div = createDiv(t);
    div.style.marginLeft = '10px';
    const anim =
      div.animate({ marginLeft: ['0px', '10px'], composite }, 100);

    anim.currentTime = 50;
    assert_equals(getComputedStyle(div).marginLeft, '15px',
      'Animated margin-left style at 50%');
  }, `${composite} onto the base value`);

  test(t => {
    const div = createDiv(t);
    const anims = [];
    anims.push(div.animate({ marginLeft: ['10px', '20px'],
                             composite: 'replace' },
                           100));
    anims.push(div.animate({ marginLeft: ['0px', '10px'],
                             composite },
                           100));

    for (const anim of anims) {
      anim.currentTime = 50;
    }

    assert_equals(getComputedStyle(div).marginLeft, '20px',
      'Animated style at 50%');
  }, `${composite} onto an underlying animation value`);

  test(t => {
    const div = createDiv(t);
    div.style.marginLeft = '10px';
    const anim =
      div.animate([{ marginLeft: '10px', composite },
                   { marginLeft: '30px', composite: 'replace' }],
                  100);

    anim.currentTime = 50;
    assert_equals(getComputedStyle(div).marginLeft, '25px',
      'Animated style at 50%');
  }, `Composite when mixing ${composite} and replace`);

  test(t => {
    const div = createDiv(t);
    div.style.marginLeft = '10px';
    const anim =
      div.animate([{ marginLeft: '10px', composite: 'replace' },
                   { marginLeft: '20px' }],
                  { duration: 100 , composite });

    anim.currentTime = 50;
    assert_equals(getComputedStyle(div).marginLeft, '20px',
      'Animated style at 50%');
  }, `${composite} specified on a keyframe overrides the composite mode of`
     + ' the effect');

  test(t => {
    const div = createDiv(t);
    div.style.marginLeft = '10px';
    const anim =
      div.animate([{ marginLeft: '10px', composite: 'replace' },
                   { marginLeft: '20px' }],
                  100);

    anim.effect.composite = composite;
    anim.currentTime = 50;                       // (10 + (10 + 20)) * 0.5
    assert_equals(getComputedStyle(div).marginLeft, '20px',
      'Animated style at 50%');
  }, 'unspecified composite mode on a keyframe is overriden by setting'
      + ` ${composite} of the effect`);
}

</script>