Description

This test validates that the values of window.performance.getEntriesByType("navigation")[0].(type/unloadEventEnd/unloadEventStart) are only exposed when the same-origin test passes.



FAIL Redirect chain with a partial TAO opt-in promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL Redirect chain with full TAO opt-in promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL Same-cross-same redirect chain with no TAO opt-in promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL cross-cross-same Redirect chain with no TAO opt-in promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL Previous document cross origin promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL Previous document same origin promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL No previous document promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL Same origin previous document with same origin redirect promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL No previous document with same origin redirect promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL No previous document with cross origin redirect promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL No previous document with cross origin redirect with partial TAO promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"
FAIL No previous document with cross origin redirect with TAO promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'entry.type')"

