12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*
- * Copyright 2018 Scytl Secure Electronic Voting SA
- *
- * All rights reserved
- *
- * See our extended copyright notice in *file 'Copyright.txt' which is part of this source code package
- */
- /* jshint node:true */
- 'use strict';
- var math = require('./math');
- module.exports = DeviceOrientationCollector;
- var deviceOrientationX_, deviceOrientationY_, deviceOrientationZ_;
- var collectEntropy_ = function() {};
- function DeviceOrientationCollector(collectEntropyCallback) {
- collectEntropy_ = collectEntropyCallback;
- }
- DeviceOrientationCollector.prototype = {
- handleEvent: function(ev) {
- ev = ev || window.event;
- var currentX =
- (math.entropyRound(ev.gamma) || math.entropyRound(ev.x) || 0);
- var currentY = (math.entropyRound(ev.beta) || math.entropyRound(ev.y) || 0);
- var currentZ =
- (math.entropyRound(ev.alpha) || math.entropyRound(ev.z) || 0);
- // The API detects and delivers accelerometer data 50 times per
- // second
- // even if there is any event related, so this is
- // a way to control if it really changed or not
- if ((deviceOrientationX_ === null) || (deviceOrientationY_ === null) ||
- (deviceOrientationZ_ === null) || (deviceOrientationX_ !== currentX) ||
- (deviceOrientationY_ !== currentY) ||
- (deviceOrientationZ_ !== currentZ)) {
- deviceOrientationX_ = currentX;
- deviceOrientationY_ = currentY;
- deviceOrientationZ_ = currentZ;
- collectEntropy_(
- currentX + currentY + currentZ + (+new Date()), 1);
- }
- }
- };
|