@@ -208,6 +208,51 @@ <h3>Help us improve HTML5 test by donating</h3>
208
208
wait ( ) ;
209
209
}
210
210
211
+ function submit ( method , payload ) {
212
+ var httpRequest ;
213
+ if ( window . XMLHttpRequest ) {
214
+ httpRequest = new XMLHttpRequest ( ) ;
215
+ } else if ( window . ActiveXObject ) {
216
+ httpRequest = new ActiveXObject ( "Microsoft.XMLHTTP" ) ;
217
+ }
218
+
219
+ httpRequest . open ( 'POST' , '/api/' + method , true ) ;
220
+ httpRequest . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded' ) ;
221
+ httpRequest . send ( 'payload=' + encodeURIComponent ( payload ) ) ;
222
+ }
223
+
224
+ function upgradeConnection ( success , failure ) {
225
+ if ( location . protocol == "http:" ) {
226
+ var httpRequest ;
227
+
228
+ if ( window . XMLHttpRequest ) {
229
+ httpRequest = new XMLHttpRequest ( ) ;
230
+ } else if ( window . ActiveXObject ) {
231
+ httpRequest = new ActiveXObject ( "Microsoft.XMLHTTP" ) ;
232
+ }
233
+
234
+ httpRequest . onreadystatechange = function ( ) {
235
+ if ( httpRequest . readyState == 4 ) {
236
+ if ( httpRequest . status >= 200 && httpRequest . status < 400 ) {
237
+ success ( ) ;
238
+ } else {
239
+ failure ( ) ;
240
+ }
241
+ }
242
+ }
243
+
244
+ httpRequest . open ( 'GET' , 'https://' + location . hostname + '/assets/upgrade' , true ) ;
245
+ httpRequest . send ( ) ;
246
+
247
+ return ;
248
+ }
249
+
250
+ failure ( ) ;
251
+ }
252
+
253
+
254
+
255
+
211
256
212
257
waitForWhichBrowser ( function ( ) {
213
258
@@ -314,128 +359,111 @@ <h3>Help us improve HTML5 test by donating</h3>
314
359
}
315
360
316
361
317
- /* Update total score */
318
- var container = document . getElementById ( 'score' ) ;
319
-
320
- container . innerHTML = tim (
321
- "<div class='pointsPanel'>" +
322
- "<h2><span>Your browser scores</span> <strong>{{score}}</strong> <span>out of {{maximum}} points</span></h2>" +
323
- "</div>" ,
324
- c ) ;
325
-
326
- /* Show box for confirming useragent detection */
327
- new Confirm ( container , {
328
- id : r . uniqueid ,
329
- onConfirm : function ( ) { submit ( 'confirm' , '{"uniqueid": "' + r . uniqueid + '"}' ) ; } ,
330
- onReport : function ( ) { submit ( 'report' , '{"uniqueid": "' + r . uniqueid + '"}' ) ; } ,
331
- onFeedback : function ( value ) { submit ( 'feedback' , JSON . stringify ( { uniqueid : r . uniqueid , value : value } ) ) ; }
332
- } ) ;
333
-
334
- /* Show action buttons */
335
- var wrapper = document . createElement ( 'div' ) ;
336
- wrapper . className = 'wrapper' ;
337
- container . appendChild ( wrapper ) ;
338
-
339
- var buttons = document . createElement ( 'div' ) ;
340
- buttons . className = 'buttons' ;
341
- wrapper . appendChild ( buttons ) ;
342
-
343
- var button = document . createElement ( 'span' ) ;
344
- button . className = 'button save' ;
345
- button . innerHTML = '<span>Save results</span>' ;
346
- buttons . appendChild ( button ) ;
347
-
348
- new Save ( button , {
349
- id : r . uniqueid ,
350
- onSave : function ( ) { submit ( 'save' , '{"uniqueid": "' + r . uniqueid + '"}' ) ; }
351
- } ) ;
352
-
353
- var button = document . createElement ( 'a' ) ;
354
- button . className = 'button compare' ;
355
- button . href = '/compare/browser/mybrowser.html' ;
356
- button . innerHTML = '<span>Compare to...</span>' ;
357
- buttons . appendChild ( button ) ;
358
-
359
- var button = document . createElement ( 'span' ) ;
360
- button . className = 'button share' ;
361
- button . innerHTML = '<span>Share</span>' ;
362
- buttons . appendChild ( button ) ;
363
-
364
- new Share ( button , {
365
- score : c . score ,
366
- browser : Browsers . toString ( )
367
- } ) ;
368
-
369
- var button = document . createElement ( 'a' ) ;
370
- button . className = 'button donate' ;
371
- button . href = 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9DNBJPQFEHYSC' ;
372
- button . innerHTML = '<span>Donate</span>' ;
373
- buttons . appendChild ( button ) ;
374
-
375
-
376
- if ( location . protocol == "http:" ) {
377
- var warning = document . createElement ( 'div' ) ;
378
- warning . className = 'upgradeWarning' ;
379
- warning . innerHTML =
380
- "<h4>Your browser may support even more features on a secure connection</h4>" +
381
- "<p>Modern browsers only support some advanced features using on websites that uses a secure connection. " +
382
- "This is because these features expose privacy sensitive data. Because you are now using an insecure connection, " +
383
- "these features may not be available and are not detected.</p>" +
384
- "<a href='https://html5test.com'>Try again, but using a secure connection</a>" ;
385
-
386
- container . appendChild ( warning ) ;
387
- }
388
-
389
-
390
-
391
-
392
- /* Show detailed report of scores */
393
- var container = document . getElementById ( 'results' ) ;
394
- var div = document . createElement ( 'div' ) ;
395
- div . className = 'resultsTable detailsTable' ;
396
- container . appendChild ( div ) ;
397
-
398
- var table = new ResultsTable ( {
399
- parent : div ,
400
- tests : m . data ,
401
- header : false ,
402
- links : true ,
403
- explainations : true ,
404
- grading : true ,
405
- bonus : true ,
406
- distribute : true ,
407
- columns : 1
408
- } ) ;
409
-
410
- table . updateColumn ( 0 , { points : c . points , maximum : c . maximum , score : c . score , results : r . results } ) ;
411
-
412
- new Index ( {
413
- tests : tests ,
414
- index : document . getElementById ( 'index' ) ,
415
- wrapper : document . getElementById ( 'contentwrapper' )
416
- } ) ;
417
362
363
+
364
+
365
+
366
+ upgradeConnection (
367
+ function ( ) {
368
+ location . protocol = 'https:' ;
369
+ } ,
370
+ function ( ) {
371
+
372
+ /* Update total score */
373
+ var container = document . getElementById ( 'score' ) ;
374
+
375
+ container . innerHTML = tim (
376
+ "<div class='pointsPanel'>" +
377
+ "<h2><span>Your browser scores</span> <strong>{{score}}</strong> <span>out of {{maximum}} points</span></h2>" +
378
+ "</div>" ,
379
+ c ) ;
380
+
381
+ /* Show box for confirming useragent detection */
382
+ new Confirm ( container , {
383
+ id : r . uniqueid ,
384
+ onConfirm : function ( ) { submit ( 'confirm' , '{"uniqueid": "' + r . uniqueid + '"}' ) ; } ,
385
+ onReport : function ( ) { submit ( 'report' , '{"uniqueid": "' + r . uniqueid + '"}' ) ; } ,
386
+ onFeedback : function ( value ) { submit ( 'feedback' , JSON . stringify ( { uniqueid : r . uniqueid , value : value } ) ) ; }
387
+ } ) ;
388
+
389
+ /* Show action buttons */
390
+ var wrapper = document . createElement ( 'div' ) ;
391
+ wrapper . className = 'wrapper' ;
392
+ container . appendChild ( wrapper ) ;
393
+
394
+ var buttons = document . createElement ( 'div' ) ;
395
+ buttons . className = 'buttons' ;
396
+ wrapper . appendChild ( buttons ) ;
397
+
398
+ var button = document . createElement ( 'span' ) ;
399
+ button . className = 'button save' ;
400
+ button . innerHTML = '<span>Save results</span>' ;
401
+ buttons . appendChild ( button ) ;
402
+
403
+ new Save ( button , {
404
+ id : r . uniqueid ,
405
+ onSave : function ( ) { submit ( 'save' , '{"uniqueid": "' + r . uniqueid + '"}' ) ; }
406
+ } ) ;
407
+
408
+ var button = document . createElement ( 'a' ) ;
409
+ button . className = 'button compare' ;
410
+ button . href = '/compare/browser/mybrowser.html' ;
411
+ button . innerHTML = '<span>Compare to...</span>' ;
412
+ buttons . appendChild ( button ) ;
413
+
414
+ var button = document . createElement ( 'span' ) ;
415
+ button . className = 'button share' ;
416
+ button . innerHTML = '<span>Share</span>' ;
417
+ buttons . appendChild ( button ) ;
418
+
419
+ new Share ( button , {
420
+ score : c . score ,
421
+ browser : Browsers . toString ( )
422
+ } ) ;
423
+
424
+ var button = document . createElement ( 'a' ) ;
425
+ button . className = 'button donate' ;
426
+ button . href = 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9DNBJPQFEHYSC' ;
427
+ button . innerHTML = '<span>Donate</span>' ;
428
+ buttons . appendChild ( button ) ;
429
+
430
+
431
+ /* Show detailed report of scores */
432
+ var container = document . getElementById ( 'results' ) ;
433
+ var div = document . createElement ( 'div' ) ;
434
+ div . className = 'resultsTable detailsTable' ;
435
+ container . appendChild ( div ) ;
436
+
437
+ var table = new ResultsTable ( {
438
+ parent : div ,
439
+ tests : m . data ,
440
+ header : false ,
441
+ links : true ,
442
+ explainations : true ,
443
+ grading : true ,
444
+ bonus : true ,
445
+ distribute : true ,
446
+ columns : 1
447
+ } ) ;
448
+
449
+ table . updateColumn ( 0 , { points : c . points , maximum : c . maximum , score : c . score , results : r . results } ) ;
450
+
451
+ new Index ( {
452
+ tests : tests ,
453
+ index : document . getElementById ( 'index' ) ,
454
+ wrapper : document . getElementById ( 'contentwrapper' )
455
+ } ) ;
456
+
457
+ window . setTimeout ( function ( ) {
458
+ var contents = document . getElementById ( 'contents' ) ;
459
+ contents . style . visibility = 'visible' ;
460
+
461
+ var loading = document . getElementById ( 'loading' ) ;
462
+ loading . style . display = 'none' ;
463
+ } , 100 ) ;
418
464
419
- function submit ( method , payload ) {
420
- var httpRequest ;
421
- if ( window . XMLHttpRequest ) {
422
- httpRequest = new XMLHttpRequest ( ) ;
423
- } else if ( window . ActiveXObject ) {
424
- httpRequest = new ActiveXObject ( "Microsoft.XMLHTTP" ) ;
425
465
}
426
-
427
- httpRequest . open ( 'POST' , '/api/' + method , true ) ;
428
- httpRequest . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded' ) ;
429
- httpRequest . send ( 'payload=' + encodeURIComponent ( payload ) ) ;
430
- }
431
-
432
- window . setTimeout ( function ( ) {
433
- var contents = document . getElementById ( 'contents' ) ;
434
- contents . style . visibility = 'visible' ;
435
-
436
- var loading = document . getElementById ( 'loading' ) ;
437
- loading . style . display = 'none' ;
438
- } , 100 ) ;
466
+ ) ;
439
467
} ,
440
468
441
469
function ( e ) {
0 commit comments