diff --git a/proxy/init-badge.js b/proxy/init-badge.js index fe8cc91..2cc5b07 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -193,7 +193,7 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific if ( !silenceNotifications && snowflake !== null && - Snowflake.MODE.WEBRTC_READY === snowflake.state + ui.active ) { return Snowflake.MESSAGE.CONFIRMATION; } diff --git a/proxy/init-testing.js b/proxy/init-testing.js index 5b63099..90026a9 100644 --- a/proxy/init-testing.js +++ b/proxy/init-testing.js @@ -46,7 +46,7 @@ DebugUI.prototype.$status = null; Entry point. */ -var snowflake, query, debug, silenceNotifications, log, dbg, init; +var snowflake, query, debug, ui, silenceNotifications, log, dbg, init; (function() { @@ -108,7 +108,7 @@ var snowflake, query, debug, silenceNotifications, log, dbg, init; if ( !silenceNotifications && snowflake !== null && - Snowflake.MODE.WEBRTC_READY === snowflake.state + ui.active ) { return Snowflake.MESSAGE.CONFIRMATION; } diff --git a/proxy/init-webext.js b/proxy/init-webext.js index 6789ffd..ad345fa 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -193,18 +193,6 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific return snowflake.beginWebRTC(); }; - // Notification of closing tab with active proxy. - window.onbeforeunload = function() { - if ( - !silenceNotifications && - snowflake !== null && - Snowflake.MODE.WEBRTC_READY === snowflake.state - ) { - return Snowflake.MESSAGE.CONFIRMATION; - } - return null; - }; - window.onunload = function() { if (snowflake !== null) { snowflake.disable(); } return null; diff --git a/proxy/proxypair.js b/proxy/proxypair.js index 58efa1a..9f6a7b2 100644 --- a/proxy/proxypair.js +++ b/proxy/proxypair.js @@ -1,4 +1,4 @@ -/* global snowflake, log, dbg, Util, PeerConnection, Snowflake, Parse, WS */ +/* global snowflake, log, dbg, Util, PeerConnection, Parse, WS */ /* Represents a single: @@ -89,7 +89,6 @@ class ProxyPair { return; } this.running = true; - snowflake.state = Snowflake.MODE.WEBRTC_READY; snowflake.ui.setActive(true); // This is the point when the WebRTC datachannel is done, so the next step // is to establish websocket to the server. @@ -99,7 +98,6 @@ class ProxyPair { log('WebRTC DataChannel closed.'); snowflake.ui.setStatus('disconnected by webrtc.'); snowflake.ui.setActive(false); - snowflake.state = Snowflake.MODE.INIT; this.flush(); return this.close(); }; @@ -139,7 +137,6 @@ class ProxyPair { log(relay.label + ' closed.'); snowflake.ui.setStatus('disconnected.'); snowflake.ui.setActive(false); - snowflake.state = Snowflake.MODE.INIT; this.flush(); return this.close(); }; diff --git a/proxy/snowflake.js b/proxy/snowflake.js index cdc59fb..78b1d0e 100644 --- a/proxy/snowflake.js +++ b/proxy/snowflake.js @@ -22,7 +22,6 @@ class Snowflake { this.config = config; this.ui = ui; this.broker = broker; - this.state = Snowflake.MODE.INIT; this.proxyPairs = []; if (void 0 === this.config.rateLimitBytes) { this.rateLimit = new DummyRateLimit(); @@ -44,7 +43,6 @@ class Snowflake { // Initialize WebRTC PeerConnection, which requires beginning the signalling // process. |pollBroker| automatically arranges signalling. beginWebRTC() { - this.state = Snowflake.MODE.WEBRTC_CONNECTING; log('ProxyPair Slots: ' + this.proxyPairs.length); log('Snowflake IDs: ' + (this.proxyPairs.map(function(p) { return p.id; @@ -173,13 +171,6 @@ Snowflake.prototype.pollInterval = null; Snowflake.prototype.retries = 0; -// Janky state machine -Snowflake.MODE = { - INIT: 0, - WEBRTC_CONNECTING: 1, - WEBRTC_READY: 2 -}; - Snowflake.MESSAGE = { CONFIRMATION: 'You\'re currently serving a Tor user via Snowflake.' }; diff --git a/proxy/spec/init.spec.js b/proxy/spec/init.spec.js index 748bc86..593add9 100644 --- a/proxy/spec/init.spec.js +++ b/proxy/spec/init.spec.js @@ -6,29 +6,28 @@ var snowflake = { ui: new UI, broker: { sendAnswer: function() {} - }, - state: Snowflake.MODE.INIT + } }; describe('Init', function() { it('gives a dialog when closing, only while active', function() { silenceNotifications = false; - snowflake.state = Snowflake.MODE.WEBRTC_READY; + ui.setActive(true); var msg = window.onbeforeunload(); - expect(snowflake.state).toBe(Snowflake.MODE.WEBRTC_READY); + expect(ui.active).toBe(true); expect(msg).toBe(Snowflake.MESSAGE.CONFIRMATION); - snowflake.state = Snowflake.MODE.INIT; + ui.setActive(false); msg = window.onbeforeunload(); - expect(snowflake.state).toBe(Snowflake.MODE.INIT); + expect(ui.active).toBe(false); expect(msg).toBe(null); }); it('does not give a dialog when silent flag is on', function() { silenceNotifications = true; - snowflake.state = Snowflake.MODE.WEBRTC_READY; + ui.setActive(true); var msg = window.onbeforeunload(); - expect(snowflake.state).toBe(Snowflake.MODE.WEBRTC_READY); + expect(ui.active).toBe(true); expect(msg).toBe(null); });