Revision 89ba9443f1d80b2bea3a33477b1ac53585fbb16d authored by jimevans on 16 March 2018, 14:46:32 UTC, committed by Andreas Tolfsen on 16 March 2018, 14:46:32 UTC
When the context element is `document.documentElement`, and an attempt is
made to find elements from that context element using an XPath of `..`, a
snapshot is returned containing the `document` object. While this is
apparently the correct behavior for XPath, the WebDriver spec says that if
the object in the snapshot is not an element, we should return an error
with error code "invalid selector." The test_parent_htmldocument test in
both find_element_from_element.py and find_elements_from_element.py expect
a success in this case. This commit changes the tests to correctly expect
an error from the driver.
1 parent 1cbb928
Raw File
SharedWorkerPerformanceNow.html
<!DOCTYPE html>
<html>
<head>
<title>window.performance.now in shared workers</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
async_test(function(t) {
    const worker = new SharedWorker('support/WorkerSendingPerformanceNow.js');
    worker.port.onmessage = t.step_func(event => {
        const results = event.data;
        assert_true(results.length == 4);
        assert_equals(results[0], 'undefined',
          'workerStart not defined on the Worker object');
        assert_equals(results[1], 'object', 'self.performance is defined');
        assert_equals(results[2], 'function', 'self.performance.now is defined');
        assert_greater_than(results[3], 0, 'Time in the worker should be positive');
        assert_greater_than(window.performance.now(), results[3], 'Time in the worker should be before the current time in the main document');
        setupIframe();
    });
    window.iframeStartTime = 0;
    window.test_iframe = function(event) {
        const workerTime = event.data[3];
        assert_greater_than(workerTime, window.iframeStartTime,
            'Time since origin time should be greater in the shared worker than the iframe');
        t.done();
    }
    function setupIframe() {
        const iframe = document.createElement('iframe');
        document.body.appendChild(iframe);
        const script = iframe.contentWindow.document.createElement('script');
        script.innerHTML =
            'window.top.iframeStartTime = window.performance.now();' +
            'const worker = new SharedWorker("support/WorkerSendingPerformanceNow.js");' +
            'worker.port.onmessage = function(event) {' +
            '    window.top.test_iframe(event);' +
            '};' +
            'worker.port.postMessage("");';
        iframe.contentWindow.document.body.appendChild(script);
    }
    worker.port.postMessage('');
}, 'performance.now() exists in shared workers and reports reasonable times');
</script>
</body>
</html>
back to top