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

Unified Diff: chrome/test/data/third_party/spaceport/js/tests/text.js

Issue 10134041: Add test data for spaceport benchmark. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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: chrome/test/data/third_party/spaceport/js/tests/text.js
diff --git a/chrome/test/data/third_party/spaceport/js/tests/text.js b/chrome/test/data/third_party/spaceport/js/tests/text.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5f542522b82c0f2128d8aa1708ae65572b30054
--- /dev/null
+++ b/chrome/test/data/third_party/spaceport/js/tests/text.js
@@ -0,0 +1,93 @@
+define([ 'util/ensureCallback', 'util/bench' ], function (ensureCallback, bench) {
+ var texts = [ 'hello world', 'other text' ];
+ var CANVAS_WIDTH = 640;
+ var CANVAS_HEIGHT = 640;
+
+ var fontFamilies = {
+ sans: 'sans-serif',
+ serif: 'serif',
+ monospace: 'monospace'
+ };
+
+ var fontSizes = [ 8, 10, 12, 14, 16, 24 ];
+
+ var stylePreparers = {
+ outline: function (context) {
+ context.strokeStyle = 'red';
+ },
+
+ fill: function (context) {
+ context.fillStyle = 'green';
+ },
+
+ fillOutline: function (context) {
+ context.strokeStyle = 'red';
+ context.fillStyle = 'green';
+ }
+ };
+
+ var styleExecutors = {
+ outline: function (context, text) {
+ context.strokeText(text, 0, 0);
+ },
+
+ fill: function (context, text) {
+ context.fillText(text, 0, 0);
+ },
+
+ fillOutline: function (context, text) {
+ context.fillText(text, 0, 0);
+ context.strokeText(text, 0, 0);
+ }
+ };
+
+ var styles = Object.keys(styleExecutors);
+
+ function runTest(fontFamily, fontSize, style, callback) {
+ callback = ensureCallback(callback);
+
+ var canvas = document.createElement('canvas');
+ canvas.width = CANVAS_WIDTH;
+ canvas.height = CANVAS_HEIGHT;
+
+ var context = canvas.getContext('2d');
+ context.font = fontSize + 'pt ' + fontFamily;
+ context.textBaseline = 'top';
+ context.textAlign = 'left';
+ stylePreparers[style](context);
+
+ var execute = styleExecutors[style];
+ var score = bench(100, function (i) {
+ execute(context, texts[i % texts.length]);
+
+ // FIXME I'd like to be able to verify that the drawing operation
+ // actually executed (and didn't defer), but getImageData (below)
+ // is too slow to run in a loop like this.
+ //context.getImageData(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT)[0];
+ });
+
+ callback(null, {
+ score: score.toFixed(2)
+ });
+ }
+
+ // family => size => style => test
+ var tests = { };
+ Object.keys(fontFamilies).forEach(function (fontFamilyKey) {
+ var fontFamily = fontFamilies[fontFamilyKey];
+
+ var subTests = { };
+ tests[fontFamilyKey] = subTests;
+ fontSizes.forEach(function (fontSize) {
+ var subSubTests = { };
+ subTests[fontSize] = subSubTests;
+ styles.forEach(function (style) {
+ subSubTests[style] = function (callback) {
+ runTest(fontFamily, fontSize, style, callback);
+ };
+ });
+ });
+ });
+
+ return tests;
+});
« no previous file with comments | « chrome/test/data/third_party/spaceport/js/tests/sprites.js ('k') | chrome/test/data/third_party/spaceport/js/unrequire.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698