| Index: Source/devtools/front_end/settings/FrameworkBlackboxDialog.js
|
| diff --git a/Source/devtools/front_end/settings/FrameworkBlackboxDialog.js b/Source/devtools/front_end/settings/FrameworkBlackboxDialog.js
|
| index eed6b1652b8caac91fa7f5e5d2798dafd04d0827..8920de0cfadd96de741bdf71b09a66b1e6c367dd 100644
|
| --- a/Source/devtools/front_end/settings/FrameworkBlackboxDialog.js
|
| +++ b/Source/devtools/front_end/settings/FrameworkBlackboxDialog.js
|
| @@ -29,19 +29,22 @@ WebInspector.FrameworkBlackboxDialog = function()
|
| var section = contents.createChild("div", "section");
|
| var container = section.createChild("div", "settings-list-container");
|
|
|
| + this._blackboxLabel = WebInspector.UIString("Blackbox");
|
| + this._disabledLabel = WebInspector.UIString("Disabled");
|
| +
|
| var column1 = { id: "pattern", placeholder: "/framework\\.js$" };
|
| - var column2 = { id: "value", options: [WebInspector.UIString("Blackbox")] };
|
| + var column2 = { id: "value", options: [this._blackboxLabel, this._disabledLabel] };
|
|
|
| this._patternsList = new WebInspector.EditableSettingsList([column1, column2], this._patternValuesProvider.bind(this), this._patternValidate.bind(this), this._patternEdit.bind(this));
|
| this._patternsList.element.classList.add("blackbox-patterns-list");
|
| this._patternsList.addEventListener(WebInspector.SettingsList.Events.Removed, this._patternRemovedFromList.bind(this));
|
| container.appendChild(this._patternsList.element);
|
|
|
| - /** @type {!Object.<string, boolean>} */
|
| - this._entries = {};
|
| + /** @type {!StringMap.<string>} */
|
| + this._entries = new StringMap();
|
| var patterns = WebInspector.settings.skipStackFramesPattern.getAsArray();
|
| for (var i = 0; i < patterns.length; ++i)
|
| - this._addPattern(patterns[i]);
|
| + this._addPattern(patterns[i].pattern, patterns[i].disabled);
|
|
|
| this.element.tabIndex = 0;
|
| }
|
| @@ -108,7 +111,7 @@ WebInspector.FrameworkBlackboxDialog.prototype = {
|
| case "pattern":
|
| return itemId;
|
| case "value":
|
| - return WebInspector.UIString("Blackbox");
|
| + return /** @type {string} */ (this._entries.get(itemId));
|
| default:
|
| console.assert("Should not be reached.");
|
| }
|
| @@ -123,9 +126,10 @@ WebInspector.FrameworkBlackboxDialog.prototype = {
|
| _patternValidate: function(itemId, data)
|
| {
|
| var regex;
|
| + var oldPattern = itemId;
|
| var newPattern = data["pattern"];
|
| try {
|
| - if (newPattern && !this._entries[newPattern])
|
| + if (newPattern && (oldPattern === newPattern || !this._entries.contains(newPattern)))
|
| regex = new RegExp(newPattern);
|
| } catch (e) {
|
| }
|
| @@ -142,21 +146,32 @@ WebInspector.FrameworkBlackboxDialog.prototype = {
|
| var newPattern = data["pattern"];
|
| if (!newPattern)
|
| return;
|
| + var disabled = (data["value"] === this._disabledLabel);
|
|
|
| var patterns = WebInspector.settings.skipStackFramesPattern.getAsArray();
|
| - var pos = oldPattern ? patterns.indexOf(oldPattern) : -1;
|
| - if (pos === -1)
|
| - patterns.push(newPattern);
|
| - else
|
| - patterns[pos] = newPattern;
|
| + for (var i = 0; i <= patterns.length; ++i) {
|
| + if (i === patterns.length) {
|
| + patterns.push({ pattern: newPattern, disabled: disabled });
|
| + break;
|
| + }
|
| + if (patterns[i].pattern === oldPattern) {
|
| + patterns[i] = { pattern: newPattern, disabled: disabled };
|
| + break;
|
| + }
|
| + }
|
| WebInspector.settings.skipStackFramesPattern.setAsArray(patterns);
|
|
|
| + if (oldPattern && oldPattern === newPattern) {
|
| + this._entries.put(newPattern, disabled ? this._disabledLabel : this._blackboxLabel)
|
| + this._patternsList.refreshItem(newPattern);
|
| + return;
|
| + }
|
| +
|
| if (oldPattern) {
|
| this._patternsList.removeItem(oldPattern);
|
| - delete this._entries[oldPattern];
|
| + this._entries.remove(oldPattern);
|
| }
|
| - this._addPattern(newPattern);
|
| - this._patternsList.selectItem(newPattern);
|
| + this._addPattern(newPattern, disabled);
|
| },
|
|
|
| /**
|
| @@ -167,21 +182,27 @@ WebInspector.FrameworkBlackboxDialog.prototype = {
|
| var pattern = /** @type{?string} */ (event.data);
|
| if (!pattern)
|
| return;
|
| - delete this._entries[pattern];
|
| + this._entries.remove(pattern);
|
|
|
| var patterns = WebInspector.settings.skipStackFramesPattern.getAsArray();
|
| - patterns.remove(pattern);
|
| + for (var i = 0; i < patterns.length; ++i) {
|
| + if (patterns[i].pattern === pattern) {
|
| + patterns.splice(i, 1);
|
| + break;
|
| + }
|
| + }
|
| WebInspector.settings.skipStackFramesPattern.setAsArray(patterns);
|
| },
|
|
|
| /**
|
| * @param {string} pattern
|
| + * @param {boolean=} disabled
|
| */
|
| - _addPattern: function(pattern)
|
| + _addPattern: function(pattern, disabled)
|
| {
|
| - if (!pattern || this._entries[pattern])
|
| + if (!pattern || this._entries.contains(pattern))
|
| return;
|
| - this._entries[pattern] = true;
|
| + this._entries.put(pattern, disabled ? this._disabledLabel : this._blackboxLabel);
|
| this._patternsList.addItem(pattern, null);
|
| this._resize();
|
| },
|
|
|