Commit f3222c49 authored by Nathan Bruer's avatar Nathan Bruer Committed by Commit Bot

[Devtools] Added ability to manage binding outside of workspaces

Adds new interfaces to manage bindings from outside persistence mappers.

* Adds ignoreProject/removeIgnoredProject - This is used to ignore a
project and automapping will not auto-map anything in these projects.
* Added addBinding/removeBinding - These are used to manually bind two
UISourceCodes together.

R=lushnikov,pfeldman
BUG=760316

Change-Id: Id86a368a1b5ec50c34ed38deee8714b190fb6869
Reviewed-on: https://chromium-review.googlesource.com/720244Reviewed-by: default avatarAndrey Lushnikov <lushnikov@chromium.org>
Commit-Queue: Blaise Bruer <allada@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509620}
parent 7d6526b9
......@@ -22,6 +22,8 @@ Persistence.Automapping = class {
/** @type {!Map<string, !Workspace.UISourceCode>} */
this._fileSystemUISourceCodes = new Map();
/** @type {!Set<!Workspace.Project>} */
this._ignoredProjects = new Set();
this._sweepThrottler = new Common.Throttler(100);
var pathEncoder = new Persistence.Automapping.PathEncoder();
......@@ -52,6 +54,24 @@ Persistence.Automapping = class {
this._onUISourceCodeAdded(uiSourceCode);
}
/**
* @override
* @param {!Workspace.Project} project
*/
ignoreProject(project) {
this._ignoredProjects.add(project);
this._scheduleRemap();
}
/**
* @override
* @param {!Workspace.Project} project
*/
removeIgnoredProject(project) {
this._ignoredProjects.delete(project);
this._scheduleRemap();
}
_scheduleRemap() {
for (var binding of this._bindings.valuesArray())
this._unbindNetwork(binding.network);
......@@ -160,7 +180,7 @@ Persistence.Automapping = class {
*/
_bindNetwork(networkSourceCode) {
if (networkSourceCode[Persistence.Automapping._processingPromise] ||
networkSourceCode[Persistence.Automapping._binding])
networkSourceCode[Persistence.Automapping._binding] || this._ignoredProjects.has(networkSourceCode.project()))
return;
var createBindingPromise = this._createBinding(networkSourceCode).then(onBinding.bind(this));
networkSourceCode[Persistence.Automapping._processingPromise] = createBindingPromise;
......
......@@ -32,6 +32,22 @@ Persistence.DefaultMapping = class {
this._remap();
}
/**
* @override
* @param {!Workspace.Project} project
*/
ignoreProject(project) {
// Not implemented. This interface is set to be removed when DefaultMapping is fully removed.
}
/**
* @override
* @param {!Workspace.Project} project
*/
removeIgnoredProject(project) {
// Not implemented. This interface is set to be removed when DefaultMapping is fully removed.
}
_remap() {
for (var binding of this._bindings.valuesArray())
this._unbind(binding.network);
......
......@@ -32,6 +32,34 @@ Persistence.Persistence = class extends Common.Object {
}
}
/**
* @param {!Workspace.Project} project
*/
ignoreProject(project) {
this._mapping.ignoreProject(project);
}
/**
* @param {!Workspace.Project} project
*/
removeIgnoredProject(project) {
this._mapping.removeIgnoredProject(project);
}
/**
* @param {!Persistence.PersistenceBinding} binding
*/
addBinding(binding) {
this._establishBinding(binding);
}
/**
* @param {!Persistence.PersistenceBinding} binding
*/
removeBinding(binding) {
this._innerRemoveBinding(binding);
}
/**
* @param {function(function(!Persistence.PersistenceBinding), function(!Persistence.PersistenceBinding)):!Persistence.MappingSystem} mappingFactory
*/
......@@ -115,7 +143,7 @@ Persistence.Persistence = class extends Common.Object {
/**
* @param {!Persistence.PersistenceBinding} binding
*/
_onBindingRemoved(binding) {
_innerRemoveBinding(binding) {
binding._removed = true;
if (binding.network[Persistence.Persistence._binding] !== binding)
return;
......@@ -143,6 +171,13 @@ Persistence.Persistence = class extends Common.Object {
this.dispatchEventToListeners(Persistence.Persistence.Events.BindingRemoved, binding);
}
/**
* @param {!Persistence.PersistenceBinding} binding
*/
_onBindingRemoved(binding) {
this._innerRemoveBinding(binding);
}
/**
* @param {!Common.Event} event
*/
......@@ -397,7 +432,17 @@ Persistence.PersistenceBinding = class {
Persistence.MappingSystem = function() {};
Persistence.MappingSystem.prototype = {
dispose: function() {}
dispose: function() {},
/**
* @param {!Workspace.Project} project
*/
ignoreProject(project) {},
/**
* @param {!Workspace.Project} project
*/
removeIgnoredProject(project) {}
};
/** @type {!Persistence.Persistence} */
......
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