Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Unified Diff: third_party/WebKit/LayoutTests/fast/canvas/canvas-textMetrics-all.html

Issue 2232243002: Rewrite canvas/philip/tests/2d.text.draw.text.metrics.html test (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: needs to be a async_test Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-textMetrics-all.html
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-textMetrics-all.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-textMetrics-all.html
new file mode 100644
index 0000000000000000000000000000000000000000..5321dffda89f574d4810f320cd2e21c9d6de787e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-textMetrics-all.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML>
+<head>
+<style>
+@font-face {
+ font-family: Libertine;
+ src: url('../../third_party/Libertine/LinLibertine_R.woff');
+}
+</style>
+</head>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script>
+function testTextMetrics(textMetrics, expected)
+{
+ var w = textMetrics.width;
+ var ab = textMetrics.alphabeticBaseline;
+ var hb = textMetrics.hangingBaseline;
+ var ib = textMetrics.ideographicBaseline;
+ var fa = textMetrics.fontBoundingBoxAscent;
+ var fd = textMetrics.fontBoundingBoxDescent;
+ var ea = textMetrics.emHeightAscent;
+ var ed = textMetrics.emHeightDescent;
+ var lb = textMetrics.actualBoundingBoxLeft;
+ var rb = textMetrics.actualBoundingBoxRight;
+ var aa = textMetrics.actualBoundingBoxAscent;
+ var ad = textMetrics.actualBoundingBoxDescent;
+
+ var epsilon = 0.000001;
+ assert_equals(rb, Math.round(w), "testing width");
+ assert_approx_equals(ab, expected[0], epsilon, "testing alphabeticBaseline");
+ assert_approx_equals(hb, expected[1], epsilon, "testing hangingBaseline");
+ assert_approx_equals(ib, expected[2], epsilon, "testing ideographicBaseline");
+ assert_approx_equals(fa, expected[3], epsilon, "testing fontBoundingBoxAscent");
+ assert_approx_equals(fd, expected[4], epsilon, "testing fontBoundingBoxDescent");
+ assert_approx_equals(ea, expected[5], epsilon, "testing emHeightAscent");
+ assert_approx_equals(ed, expected[6], epsilon, "testing emHeightDescent");
+ assert_approx_equals(lb, expected[7], epsilon, "testing actualBoundingBoxLeft");
+ assert_approx_equals(aa, expected[8], epsilon, "testing actualBoundingBoxAscent");
+ assert_approx_equals(ad, expected[9], epsilon, "testing actualBoundingBoxDescent");
+}
+
+function measureMetrics(ctx)
+{
+ var text = "Hello World";
+
+ ctx.textBaseline = "top";
+ var textMetrics = ctx.measureText(text);
+ var expected = [45, 9, 57, 0, 57, 0, 0, 0, -45, 95];
+ testTextMetrics(textMetrics, expected);
+
+ ctx.textBaseline = "hanging";
+ var textMetrics = ctx.measureText(text);
+ expected = [36, 0, 48, 9, 48, 0, 0, 0, -36, 86];
+ testTextMetrics(textMetrics, expected);
+
+ ctx.textBaseline = "middle";
+ var textMetrics = ctx.measureText(text);
+ expected = [16, -20, 28, 29, 28, 0, 0, 0, -16, 66];
+ testTextMetrics(textMetrics, expected);
+
+ ctx.textBaseline = "alphabetic";
+ var textMetrics = ctx.measureText(text);
+ expected = [0, -36, 12, 45, 12, 0, 0, 0, 0, 50];
+ testTextMetrics(textMetrics, expected);
+
+ ctx.textBaseline = "ideographic";
+ var textMetrics = ctx.measureText(text);
+ expected = [-12, -48, 0, 57, 0, 0, 0, 0, 12, 38];
+ testTextMetrics(textMetrics, expected);
+
+ ctx.textBaseline = "bottom";
+ var textMetrics = ctx.measureText(text);
+ expected = [-12, -48, 0, 57, 0, 0, 0, 0, 12, 38];
+ testTextMetrics(textMetrics, expected);
+}
+
+async_test(function() {
+ var canvas = document.createElement('canvas');
+ canvas.width = 100;
+ canvas.height = 100;
+ var ctx = canvas.getContext('2d');
+ ctx.font = '50px Libertine';
+ // Kick off loading of the font
+ ctx.fillText(" ", 0, 0);
+ document.fonts.addEventListener('loadingdone', function() {
+ measureMetrics(ctx);
+ });
+ this.done();
+}, "Test all attributes of TextMetrics.");
+</script>

Powered by Google App Engine
This is Rietveld 408576698