Commit 39e7f074 authored by Andrey Lushnikov's avatar Andrey Lushnikov Committed by Commit Bot

DevTools: move TestMapping to use Persistence.addBdinging/removeBinding

This patch:
- migrates TestMapping to use generic Persistence methods
  addBinding/removeBinding instead of creating a custom mapping algorithm.
- removes enabling/disabling of automapping; instead, the automapping
  gets disposed.

Since the removal of DefaultMapping, Persistence doesn't need to support
different mapping algorithm implementations.

BUG=805740
R=dgozman

Change-Id: I5be46e4a3991011ae2bc7496619e4a1c9dcfb700
Reviewed-on: https://chromium-review.googlesource.com/892481
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533172}
parent b13aa2ae
...@@ -49,20 +49,13 @@ BindingsTestRunner.addFooJSFile = function(fs) { ...@@ -49,20 +49,13 @@ BindingsTestRunner.addFooJSFile = function(fs) {
}; };
BindingsTestRunner.initializeTestMapping = function() { BindingsTestRunner.initializeTestMapping = function() {
var testMapping; return new TestMapping(Persistence.persistence);
Persistence.persistence._setMappingForTest((bindingCreated, bindingRemoved) => {
testMapping = new TestMapping(bindingCreated, bindingRemoved);
return testMapping;
});
return testMapping;
}; };
class TestMapping { class TestMapping {
constructor(onBindingAdded, onBindingRemoved) { constructor(persistence) {
this._onBindingAdded = onBindingAdded; this._persistence = persistence;
this._onBindingRemoved = onBindingRemoved; persistence.setAutomappingEnabled(false);
this._bindings = new Set(); this._bindings = new Set();
} }
...@@ -75,9 +68,9 @@ class TestMapping { ...@@ -75,9 +68,9 @@ class TestMapping {
var networkUISourceCode = await TestRunner.waitForUISourceCode(urlSuffix, Workspace.projectTypes.Network); var networkUISourceCode = await TestRunner.waitForUISourceCode(urlSuffix, Workspace.projectTypes.Network);
var fileSystemUISourceCode = await TestRunner.waitForUISourceCode(urlSuffix, Workspace.projectTypes.FileSystem); var fileSystemUISourceCode = await TestRunner.waitForUISourceCode(urlSuffix, Workspace.projectTypes.FileSystem);
var binding = new Persistence.AutomappingBinding(networkUISourceCode, fileSystemUISourceCode, false); var binding = new Persistence.PersistenceBinding(networkUISourceCode, fileSystemUISourceCode);
this._bindings.add(binding); this._bindings.add(binding);
this._onBindingAdded.call(null, binding); this._persistence.addBindingForTest(binding);
} }
_findBinding(urlSuffix) { _findBinding(urlSuffix) {
...@@ -99,12 +92,12 @@ class TestMapping { ...@@ -99,12 +92,12 @@ class TestMapping {
} }
this._bindings.delete(binding); this._bindings.delete(binding);
this._onBindingRemoved.call(null, binding); this._persistence.removeBindingForTest(binding);
} }
dispose() { dispose() {
for (var binding of this._bindings) for (var binding of this._bindings)
this._onBindingRemoved.call(null, binding); this._persistence.removeBindingForTest(binding);
this._bindings.clear(); this._bindings.clear();
} }
......
...@@ -20,7 +20,6 @@ Persistence.Automapping = class { ...@@ -20,7 +20,6 @@ Persistence.Automapping = class {
/** @type {!Set<!Persistence.AutomappingBinding>} */ /** @type {!Set<!Persistence.AutomappingBinding>} */
this._bindings = new Set(); this._bindings = new Set();
this._enabled = true;
/** @type {!Map<string, !Workspace.UISourceCode>} */ /** @type {!Map<string, !Workspace.UISourceCode>} */
this._fileSystemUISourceCodes = new Map(); this._fileSystemUISourceCodes = new Map();
this._sweepThrottler = new Common.Throttler(100); this._sweepThrottler = new Common.Throttler(100);
...@@ -53,16 +52,6 @@ Persistence.Automapping = class { ...@@ -53,16 +52,6 @@ Persistence.Automapping = class {
this._onUISourceCodeAdded(uiSourceCode); this._onUISourceCodeAdded(uiSourceCode);
} }
/**
* @param {boolean} enabled
*/
setEnabled(enabled) {
if (this._enabled === enabled)
return;
this._enabled = enabled;
this._scheduleRemap();
}
_scheduleRemap() { _scheduleRemap() {
for (var binding of this._bindings.valuesArray()) for (var binding of this._bindings.valuesArray())
this._unbindNetwork(binding.network); this._unbindNetwork(binding.network);
...@@ -176,7 +165,7 @@ Persistence.Automapping = class { ...@@ -176,7 +165,7 @@ Persistence.Automapping = class {
*/ */
_bindNetwork(networkSourceCode) { _bindNetwork(networkSourceCode) {
if (networkSourceCode[Persistence.Automapping._processingPromise] || if (networkSourceCode[Persistence.Automapping._processingPromise] ||
networkSourceCode[Persistence.Automapping._binding] || !this._enabled) networkSourceCode[Persistence.Automapping._binding])
return; return;
var createBindingPromise = var createBindingPromise =
this._createBinding(networkSourceCode).then(validateBinding.bind(this)).then(onBinding.bind(this)); this._createBinding(networkSourceCode).then(validateBinding.bind(this)).then(onBinding.bind(this));
......
...@@ -22,15 +22,23 @@ Persistence.Persistence = class extends Common.Object { ...@@ -22,15 +22,23 @@ Persistence.Persistence = class extends Common.Object {
var linkDecorator = new Persistence.PersistenceUtils.LinkDecorator(this); var linkDecorator = new Persistence.PersistenceUtils.LinkDecorator(this);
Components.Linkifier.setLinkDecorator(linkDecorator); Components.Linkifier.setLinkDecorator(linkDecorator);
this._mapping = this._mapping = null;
new Persistence.Automapping(workspace, this._onBindingAdded.bind(this), this._onBindingRemoved.bind(this)); this.setAutomappingEnabled(true);
} }
/** /**
* @param {boolean} enabled * @param {boolean} enabled
*/ */
setAutomappingEnabled(enabled) { setAutomappingEnabled(enabled) {
this._mapping.setEnabled(enabled); if (enabled === !!this._mapping)
return;
if (!enabled) {
this._mapping.dispose();
this._mapping = null;
} else {
this._mapping = new Persistence.Automapping(
this._workspace, this._onBindingAdded.bind(this), this._onBindingRemoved.bind(this));
}
} }
/** /**
...@@ -40,6 +48,13 @@ Persistence.Persistence = class extends Common.Object { ...@@ -40,6 +48,13 @@ Persistence.Persistence = class extends Common.Object {
this._innerAddBinding(binding); this._innerAddBinding(binding);
} }
/**
* @param {!Persistence.PersistenceBinding} binding
*/
addBindingForTest(binding) {
this._innerAddBinding(binding);
}
/** /**
* @param {!Persistence.PersistenceBinding} binding * @param {!Persistence.PersistenceBinding} binding
*/ */
...@@ -48,11 +63,10 @@ Persistence.Persistence = class extends Common.Object { ...@@ -48,11 +63,10 @@ Persistence.Persistence = class extends Common.Object {
} }
/** /**
* @param {function(function(!Persistence.AutomappingBinding), function(!Persistence.AutomappingBinding)):!Persistence.MappingSystem} mappingFactory * @param {!Persistence.PersistenceBinding} binding
*/ */
_setMappingForTest(mappingFactory) { removeBindingForTest(binding) {
this._mapping.dispose(); this._innerRemoveBinding(binding);
this._mapping = mappingFactory(this._onBindingAdded.bind(this), this._onBindingRemoved.bind(this));
} }
/** /**
...@@ -347,7 +361,10 @@ Persistence.Persistence = class extends Common.Object { ...@@ -347,7 +361,10 @@ Persistence.Persistence = class extends Common.Object {
} }
dispose() { dispose() {
this._mapping.dispose(); if (this._mapping) {
this._mapping.dispose();
this._mapping = null;
}
} }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment