blob: 1e357c7456f313af96b4ed9ba21ee4b1693c4d48 [file] [log] [blame]
/*
* Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @description
*/
import "dart:html";
import "../../testcommon.dart";
import "../../../Utils/async_utils.dart";
main() {
var f = new DocumentFragment.html('''
<style>
#test, button {
font: 10px Ahem;
}
button, span, input { -webkit-appearance: none; }
#b1 { margin-bottom: 0; border-bottom: 0; padding-bottom: 0; }
/* Give b3 a border-bottom that's the same as the descent of Ahem,
* therefore, the bottom of b3 should be the same as the bottom of the span.
*/
#b3 { margin-bottom: 0; border-bottom: 2px outset; padding-bottom: 0; }
</style>
''', treeSanitizer: new NullTreeSanitizer());
document.head.append(f);
document.body.setInnerHtml('''
<p>Tests correct button behavior with respect to collapsing and baseline: Empty
buttons have a baseline at the bottom of the content box; buttons with text are
aligned so that the text lines up. Also, empty buttons should collapse.</p>
<p>To understand this test, note that with the Ahem font, the bottom of the "X"
is 2px below the baseline (at a 10px font-size).</p>
<div id="test">
<p><button id="b1"></button> <button id="b2"><span id="s2">X</span></button>
<button id="b3"></button>
<span id="s-ref">X</span></p>
</div>
<p id="out"></p>
''', treeSanitizer: new NullTreeSanitizer());
bottom(node) {
// bottom of the border-box
return node.offsetTop + node.offsetHeight;
}
check_equal(i1, i2, msg) {
debug(msg);
shouldBe(i1, i2);
}
var b1 = document.getElementById("b1");
var s2 = document.getElementById("s2");
var b3 = document.getElementById("b3");
var sref = document.getElementById("s-ref");
check_equal(bottom(b1), bottom(sref) - 2, "b1 bottom == span baseline");
check_equal(bottom(s2), bottom(sref), "s2 bottom == span bottom");
check_equal(bottom(b3), bottom(sref), "b3 bottom == span bottom");
// Now check for collapsing
b1 = document.getElementById("b1");
s2 = document.getElementById("s2");
debug("empty buttons should collapse (offsetHeight should be smaller than the text)");
shouldBeTrue(b1.offsetHeight < s2.offsetHeight);
}