• last updated 19 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Reuse the canvas objects throughout the proctoring

Follow Chrome suggestion and apply the willReadFrequently option to the canvas context

See https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently

Fully qualify global classes

Use a consistent idiom to check for undefined

AudioContext is now widely supported

Stop supporting old-sytle media capturing

Prefer an idiom that won't create a fresh object to reset array

Style changes:

- use ' instead of " consistently in the code

- use strict equality operators

Modernize javascript:

- use const and let instead of var to better specify the scope and lifetime of variables

Fix event we listen to

Shorten idioms

Modernize javascript

- prefer querySelector api

- use classList to manipulate the objects classes

Declare variable as constant

Style changes:

- use ' instead of " to delimit strings

- use strict equality operators

Modernize javascript idioms

Trap errors happening when taking the picture, potentially dependent on the specific hardware/sowftware setup of the user, and abort the session in this case

added support for optionally turning off proctoring recodings

This options is useful e.g. for e.g. mock exams to avoid privacy issues.

  1. … 10 more files in changeset.
improve spelling

  1. … 1 more file in changeset.
Do not handle 400 responses in any special way: cases found in practice were always the result of a client-side timeout

Hide timing information from the user

Streamline proctoring upload:

- do not hardcode a timeout, requests will either complete or eventually fail

- use a single event handler at the end of the request to decide if and how to reschedule the upload. This prevents the possibility that the same error event triggers multiple uploads via different handlers

- improve documentation

Make sure that in case of errors that are also detected as timeouts, we do not reschedule the failed picture twice

Address a problem encountered already with proctoring uploads: in cases that count both as timeouts and errors, the rescheduling of the request would happen twice. If the condition persists, the number of requests can grow out of control

fix bug in javascript, when only the screen-stream should be recorded

Allow in the include to selectively disable combinations of audio, camera and desktop recording (at least one stream needs to be enabled for proctoring to happen)

This allows to better tailor proctoring behavior to the user needs and privacy requirements

  1. … 2 more files in changeset.
Handle the case where the iframe URL points to an external website: just skip the iframe-loop check

Always make sure to clear any previously scheduled upload, before scheduling another one

This handles the case when a connection times out (readyState 4 and status = 0). In this case both the rescheduling in the readystatechange handler and in the timeout handler would be executed.

Check stream refactoring: break down better the various error situations so they can be reported to the user

Include stream name in the error message

Enforce also that, after proctoring has successfully started, captured videos do not stop anymore

This could mean that the video entered some invalid state, as we had already defined an event handler to restart a paused video...