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

Side by Side Diff: third_party/WebKit/LayoutTests/usb/resources/usb-helpers.js

Issue 1781533002: Track USBDevice open state in Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 4 years, 9 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/usb/usbDevice.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 'use strict'; 1 'use strict';
2 2
3 // TODO(reillyg): Remove when jyasskin upstreams this to testharness.js: 3 // TODO(reillyg): Remove when jyasskin upstreams this to testharness.js:
4 // https://crbug.com/509058. 4 // https://crbug.com/509058.
5 function callWithKeyDown(functionCalledOnKeyPress) { 5 function callWithKeyDown(functionCalledOnKeyPress) {
6 return new Promise(resolve => { 6 return new Promise(resolve => {
7 function onKeyPress() { 7 function onKeyPress() {
8 document.removeEventListener('keypress', onKeyPress, false); 8 document.removeEventListener('keypress', onKeyPress, false);
9 resolve(functionCalledOnKeyPress()); 9 resolve(functionCalledOnKeyPress());
10 } 10 }
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 getConfiguration() { 127 getConfiguration() {
128 if (this.currentConfiguration_ === undefined) { 128 if (this.currentConfiguration_ === undefined) {
129 return Promise.resolve({ value: 0 }); 129 return Promise.resolve({ value: 0 });
130 } else { 130 } else {
131 return Promise.resolve({ 131 return Promise.resolve({
132 value: this.currentConfiguration_.configuration_value }); 132 value: this.currentConfiguration_.configuration_value });
133 } 133 }
134 } 134 }
135 135
136 open() { 136 open() {
137 // TODO(reillyg): Check if the device is opened and return 137 assert_false(this.opened_);
138 // OpenDeviceError.ALREADY_OPEN.
139 this.opened_ = true; 138 this.opened_ = true;
140 return Promise.resolve({ error: device.OpenDeviceError.OK }); 139 return Promise.resolve({ error: device.OpenDeviceError.OK });
141 } 140 }
142 141
143 close() { 142 close() {
143 assert_true(this.opened_);
144 this.opened_ = false; 144 this.opened_ = false;
145 return Promise.resolve({}); 145 return Promise.resolve({ error: device.OpenDeviceError.OK });
146 } 146 }
147 147
148 setConfiguration(value) { 148 setConfiguration(value) {
149 if (!this.opened_) 149 assert_true(this.opened_);
150 return Promise.resolve({ success: false });
151 150
152 let selected_configuration = this.info_.configurations.find( 151 let selected_configuration = this.info_.configurations.find(
153 configuration => configuration.configuration_value == value); 152 configuration => configuration.configuration_value == value);
154 if (selected_configuration !== undefined) { 153 if (selected_configuration !== undefined) {
155 this.currentConfiguration_ = selected_configuration; 154 this.currentConfiguration_ = selected_configuration;
156 return Promise.resolve({ success: true }); 155 return Promise.resolve({ success: true });
157 } else { 156 } else {
158 return Promise.resolve({ success: false }); 157 return Promise.resolve({ success: false });
159 } 158 }
160 } 159 }
161 160
162 claimInterface(interfaceNumber) { 161 claimInterface(interfaceNumber) {
163 if (!this.opened_) 162 assert_true(this.opened_);
164 return Promise.resolve({ success: false });
165 163
166 if (this.currentConfiguration_ === undefined) 164 if (this.currentConfiguration_ === undefined)
167 return Promise.resolve({ success: false }); 165 return Promise.resolve({ success: false });
168 166
169 if (this.claimedInterfaces_.has(interfaceNumber)) 167 if (this.claimedInterfaces_.has(interfaceNumber))
170 return Promise.resolve({ success: false }); 168 return Promise.resolve({ success: false });
171 169
172 if (this.currentConfiguration_.interfaces.some( 170 if (this.currentConfiguration_.interfaces.some(
173 iface => iface.interface_number == interfaceNumber)) { 171 iface => iface.interface_number == interfaceNumber)) {
174 this.claimedInterfaces_.set(interfaceNumber, 0); 172 this.claimedInterfaces_.set(interfaceNumber, 0);
175 return Promise.resolve({ success: true }); 173 return Promise.resolve({ success: true });
176 } else { 174 } else {
177 return Promise.resolve({ success: false }); 175 return Promise.resolve({ success: false });
178 } 176 }
179 } 177 }
180 178
181 releaseInterface(interfaceNumber) { 179 releaseInterface(interfaceNumber) {
182 if (!this.opened_) 180 assert_true(this.opened_);
183 return Promise.resolve({ success: false });
184 181
185 if (this.currentConfiguration_ === undefined) 182 if (this.currentConfiguration_ === undefined)
186 return Promise.resolve({ success: false }); 183 return Promise.resolve({ success: false });
187 184
188 if (this.claimedInterfaces_.has(interfaceNumber)) { 185 if (this.claimedInterfaces_.has(interfaceNumber)) {
189 this.claimedInterfaces_.delete(interfaceNumber); 186 this.claimedInterfaces_.delete(interfaceNumber);
190 return Promise.resolve({ success: true }); 187 return Promise.resolve({ success: true });
191 } else { 188 } else {
192 return Promise.resolve({ success: false }); 189 return Promise.resolve({ success: false });
193 } 190 }
194 } 191 }
195 192
196 setInterfaceAlternateSetting(interfaceNumber, alternateSetting) { 193 setInterfaceAlternateSetting(interfaceNumber, alternateSetting) {
197 if (!this.opened_ || this.currentConfiguration_ === undefined) 194 assert_true(this.opened_);
195
196 if (this.currentConfiguration_ === undefined)
198 return Promise.resolve({ success: false }); 197 return Promise.resolve({ success: false });
199 198
200 if (!this.claimedInterfaces_.has(interfaceNumber)) 199 if (!this.claimedInterfaces_.has(interfaceNumber))
201 return Promise.resolve({ success: false }); 200 return Promise.resolve({ success: false });
202 201
203 let iface = this.currentConfiguration_.interfaces.find( 202 let iface = this.currentConfiguration_.interfaces.find(
204 iface => iface.interface_number == interfaceNumber); 203 iface => iface.interface_number == interfaceNumber);
205 if (iface === undefined) 204 if (iface === undefined)
206 return Promise.resolve({ success: false }); 205 return Promise.resolve({ success: false });
207 206
208 if (iface.alternates.some( 207 if (iface.alternates.some(
209 x => x.alternate_setting == alternateSetting)) { 208 x => x.alternate_setting == alternateSetting)) {
210 this.claimedInterfaces_.set(interfaceNumber, alternateSetting); 209 this.claimedInterfaces_.set(interfaceNumber, alternateSetting);
211 return Promise.resolve({ success: true }); 210 return Promise.resolve({ success: true });
212 } else { 211 } else {
213 return Promise.resolve({ success: false }); 212 return Promise.resolve({ success: false });
214 } 213 }
215 } 214 }
216 215
217 reset() { 216 reset() {
218 return Promise.resolve({ success: this.opened_ }); 217 assert_true(this.opened_);
218 return Promise.resolve({ success: true });
219 } 219 }
220 220
221 clearHalt(endpoint) { 221 clearHalt(endpoint) {
222 assert_true(this.opened_);
222 // TODO(reillyg): Check that endpoint is valid. 223 // TODO(reillyg): Check that endpoint is valid.
223 return Promise.resolve({ success: this.opened_ }); 224 return Promise.resolve({ success: true });
224 } 225 }
225 226
226 controlTransferIn(params, length, timeout) { 227 controlTransferIn(params, length, timeout) {
228 assert_true(this.opened_);
227 return Promise.resolve({ 229 return Promise.resolve({
228 status: device.TransferStatus.OK, 230 status: device.TransferStatus.OK,
229 data: [length >> 8, length & 0xff, params.request, params.value >> 8, 231 data: [length >> 8, length & 0xff, params.request, params.value >> 8,
230 params.value & 0xff, params.index >> 8, params.index & 0xff] 232 params.value & 0xff, params.index >> 8, params.index & 0xff]
231 }); 233 });
232 } 234 }
233 235
234 controlTransferOut(params, data, timeout) { 236 controlTransferOut(params, data, timeout) {
237 assert_true(this.opened_);
235 return Promise.resolve({ 238 return Promise.resolve({
236 status: device.TransferStatus.OK, 239 status: device.TransferStatus.OK,
237 bytesWritten: data.byteLength 240 bytesWritten: data.byteLength
238 }); 241 });
239 } 242 }
240 243
241 genericTransferIn(endpointNumber, length, timeout) { 244 genericTransferIn(endpointNumber, length, timeout) {
245 assert_true(this.opened_);
242 // TODO(reillyg): Check that endpoint is valid. 246 // TODO(reillyg): Check that endpoint is valid.
243 let data = new Array(length); 247 let data = new Array(length);
244 for (let i = 0; i < length; ++i) 248 for (let i = 0; i < length; ++i)
245 data[i] = i & 0xff; 249 data[i] = i & 0xff;
246 return Promise.resolve({ 250 return Promise.resolve({
247 status: device.TransferStatus.OK, 251 status: device.TransferStatus.OK,
248 data: data 252 data: data
249 }); 253 });
250 } 254 }
251 255
252 genericTransferOut(endpointNumber, data, timeout) { 256 genericTransferOut(endpointNumber, data, timeout) {
257 assert_true(this.opened_);
253 // TODO(reillyg): Check that endpoint is valid. 258 // TODO(reillyg): Check that endpoint is valid.
254 return Promise.resolve({ 259 return Promise.resolve({
255 status: device.TransferStatus.OK, 260 status: device.TransferStatus.OK,
256 bytesWritten: data.byteLength 261 bytesWritten: data.byteLength
257 }); 262 });
258 } 263 }
259 264
260 isochronousTransferIn(endpointNumber, packetLengths, timeout) { 265 isochronousTransferIn(endpointNumber, packetLengths, timeout) {
266 assert_true(this.opened_);
261 // TODO(reillyg): Check that endpoint is valid. 267 // TODO(reillyg): Check that endpoint is valid.
262 let data = new Array(packetLengths.reduce((a, b) => a + b, 0)); 268 let data = new Array(packetLengths.reduce((a, b) => a + b, 0));
263 let dataOffset = 0; 269 let dataOffset = 0;
264 let packets = new Array(packetLengths.length); 270 let packets = new Array(packetLengths.length);
265 for (let i = 0; i < packetLengths.length; ++i) { 271 for (let i = 0; i < packetLengths.length; ++i) {
266 for (let j = 0; j < packetLengths[i]; ++j) 272 for (let j = 0; j < packetLengths[i]; ++j)
267 data[dataOffset++] = j & 0xff; 273 data[dataOffset++] = j & 0xff;
268 packets[i] = { 274 packets[i] = {
269 length: packetLengths[i], 275 length: packetLengths[i],
270 transferred_length: packetLengths[i], 276 transferred_length: packetLengths[i],
271 status: device.TransferStatus.OK 277 status: device.TransferStatus.OK
272 }; 278 };
273 } 279 }
274 return Promise.resolve({ data: data, packets: packets }); 280 return Promise.resolve({ data: data, packets: packets });
275 } 281 }
276 282
277 isochronousTransferOut(endpointNumber, data, packetLengths, timeout) { 283 isochronousTransferOut(endpointNumber, data, packetLengths, timeout) {
284 assert_true(this.opened_);
278 // TODO(reillyg): Check that endpoint is valid. 285 // TODO(reillyg): Check that endpoint is valid.
279 let packets = new Array(packetLengths.length); 286 let packets = new Array(packetLengths.length);
280 for (let i = 0; i < packetLengths.length; ++i) { 287 for (let i = 0; i < packetLengths.length; ++i) {
281 packets[i] = { 288 packets[i] = {
282 length: packetLengths[i], 289 length: packetLengths[i],
283 transferred_length: packetLengths[i], 290 transferred_length: packetLengths[i],
284 status: device.TransferStatus.OK 291 status: device.TransferStatus.OK
285 }; 292 };
286 } 293 }
287 return Promise.resolve({ packets: packets }); 294 return Promise.resolve({ packets: packets });
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 } 437 }
431 438
432 function usb_test(func, name, properties) { 439 function usb_test(func, name, properties) {
433 mojo_test(mojo => usbMocks(mojo).then(usb => { 440 mojo_test(mojo => usbMocks(mojo).then(usb => {
434 let result = Promise.resolve(func(usb)); 441 let result = Promise.resolve(func(usb));
435 let cleanUp = () => usb.mockDeviceManager.reset(); 442 let cleanUp = () => usb.mockDeviceManager.reset();
436 result.then(cleanUp, cleanUp); 443 result.then(cleanUp, cleanUp);
437 return result; 444 return result;
438 }), name, properties); 445 }), name, properties);
439 } 446 }
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/usb/usbDevice.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698