https://github.com/web-platform-tests/wpt
Revision 1b5ce4ad3817e7b7247d7ff0f76b81877fce0d89 authored by Andrew Comminos on 21 December 2018, 21:45:26 UTC, committed by Chromium WPT Sync on 21 December 2018, 21:45:26 UTC
When two child elements of a flexbox overlap (for example, due to
negative margins), the element drawn in the foreground may not actually
capture the hit if the element underneath it is hit-tested in an earlier
phase (e.g. foreground before child block background), despite being
occluded. This is because painting of flexbox children is done
atomically (all phases at once). This change makes hit testing atomic as
well, in accordance with the spec [1].

[1] https://www.w3.org/TR/css-flexbox-1/#painting

Bug: 844505
Change-Id: Iceab80b42f19488dcb59565ea3c0ce40d48c483b
1 parent f3cbe03
Raw File
Tip revision: 1b5ce4ad3817e7b7247d7ff0f76b81877fce0d89 authored by Andrew Comminos on 21 December 2018, 21:45:26 UTC
Perform flexbox child hit testing by testing all children atomically
Tip revision: 1b5ce4a
errors-manual.html
<!DOCTYPE html>
<meta charset=utf-8>
<title>Entries API: Errors manual test</title>
<link rel=help href="https://wicg.github.io/entries-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
entry_test((t, entry) => {
  entry.getFile(
    NOT_FOUND_PATHS[0],
    {},
    t.unreached_func('getFile should fail'),
    t.step_func(error => {
      assert_equals(typeof error.name, 'string', 'Error has name property');
      assert_equals(typeof error.message, 'string', 'Error has message property');
      assert_equals(error.name, 'NotFoundError', 'error is NotFoundError');
      t.done();
    }));
}, 'Errors - NotFoundError');

entry_test((t, entry) => {
  entry.getFile(
    DIR_PATHS[0],
    {},
    t.unreached_func('getFile should fail'),
    t.step_func(error => {
      assert_equals(typeof error.name, 'string', 'Error has name property');
      assert_equals(typeof error.message, 'string', 'Error has message property');
      assert_equals(error.name, 'TypeMismatchError', 'error is TypeMismatchError');
      t.done();
    }));
}, 'Errors - TypeMismatchError');

entry_test((t, entry) => {
  entry.getFile(
    FILE_PATHS[0],
    {create: true},
    t.unreached_func('getFile should fail'),
    t.step_func(error => {
      assert_equals(typeof error.name, 'string', 'Error has name property');
      assert_equals(typeof error.message, 'string', 'Error has message property');
      assert_equals(error.name, 'SecurityError', 'error is SecurityError');
      t.done();
    }));
}, 'Errors - SecurityError');

entry_test((t, entry) => {
  const reader = entry.createReader();
  reader.readEntries(() => {}, t.unreached_func('readEntries should succeed'));
  reader.readEntries(
    t.unreached_func('readEntries() should fail if already reading'),
    t.step_func(error => {
      assert_equals(typeof error.name, 'string', 'Error has name property');
      assert_equals(typeof error.message, 'string', 'Error has message property');
      assert_equals(error.name, 'InvalidStateError', 'error is InvalidStateError');
      t.done();
    }));
}, 'Errors - InvalidStateError');
</script>
back to top