Revision e9f36aa0be6522db24e0d27b293a78ba68214d02 authored by Ehsan Karamad on 25 April 2018, 15:35:03 UTC, committed by Blink WPT Bot on 25 April 2018, 15:45:19 UTC
If 'vertical-scroll' is disabled for an <iframe>, then it should not be
able to affect the vertical scroll position. One way to block is to use
scripted scrolling by calling "element.scrollIntoView()".

To block such frames (whose feature's disabled), programmatic recursive
scroll calls are not forwarded to parent frames. This means if a given
<iframe> is blocked, then all the calls to scrollIntoView() are limited
to the scope of frame (i.e., elements becoming visible in the frame).
This applies to all the nested <iframe>'s of a disabled frame as well
since they would have the feature disabled as part of propagating the
container policy.

Link to explainer/design document for "vertical-scroll":
https://docs.google.com/document/d/1qiWelnMlsOHuT_CQ0Zm_qEAf54HS5DhoIvEDHBlfqps/edit?usp=sharing

Bug: 611982
Change-Id: I0e06b399ad890e263128b997cfbb04eb3bdd1494
Reviewed-on: https://chromium-review.googlesource.com/1014191
Reviewed-by: Ian Clelland <iclelland@chromium.org>
Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553561}
1 parent 6c62c5b
Raw File
basic.any.js
test(function() {
  assert_true((self.performance !== undefined), "self.performance exists");
  assert_equals(typeof self.performance, "object", "self.performance is an object");
  assert_equals((typeof self.performance.now), "function", "self.performance.now() is a function");
  assert_equals(typeof self.performance.now(), "number", "self.performance.now() returns a number");
}, "self.performance.now() is a function that returns a number");

test(function() {
  assert_true(self.performance.now() > 0);
}, "self.performance.now() returns a positive number");

test(function() {
    var now1 = self.performance.now();
    var now2 = self.performance.now();
    assert_true((now2-now1) >= 0);
  }, "self.performance.now() difference is not negative");

async_test(function() {
  // Check whether the performance.now() method is close to Date() within 30ms (due to inaccuracies)
  var initial_hrt = self.performance.now();
  var initial_date = Date.now();
  this.step_timeout(function() {
    var final_hrt = self.performance.now();
    var final_date = Date.now();
    assert_approx_equals(final_hrt - initial_hrt, final_date - initial_date, 30, 'High resolution time value increased by approximately the same amount as time from date object');
    this.done();
  }, 2000);
}, 'High resolution time has approximately the right relative magnitude');
back to top