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

Side by Side Diff: LayoutTests/inspector-protocol/layout-fonts/resources/style-matching-test.js

Issue 1256833002: (DO NOT LAND) Test CSS Font Style matching (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « LayoutTests/inspector-protocol/layout-fonts/resources/style-matching.css ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 function test() 1 function test()
2 { 2 {
3 var documentNodeId; 3 var documentNodeId;
4 var documentNodeSelector; 4 var documentNodeSelector;
5 var testSelectors = []; 5 var testSelectors = [];
6 var collectedFontUsage = {}; 6 var collectedFontUsage = {};
7 7
8 var weights = [ 'onehundred', 'twohundred', 'threehundred',
9 'fourhundred', 'fivehundred', 'sixhundred',
10 'sevenhundred', 'eighthundred', 'ninehundred' ]
11
12 var weightsHumanReadable = [ "Thin", "Extra Light", "Light",
13 "Normal", "Medium", "Semi Bold",
14 "Bold", "Extra Bold", "Black" ]
15
8 InspectorTest.requestDocumentNodeId(onDocumentNodeId); 16 InspectorTest.requestDocumentNodeId(onDocumentNodeId);
9 17
10 function onDocumentNodeId(nodeId) 18 function onDocumentNodeId(nodeId)
11 { 19 {
12 documentNodeId = nodeId; 20 documentNodeId = nodeId;
13 21
14 InspectorTest.evaluateInInspectedPage( 22 InspectorTest.evaluateInInspectedPage(
15 'JSON.stringify(' + 23 'JSON.stringify(' +
16 'Array.prototype.map.call(' + 24 'Array.prototype.map.call(' +
17 'document.querySelectorAll(".test *"),' + 25 'document.querySelectorAll(".test *"),' +
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 InspectorTest.sendCommandOrDie("CSS.getPlatformFontsForNode", { node Id: nodeId }, onGotComputedFonts); 70 InspectorTest.sendCommandOrDie("CSS.getPlatformFontsForNode", { node Id: nodeId }, onGotComputedFonts);
63 } 71 }
64 72
65 function onGotComputedFonts(response) 73 function onGotComputedFonts(response)
66 { 74 {
67 collectResults(response); 75 collectResults(response);
68 testNextPageElement(); 76 testNextPageElement();
69 } 77 }
70 } 78 }
71 79
80 function weightEqual(selectorWeight, fontWeight)
81 {
82 return weights.indexOf(selectorWeight) == weightsHumanReadable.indexOf(f ontWeight);
83 }
84
85 function compareSelectorToFontname(selector, usedFontName)
86 {
87 // A selector of the form "expanded_italic_sixhundred"
88 // needs to be matched to a font name:
89 // "CSSMatchingTest Expanded Italic Semi Bold".
90 var fontStretchStyleWeight = /CSSMatchingTest (\w*) (\w*) (.*)/.exec(use dFontName);
91 var fontStrech = fontStretchStyleWeight[1];
92 var fontStyle = fontStretchStyleWeight[2];
93 var fontWeight = fontStretchStyleWeight[3];
94
95 var selectorStretchStyleWeight = selector.substr(1).split("_");
96 var selectorStrech = selectorStretchStyleWeight[0];
97 var selectorStyle = selectorStretchStyleWeight[1];
98 var selectorWeight = selectorStretchStyleWeight[2];
99
100 var mismatchDescription = "";
101
102 if (fontStrech.toLowerCase() != selectorStrech.toLowerCase()) {
103 mismatchDescription += "Stretch differs, " +
104 "requested vs actual: " +
105 selectorStrech + ", " +
106 fontStrech + "\n";
107 }
108
109 if (fontStyle.toLowerCase() != selectorStyle.toLowerCase()) {
110 mismatchDescription += "Style differs, " +
111 "requested vs actual: " +
112 selectorStyle + ", " +
113 fontStyle + "\n";
114 }
115
116 if (!weightEqual(selectorWeight, fontWeight)) {
117 mismatchDescription += "Weight differs, " +
118 selectorWeight + ", " +
119 fontWeight + "\n";
120 }
121
122 if (mismatchDescription.length) {
123 mismatchDescription = "FAIL\n" + mismatchDescription;
124 } else {
125 mismatchDescription = "PASS\n";
126 }
127 return mismatchDescription;
128 }
129
72 function collectResults(response) 130 function collectResults(response)
73 { 131 {
74 var usedFonts = response.fonts; 132 collectedFontUsage[documentNodeSelector] = compareSelectorToFontname(
75 usedFonts.sort(function(a, b) { 133 documentNodeSelector,
76 return b.glyphCount - a.glyphCount; 134 response.fonts[0].familyName);
77 });
78 collectedFontUsage[documentNodeSelector] = usedFonts;
79 } 135 }
80 }; 136 };
81 137
82
83 function formatResult(selector, resultForSelector)
84 {
85 var resultFormatted = selector + ":\n";
86 for (var i = 0; i < resultForSelector.length; i++) {
87 resultFormatted += '"' + resultForSelector[i].familyName + '"' +
88 " : " +
89 resultForSelector[i].glyphCount;
90 if (i + 1 < resultForSelector.length)
91 resultFormatted += ",\n";
92 else
93 resultFormatted += "\n\n";
94 }
95 return resultFormatted;
96 }
97
98 function injectCollectedResultsInPage(results) 138 function injectCollectedResultsInPage(results)
99 { 139 {
100 for (nodeSelector in results) { 140 for (nodeSelector in results) {
101 var testNode = document.querySelector(nodeSelector); 141 var testNode = document.querySelector(nodeSelector);
102 var resultElement = document.createElement("div"); 142 var resultElement = document.createElement("div");
103 var resultTextPre = document.createElement("pre"); 143 var resultTextPre = document.createElement("pre");
104 var resultText = formatResult(nodeSelector, results[nodeSelector]); 144 var resultText = nodeSelector + "\n" + results[nodeSelector] + "\n";
105 var resultTextNode = document.createTextNode(resultText); 145 var resultTextNode = document.createTextNode(resultText);
106 resultTextPre.appendChild(resultTextNode); 146 resultTextPre.appendChild(resultTextNode);
107 resultElement.appendChild(resultTextPre); 147 resultElement.appendChild(resultTextPre);
108 testNode.parentNode.insertBefore(resultElement, testNode.nextSibling); 148 testNode.parentNode.insertBefore(resultElement, testNode.nextSibling);
109 } 149 }
110 } 150 }
111 151
112 window.addEventListener("DOMContentLoaded", function () { 152 window.addEventListener("DOMContentLoaded", function () {
113 runTest(); 153 runTest();
114 }, false); 154 }, false);
OLDNEW
« no previous file with comments | « LayoutTests/inspector-protocol/layout-fonts/resources/style-matching.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698