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 { ...@@ -22,6 +22,8 @@ Persistence.Automapping = class {
/** @type {!Map<string, !Workspace.UISourceCode>} */ /** @type {!Map<string, !Workspace.UISourceCode>} */
this._fileSystemUISourceCodes = new Map(); this._fileSystemUISourceCodes = new Map();
/** @type {!Set<!Workspace.Project>} */
this._ignoredProjects = new Set();
this._sweepThrottler = new Common.Throttler(100); this._sweepThrottler = new Common.Throttler(100);
var pathEncoder = new Persistence.Automapping.PathEncoder(); var pathEncoder = new Persistence.Automapping.PathEncoder();
...@@ -52,6 +54,24 @@ Persistence.Automapping = class { ...@@ -52,6 +54,24 @@ Persistence.Automapping = class {
this._onUISourceCodeAdded(uiSourceCode); 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() { _scheduleRemap() {
for (var binding of this._bindings.valuesArray()) for (var binding of this._bindings.valuesArray())
this._unbindNetwork(binding.network); this._unbindNetwork(binding.network);
...@@ -160,7 +180,7 @@ Persistence.Automapping = class { ...@@ -160,7 +180,7 @@ Persistence.Automapping = class {
*/ */
_bindNetwork(networkSourceCode) { _bindNetwork(networkSourceCode) {
if (networkSourceCode[Persistence.Automapping._processingPromise] || if (networkSourceCode[Persistence.Automapping._processingPromise] ||
networkSourceCode[Persistence.Automapping._binding]) networkSourceCode[Persistence.Automapping._binding] || this._ignoredProjects.has(networkSourceCode.project()))
return; return;
var createBindingPromise = this._createBinding(networkSourceCode).then(onBinding.bind(this)); var createBindingPromise = this._createBinding(networkSourceCode).then(onBinding.bind(this));
networkSourceCode[Persistence.Automapping._processingPromise] = createBindingPromise; networkSourceCode[Persistence.Automapping._processingPromise] = createBindingPromise;
......
...@@ -32,6 +32,22 @@ Persistence.DefaultMapping = class { ...@@ -32,6 +32,22 @@ Persistence.DefaultMapping = class {
this._remap(); 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() { _remap() {
for (var binding of this._bindings.valuesArray()) for (var binding of this._bindings.valuesArray())
this._unbind(binding.network); this._unbind(binding.network);
......
...@@ -32,6 +32,34 @@ Persistence.Persistence = class extends Common.Object { ...@@ -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 * @param {function(function(!Persistence.PersistenceBinding), function(!Persistence.PersistenceBinding)):!Persistence.MappingSystem} mappingFactory
*/ */
...@@ -115,7 +143,7 @@ Persistence.Persistence = class extends Common.Object { ...@@ -115,7 +143,7 @@ Persistence.Persistence = class extends Common.Object {
/** /**
* @param {!Persistence.PersistenceBinding} binding * @param {!Persistence.PersistenceBinding} binding
*/ */
_onBindingRemoved(binding) { _innerRemoveBinding(binding) {
binding._removed = true; binding._removed = true;
if (binding.network[Persistence.Persistence._binding] !== binding) if (binding.network[Persistence.Persistence._binding] !== binding)
return; return;
...@@ -143,6 +171,13 @@ Persistence.Persistence = class extends Common.Object { ...@@ -143,6 +171,13 @@ Persistence.Persistence = class extends Common.Object {
this.dispatchEventToListeners(Persistence.Persistence.Events.BindingRemoved, binding); this.dispatchEventToListeners(Persistence.Persistence.Events.BindingRemoved, binding);
} }
/**
* @param {!Persistence.PersistenceBinding} binding
*/
_onBindingRemoved(binding) {
this._innerRemoveBinding(binding);
}
/** /**
* @param {!Common.Event} event * @param {!Common.Event} event
*/ */
...@@ -397,7 +432,17 @@ Persistence.PersistenceBinding = class { ...@@ -397,7 +432,17 @@ Persistence.PersistenceBinding = class {
Persistence.MappingSystem = function() {}; Persistence.MappingSystem = function() {};
Persistence.MappingSystem.prototype = { Persistence.MappingSystem.prototype = {
dispose: function() {} dispose: function() {},
/**
* @param {!Workspace.Project} project
*/
ignoreProject(project) {},
/**
* @param {!Workspace.Project} project
*/
removeIgnoredProject(project) {}
}; };
/** @type {!Persistence.Persistence} */ /** @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