The Great Blink mv for source files, part 2.
Move and rename files.
NOAUTOREVERT=true
NOPRESUBMIT=true
NOTREECHECKS=true
Bug: 768828
[email protected]
NOTRY=true
Change-Id: I66d3b155808bc5bdbf237b80208e1e552bcf7f28
Reviewed-on: https://chromium-review.googlesource.com/1001153
Reviewed-by: Blink Reformat <[email protected]>
Commit-Queue: Blink Reformat <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#549061}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0aee4434a4dba42a42abaea9bfbc0cd196a63bc1
diff --git a/front_end/settings/FrameworkBlackboxSettingsTab.js b/front_end/settings/FrameworkBlackboxSettingsTab.js
new file mode 100644
index 0000000..262d25b
--- /dev/null
+++ b/front_end/settings/FrameworkBlackboxSettingsTab.js
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2014 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+/**
+ * @implements {UI.ListWidget.Delegate}
+ * @unrestricted
+ */
+Settings.FrameworkBlackboxSettingsTab = class extends UI.VBox {
+ constructor() {
+ super(true);
+ this.registerRequiredCSS('settings/frameworkBlackboxSettingsTab.css');
+
+ this.contentElement.createChild('div', 'header').textContent = Common.UIString('Framework Blackbox Patterns');
+ this.contentElement.createChild('div', 'blackbox-content-scripts')
+ .appendChild(UI.SettingsUI.createSettingCheckbox(
+ Common.UIString('Blackbox content scripts'), Common.moduleSetting('skipContentScripts'), true));
+
+ this._blackboxLabel = Common.UIString('Blackbox');
+ this._disabledLabel = Common.UIString('Disabled');
+
+ this._list = new UI.ListWidget(this);
+ this._list.element.classList.add('blackbox-list');
+ this._list.registerRequiredCSS('settings/frameworkBlackboxSettingsTab.css');
+
+ const placeholder = createElementWithClass('div', 'blackbox-list-empty');
+ placeholder.textContent = Common.UIString('No blackboxed patterns');
+ this._list.setEmptyPlaceholder(placeholder);
+ this._list.show(this.contentElement);
+ const addPatternButton =
+ UI.createTextButton(Common.UIString('Add pattern...'), this._addButtonClicked.bind(this), 'add-button');
+ this.contentElement.appendChild(addPatternButton);
+
+ this._setting = Common.moduleSetting('skipStackFramesPattern');
+ this._setting.addChangeListener(this._settingUpdated, this);
+
+ this.setDefaultFocusedElement(addPatternButton);
+ this.contentElement.tabIndex = 0;
+ }
+
+ /**
+ * @override
+ */
+ wasShown() {
+ super.wasShown();
+ this._settingUpdated();
+ }
+
+ _settingUpdated() {
+ this._list.clear();
+ const patterns = this._setting.getAsArray();
+ for (let i = 0; i < patterns.length; ++i)
+ this._list.appendItem(patterns[i], true);
+ }
+
+ _addButtonClicked() {
+ this._list.addNewItem(this._setting.getAsArray().length, {pattern: '', disabled: false});
+ }
+
+ /**
+ * @override
+ * @param {*} item
+ * @param {boolean} editable
+ * @return {!Element}
+ */
+ renderItem(item, editable) {
+ const element = createElementWithClass('div', 'blackbox-list-item');
+ const pattern = element.createChild('div', 'blackbox-pattern');
+ pattern.textContent = item.pattern;
+ pattern.title = item.pattern;
+ element.createChild('div', 'blackbox-separator');
+ element.createChild('div', 'blackbox-behavior').textContent =
+ item.disabled ? this._disabledLabel : this._blackboxLabel;
+ if (item.disabled)
+ element.classList.add('blackbox-disabled');
+ return element;
+ }
+
+ /**
+ * @override
+ * @param {*} item
+ * @param {number} index
+ */
+ removeItemRequested(item, index) {
+ const patterns = this._setting.getAsArray();
+ patterns.splice(index, 1);
+ this._setting.setAsArray(patterns);
+ }
+
+ /**
+ * @override
+ * @param {*} item
+ * @param {!UI.ListWidget.Editor} editor
+ * @param {boolean} isNew
+ */
+ commitEdit(item, editor, isNew) {
+ item.pattern = editor.control('pattern').value.trim();
+ item.disabled = editor.control('behavior').value === this._disabledLabel;
+
+ const list = this._setting.getAsArray();
+ if (isNew)
+ list.push(item);
+ this._setting.setAsArray(list);
+ }
+
+ /**
+ * @override
+ * @param {*} item
+ * @return {!UI.ListWidget.Editor}
+ */
+ beginEdit(item) {
+ const editor = this._createEditor();
+ editor.control('pattern').value = item.pattern;
+ editor.control('behavior').value = item.disabled ? this._disabledLabel : this._blackboxLabel;
+ return editor;
+ }
+
+ /**
+ * @return {!UI.ListWidget.Editor}
+ */
+ _createEditor() {
+ if (this._editor)
+ return this._editor;
+
+ const editor = new UI.ListWidget.Editor();
+ this._editor = editor;
+ const content = editor.contentElement();
+
+ const titles = content.createChild('div', 'blackbox-edit-row');
+ titles.createChild('div', 'blackbox-pattern').textContent = Common.UIString('Pattern');
+ titles.createChild('div', 'blackbox-separator blackbox-separator-invisible');
+ titles.createChild('div', 'blackbox-behavior').textContent = Common.UIString('Behavior');
+
+ const fields = content.createChild('div', 'blackbox-edit-row');
+ fields.createChild('div', 'blackbox-pattern')
+ .appendChild(editor.createInput('pattern', 'text', '/framework\\.js$', patternValidator.bind(this)));
+ fields.createChild('div', 'blackbox-separator blackbox-separator-invisible');
+ fields.createChild('div', 'blackbox-behavior')
+ .appendChild(editor.createSelect('behavior', [this._blackboxLabel, this._disabledLabel], behaviorValidator));
+
+ return editor;
+
+ /**
+ * @param {*} item
+ * @param {number} index
+ * @param {!HTMLInputElement|!HTMLSelectElement} input
+ * @this {Settings.FrameworkBlackboxSettingsTab}
+ * @return {boolean}
+ */
+ function patternValidator(item, index, input) {
+ const pattern = input.value.trim();
+ const patterns = this._setting.getAsArray();
+ for (let i = 0; i < patterns.length; ++i) {
+ if (i !== index && patterns[i].pattern === pattern)
+ return false;
+ }
+
+ let regex;
+ try {
+ regex = new RegExp(pattern);
+ } catch (e) {
+ }
+ return !!(pattern && regex);
+ }
+
+ /**
+ * @param {*} item
+ * @param {number} index
+ * @param {!HTMLInputElement|!HTMLSelectElement} input
+ * @return {boolean}
+ */
+ function behaviorValidator(item, index, input) {
+ return true;
+ }
+ }
+};