blob: fea1f71669b4d4a67530d805d71f6b15dbe9e7ca [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2015 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/tracing/base/task.html">
<link rel="import" href="/tracing/ui/base/resize_sensor.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
function forceLayout(element) {
element.offsetHeight;
}
test('instantiate', function() {
var sensor = document.createElement('tr-ui-b-resize-sensor');
sensor.appendChild(document.createTextNode('hello'));
var resizeCount = 0;
function onResize(event) {
resizeCount += 1;
}
this.addHTMLOutput(sensor);
forceLayout(sensor);
sensor.addEventListener('resize', onResize);
// Trigger a resize:
sensor.style.fontSize = '20pt';
forceLayout(sensor);
// The event doesn't fire synchronously, so return a Promise that will
// resolve whenever the test is done.
return new Promise(function(resolve, reject) {
// The resize event fires when the sensor is re-laid-out.
// Use requestAnimationFrame to wait until after the sensor is
// re-laid-out.
// This doesn't work if the page becomes invisible.
window.requestAnimationFrame(function() {
assert.equal(1, resizeCount);
sensor.removeEventListener('resize', onResize);
sensor.style.fontSize = '12pt';
forceLayout(sensor);
window.requestAnimationFrame(function() {
assert.equal(1, resizeCount);
resolve();
});
});
});
});
});
</script>