Revision 03598e505d3e3cd46ce992b3d6f358791125b04f authored by Ben Wells on 27 March 2018, 05:42:26 UTC, committed by Chromium WPT Sync on 27 March 2018, 05:42:26 UTC
This reverts commit aeecb4f32ece14a8a294e4f9b80a5bb2278091c9.

Reason for revert: Causing lots of failures on webkit bots, e.g.:
https://ci.chromium.org/buildbot/chromium.webkit/WebKit%20Linux%20Trusty/42143

Original change's description:
> Don't adjust the NavigationTimings on redirects
>
> We adjust the timings in WebDocumentLoaderImpl::UpdateNavigation(),
> shouldn't update in each AddRedirect() (which is called in a batch
> way after all the redirects are handled in the browser process with PlzNavigate,
> adjusting timings there with current timestamp is totally wrong)
>
> R=​ksakamoto,arthursonzogni
>
> Bug: 813889
> Change-Id: I3a57d3fdf1833c300feb5ee61737b64cece0946b
> Reviewed-on: https://chromium-review.googlesource.com/974673
> Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org>
> Commit-Queue: Kinuko Yasuda <kinuko@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#546001}

TBR=kinuko@chromium.org,ksakamoto@chromium.org,arthursonzogni@chromium.org

Change-Id: I467ed888084ea0eda06faa903d1797fabffc47da
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 813889
Reviewed-on: https://chromium-review.googlesource.com/981912
Reviewed-by: Ben Wells <benwells@chromium.org>
Commit-Queue: Ben Wells <benwells@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546025}
1 parent 8ec345b
Raw File
byte-length-queuing-strategy.js
'use strict';

if (self.importScripts) {
  self.importScripts('/resources/testharness.js');
}

test(() => {

  new ByteLengthQueuingStrategy({ highWaterMark: 4 });

}, 'Can construct a ByteLengthQueuingStrategy with a valid high water mark');

test(() => {

  for (const highWaterMark of [-Infinity, NaN, 'foo', {}, () => {}]) {
    const strategy = new ByteLengthQueuingStrategy({ highWaterMark });
    assert_equals(strategy.highWaterMark, highWaterMark, `${highWaterMark} gets set correctly`);
  }

}, 'Can construct a ByteLengthQueuingStrategy with any value as its high water mark');

test(() => {

  const highWaterMark = 1;
  const highWaterMarkObjectGetter = {
    get highWaterMark() { return highWaterMark; }
  };
  const error = new Error('wow!');
  const highWaterMarkObjectGetterThrowing = {
    get highWaterMark() { throw error; }
  };

  assert_throws({ name: 'TypeError' }, () => new ByteLengthQueuingStrategy(), 'construction fails with undefined');
  assert_throws({ name: 'TypeError' }, () => new ByteLengthQueuingStrategy(null), 'construction fails with null');
  assert_throws({ name: 'Error' }, () => new ByteLengthQueuingStrategy(highWaterMarkObjectGetterThrowing),
    'construction fails with an object with a throwing highWaterMark getter');

  // Should not fail:
  new ByteLengthQueuingStrategy('potato');
  new ByteLengthQueuingStrategy({});
  new ByteLengthQueuingStrategy(highWaterMarkObjectGetter);

}, 'ByteLengthQueuingStrategy constructor behaves as expected with strange arguments');

test(() => {

  const size = 1024;
  const chunk = { byteLength: size };
  const chunkGetter = {
    get byteLength() { return size; }
  };
  const error = new Error('wow!');
  const chunkGetterThrowing = {
    get byteLength() { throw error; }
  };
  assert_throws({ name: 'TypeError' }, () => ByteLengthQueuingStrategy.prototype.size(), 'size fails with undefined');
  assert_throws({ name: 'TypeError' }, () => ByteLengthQueuingStrategy.prototype.size(null), 'size fails with null');
  assert_equals(ByteLengthQueuingStrategy.prototype.size('potato'), undefined,
    'size succeeds with undefined with a random non-object type');
  assert_equals(ByteLengthQueuingStrategy.prototype.size({}), undefined,
    'size succeeds with undefined with an object without hwm property');
  assert_equals(ByteLengthQueuingStrategy.prototype.size(chunk), size,
    'size succeeds with the right amount with an object with a hwm');
  assert_equals(ByteLengthQueuingStrategy.prototype.size(chunkGetter), size,
    'size succeeds with the right amount with an object with a hwm getter');
  assert_throws({ name: 'Error' }, () => ByteLengthQueuingStrategy.prototype.size(chunkGetterThrowing),
    'size fails with the error thrown by the getter');

}, 'ByteLengthQueuingStrategy size behaves as expected with strange arguments');

test(() => {

  const thisValue = null;
  const returnValue = { 'returned from': 'byteLength getter' };
  const chunk = {
    get byteLength() { return returnValue; }
  };

  assert_equals(ByteLengthQueuingStrategy.prototype.size.call(thisValue, chunk), returnValue);

}, 'ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments');

test(() => {

  const strategy = new ByteLengthQueuingStrategy({ highWaterMark: 4 });

  assert_object_equals(Object.getOwnPropertyDescriptor(strategy, 'highWaterMark'),
    { value: 4, writable: true, enumerable: true, configurable: true },
    'highWaterMark property should be a data property with the value passed the constructor');
  assert_equals(typeof strategy.size, 'function');

}, 'ByteLengthQueuingStrategy instances have the correct properties');

test(() => {

  const strategy = new ByteLengthQueuingStrategy({ highWaterMark: 4 });
  assert_equals(strategy.highWaterMark, 4);

  strategy.highWaterMark = 10;
  assert_equals(strategy.highWaterMark, 10);

  strategy.highWaterMark = 'banana';
  assert_equals(strategy.highWaterMark, 'banana');

}, 'ByteLengthQueuingStrategy\'s highWaterMark property can be set to anything');

test(() => {

  assert_equals(ByteLengthQueuingStrategy.name, 'ByteLengthQueuingStrategy',
                'ByteLengthQueuingStrategy.name must be "ByteLengthQueuingStrategy"');

}, 'ByteLengthQueuingStrategy.name is correct');

done();
back to top