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

Side by Side Diff: third_party/WebKit/LayoutTests/resources/testharnessreport.js

Issue 2789723003: Migrate WebUSB LayoutTests into external/wpt (Closed)
Patch Set: Rebased Created 3 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * THIS FILE INTENTIONALLY LEFT BLANK 2 * THIS FILE INTENTIONALLY LEFT BLANK
3 * 3 *
4 * More specifically, this file is intended for vendors to implement 4 * More specifically, this file is intended for vendors to implement
5 * code needed to integrate testharness.js tests with their own test systems. 5 * code needed to integrate testharness.js tests with their own test systems.
6 * 6 *
7 * Typically such integration will attach callbacks when each test is 7 * Typically such integration will attach callbacks when each test is
8 * has run, using add_result_callback(callback(test)), or when the whole test fi le has 8 * has run, using add_result_callback(callback(test)), or when the whole test fi le has
9 * completed, using add_completion_callback(callback(tests, harness_status)). 9 * completed, using add_completion_callback(callback(tests, harness_status)).
10 * 10 *
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 // Escape carriage returns as they break rietveld's difftools. 71 // Escape carriage returns as they break rietveld's difftools.
72 text = text.replace(/\r/g, "\\r"); 72 text = text.replace(/\r/g, "\\r");
73 // Replace machine-dependent path with "...". 73 // Replace machine-dependent path with "...".
74 if (localPathRegExp) 74 if (localPathRegExp)
75 text = text.replace(localPathRegExp, "..."); 75 text = text.replace(localPathRegExp, "...");
76 return text; 76 return text;
77 } 77 }
78 78
79 function isWPTManualTest() { 79 function isWPTManualTest() {
80 var path = location.pathname; 80 var path = location.pathname;
81 if (location.hostname == 'web-platform.test' && path.endsWith('-manual.h tml')) 81 if (location.hostname == 'web-platform.test'
82 && /.*-manual(\.https)?\.html$/.test(path)) {
82 return true; 83 return true;
83 return /\/external\/wpt\/.*-manual\.html$/.test(path); 84 }
85 return /\/external\/wpt\/.*-manual(\.https)?\.html$/.test(path);
84 } 86 }
85 87
86 // Returns a directory part relative to WPT root and a basename part of the 88 // Returns a directory part relative to WPT root and a basename part of the
87 // current test. e.g. 89 // current test. e.g.
88 // Current test: file:///.../LayoutTests/external/wpt/pointerevents/foobar.h tml 90 // Current test: file:///.../LayoutTests/external/wpt/pointerevents/foobar.h tml
89 // Output: "/pointerevents/foobar" 91 // Output: "/pointerevents/foobar"
90 function pathAndBaseNameInWPT() { 92 function pathAndBaseNameInWPT() {
91 var path = location.pathname; 93 var path = location.pathname;
92 if (location.hostname == 'web-platform.test') { 94 if (location.hostname == 'web-platform.test') {
93 var matches = path.match(/^(\/.*)\.html$/); 95 var matches = path.match(/^(\/.*)\.html$/);
(...skipping 12 matching lines...) Expand all
106 automationPath = '/wpt_automation'; 108 automationPath = '/wpt_automation';
107 109
108 // Export importAutomationScript for use by the automation scripts. 110 // Export importAutomationScript for use by the automation scripts.
109 window.importAutomationScript = function(relativePath) { 111 window.importAutomationScript = function(relativePath) {
110 var script = document.createElement('script'); 112 var script = document.createElement('script');
111 script.src = automationPath + relativePath; 113 script.src = automationPath + relativePath;
112 document.head.appendChild(script); 114 document.head.appendChild(script);
113 } 115 }
114 116
115 var src; 117 var src;
116 if (pathAndBase.startsWith('/fullscreen/')) { 118 if (pathAndBase.startsWith('/fullscreen/')
117 // Fullscreen tests all use the same automation script. 119 || pathAndBase.startsWith('/webusb/')) {
120 // Fullscreen tests all use the same automation script and WebUSB
121 // tests borrow it.
118 src = automationPath + '/fullscreen/auto-click.js'; 122 src = automationPath + '/fullscreen/auto-click.js';
119 } else if (pathAndBase.startsWith('/pointerevents/') 123 } else if (pathAndBase.startsWith('/pointerevents/')
120 || pathAndBase.startsWith('/uievents/')) { 124 || pathAndBase.startsWith('/uievents/')) {
121 // Per-test automation scripts. 125 // Per-test automation scripts.
122 src = automationPath + pathAndBase + '-automation.js'; 126 src = automationPath + pathAndBase + '-automation.js';
123 } else { 127 } else {
124 return; 128 return;
125 } 129 }
126 var script = document.createElement('script'); 130 var script = document.createElement('script');
127 script.src = src; 131 script.src = src;
128 document.head.appendChild(script); 132 document.head.appendChild(script);
129 } 133 }
130 134
135 function importTestPolyfills() {
136 var pathAndBase = pathAndBaseNameInWPT();
137 if (!pathAndBase)
138 return;
139 var automationPath = location.pathname.replace(/\/external\/wpt\/.*$/, ' /external/wpt_polyfill');
140 if (location.hostname == 'web-platform.test')
141 polyfillPath = '/wpt_polyfill';
142
143 var script = document.createElement('script');
144 if (pathAndBase.startsWith('/webusb/')) {
145 // WebUSB tests require a polyfill for navigator.usb.test. This
146 // script will be loaded asynchronously so we need to patch in
147 // a version of navigator.usb.test.initialize() that will wait for
148 // the script to load.
149 script.src = polyfillPath + '/webusb/webusb-test.js';
150 let initializePromise = null;
151 navigator.usb.test = {
152 initialize: function() {
153 if (!initializePromise) {
154 initializePromise = new Promise(resolve => {
155 script.onload = () => {
156 resolve(navigator.usb.test.initialize());
157 }
158 });
159 }
160 return initializePromise;
161 }
162 };
163 } else {
164 return;
165 }
166 document.head.appendChild(script);
167 }
168
131 var didDispatchLoadEvent = false; 169 var didDispatchLoadEvent = false;
132 window.addEventListener('load', function() { 170 window.addEventListener('load', function() {
133 didDispatchLoadEvent = true; 171 didDispatchLoadEvent = true;
134 if (isWPTManualTest()) { 172 if (isWPTManualTest()) {
135 setTimeout(loadAutomationScript, 0); 173 setTimeout(loadAutomationScript, 0);
136 } 174 }
137 }, { once: true }); 175 }, { once: true });
138 176
139 add_start_callback(function(properties) { 177 add_start_callback(function(properties) {
140 if (properties.output_document) 178 if (properties.output_document)
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 // This function might not be the last 'completion callback', and 297 // This function might not be the last 'completion callback', and
260 // another completion callback might generate more results. So, we 298 // another completion callback might generate more results. So, we
261 // don't dump the results immediately. 299 // don't dump the results immediately.
262 setTimeout(done, 0); 300 setTimeout(done, 0);
263 } else { 301 } else {
264 // Parsing the test HTML isn't finished yet. 302 // Parsing the test HTML isn't finished yet.
265 window.addEventListener('load', done); 303 window.addEventListener('load', done);
266 } 304 }
267 }); 305 });
268 306
307 importTestPolyfills();
269 })(); 308 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698