From 6bd2307c992286fa1825d66b93bb69d1b8dd7596 Mon Sep 17 00:00:00 2001 From: Paul Kaplan Date: Tue, 4 Dec 2018 16:43:31 -0500 Subject: [PATCH 1/2] Clear the pen layer when runtime dispose happens. --- src/engine/runtime.js | 9 +++++++++ src/extensions/scratch3_pen/index.js | 1 + test/unit/engine_runtime.js | 11 +++++++++++ 3 files changed, 21 insertions(+) diff --git a/src/engine/runtime.js b/src/engine/runtime.js index 4031ea49dea..0547e622d67 100644 --- a/src/engine/runtime.js +++ b/src/engine/runtime.js @@ -626,6 +626,14 @@ class Runtime extends EventEmitter { return 'RUNTIME_STARTED'; } + /** + * Event name when the runtime dispose has been called. + * @const {string} + */ + static get RUNTIME_DISPOSED () { + return 'RUNTIME_DISPOSED'; + } + /** * Event name for reporting that a block was updated and needs to be rerendered. * @const {string} @@ -1547,6 +1555,7 @@ class Runtime extends EventEmitter { this.stopAll(); this.targets.map(this.disposeTarget, this); this._monitorState = OrderedMap({}); + this.emit(Runtime.RUNTIME_DISPOSED); // @todo clear out extensions? turboMode? etc. // *********** Cloud ******************* diff --git a/src/extensions/scratch3_pen/index.js b/src/extensions/scratch3_pen/index.js index 4c46ce370b5..da36ba4f36e 100644 --- a/src/extensions/scratch3_pen/index.js +++ b/src/extensions/scratch3_pen/index.js @@ -67,6 +67,7 @@ class Scratch3PenBlocks { this._onTargetMoved = this._onTargetMoved.bind(this); runtime.on('targetWasCreated', this._onTargetCreated); + runtime.on('RUNTIME_DISPOSED', this.clear.bind(this)); } /** diff --git a/test/unit/engine_runtime.js b/test/unit/engine_runtime.js index c9f92385e4f..26ffe8c87ab 100644 --- a/test/unit/engine_runtime.js +++ b/test/unit/engine_runtime.js @@ -239,3 +239,14 @@ test('setCompatibilityMode does not restart if it was not running', t => { t.equal(started, false); t.end(); }); + +test('Disposing the runtime emits an event', t => { + let disposed = false; + const rt = new Runtime(); + rt.addListener('RUNTIME_DISPOSED', () => { + disposed = true; + }); + rt.start(); + t.equal(disposed, true); + t.end(); +}); From 6420cc8831c1cb94b834d5d193adfd395e5f0356 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Wed, 5 Dec 2018 09:01:35 -0500 Subject: [PATCH 2/2] Update test/unit/engine_runtime.js Co-Authored-By: paulkaplan --- test/unit/engine_runtime.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/engine_runtime.js b/test/unit/engine_runtime.js index 26ffe8c87ab..741ab9c3f6f 100644 --- a/test/unit/engine_runtime.js +++ b/test/unit/engine_runtime.js @@ -246,7 +246,7 @@ test('Disposing the runtime emits an event', t => { rt.addListener('RUNTIME_DISPOSED', () => { disposed = true; }); - rt.start(); + rt.dispose(); t.equal(disposed, true); t.end(); });