From 877b445c3949a396d67a9e240e19077cc468d638 Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Fri, 24 Jan 2014 23:29:32 +0400 Subject: [PATCH] Added modified console polyfills to Workers --- app/index.html | 4 +-- app/js/lib/aes_worker.js | 7 ++++- app/js/lib/mtproto.js | 26 +++++++++++-------- app/js/lib/pq_worker.js | 6 ++++- app/js/lib/sha1_worker.js | 6 ++++- .../console-polyfill/console-polyfill.js | 4 ++- 6 files changed, 36 insertions(+), 17 deletions(-) diff --git a/app/index.html b/app/index.html index 3ecffbef..6f610aca 100644 --- a/app/index.html +++ b/app/index.html @@ -31,7 +31,7 @@ ga('send', 'pageview'); - + @@ -48,7 +48,7 @@ - + diff --git a/app/js/lib/aes_worker.js b/app/js/lib/aes_worker.js index fe1ff83b..974b9ab6 100644 --- a/app/js/lib/aes_worker.js +++ b/app/js/lib/aes_worker.js @@ -5,7 +5,12 @@ * https://github.com/zhukov/webogram/blob/master/LICENSE */ -importScripts('mtproto.js', '../../vendor/jsbn/jsbn_combined.js', '../../vendor/cryptoJS/crypto.js'); +importScripts( + '../../vendor/console-polyfill/console-polyfill.js?1', + 'mtproto.js', + '../../vendor/jsbn/jsbn_combined.js', + '../../vendor/cryptoJS/crypto.js' +); onmessage = function (e) { // console.log('AES worker in', e.data); diff --git a/app/js/lib/mtproto.js b/app/js/lib/mtproto.js index 9a2d56d2..846a0c07 100644 --- a/app/js/lib/mtproto.js +++ b/app/js/lib/mtproto.js @@ -1113,7 +1113,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu console.log('PQ factorization start'); if (!!window.Worker) { - var worker = new Worker('js/lib/pq_worker.js'); + var worker = new Worker('js/lib/pq_worker.js?1'); worker.onmessage = function (e) { auth.p = e.data[0]; @@ -1407,7 +1407,7 @@ factory('MtpAesService', function ($q) { }; } - var worker = new Worker('js/lib/aes_worker.js'), + var worker = new Worker('js/lib/aes_worker.js?1'), taskID = 0, awaiting = {}; @@ -1459,7 +1459,7 @@ factory('MtpSha1Service', function ($q) { }; } - var worker = new Worker('js/lib/sha1_worker.js'), + var worker = new Worker('js/lib/sha1_worker.js?1'), taskID = 0, awaiting = {}; @@ -1511,13 +1511,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato // })(); // } - this.sessionID = new Array(8); - MtpSecureRandom.nextBytes(this.sessionID); - - if (false) { - this.sessionID[0] = 0xAB; - this.sessionID[1] = 0xCD; - } + this.updateSession(); this.seqNo = 0; this.currentRequests = 0; @@ -1537,6 +1531,15 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato this.checkLongPoll(); }; + MtpNetworker.prototype.updateSession = function () { + this.sessionID = new Array(8); + MtpSecureRandom.nextBytes(this.sessionID); + + if (false) { + this.sessionID[0] = 0xAB; + this.sessionID[1] = 0xCD; + } + } MtpNetworker.prototype.generateSeqNo = function (notContentRelated) { var seqNo = this.seqNo * 2; @@ -2046,6 +2049,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato if (message.error_code == 16 || message.error_code == 17) { MtpMessageIdGenerator.applyServerTime((new BigInteger(messageID, 10)).shiftRight(32).toString(10)); + this.updateSession(); this.pushResend(message.bad_msg_id); this.ackMessage(messageID); } @@ -2229,7 +2233,7 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker }, function (error) { console.log('error', error.code, error.type, baseDcID, dcID); - if (error.code == 401 && error.type == 'AUTH_KEY_UNREGISTERED' && baseDcID && dcID != baseDcID) { + if (error.code == 401 && baseDcID && dcID != baseDcID) { if (cachedExportPromise[dcID] === undefined) { var exportDeferred = $q.defer(); diff --git a/app/js/lib/pq_worker.js b/app/js/lib/pq_worker.js index d076b49f..8d3c2f42 100644 --- a/app/js/lib/pq_worker.js +++ b/app/js/lib/pq_worker.js @@ -5,7 +5,11 @@ * https://github.com/zhukov/webogram/blob/master/LICENSE */ -importScripts('mtproto.js', '../../vendor/jsbn/jsbn_combined.js'); +importScripts( + '../../vendor/console-polyfill/console-polyfill.js?1', + 'mtproto.js', + '../../vendor/jsbn/jsbn_combined.js' +); onmessage = function (e) { postMessage(pqPrimeFactorization(e.data)); diff --git a/app/js/lib/sha1_worker.js b/app/js/lib/sha1_worker.js index 44a35fb5..809dd0cb 100644 --- a/app/js/lib/sha1_worker.js +++ b/app/js/lib/sha1_worker.js @@ -5,7 +5,11 @@ * https://github.com/zhukov/webogram/blob/master/LICENSE */ -importScripts('mtproto.js', '../../vendor/cryptoJS/crypto.js'); +importScripts( + '../../vendor/console-polyfill/console-polyfill.js?1', + 'mtproto.js', + '../../vendor/cryptoJS/crypto.js' +); onmessage = function (e) { var taskID = e.data.taskID; diff --git a/app/vendor/console-polyfill/console-polyfill.js b/app/vendor/console-polyfill/console-polyfill.js index b16dbfaa..1ad5859f 100644 --- a/app/vendor/console-polyfill/console-polyfill.js +++ b/app/vendor/console-polyfill/console-polyfill.js @@ -12,4 +12,6 @@ 'time,timeEnd,trace,warn').split(','); while (prop = properties.pop()) con[prop] = con[prop] || empty; while (method = methods.pop()) con[method] = con[method] || dummy; -})(window.console = window.console || {}); +})(this.console = this.console || {}); + +// For Workers compatibility `window` object is replaced with `this` keyword \ No newline at end of file