From b7d6dd5e8cee461defdba201cc4696d73b95f1f7 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 6 Oct 2015 10:55:12 -0600 Subject: [PATCH] Reset view registry in AtomEnvironment::reset --- spec/text-editor-component-spec.coffee | 5 +++++ src/atom-environment.coffee | 3 +++ src/view-registry.coffee | 10 +++++----- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/spec/text-editor-component-spec.coffee b/spec/text-editor-component-spec.coffee index be51d3a78..b6d811e6e 100644 --- a/spec/text-editor-component-spec.coffee +++ b/spec/text-editor-component-spec.coffee @@ -22,6 +22,7 @@ describe "TextEditorComponent", -> nextAnimationFrame = noAnimationFrame spyOn(window, 'requestAnimationFrame').andCallFake (fn) -> + debugger if global.debug nextAnimationFrame = -> nextAnimationFrame = noAnimationFrame fn() @@ -54,6 +55,10 @@ describe "TextEditorComponent", -> component.measureDimensions() nextAnimationFrame() + # Mutating the DOM in the previous frame causes a document poll; clear it here + waits 0 + runs -> nextAnimationFrame() + afterEach -> contentNode.style.width = '' diff --git a/src/atom-environment.coffee b/src/atom-environment.coffee index e275a4970..60ef08ed7 100644 --- a/src/atom-environment.coffee +++ b/src/atom-environment.coffee @@ -226,6 +226,9 @@ class AtomEnvironment extends Model @deserializers.clear() @registerDefaultDeserializers() + @views.clear() + @registerDefaultViewProviders() + @config.clear() @setConfigSchema() diff --git a/src/view-registry.coffee b/src/view-registry.coffee index c9abd8852..3a46aa87a 100644 --- a/src/view-registry.coffee +++ b/src/view-registry.coffee @@ -50,14 +50,14 @@ class ViewRegistry minimumPollInterval: 200 constructor: (@atomEnvironment) -> + @observer = new MutationObserver(@requestDocumentPoll) + @clear() + + clear: -> @views = new WeakMap @providers = [] - @documentWriters = [] - @documentReaders = [] - @documentPollers = [] - - @observer = new MutationObserver(@requestDocumentPoll) @debouncedPerformDocumentPoll = _.throttle(@performDocumentPoll, @minimumPollInterval).bind(this) + @clearDocumentRequests() # Essential: Add a provider that will be used to construct views in the # workspace's view layer based on model objects in its model layer.