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) {
};
BindingsTestRunner.initializeTestMapping = function() {
var testMapping;
Persistence.persistence._setMappingForTest((bindingCreated, bindingRemoved) => {
testMapping = new TestMapping(bindingCreated, bindingRemoved);
return testMapping;
});
return testMapping;
return new TestMapping(Persistence.persistence);
};
class TestMapping {
constructor(onBindingAdded, onBindingRemoved) {
this._onBindingAdded = onBindingAdded;
this._onBindingRemoved = onBindingRemoved;
constructor(persistence) {
this._persistence = persistence;
persistence.setAutomappingEnabled(false);
this._bindings = new Set();
}
......@@ -75,9 +68,9 @@ class TestMapping {
var networkUISourceCode = await TestRunner.waitForUISourceCode(urlSuffix, Workspace.projectTypes.Network);
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._onBindingAdded.call(null, binding);
this._persistence.addBindingForTest(binding);
}
_findBinding(urlSuffix) {
......@@ -99,12 +92,12 @@ class TestMapping {
}
this._bindings.delete(binding);
this._onBindingRemoved.call(null, binding);
this._persistence.removeBindingForTest(binding);
}
dispose() {
for (var binding of this._bindings)
this._onBindingRemoved.call(null, binding);
this._persistence.removeBindingForTest(binding);
this._bindings.clear();
}
......
......@@ -20,7 +20,6 @@ Persistence.Automapping = class {
/** @type {!Set<!Persistence.AutomappingBinding>} */
this._bindings = new Set();
this._enabled = true;
/** @type {!Map<string, !Workspace.UISourceCode>} */
this._fileSystemUISourceCodes = new Map();
this._sweepThrottler = new Common.Throttler(100);
......@@ -53,16 +52,6 @@ Persistence.Automapping = class {
this._onUISourceCodeAdded(uiSourceCode);
}
/**
* @param {boolean} enabled
*/
setEnabled(enabled) {
if (this._enabled === enabled)
return;
this._enabled = enabled;
this._scheduleRemap();
}
_scheduleRemap() {
for (var binding of this._bindings.valuesArray())
this._unbindNetwork(binding.network);
......@@ -176,7 +165,7 @@ Persistence.Automapping = class {
*/
_bindNetwork(networkSourceCode) {
if (networkSourceCode[Persistence.Automapping._processingPromise] ||
networkSourceCode[Persistence.Automapping._binding] || !this._enabled)
networkSourceCode[Persistence.Automapping._binding])
return;
var createBindingPromise =
this._createBinding(networkSourceCode).then(validateBinding.bind(this)).then(onBinding.bind(this));
......
......@@ -22,15 +22,23 @@ Persistence.Persistence = class extends Common.Object {
var linkDecorator = new Persistence.PersistenceUtils.LinkDecorator(this);
Components.Linkifier.setLinkDecorator(linkDecorator);
this._mapping =
new Persistence.Automapping(workspace, this._onBindingAdded.bind(this), this._onBindingRemoved.bind(this));
this._mapping = null;
this.setAutomappingEnabled(true);
}
/**
* @param {boolean} 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 {
this._innerAddBinding(binding);
}
/**
* @param {!Persistence.PersistenceBinding} binding
*/
addBindingForTest(binding) {
this._innerAddBinding(binding);
}
/**
* @param {!Persistence.PersistenceBinding} binding
*/
......@@ -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) {
this._mapping.dispose();
this._mapping = mappingFactory(this._onBindingAdded.bind(this), this._onBindingRemoved.bind(this));
removeBindingForTest(binding) {
this._innerRemoveBinding(binding);
}
/**
......@@ -347,7 +361,10 @@ Persistence.Persistence = class extends Common.Object {
}
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