| Index: third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
|
| index ff148463f3a0a280eaf413e736f9eea5b61ff53a..d6a05439e1eedc5de52f983dc0a2cb88fc94d428 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
|
| @@ -26,27 +26,25 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| * @implements {WebInspector.Searchable}
|
| * @implements {WebInspector.TargetManager.Observer}
|
| * @implements {WebInspector.ViewportControl.Provider}
|
| + * @unrestricted
|
| */
|
| -WebInspector.ConsoleView = function()
|
| -{
|
| - WebInspector.VBox.call(this);
|
| +WebInspector.ConsoleView = class extends WebInspector.VBox {
|
| + constructor() {
|
| + super();
|
| this.setMinimumSize(0, 35);
|
| - this.registerRequiredCSS("console/consoleView.css");
|
| + this.registerRequiredCSS('console/consoleView.css');
|
|
|
| this._searchableView = new WebInspector.SearchableView(this);
|
| - this._searchableView.setPlaceholder(WebInspector.UIString("Find string in logs"));
|
| + this._searchableView.setPlaceholder(WebInspector.UIString('Find string in logs'));
|
| this._searchableView.setMinimalSearchQuerySize(0);
|
| this._searchableView.show(this.element);
|
|
|
| this._contentsElement = this._searchableView.element;
|
| - this._contentsElement.classList.add("console-view");
|
| + this._contentsElement.classList.add('console-view');
|
| /** @type {!Array.<!WebInspector.ConsoleViewMessage>} */
|
| this._visibleViewMessages = [];
|
| this._urlToMessageCount = {};
|
| @@ -57,20 +55,25 @@ WebInspector.ConsoleView = function()
|
| */
|
| this._regexMatchRanges = [];
|
|
|
| - this._executionContextComboBox = new WebInspector.ToolbarComboBox(null, "console-context");
|
| + this._executionContextComboBox = new WebInspector.ToolbarComboBox(null, 'console-context');
|
| this._executionContextComboBox.setMaxWidth(200);
|
| - this._consoleContextSelector = new WebInspector.ConsoleContextSelector(this._executionContextComboBox.selectElement());
|
| + this._consoleContextSelector =
|
| + new WebInspector.ConsoleContextSelector(this._executionContextComboBox.selectElement());
|
|
|
| this._filter = new WebInspector.ConsoleViewFilter(this);
|
| - this._filter.addEventListener(WebInspector.ConsoleViewFilter.Events.FilterChanged, this._updateMessageList.bind(this));
|
| + this._filter.addEventListener(
|
| + WebInspector.ConsoleViewFilter.Events.FilterChanged, this._updateMessageList.bind(this));
|
|
|
| - this._filterBar = new WebInspector.FilterBar("consoleView");
|
| + this._filterBar = new WebInspector.FilterBar('consoleView');
|
|
|
| - this._preserveLogCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Preserve log"), WebInspector.UIString("Do not clear log on page reload / navigation"), WebInspector.moduleSetting("preserveConsoleLog"));
|
| - this._progressToolbarItem = new WebInspector.ToolbarItem(createElement("div"));
|
| + this._preserveLogCheckbox = new WebInspector.ToolbarCheckbox(
|
| + WebInspector.UIString('Preserve log'), WebInspector.UIString('Do not clear log on page reload / navigation'),
|
| + WebInspector.moduleSetting('preserveConsoleLog'));
|
| + this._progressToolbarItem = new WebInspector.ToolbarItem(createElement('div'));
|
|
|
| - var toolbar = new WebInspector.Toolbar("", this._contentsElement);
|
| - toolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(/** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("console.clear"))));
|
| + var toolbar = new WebInspector.Toolbar('', this._contentsElement);
|
| + toolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(
|
| + /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('console.clear'))));
|
| toolbar.appendToolbarItem(this._filterBar.filterButton());
|
| toolbar.appendToolbarItem(this._executionContextComboBox);
|
| toolbar.appendToolbarItem(this._preserveLogCheckbox);
|
| @@ -81,60 +84,61 @@ WebInspector.ConsoleView = function()
|
|
|
| this._viewport = new WebInspector.ViewportControl(this);
|
| this._viewport.setStickToBottom(true);
|
| - this._viewport.contentElement().classList.add("console-group", "console-group-messages");
|
| + this._viewport.contentElement().classList.add('console-group', 'console-group-messages');
|
| this._contentsElement.appendChild(this._viewport.element);
|
| this._messagesElement = this._viewport.element;
|
| - this._messagesElement.id = "console-messages";
|
| - this._messagesElement.classList.add("monospace");
|
| - this._messagesElement.addEventListener("click", this._messagesClicked.bind(this), true);
|
| + this._messagesElement.id = 'console-messages';
|
| + this._messagesElement.classList.add('monospace');
|
| + this._messagesElement.addEventListener('click', this._messagesClicked.bind(this), true);
|
|
|
| this._viewportThrottler = new WebInspector.Throttler(50);
|
|
|
| - this._filterStatusMessageElement = createElementWithClass("div", "console-message");
|
| + this._filterStatusMessageElement = createElementWithClass('div', 'console-message');
|
| this._messagesElement.insertBefore(this._filterStatusMessageElement, this._messagesElement.firstChild);
|
| - this._filterStatusTextElement = this._filterStatusMessageElement.createChild("span", "console-info");
|
| - this._filterStatusMessageElement.createTextChild(" ");
|
| - var resetFiltersLink = this._filterStatusMessageElement.createChild("span", "console-info link");
|
| - resetFiltersLink.textContent = WebInspector.UIString("Show all messages.");
|
| - resetFiltersLink.addEventListener("click", this._filter.reset.bind(this._filter), true);
|
| + this._filterStatusTextElement = this._filterStatusMessageElement.createChild('span', 'console-info');
|
| + this._filterStatusMessageElement.createTextChild(' ');
|
| + var resetFiltersLink = this._filterStatusMessageElement.createChild('span', 'console-info link');
|
| + resetFiltersLink.textContent = WebInspector.UIString('Show all messages.');
|
| + resetFiltersLink.addEventListener('click', this._filter.reset.bind(this._filter), true);
|
|
|
| this._topGroup = WebInspector.ConsoleGroup.createTopGroup();
|
| this._currentGroup = this._topGroup;
|
|
|
| - this._promptElement = this._messagesElement.createChild("div", "source-code");
|
| - this._promptElement.id = "console-prompt";
|
| - this._promptElement.addEventListener("input", this._promptInput.bind(this), false);
|
| + this._promptElement = this._messagesElement.createChild('div', 'source-code');
|
| + this._promptElement.id = 'console-prompt';
|
| + this._promptElement.addEventListener('input', this._promptInput.bind(this), false);
|
|
|
| // FIXME: This is a workaround for the selection machinery bug. See crbug.com/410899
|
| - var selectAllFixer = this._messagesElement.createChild("div", "console-view-fix-select-all");
|
| - selectAllFixer.textContent = ".";
|
| + var selectAllFixer = this._messagesElement.createChild('div', 'console-view-fix-select-all');
|
| + selectAllFixer.textContent = '.';
|
|
|
| - this._showAllMessagesCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Show all messages"));
|
| + this._showAllMessagesCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString('Show all messages'));
|
| this._showAllMessagesCheckbox.inputElement.checked = true;
|
| - this._showAllMessagesCheckbox.inputElement.addEventListener("change", this._updateMessageList.bind(this), false);
|
| + this._showAllMessagesCheckbox.inputElement.addEventListener('change', this._updateMessageList.bind(this), false);
|
|
|
| - this._showAllMessagesCheckbox.element.classList.add("hidden");
|
| + this._showAllMessagesCheckbox.element.classList.add('hidden');
|
|
|
| toolbar.appendToolbarItem(this._showAllMessagesCheckbox);
|
|
|
| this._registerShortcuts();
|
|
|
| - this._messagesElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), false);
|
| - WebInspector.moduleSetting("monitoringXHREnabled").addChangeListener(this._monitoringXHREnabledSettingChanged, this);
|
| + this._messagesElement.addEventListener('contextmenu', this._handleContextMenuEvent.bind(this), false);
|
| + WebInspector.moduleSetting('monitoringXHREnabled')
|
| + .addChangeListener(this._monitoringXHREnabledSettingChanged, this);
|
|
|
| this._linkifier = new WebInspector.Linkifier();
|
|
|
| /** @type {!Array.<!WebInspector.ConsoleViewMessage>} */
|
| this._consoleMessages = [];
|
| - this._viewMessageSymbol = Symbol("viewMessage");
|
| + this._viewMessageSymbol = Symbol('viewMessage');
|
|
|
| - this._consoleHistorySetting = WebInspector.settings.createLocalSetting("consoleHistory", []);
|
| + this._consoleHistorySetting = WebInspector.settings.createLocalSetting('consoleHistory', []);
|
|
|
| this._prompt = new WebInspector.ConsolePrompt();
|
| this._prompt.show(this._promptElement);
|
| - this._prompt.element.addEventListener("keydown", this._promptKeyDown.bind(this), true);
|
| + this._prompt.element.addEventListener('keydown', this._promptKeyDown.bind(this), true);
|
|
|
| - this._consoleHistoryAutocompleteSetting = WebInspector.moduleSetting("consoleHistoryAutocomplete");
|
| + this._consoleHistoryAutocompleteSetting = WebInspector.moduleSetting('consoleHistoryAutocomplete');
|
| this._consoleHistoryAutocompleteSetting.addChangeListener(this._consoleHistoryAutocompleteChanged, this);
|
|
|
| var historyData = this._consoleHistorySetting.get();
|
| @@ -142,7 +146,8 @@ WebInspector.ConsoleView = function()
|
| this._consoleHistoryAutocompleteChanged();
|
|
|
| this._updateFilterStatus();
|
| - WebInspector.moduleSetting("consoleTimestampsEnabled").addChangeListener(this._consoleTimestampsSettingChanged, this);
|
| + WebInspector.moduleSetting('consoleTimestampsEnabled')
|
| + .addChangeListener(this._consoleTimestampsSettingChanged, this);
|
|
|
| this._registerWithMessageSink();
|
| WebInspector.targetManager.observeTargets(this);
|
| @@ -151,1095 +156,1070 @@ WebInspector.ConsoleView = function()
|
|
|
| WebInspector.context.addFlavorChangeListener(WebInspector.ExecutionContext, this._executionContextChanged, this);
|
|
|
| - this._messagesElement.addEventListener("mousedown", this._updateStickToBottomOnMouseDown.bind(this), false);
|
| - this._messagesElement.addEventListener("mouseup", this._updateStickToBottomOnMouseUp.bind(this), false);
|
| - this._messagesElement.addEventListener("mouseleave", this._updateStickToBottomOnMouseUp.bind(this), false);
|
| - this._messagesElement.addEventListener("wheel", this._updateStickToBottomOnWheel.bind(this), false);
|
| -};
|
| + this._messagesElement.addEventListener('mousedown', this._updateStickToBottomOnMouseDown.bind(this), false);
|
| + this._messagesElement.addEventListener('mouseup', this._updateStickToBottomOnMouseUp.bind(this), false);
|
| + this._messagesElement.addEventListener('mouseleave', this._updateStickToBottomOnMouseUp.bind(this), false);
|
| + this._messagesElement.addEventListener('wheel', this._updateStickToBottomOnWheel.bind(this), false);
|
| + }
|
|
|
| -WebInspector.ConsoleView.persistedHistorySize = 300;
|
| + /**
|
| + * @return {!WebInspector.ConsoleView}
|
| + */
|
| + static instance() {
|
| + if (!WebInspector.ConsoleView._instance)
|
| + WebInspector.ConsoleView._instance = new WebInspector.ConsoleView();
|
| + return WebInspector.ConsoleView._instance;
|
| + }
|
| +
|
| + static clearConsole() {
|
| + for (var target of WebInspector.targetManager.targets()) {
|
| + target.runtimeModel.discardConsoleEntries();
|
| + target.consoleModel.requestClearMessages();
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.SearchableView}
|
| + */
|
| + searchableView() {
|
| + return this._searchableView;
|
| + }
|
| +
|
| + _clearHistory() {
|
| + this._consoleHistorySetting.set([]);
|
| + this._prompt.history().setHistoryData([]);
|
| + }
|
| +
|
| + _consoleHistoryAutocompleteChanged() {
|
| + this._prompt.setAddCompletionsFromHistory(this._consoleHistoryAutocompleteSetting.get());
|
| + }
|
| +
|
| + _initConsoleMessages() {
|
| + var mainTarget = WebInspector.targetManager.mainTarget();
|
| + var resourceTreeModel = mainTarget && WebInspector.ResourceTreeModel.fromTarget(mainTarget);
|
| + var resourcesLoaded = !resourceTreeModel || resourceTreeModel.cachedResourcesLoaded();
|
| + if (!mainTarget || !resourcesLoaded) {
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.CachedResourcesLoaded,
|
| + this._onResourceTreeModelLoaded, this);
|
| + return;
|
| + }
|
| + this._fetchMultitargetMessages();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onResourceTreeModelLoaded(event) {
|
| + var resourceTreeModel = event.target;
|
| + if (resourceTreeModel.target() !== WebInspector.targetManager.mainTarget())
|
| + return;
|
| + WebInspector.targetManager.removeModelListener(
|
| + WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.CachedResourcesLoaded,
|
| + this._onResourceTreeModelLoaded, this);
|
| + this._fetchMultitargetMessages();
|
| + }
|
| +
|
| + _fetchMultitargetMessages() {
|
| + WebInspector.multitargetConsoleModel.addEventListener(
|
| + WebInspector.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this);
|
| + WebInspector.multitargetConsoleModel.addEventListener(
|
| + WebInspector.ConsoleModel.Events.MessageAdded, this._onConsoleMessageAdded, this);
|
| + WebInspector.multitargetConsoleModel.addEventListener(
|
| + WebInspector.ConsoleModel.Events.MessageUpdated, this._onConsoleMessageUpdated, this);
|
| + WebInspector.multitargetConsoleModel.addEventListener(
|
| + WebInspector.ConsoleModel.Events.CommandEvaluated, this._commandEvaluated, this);
|
| + WebInspector.multitargetConsoleModel.messages().forEach(this._addConsoleMessage, this);
|
| + this._viewport.invalidate();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {number}
|
| + */
|
| + itemCount() {
|
| + return this._visibleViewMessages.length;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {number} index
|
| + * @return {?WebInspector.ViewportElement}
|
| + */
|
| + itemElement(index) {
|
| + return this._visibleViewMessages[index];
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {number} index
|
| + * @return {number}
|
| + */
|
| + fastHeight(index) {
|
| + return this._visibleViewMessages[index].fastHeight();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {number}
|
| + */
|
| + minimumRowHeight() {
|
| + return 16;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetAdded(target) {
|
| + this._viewport.invalidate();
|
| + this._updateAllMessagesCheckbox();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetRemoved(target) {
|
| + this._updateAllMessagesCheckbox();
|
| + }
|
| +
|
| + _updateAllMessagesCheckbox() {
|
| + var hasMultipleCotexts = WebInspector.targetManager.targets(WebInspector.Target.Capability.JS).length > 1;
|
| + this._showAllMessagesCheckbox.element.classList.toggle('hidden', !hasMultipleCotexts);
|
| + }
|
| +
|
| + _registerWithMessageSink() {
|
| + WebInspector.console.messages().forEach(this._addSinkMessage, this);
|
| + WebInspector.console.addEventListener(WebInspector.Console.Events.MessageAdded, messageAdded, this);
|
|
|
| -WebInspector.ConsoleView.prototype = {
|
| /**
|
| - * @return {!WebInspector.SearchableView}
|
| + * @param {!WebInspector.Event} event
|
| + * @this {WebInspector.ConsoleView}
|
| */
|
| - searchableView: function()
|
| - {
|
| - return this._searchableView;
|
| - },
|
| -
|
| - _clearHistory: function()
|
| - {
|
| - this._consoleHistorySetting.set([]);
|
| - this._prompt.history().setHistoryData([]);
|
| - },
|
| -
|
| - _consoleHistoryAutocompleteChanged: function()
|
| - {
|
| - this._prompt.setAddCompletionsFromHistory(this._consoleHistoryAutocompleteSetting.get());
|
| - },
|
| -
|
| - _initConsoleMessages: function()
|
| - {
|
| - var mainTarget = WebInspector.targetManager.mainTarget();
|
| - var resourceTreeModel = mainTarget && WebInspector.ResourceTreeModel.fromTarget(mainTarget);
|
| - var resourcesLoaded = !resourceTreeModel || resourceTreeModel.cachedResourcesLoaded();
|
| - if (!mainTarget || !resourcesLoaded) {
|
| - WebInspector.targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.CachedResourcesLoaded, this._onResourceTreeModelLoaded, this);
|
| - return;
|
| - }
|
| - this._fetchMultitargetMessages();
|
| - },
|
| + function messageAdded(event) {
|
| + this._addSinkMessage(/** @type {!WebInspector.Console.Message} */ (event.data));
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Console.Message} message
|
| + */
|
| + _addSinkMessage(message) {
|
| + var level = WebInspector.ConsoleMessage.MessageLevel.Debug;
|
| + switch (message.level) {
|
| + case WebInspector.Console.MessageLevel.Error:
|
| + level = WebInspector.ConsoleMessage.MessageLevel.Error;
|
| + break;
|
| + case WebInspector.Console.MessageLevel.Warning:
|
| + level = WebInspector.ConsoleMessage.MessageLevel.Warning;
|
| + break;
|
| + }
|
|
|
| + var consoleMessage = new WebInspector.ConsoleMessage(
|
| + null, WebInspector.ConsoleMessage.MessageSource.Other, level, message.text, undefined, undefined, undefined,
|
| + undefined, undefined, undefined, undefined, message.timestamp);
|
| + this._addConsoleMessage(consoleMessage);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _consoleTimestampsSettingChanged(event) {
|
| + var enabled = /** @type {boolean} */ (event.data);
|
| + this._updateMessageList();
|
| + this._consoleMessages.forEach(function(viewMessage) {
|
| + viewMessage.updateTimestamp(enabled);
|
| + });
|
| + }
|
| +
|
| + _executionContextChanged() {
|
| + this._prompt.clearAutocomplete();
|
| + if (!this._showAllMessagesCheckbox.checked())
|
| + this._updateMessageList();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + willHide() {
|
| + this._hidePromptSuggestBox();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + wasShown() {
|
| + this._viewport.refresh();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + focus() {
|
| + if (this._prompt.hasFocus())
|
| + return;
|
| + // Set caret position before setting focus in order to avoid scrolling
|
| + // by focus().
|
| + this._prompt.moveCaretToEndOfPrompt();
|
| + this._prompt.focus();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + restoreScrollPositions() {
|
| + if (this._viewport.stickToBottom())
|
| + this._immediatelyScrollToBottom();
|
| + else
|
| + super.restoreScrollPositions();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + onResize() {
|
| + this._scheduleViewportRefresh();
|
| + this._hidePromptSuggestBox();
|
| + if (this._viewport.stickToBottom())
|
| + this._immediatelyScrollToBottom();
|
| + for (var i = 0; i < this._visibleViewMessages.length; ++i)
|
| + this._visibleViewMessages[i].onResize();
|
| + }
|
| +
|
| + _hidePromptSuggestBox() {
|
| + this._prompt.clearAutocomplete();
|
| + }
|
| +
|
| + _scheduleViewportRefresh() {
|
| /**
|
| - * @param {!WebInspector.Event} event
|
| + * @this {WebInspector.ConsoleView}
|
| + * @return {!Promise.<undefined>}
|
| */
|
| - _onResourceTreeModelLoaded: function(event)
|
| - {
|
| - var resourceTreeModel = event.target;
|
| - if (resourceTreeModel.target() !== WebInspector.targetManager.mainTarget())
|
| - return;
|
| - WebInspector.targetManager.removeModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.CachedResourcesLoaded, this._onResourceTreeModelLoaded, this);
|
| - this._fetchMultitargetMessages();
|
| - },
|
| -
|
| - _fetchMultitargetMessages: function()
|
| - {
|
| - WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this);
|
| - WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleModel.Events.MessageAdded, this._onConsoleMessageAdded, this);
|
| - WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleModel.Events.MessageUpdated, this._onConsoleMessageUpdated, this);
|
| - WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleModel.Events.CommandEvaluated, this._commandEvaluated, this);
|
| - WebInspector.multitargetConsoleModel.messages().forEach(this._addConsoleMessage, this);
|
| + function invalidateViewport() {
|
| + if (this._muteViewportUpdates) {
|
| + this._maybeDirtyWhileMuted = true;
|
| + return Promise.resolve();
|
| + }
|
| + if (this._needsFullUpdate) {
|
| + this._updateMessageList();
|
| + delete this._needsFullUpdate;
|
| + } else {
|
| this._viewport.invalidate();
|
| - },
|
| -
|
| + }
|
| + return Promise.resolve();
|
| + }
|
| + if (this._muteViewportUpdates) {
|
| + this._maybeDirtyWhileMuted = true;
|
| + this._scheduleViewportRefreshForTest(true);
|
| + return;
|
| + } else {
|
| + this._scheduleViewportRefreshForTest(false);
|
| + }
|
| + this._viewportThrottler.schedule(invalidateViewport.bind(this));
|
| + }
|
| +
|
| + /**
|
| + * @param {boolean} muted
|
| + */
|
| + _scheduleViewportRefreshForTest(muted) {
|
| + // This functions is sniffed in tests.
|
| + }
|
| +
|
| + _immediatelyScrollToBottom() {
|
| + // This will scroll viewport and trigger its refresh.
|
| + this._viewport.setStickToBottom(true);
|
| + this._promptElement.scrollIntoView(true);
|
| + }
|
| +
|
| + _updateFilterStatus() {
|
| + this._filterStatusTextElement.textContent = WebInspector.UIString(
|
| + this._hiddenByFilterCount === 1 ? '%d message is hidden by filters.' : '%d messages are hidden by filters.',
|
| + this._hiddenByFilterCount);
|
| + this._filterStatusMessageElement.style.display = this._hiddenByFilterCount ? '' : 'none';
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onConsoleMessageAdded(event) {
|
| + var message = /** @type {!WebInspector.ConsoleMessage} */ (event.data);
|
| + this._addConsoleMessage(message);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleMessage} message
|
| + */
|
| + _addConsoleMessage(message) {
|
| /**
|
| - * @override
|
| + * @param {!WebInspector.ConsoleViewMessage} viewMessage1
|
| + * @param {!WebInspector.ConsoleViewMessage} viewMessage2
|
| * @return {number}
|
| */
|
| - itemCount: function()
|
| - {
|
| - return this._visibleViewMessages.length;
|
| - },
|
| + function compareTimestamps(viewMessage1, viewMessage2) {
|
| + return WebInspector.ConsoleMessage.timestampComparator(
|
| + viewMessage1.consoleMessage(), viewMessage2.consoleMessage());
|
| + }
|
|
|
| - /**
|
| - * @override
|
| - * @param {number} index
|
| - * @return {?WebInspector.ViewportElement}
|
| - */
|
| - itemElement: function(index)
|
| - {
|
| - return this._visibleViewMessages[index];
|
| - },
|
| + if (message.type === WebInspector.ConsoleMessage.MessageType.Command ||
|
| + message.type === WebInspector.ConsoleMessage.MessageType.Result)
|
| + message.timestamp =
|
| + this._consoleMessages.length ? this._consoleMessages.peekLast().consoleMessage().timestamp : 0;
|
| + var viewMessage = this._createViewMessage(message);
|
| + message[this._viewMessageSymbol] = viewMessage;
|
| + var insertAt = this._consoleMessages.upperBound(viewMessage, compareTimestamps);
|
| + var insertedInMiddle = insertAt < this._consoleMessages.length;
|
| + this._consoleMessages.splice(insertAt, 0, viewMessage);
|
| +
|
| + if (this._urlToMessageCount[message.url])
|
| + ++this._urlToMessageCount[message.url];
|
| + else
|
| + this._urlToMessageCount[message.url] = 1;
|
| +
|
| + if (!insertedInMiddle) {
|
| + this._appendMessageToEnd(viewMessage);
|
| + this._updateFilterStatus();
|
| + this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length);
|
| + } else {
|
| + this._needsFullUpdate = true;
|
| + }
|
|
|
| - /**
|
| - * @override
|
| - * @param {number} index
|
| - * @return {number}
|
| - */
|
| - fastHeight: function(index)
|
| - {
|
| - return this._visibleViewMessages[index].fastHeight();
|
| - },
|
| + this._scheduleViewportRefresh();
|
| + this._consoleMessageAddedForTest(viewMessage);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onConsoleMessageUpdated(event) {
|
| + var message = /** @type {!WebInspector.ConsoleMessage} */ (event.data);
|
| + var viewMessage = message[this._viewMessageSymbol];
|
| + if (viewMessage) {
|
| + viewMessage.updateMessageElement();
|
| + this._updateMessageList();
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleViewMessage} viewMessage
|
| + */
|
| + _consoleMessageAddedForTest(viewMessage) {
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleViewMessage} viewMessage
|
| + */
|
| + _appendMessageToEnd(viewMessage) {
|
| + if (!this._filter.shouldBeVisible(viewMessage)) {
|
| + this._hiddenByFilterCount++;
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @override
|
| - * @return {number}
|
| - */
|
| - minimumRowHeight: function()
|
| - {
|
| - return 16;
|
| - },
|
| + if (this._tryToCollapseMessages(viewMessage, this._visibleViewMessages.peekLast()))
|
| + return;
|
|
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetAdded: function(target)
|
| - {
|
| - this._viewport.invalidate();
|
| - this._updateAllMessagesCheckbox();
|
| - },
|
| + var lastMessage = this._visibleViewMessages.peekLast();
|
| + if (viewMessage.consoleMessage().type === WebInspector.ConsoleMessage.MessageType.EndGroup) {
|
| + if (lastMessage && !this._currentGroup.messagesHidden())
|
| + lastMessage.incrementCloseGroupDecorationCount();
|
| + this._currentGroup = this._currentGroup.parentGroup();
|
| + return;
|
| + }
|
| + if (!this._currentGroup.messagesHidden()) {
|
| + var originatingMessage = viewMessage.consoleMessage().originatingMessage();
|
| + if (lastMessage && originatingMessage && lastMessage.consoleMessage() === originatingMessage)
|
| + lastMessage.toMessageElement().classList.add('console-adjacent-user-command-result');
|
|
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetRemoved: function(target)
|
| - {
|
| - this._updateAllMessagesCheckbox();
|
| - },
|
| -
|
| - _updateAllMessagesCheckbox: function()
|
| - {
|
| - var hasMultipleCotexts = WebInspector.targetManager.targets(WebInspector.Target.Capability.JS).length > 1;
|
| - this._showAllMessagesCheckbox.element.classList.toggle("hidden", !hasMultipleCotexts);
|
| - },
|
| -
|
| - _registerWithMessageSink: function()
|
| - {
|
| - WebInspector.console.messages().forEach(this._addSinkMessage, this);
|
| - WebInspector.console.addEventListener(WebInspector.Console.Events.MessageAdded, messageAdded, this);
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - * @this {WebInspector.ConsoleView}
|
| - */
|
| - function messageAdded(event)
|
| - {
|
| - this._addSinkMessage(/** @type {!WebInspector.Console.Message} */ (event.data));
|
| - }
|
| - },
|
| + this._visibleViewMessages.push(viewMessage);
|
| + this._searchMessage(this._visibleViewMessages.length - 1);
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Console.Message} message
|
| - */
|
| - _addSinkMessage: function(message)
|
| - {
|
| - var level = WebInspector.ConsoleMessage.MessageLevel.Debug;
|
| - switch (message.level) {
|
| - case WebInspector.Console.MessageLevel.Error:
|
| - level = WebInspector.ConsoleMessage.MessageLevel.Error;
|
| - break;
|
| - case WebInspector.Console.MessageLevel.Warning:
|
| - level = WebInspector.ConsoleMessage.MessageLevel.Warning;
|
| - break;
|
| - }
|
| -
|
| - var consoleMessage = new WebInspector.ConsoleMessage(null, WebInspector.ConsoleMessage.MessageSource.Other, level, message.text,
|
| - undefined, undefined, undefined, undefined, undefined, undefined, undefined, message.timestamp);
|
| - this._addConsoleMessage(consoleMessage);
|
| - },
|
| + if (viewMessage.consoleMessage().isGroupStartMessage())
|
| + this._currentGroup = new WebInspector.ConsoleGroup(this._currentGroup, viewMessage);
|
| +
|
| + this._messageAppendedForTests();
|
| + }
|
| +
|
| + _messageAppendedForTests() {
|
| + // This method is sniffed in tests.
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleMessage} message
|
| + * @return {!WebInspector.ConsoleViewMessage}
|
| + */
|
| + _createViewMessage(message) {
|
| + var nestingLevel = this._currentGroup.nestingLevel();
|
| + switch (message.type) {
|
| + case WebInspector.ConsoleMessage.MessageType.Command:
|
| + return new WebInspector.ConsoleCommand(message, this._linkifier, nestingLevel);
|
| + case WebInspector.ConsoleMessage.MessageType.Result:
|
| + return new WebInspector.ConsoleCommandResult(message, this._linkifier, nestingLevel);
|
| + case WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed:
|
| + case WebInspector.ConsoleMessage.MessageType.StartGroup:
|
| + return new WebInspector.ConsoleGroupViewMessage(message, this._linkifier, nestingLevel);
|
| + default:
|
| + return new WebInspector.ConsoleViewMessage(message, this._linkifier, nestingLevel);
|
| + }
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _consoleTimestampsSettingChanged: function(event)
|
| - {
|
| - var enabled = /** @type {boolean} */ (event.data);
|
| - this._updateMessageList();
|
| - this._consoleMessages.forEach(function(viewMessage) {
|
| - viewMessage.updateTimestamp(enabled);
|
| - });
|
| - },
|
| -
|
| - _executionContextChanged: function()
|
| - {
|
| - this._prompt.clearAutocomplete();
|
| - if (!this._showAllMessagesCheckbox.checked())
|
| - this._updateMessageList();
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - this._hidePromptSuggestBox();
|
| - },
|
| -
|
| - wasShown: function()
|
| - {
|
| - this._viewport.refresh();
|
| - },
|
| -
|
| - focus: function()
|
| - {
|
| - if (this._prompt.hasFocus())
|
| - return;
|
| - // Set caret position before setting focus in order to avoid scrolling
|
| - // by focus().
|
| - this._prompt.moveCaretToEndOfPrompt();
|
| - this._prompt.focus();
|
| - },
|
| -
|
| - restoreScrollPositions: function()
|
| - {
|
| - if (this._viewport.stickToBottom())
|
| - this._immediatelyScrollToBottom();
|
| - else
|
| - WebInspector.Widget.prototype.restoreScrollPositions.call(this);
|
| - },
|
| -
|
| - onResize: function()
|
| - {
|
| - this._scheduleViewportRefresh();
|
| - this._hidePromptSuggestBox();
|
| - if (this._viewport.stickToBottom())
|
| - this._immediatelyScrollToBottom();
|
| - for (var i = 0; i < this._visibleViewMessages.length; ++i)
|
| - this._visibleViewMessages[i].onResize();
|
| - },
|
| -
|
| - _hidePromptSuggestBox: function()
|
| - {
|
| - this._prompt.clearAutocomplete();
|
| - },
|
| -
|
| - _scheduleViewportRefresh: function()
|
| - {
|
| - /**
|
| - * @this {WebInspector.ConsoleView}
|
| - * @return {!Promise.<undefined>}
|
| - */
|
| - function invalidateViewport()
|
| - {
|
| - if (this._muteViewportUpdates) {
|
| - this._maybeDirtyWhileMuted = true;
|
| - return Promise.resolve();
|
| - }
|
| - if (this._needsFullUpdate) {
|
| - this._updateMessageList();
|
| - delete this._needsFullUpdate;
|
| - } else {
|
| - this._viewport.invalidate();
|
| - }
|
| - return Promise.resolve();
|
| - }
|
| - if (this._muteViewportUpdates) {
|
| - this._maybeDirtyWhileMuted = true;
|
| - this._scheduleViewportRefreshForTest(true);
|
| - return;
|
| - } else {
|
| - this._scheduleViewportRefreshForTest(false);
|
| - }
|
| - this._viewportThrottler.schedule(invalidateViewport.bind(this));
|
| - },
|
| + _consoleCleared() {
|
| + this._currentMatchRangeIndex = -1;
|
| + this._consoleMessages = [];
|
| + this._updateMessageList();
|
| + this._hidePromptSuggestBox();
|
| + this._viewport.setStickToBottom(true);
|
| + this._linkifier.reset();
|
| + }
|
|
|
| - /**
|
| - * @param {boolean} muted
|
| - */
|
| - _scheduleViewportRefreshForTest: function(muted)
|
| - {
|
| - // This functions is sniffed in tests.
|
| - },
|
| -
|
| - _immediatelyScrollToBottom: function()
|
| - {
|
| - // This will scroll viewport and trigger its refresh.
|
| - this._viewport.setStickToBottom(true);
|
| - this._promptElement.scrollIntoView(true);
|
| - },
|
| -
|
| - _updateFilterStatus: function()
|
| - {
|
| - this._filterStatusTextElement.textContent = WebInspector.UIString(this._hiddenByFilterCount === 1 ? "%d message is hidden by filters." : "%d messages are hidden by filters.", this._hiddenByFilterCount);
|
| - this._filterStatusMessageElement.style.display = this._hiddenByFilterCount ? "" : "none";
|
| - },
|
| + _handleContextMenuEvent(event) {
|
| + if (event.target.enclosingNodeOrSelfWithNodeName('a'))
|
| + return;
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onConsoleMessageAdded: function(event)
|
| - {
|
| - var message = /** @type {!WebInspector.ConsoleMessage} */ (event.data);
|
| - this._addConsoleMessage(message);
|
| - },
|
| + var contextMenu = new WebInspector.ContextMenu(event);
|
| + if (event.target.isSelfOrDescendant(this._promptElement)) {
|
| + contextMenu.show();
|
| + return;
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.ConsoleMessage} message
|
| - */
|
| - _addConsoleMessage: function(message)
|
| - {
|
| - /**
|
| - * @param {!WebInspector.ConsoleViewMessage} viewMessage1
|
| - * @param {!WebInspector.ConsoleViewMessage} viewMessage2
|
| - * @return {number}
|
| - */
|
| - function compareTimestamps(viewMessage1, viewMessage2)
|
| - {
|
| - return WebInspector.ConsoleMessage.timestampComparator(viewMessage1.consoleMessage(), viewMessage2.consoleMessage());
|
| - }
|
| -
|
| - if (message.type === WebInspector.ConsoleMessage.MessageType.Command || message.type === WebInspector.ConsoleMessage.MessageType.Result)
|
| - message.timestamp = this._consoleMessages.length ? this._consoleMessages.peekLast().consoleMessage().timestamp : 0;
|
| - var viewMessage = this._createViewMessage(message);
|
| - message[this._viewMessageSymbol] = viewMessage;
|
| - var insertAt = this._consoleMessages.upperBound(viewMessage, compareTimestamps);
|
| - var insertedInMiddle = insertAt < this._consoleMessages.length;
|
| - this._consoleMessages.splice(insertAt, 0, viewMessage);
|
| -
|
| - if (this._urlToMessageCount[message.url])
|
| - ++this._urlToMessageCount[message.url];
|
| - else
|
| - this._urlToMessageCount[message.url] = 1;
|
| -
|
| - if (!insertedInMiddle) {
|
| - this._appendMessageToEnd(viewMessage);
|
| - this._updateFilterStatus();
|
| - this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length);
|
| - } else {
|
| - this._needsFullUpdate = true;
|
| - }
|
| + function monitoringXHRItemAction() {
|
| + WebInspector.moduleSetting('monitoringXHREnabled').set(!WebInspector.moduleSetting('monitoringXHREnabled').get());
|
| + }
|
| + contextMenu.appendCheckboxItem(
|
| + WebInspector.UIString('Log XMLHttpRequests'), monitoringXHRItemAction,
|
| + WebInspector.moduleSetting('monitoringXHREnabled').get());
|
|
|
| - this._scheduleViewportRefresh();
|
| - this._consoleMessageAddedForTest(viewMessage);
|
| - },
|
| + var sourceElement = event.target.enclosingNodeOrSelfWithClass('console-message-wrapper');
|
| + var consoleMessage = sourceElement ? sourceElement.message.consoleMessage() : null;
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onConsoleMessageUpdated: function(event)
|
| - {
|
| - var message = /** @type {!WebInspector.ConsoleMessage} */ (event.data);
|
| - var viewMessage = message[this._viewMessageSymbol];
|
| - if (viewMessage) {
|
| - viewMessage.updateMessageElement();
|
| - this._updateMessageList();
|
| - }
|
| - },
|
| + var filterSubMenu = contextMenu.appendSubMenuItem(WebInspector.UIString('Filter'));
|
|
|
| - /**
|
| - * @param {!WebInspector.ConsoleViewMessage} viewMessage
|
| - */
|
| - _consoleMessageAddedForTest: function(viewMessage) { },
|
| + if (consoleMessage && consoleMessage.url) {
|
| + var menuTitle = WebInspector.UIString.capitalize(
|
| + 'Hide ^messages from %s', new WebInspector.ParsedURL(consoleMessage.url).displayName);
|
| + filterSubMenu.appendItem(menuTitle, this._filter.addMessageURLFilter.bind(this._filter, consoleMessage.url));
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.ConsoleViewMessage} viewMessage
|
| - */
|
| - _appendMessageToEnd: function(viewMessage)
|
| - {
|
| - if (!this._filter.shouldBeVisible(viewMessage)) {
|
| - this._hiddenByFilterCount++;
|
| - return;
|
| - }
|
| -
|
| - if (this._tryToCollapseMessages(viewMessage, this._visibleViewMessages.peekLast()))
|
| - return;
|
| -
|
| - var lastMessage = this._visibleViewMessages.peekLast();
|
| - if (viewMessage.consoleMessage().type === WebInspector.ConsoleMessage.MessageType.EndGroup) {
|
| - if (lastMessage && !this._currentGroup.messagesHidden())
|
| - lastMessage.incrementCloseGroupDecorationCount();
|
| - this._currentGroup = this._currentGroup.parentGroup();
|
| - return;
|
| - }
|
| - if (!this._currentGroup.messagesHidden()) {
|
| - var originatingMessage = viewMessage.consoleMessage().originatingMessage();
|
| - if (lastMessage && originatingMessage && lastMessage.consoleMessage() === originatingMessage)
|
| - lastMessage.toMessageElement().classList.add("console-adjacent-user-command-result");
|
| -
|
| - this._visibleViewMessages.push(viewMessage);
|
| - this._searchMessage(this._visibleViewMessages.length - 1);
|
| - }
|
| -
|
| - if (viewMessage.consoleMessage().isGroupStartMessage())
|
| - this._currentGroup = new WebInspector.ConsoleGroup(this._currentGroup, viewMessage);
|
| -
|
| - this._messageAppendedForTests();
|
| - },
|
| -
|
| - _messageAppendedForTests: function()
|
| - {
|
| - // This method is sniffed in tests.
|
| - },
|
| + filterSubMenu.appendSeparator();
|
| + var unhideAll = filterSubMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Unhide ^all'), this._filter.removeMessageURLFilter.bind(this._filter));
|
| + filterSubMenu.appendSeparator();
|
|
|
| - /**
|
| - * @param {!WebInspector.ConsoleMessage} message
|
| - * @return {!WebInspector.ConsoleViewMessage}
|
| - */
|
| - _createViewMessage: function(message)
|
| - {
|
| - var nestingLevel = this._currentGroup.nestingLevel();
|
| - switch (message.type) {
|
| - case WebInspector.ConsoleMessage.MessageType.Command:
|
| - return new WebInspector.ConsoleCommand(message, this._linkifier, nestingLevel);
|
| - case WebInspector.ConsoleMessage.MessageType.Result:
|
| - return new WebInspector.ConsoleCommandResult(message, this._linkifier, nestingLevel);
|
| - case WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed:
|
| - case WebInspector.ConsoleMessage.MessageType.StartGroup:
|
| - return new WebInspector.ConsoleGroupViewMessage(message, this._linkifier, nestingLevel);
|
| - default:
|
| - return new WebInspector.ConsoleViewMessage(message, this._linkifier, nestingLevel);
|
| - }
|
| - },
|
| -
|
| - _consoleCleared: function()
|
| - {
|
| - this._currentMatchRangeIndex = -1;
|
| - this._consoleMessages = [];
|
| - this._updateMessageList();
|
| - this._hidePromptSuggestBox();
|
| - this._viewport.setStickToBottom(true);
|
| - this._linkifier.reset();
|
| - },
|
| -
|
| - _handleContextMenuEvent: function(event)
|
| - {
|
| - if (event.target.enclosingNodeOrSelfWithNodeName("a"))
|
| - return;
|
| -
|
| - var contextMenu = new WebInspector.ContextMenu(event);
|
| - if (event.target.isSelfOrDescendant(this._promptElement)) {
|
| - contextMenu.show();
|
| - return;
|
| - }
|
| -
|
| - function monitoringXHRItemAction()
|
| - {
|
| - WebInspector.moduleSetting("monitoringXHREnabled").set(!WebInspector.moduleSetting("monitoringXHREnabled").get());
|
| - }
|
| - contextMenu.appendCheckboxItem(WebInspector.UIString("Log XMLHttpRequests"), monitoringXHRItemAction, WebInspector.moduleSetting("monitoringXHREnabled").get());
|
| -
|
| - var sourceElement = event.target.enclosingNodeOrSelfWithClass("console-message-wrapper");
|
| - var consoleMessage = sourceElement ? sourceElement.message.consoleMessage() : null;
|
| -
|
| - var filterSubMenu = contextMenu.appendSubMenuItem(WebInspector.UIString("Filter"));
|
| -
|
| - if (consoleMessage && consoleMessage.url) {
|
| - var menuTitle = WebInspector.UIString.capitalize("Hide ^messages from %s", new WebInspector.ParsedURL(consoleMessage.url).displayName);
|
| - filterSubMenu.appendItem(menuTitle, this._filter.addMessageURLFilter.bind(this._filter, consoleMessage.url));
|
| - }
|
| -
|
| - filterSubMenu.appendSeparator();
|
| - var unhideAll = filterSubMenu.appendItem(WebInspector.UIString.capitalize("Unhide ^all"), this._filter.removeMessageURLFilter.bind(this._filter));
|
| - filterSubMenu.appendSeparator();
|
| -
|
| - var hasFilters = false;
|
| -
|
| - for (var url in this._filter.messageURLFilters) {
|
| - filterSubMenu.appendCheckboxItem(String.sprintf("%s (%d)", new WebInspector.ParsedURL(url).displayName, this._urlToMessageCount[url]), this._filter.removeMessageURLFilter.bind(this._filter, url), true);
|
| - hasFilters = true;
|
| - }
|
| -
|
| - filterSubMenu.setEnabled(hasFilters || (consoleMessage && consoleMessage.url));
|
| - unhideAll.setEnabled(hasFilters);
|
| -
|
| - contextMenu.appendSeparator();
|
| - contextMenu.appendAction("console.clear");
|
| - contextMenu.appendAction("console.clear.history");
|
| - contextMenu.appendItem(WebInspector.UIString("Save as..."), this._saveConsole.bind(this));
|
| -
|
| - var request = consoleMessage ? consoleMessage.request : null;
|
| - if (request && request.resourceType() === WebInspector.resourceTypes.XHR) {
|
| - contextMenu.appendSeparator();
|
| - contextMenu.appendItem(WebInspector.UIString("Replay XHR"), request.replayXHR.bind(request));
|
| - }
|
| -
|
| - contextMenu.show();
|
| - },
|
| -
|
| - _saveConsole: function()
|
| - {
|
| - var url = WebInspector.targetManager.mainTarget().inspectedURL();
|
| - var parsedURL = url.asParsedURL();
|
| - var filename = String.sprintf("%s-%d.log", parsedURL ? parsedURL.host : "console", Date.now());
|
| - var stream = new WebInspector.FileOutputStream();
|
| -
|
| - var progressIndicator = new WebInspector.ProgressIndicator();
|
| - progressIndicator.setTitle(WebInspector.UIString("Writing file…"));
|
| - progressIndicator.setTotalWork(this.itemCount());
|
| -
|
| - /** @const */
|
| - var chunkSize = 350;
|
| - var messageIndex = 0;
|
| -
|
| - stream.open(filename, openCallback.bind(this));
|
| -
|
| - /**
|
| - * @param {boolean} accepted
|
| - * @this {WebInspector.ConsoleView}
|
| - */
|
| - function openCallback(accepted)
|
| - {
|
| - if (!accepted)
|
| - return;
|
| - this._progressToolbarItem.element.appendChild(progressIndicator.element);
|
| - writeNextChunk.call(this, stream);
|
| - }
|
| -
|
| - /**
|
| - * @param {!WebInspector.OutputStream} stream
|
| - * @param {string=} error
|
| - * @this {WebInspector.ConsoleView}
|
| - */
|
| - function writeNextChunk(stream, error)
|
| - {
|
| - if (messageIndex >= this.itemCount() || error) {
|
| - stream.close();
|
| - progressIndicator.done();
|
| - return;
|
| - }
|
| - var lines = [];
|
| - for (var i = 0; i < chunkSize && i + messageIndex < this.itemCount(); ++i) {
|
| - var message = this.itemElement(messageIndex + i);
|
| - var messageContent = message.contentElement().deepTextContent();
|
| - for (var j = 0; j < message.repeatCount(); ++j)
|
| - lines.push(messageContent);
|
| - }
|
| - messageIndex += i;
|
| - stream.write(lines.join("\n") + "\n", writeNextChunk.bind(this));
|
| - progressIndicator.setWorked(messageIndex);
|
| - }
|
| -
|
| - },
|
| + var hasFilters = false;
|
|
|
| - /**
|
| - * @param {!WebInspector.ConsoleViewMessage} lastMessage
|
| - * @param {?WebInspector.ConsoleViewMessage=} viewMessage
|
| - * @return {boolean}
|
| - */
|
| - _tryToCollapseMessages: function(lastMessage, viewMessage)
|
| - {
|
| - if (!WebInspector.moduleSetting("consoleTimestampsEnabled").get() && viewMessage && !lastMessage.consoleMessage().isGroupMessage() && lastMessage.consoleMessage().isEqual(viewMessage.consoleMessage())) {
|
| - viewMessage.incrementRepeatCount();
|
| - return true;
|
| - }
|
| + for (var url in this._filter.messageURLFilters) {
|
| + filterSubMenu.appendCheckboxItem(
|
| + String.sprintf('%s (%d)', new WebInspector.ParsedURL(url).displayName, this._urlToMessageCount[url]),
|
| + this._filter.removeMessageURLFilter.bind(this._filter, url), true);
|
| + hasFilters = true;
|
| + }
|
|
|
| - return false;
|
| - },
|
| -
|
| - _updateMessageList: function()
|
| - {
|
| - this._topGroup = WebInspector.ConsoleGroup.createTopGroup();
|
| - this._currentGroup = this._topGroup;
|
| - this._regexMatchRanges = [];
|
| - this._hiddenByFilterCount = 0;
|
| - for (var i = 0; i < this._visibleViewMessages.length; ++i) {
|
| - this._visibleViewMessages[i].resetCloseGroupDecorationCount();
|
| - this._visibleViewMessages[i].resetIncrementRepeatCount();
|
| - }
|
| - this._visibleViewMessages = [];
|
| - for (var i = 0; i < this._consoleMessages.length; ++i)
|
| - this._appendMessageToEnd(this._consoleMessages[i]);
|
| - this._updateFilterStatus();
|
| - this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length);
|
| - this._viewport.invalidate();
|
| - },
|
| + filterSubMenu.setEnabled(hasFilters || (consoleMessage && consoleMessage.url));
|
| + unhideAll.setEnabled(hasFilters);
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _monitoringXHREnabledSettingChanged: function(event)
|
| - {
|
| - var enabled = /** @type {boolean} */ (event.data);
|
| - WebInspector.targetManager.targets().forEach(function(target) {target.networkAgent().setMonitoringXHREnabled(enabled);});
|
| - },
|
| + contextMenu.appendSeparator();
|
| + contextMenu.appendAction('console.clear');
|
| + contextMenu.appendAction('console.clear.history');
|
| + contextMenu.appendItem(WebInspector.UIString('Save as...'), this._saveConsole.bind(this));
|
|
|
| - /**
|
| - * @param {!Event} event
|
| - */
|
| - _messagesClicked: function(event)
|
| - {
|
| - var targetElement = event.deepElementFromPoint();
|
| - if (!targetElement || targetElement.isComponentSelectionCollapsed())
|
| - this.focus();
|
| - var groupMessage = event.target.enclosingNodeOrSelfWithClass("console-group-title");
|
| - if (!groupMessage)
|
| - return;
|
| - var consoleGroupViewMessage = groupMessage.parentElement.message;
|
| - consoleGroupViewMessage.setCollapsed(!consoleGroupViewMessage.collapsed());
|
| - this._updateMessageList();
|
| - },
|
| -
|
| - _registerShortcuts: function()
|
| - {
|
| - this._shortcuts = {};
|
| -
|
| - var shortcut = WebInspector.KeyboardShortcut;
|
| - var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Console"));
|
| -
|
| - var shortcutL = shortcut.makeDescriptor("l", WebInspector.KeyboardShortcut.Modifiers.Ctrl);
|
| - var keys = [shortcutL];
|
| - if (WebInspector.isMac()) {
|
| - var shortcutK = shortcut.makeDescriptor("k", WebInspector.KeyboardShortcut.Modifiers.Meta);
|
| - keys.unshift(shortcutK);
|
| - }
|
| - section.addAlternateKeys(keys, WebInspector.UIString("Clear console"));
|
| -
|
| - section.addKey(shortcut.makeDescriptor(shortcut.Keys.Tab), WebInspector.UIString("Autocomplete common prefix"));
|
| - section.addKey(shortcut.makeDescriptor(shortcut.Keys.Right), WebInspector.UIString("Accept suggestion"));
|
| -
|
| - var shortcutU = shortcut.makeDescriptor("u", WebInspector.KeyboardShortcut.Modifiers.Ctrl);
|
| - this._shortcuts[shortcutU.key] = this._clearPromptBackwards.bind(this);
|
| - section.addAlternateKeys([shortcutU], WebInspector.UIString("Clear console prompt"));
|
| -
|
| - keys = [
|
| - shortcut.makeDescriptor(shortcut.Keys.Down),
|
| - shortcut.makeDescriptor(shortcut.Keys.Up)
|
| - ];
|
| - section.addRelatedKeys(keys, WebInspector.UIString("Next/previous line"));
|
| -
|
| - if (WebInspector.isMac()) {
|
| - keys = [
|
| - shortcut.makeDescriptor("N", shortcut.Modifiers.Alt),
|
| - shortcut.makeDescriptor("P", shortcut.Modifiers.Alt)
|
| - ];
|
| - section.addRelatedKeys(keys, WebInspector.UIString("Next/previous command"));
|
| - }
|
| -
|
| - section.addKey(shortcut.makeDescriptor(shortcut.Keys.Enter), WebInspector.UIString("Execute command"));
|
| - },
|
| -
|
| - _clearPromptBackwards: function()
|
| - {
|
| - this._prompt.setText("");
|
| - },
|
| + var request = consoleMessage ? consoleMessage.request : null;
|
| + if (request && request.resourceType() === WebInspector.resourceTypes.XHR) {
|
| + contextMenu.appendSeparator();
|
| + contextMenu.appendItem(WebInspector.UIString('Replay XHR'), request.replayXHR.bind(request));
|
| + }
|
|
|
| - /**
|
| - * @param {!Event} event
|
| - */
|
| - _promptKeyDown: function(event)
|
| - {
|
| - var keyboardEvent = /** @type {!KeyboardEvent} */ (event);
|
| - if (keyboardEvent.key === "PageUp") {
|
| - this._updateStickToBottomOnWheel();
|
| - return;
|
| - }
|
| -
|
| - var shortcut = WebInspector.KeyboardShortcut.makeKeyFromEvent(keyboardEvent);
|
| - var handler = this._shortcuts[shortcut];
|
| - if (handler) {
|
| - handler();
|
| - keyboardEvent.preventDefault();
|
| - }
|
| - },
|
| + contextMenu.show();
|
| + }
|
|
|
| - /**
|
| - * @param {?WebInspector.RemoteObject} result
|
| - * @param {!WebInspector.ConsoleMessage} originatingConsoleMessage
|
| - * @param {!RuntimeAgent.ExceptionDetails=} exceptionDetails
|
| - */
|
| - _printResult: function(result, originatingConsoleMessage, exceptionDetails)
|
| - {
|
| - if (!result)
|
| - return;
|
| -
|
| - var level = !!exceptionDetails ? WebInspector.ConsoleMessage.MessageLevel.Error : WebInspector.ConsoleMessage.MessageLevel.Log;
|
| - var message;
|
| - if (!exceptionDetails)
|
| - message = new WebInspector.ConsoleMessage(result.target(), WebInspector.ConsoleMessage.MessageSource.JS, level, "", WebInspector.ConsoleMessage.MessageType.Result, undefined, undefined, undefined, undefined, [result]);
|
| - else
|
| - message = WebInspector.ConsoleMessage.fromException(result.target(), exceptionDetails, WebInspector.ConsoleMessage.MessageType.Result, undefined, undefined);
|
| - message.setOriginatingMessage(originatingConsoleMessage);
|
| - result.target().consoleModel.addMessage(message);
|
| - },
|
| + _saveConsole() {
|
| + var url = WebInspector.targetManager.mainTarget().inspectedURL();
|
| + var parsedURL = url.asParsedURL();
|
| + var filename = String.sprintf('%s-%d.log', parsedURL ? parsedURL.host : 'console', Date.now());
|
| + var stream = new WebInspector.FileOutputStream();
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _commandEvaluated: function(event)
|
| - {
|
| - var data = /** @type {{result: ?WebInspector.RemoteObject, text: string, commandMessage: !WebInspector.ConsoleMessage, exceptionDetails: (!RuntimeAgent.ExceptionDetails|undefined)}} */ (event.data);
|
| - this._prompt.history().pushHistoryItem(data.text);
|
| - this._consoleHistorySetting.set(this._prompt.history().historyData().slice(-WebInspector.ConsoleView.persistedHistorySize));
|
| - this._printResult(data.result, data.commandMessage, data.exceptionDetails);
|
| - },
|
| + var progressIndicator = new WebInspector.ProgressIndicator();
|
| + progressIndicator.setTitle(WebInspector.UIString('Writing file…'));
|
| + progressIndicator.setTotalWork(this.itemCount());
|
|
|
| - /**
|
| - * @override
|
| - * @return {!Array.<!Element>}
|
| - */
|
| - elementsToRestoreScrollPositionsFor: function()
|
| - {
|
| - return [this._messagesElement];
|
| - },
|
| + /** @const */
|
| + var chunkSize = 350;
|
| + var messageIndex = 0;
|
|
|
| - /**
|
| - * @override
|
| - */
|
| - searchCanceled: function()
|
| - {
|
| - this._cleanupAfterSearch();
|
| - for (var i = 0; i < this._visibleViewMessages.length; ++i) {
|
| - var message = this._visibleViewMessages[i];
|
| - message.setSearchRegex(null);
|
| - }
|
| - this._currentMatchRangeIndex = -1;
|
| - this._regexMatchRanges = [];
|
| - delete this._searchRegex;
|
| - this._viewport.refresh();
|
| - },
|
| + stream.open(filename, openCallback.bind(this));
|
|
|
| /**
|
| - * @override
|
| - * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
|
| - * @param {boolean} shouldJump
|
| - * @param {boolean=} jumpBackwards
|
| + * @param {boolean} accepted
|
| + * @this {WebInspector.ConsoleView}
|
| */
|
| - performSearch: function(searchConfig, shouldJump, jumpBackwards)
|
| - {
|
| - this.searchCanceled();
|
| - this._searchableView.updateSearchMatchesCount(0);
|
| -
|
| - this._searchRegex = searchConfig.toSearchRegex(true);
|
| -
|
| - this._regexMatchRanges = [];
|
| - this._currentMatchRangeIndex = -1;
|
| -
|
| - if (shouldJump)
|
| - this._searchShouldJumpBackwards = !!jumpBackwards;
|
| -
|
| - this._searchProgressIndicator = new WebInspector.ProgressIndicator();
|
| - this._searchProgressIndicator.setTitle(WebInspector.UIString("Searching…"));
|
| - this._searchProgressIndicator.setTotalWork(this._visibleViewMessages.length);
|
| - this._progressToolbarItem.element.appendChild(this._searchProgressIndicator.element);
|
| -
|
| - this._innerSearch(0);
|
| - },
|
| -
|
| - _cleanupAfterSearch: function()
|
| - {
|
| - delete this._searchShouldJumpBackwards;
|
| - if (this._innerSearchTimeoutId) {
|
| - clearTimeout(this._innerSearchTimeoutId);
|
| - delete this._innerSearchTimeoutId;
|
| - }
|
| - if (this._searchProgressIndicator) {
|
| - this._searchProgressIndicator.done();
|
| - delete this._searchProgressIndicator;
|
| - }
|
| - },
|
| -
|
| - _searchFinishedForTests: function()
|
| - {
|
| - // This method is sniffed in tests.
|
| - },
|
| + function openCallback(accepted) {
|
| + if (!accepted)
|
| + return;
|
| + this._progressToolbarItem.element.appendChild(progressIndicator.element);
|
| + writeNextChunk.call(this, stream);
|
| + }
|
|
|
| /**
|
| - * @param {number} index
|
| + * @param {!WebInspector.OutputStream} stream
|
| + * @param {string=} error
|
| + * @this {WebInspector.ConsoleView}
|
| */
|
| - _innerSearch: function(index)
|
| - {
|
| - delete this._innerSearchTimeoutId;
|
| - if (this._searchProgressIndicator.isCanceled()) {
|
| - this._cleanupAfterSearch();
|
| - return;
|
| - }
|
| -
|
| - var startTime = Date.now();
|
| - for (; index < this._visibleViewMessages.length && Date.now() - startTime < 100; ++index)
|
| - this._searchMessage(index);
|
| -
|
| - this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length);
|
| - if (typeof this._searchShouldJumpBackwards !== "undefined" && this._regexMatchRanges.length) {
|
| - this._jumpToMatch(this._searchShouldJumpBackwards ? -1 : 0);
|
| - delete this._searchShouldJumpBackwards;
|
| - }
|
| -
|
| - if (index === this._visibleViewMessages.length) {
|
| - this._cleanupAfterSearch();
|
| - setTimeout(this._searchFinishedForTests.bind(this), 0);
|
| - return;
|
| - }
|
| -
|
| - this._innerSearchTimeoutId = setTimeout(this._innerSearch.bind(this, index), 100);
|
| - this._searchProgressIndicator.setWorked(index);
|
| - },
|
| + function writeNextChunk(stream, error) {
|
| + if (messageIndex >= this.itemCount() || error) {
|
| + stream.close();
|
| + progressIndicator.done();
|
| + return;
|
| + }
|
| + var lines = [];
|
| + for (var i = 0; i < chunkSize && i + messageIndex < this.itemCount(); ++i) {
|
| + var message = this.itemElement(messageIndex + i);
|
| + var messageContent = message.contentElement().deepTextContent();
|
| + for (var j = 0; j < message.repeatCount(); ++j)
|
| + lines.push(messageContent);
|
| + }
|
| + messageIndex += i;
|
| + stream.write(lines.join('\n') + '\n', writeNextChunk.bind(this));
|
| + progressIndicator.setWorked(messageIndex);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleViewMessage} lastMessage
|
| + * @param {?WebInspector.ConsoleViewMessage=} viewMessage
|
| + * @return {boolean}
|
| + */
|
| + _tryToCollapseMessages(lastMessage, viewMessage) {
|
| + if (!WebInspector.moduleSetting('consoleTimestampsEnabled').get() && viewMessage &&
|
| + !lastMessage.consoleMessage().isGroupMessage() &&
|
| + lastMessage.consoleMessage().isEqual(viewMessage.consoleMessage())) {
|
| + viewMessage.incrementRepeatCount();
|
| + return true;
|
| + }
|
|
|
| - /**
|
| - * @param {number} index
|
| - */
|
| - _searchMessage: function(index)
|
| - {
|
| - var message = this._visibleViewMessages[index];
|
| - message.setSearchRegex(this._searchRegex);
|
| - for (var i = 0; i < message.searchCount(); ++i) {
|
| - this._regexMatchRanges.push({
|
| - messageIndex: index,
|
| - matchIndex: i
|
| - });
|
| - }
|
| - },
|
| + return false;
|
| + }
|
|
|
| - /**
|
| - * @override
|
| - */
|
| - jumpToNextSearchResult: function()
|
| - {
|
| - this._jumpToMatch(this._currentMatchRangeIndex + 1);
|
| - },
|
| + _updateMessageList() {
|
| + this._topGroup = WebInspector.ConsoleGroup.createTopGroup();
|
| + this._currentGroup = this._topGroup;
|
| + this._regexMatchRanges = [];
|
| + this._hiddenByFilterCount = 0;
|
| + for (var i = 0; i < this._visibleViewMessages.length; ++i) {
|
| + this._visibleViewMessages[i].resetCloseGroupDecorationCount();
|
| + this._visibleViewMessages[i].resetIncrementRepeatCount();
|
| + }
|
| + this._visibleViewMessages = [];
|
| + for (var i = 0; i < this._consoleMessages.length; ++i)
|
| + this._appendMessageToEnd(this._consoleMessages[i]);
|
| + this._updateFilterStatus();
|
| + this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length);
|
| + this._viewport.invalidate();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _monitoringXHREnabledSettingChanged(event) {
|
| + var enabled = /** @type {boolean} */ (event.data);
|
| + WebInspector.targetManager.targets().forEach(function(target) {
|
| + target.networkAgent().setMonitoringXHREnabled(enabled);
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + */
|
| + _messagesClicked(event) {
|
| + var targetElement = event.deepElementFromPoint();
|
| + if (!targetElement || targetElement.isComponentSelectionCollapsed())
|
| + this.focus();
|
| + var groupMessage = event.target.enclosingNodeOrSelfWithClass('console-group-title');
|
| + if (!groupMessage)
|
| + return;
|
| + var consoleGroupViewMessage = groupMessage.parentElement.message;
|
| + consoleGroupViewMessage.setCollapsed(!consoleGroupViewMessage.collapsed());
|
| + this._updateMessageList();
|
| + }
|
| +
|
| + _registerShortcuts() {
|
| + this._shortcuts = {};
|
| +
|
| + var shortcut = WebInspector.KeyboardShortcut;
|
| + var section = WebInspector.shortcutsScreen.section(WebInspector.UIString('Console'));
|
| +
|
| + var shortcutL = shortcut.makeDescriptor('l', WebInspector.KeyboardShortcut.Modifiers.Ctrl);
|
| + var keys = [shortcutL];
|
| + if (WebInspector.isMac()) {
|
| + var shortcutK = shortcut.makeDescriptor('k', WebInspector.KeyboardShortcut.Modifiers.Meta);
|
| + keys.unshift(shortcutK);
|
| + }
|
| + section.addAlternateKeys(keys, WebInspector.UIString('Clear console'));
|
|
|
| - /**
|
| - * @override
|
| - */
|
| - jumpToPreviousSearchResult: function()
|
| - {
|
| - this._jumpToMatch(this._currentMatchRangeIndex - 1);
|
| - },
|
| + section.addKey(shortcut.makeDescriptor(shortcut.Keys.Tab), WebInspector.UIString('Autocomplete common prefix'));
|
| + section.addKey(shortcut.makeDescriptor(shortcut.Keys.Right), WebInspector.UIString('Accept suggestion'));
|
|
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - supportsCaseSensitiveSearch: function()
|
| - {
|
| - return true;
|
| - },
|
| + var shortcutU = shortcut.makeDescriptor('u', WebInspector.KeyboardShortcut.Modifiers.Ctrl);
|
| + this._shortcuts[shortcutU.key] = this._clearPromptBackwards.bind(this);
|
| + section.addAlternateKeys([shortcutU], WebInspector.UIString('Clear console prompt'));
|
|
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - supportsRegexSearch: function()
|
| - {
|
| - return true;
|
| - },
|
| + keys = [shortcut.makeDescriptor(shortcut.Keys.Down), shortcut.makeDescriptor(shortcut.Keys.Up)];
|
| + section.addRelatedKeys(keys, WebInspector.UIString('Next/previous line'));
|
| +
|
| + if (WebInspector.isMac()) {
|
| + keys =
|
| + [shortcut.makeDescriptor('N', shortcut.Modifiers.Alt), shortcut.makeDescriptor('P', shortcut.Modifiers.Alt)];
|
| + section.addRelatedKeys(keys, WebInspector.UIString('Next/previous command'));
|
| + }
|
| +
|
| + section.addKey(shortcut.makeDescriptor(shortcut.Keys.Enter), WebInspector.UIString('Execute command'));
|
| + }
|
| +
|
| + _clearPromptBackwards() {
|
| + this._prompt.setText('');
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + */
|
| + _promptKeyDown(event) {
|
| + var keyboardEvent = /** @type {!KeyboardEvent} */ (event);
|
| + if (keyboardEvent.key === 'PageUp') {
|
| + this._updateStickToBottomOnWheel();
|
| + return;
|
| + }
|
| +
|
| + var shortcut = WebInspector.KeyboardShortcut.makeKeyFromEvent(keyboardEvent);
|
| + var handler = this._shortcuts[shortcut];
|
| + if (handler) {
|
| + handler();
|
| + keyboardEvent.preventDefault();
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.RemoteObject} result
|
| + * @param {!WebInspector.ConsoleMessage} originatingConsoleMessage
|
| + * @param {!RuntimeAgent.ExceptionDetails=} exceptionDetails
|
| + */
|
| + _printResult(result, originatingConsoleMessage, exceptionDetails) {
|
| + if (!result)
|
| + return;
|
| +
|
| + var level = !!exceptionDetails ? WebInspector.ConsoleMessage.MessageLevel.Error :
|
| + WebInspector.ConsoleMessage.MessageLevel.Log;
|
| + var message;
|
| + if (!exceptionDetails)
|
| + message = new WebInspector.ConsoleMessage(
|
| + result.target(), WebInspector.ConsoleMessage.MessageSource.JS, level, '',
|
| + WebInspector.ConsoleMessage.MessageType.Result, undefined, undefined, undefined, undefined, [result]);
|
| + else
|
| + message = WebInspector.ConsoleMessage.fromException(
|
| + result.target(), exceptionDetails, WebInspector.ConsoleMessage.MessageType.Result, undefined, undefined);
|
| + message.setOriginatingMessage(originatingConsoleMessage);
|
| + result.target().consoleModel.addMessage(message);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _commandEvaluated(event) {
|
| + var data =
|
| + /** @type {{result: ?WebInspector.RemoteObject, text: string, commandMessage: !WebInspector.ConsoleMessage, exceptionDetails: (!RuntimeAgent.ExceptionDetails|undefined)}} */
|
| + (event.data);
|
| + this._prompt.history().pushHistoryItem(data.text);
|
| + this._consoleHistorySetting.set(
|
| + this._prompt.history().historyData().slice(-WebInspector.ConsoleView.persistedHistorySize));
|
| + this._printResult(data.result, data.commandMessage, data.exceptionDetails);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!Array.<!Element>}
|
| + */
|
| + elementsToRestoreScrollPositionsFor() {
|
| + return [this._messagesElement];
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + searchCanceled() {
|
| + this._cleanupAfterSearch();
|
| + for (var i = 0; i < this._visibleViewMessages.length; ++i) {
|
| + var message = this._visibleViewMessages[i];
|
| + message.setSearchRegex(null);
|
| + }
|
| + this._currentMatchRangeIndex = -1;
|
| + this._regexMatchRanges = [];
|
| + delete this._searchRegex;
|
| + this._viewport.refresh();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
|
| + * @param {boolean} shouldJump
|
| + * @param {boolean=} jumpBackwards
|
| + */
|
| + performSearch(searchConfig, shouldJump, jumpBackwards) {
|
| + this.searchCanceled();
|
| + this._searchableView.updateSearchMatchesCount(0);
|
| +
|
| + this._searchRegex = searchConfig.toSearchRegex(true);
|
| +
|
| + this._regexMatchRanges = [];
|
| + this._currentMatchRangeIndex = -1;
|
| +
|
| + if (shouldJump)
|
| + this._searchShouldJumpBackwards = !!jumpBackwards;
|
| +
|
| + this._searchProgressIndicator = new WebInspector.ProgressIndicator();
|
| + this._searchProgressIndicator.setTitle(WebInspector.UIString('Searching…'));
|
| + this._searchProgressIndicator.setTotalWork(this._visibleViewMessages.length);
|
| + this._progressToolbarItem.element.appendChild(this._searchProgressIndicator.element);
|
| +
|
| + this._innerSearch(0);
|
| + }
|
| +
|
| + _cleanupAfterSearch() {
|
| + delete this._searchShouldJumpBackwards;
|
| + if (this._innerSearchTimeoutId) {
|
| + clearTimeout(this._innerSearchTimeoutId);
|
| + delete this._innerSearchTimeoutId;
|
| + }
|
| + if (this._searchProgressIndicator) {
|
| + this._searchProgressIndicator.done();
|
| + delete this._searchProgressIndicator;
|
| + }
|
| + }
|
| +
|
| + _searchFinishedForTests() {
|
| + // This method is sniffed in tests.
|
| + }
|
| +
|
| + /**
|
| + * @param {number} index
|
| + */
|
| + _innerSearch(index) {
|
| + delete this._innerSearchTimeoutId;
|
| + if (this._searchProgressIndicator.isCanceled()) {
|
| + this._cleanupAfterSearch();
|
| + return;
|
| + }
|
| +
|
| + var startTime = Date.now();
|
| + for (; index < this._visibleViewMessages.length && Date.now() - startTime < 100; ++index)
|
| + this._searchMessage(index);
|
| +
|
| + this._searchableView.updateSearchMatchesCount(this._regexMatchRanges.length);
|
| + if (typeof this._searchShouldJumpBackwards !== 'undefined' && this._regexMatchRanges.length) {
|
| + this._jumpToMatch(this._searchShouldJumpBackwards ? -1 : 0);
|
| + delete this._searchShouldJumpBackwards;
|
| + }
|
| +
|
| + if (index === this._visibleViewMessages.length) {
|
| + this._cleanupAfterSearch();
|
| + setTimeout(this._searchFinishedForTests.bind(this), 0);
|
| + return;
|
| + }
|
| +
|
| + this._innerSearchTimeoutId = setTimeout(this._innerSearch.bind(this, index), 100);
|
| + this._searchProgressIndicator.setWorked(index);
|
| + }
|
| +
|
| + /**
|
| + * @param {number} index
|
| + */
|
| + _searchMessage(index) {
|
| + var message = this._visibleViewMessages[index];
|
| + message.setSearchRegex(this._searchRegex);
|
| + for (var i = 0; i < message.searchCount(); ++i) {
|
| + this._regexMatchRanges.push({messageIndex: index, matchIndex: i});
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + jumpToNextSearchResult() {
|
| + this._jumpToMatch(this._currentMatchRangeIndex + 1);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + jumpToPreviousSearchResult() {
|
| + this._jumpToMatch(this._currentMatchRangeIndex - 1);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {boolean}
|
| + */
|
| + supportsCaseSensitiveSearch() {
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {boolean}
|
| + */
|
| + supportsRegexSearch() {
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @param {number} index
|
| + */
|
| + _jumpToMatch(index) {
|
| + if (!this._regexMatchRanges.length)
|
| + return;
|
| +
|
| + var matchRange;
|
| + if (this._currentMatchRangeIndex >= 0) {
|
| + matchRange = this._regexMatchRanges[this._currentMatchRangeIndex];
|
| + var message = this._visibleViewMessages[matchRange.messageIndex];
|
| + message.searchHighlightNode(matchRange.matchIndex)
|
| + .classList.remove(WebInspector.highlightedCurrentSearchResultClassName);
|
| + }
|
| +
|
| + index = mod(index, this._regexMatchRanges.length);
|
| + this._currentMatchRangeIndex = index;
|
| + this._searchableView.updateCurrentMatchIndex(index);
|
| + matchRange = this._regexMatchRanges[index];
|
| + var message = this._visibleViewMessages[matchRange.messageIndex];
|
| + var highlightNode = message.searchHighlightNode(matchRange.matchIndex);
|
| + highlightNode.classList.add(WebInspector.highlightedCurrentSearchResultClassName);
|
| + this._viewport.scrollItemIntoView(matchRange.messageIndex);
|
| + highlightNode.scrollIntoViewIfNeeded();
|
| + }
|
| +
|
| + _updateStickToBottomOnMouseDown() {
|
| + this._muteViewportUpdates = true;
|
| + this._viewport.setStickToBottom(false);
|
| + if (this._waitForScrollTimeout) {
|
| + clearTimeout(this._waitForScrollTimeout);
|
| + delete this._waitForScrollTimeout;
|
| + }
|
| + }
|
| +
|
| + _updateStickToBottomOnMouseUp() {
|
| + if (!this._muteViewportUpdates)
|
| + return;
|
| +
|
| + // Delay querying isScrolledToBottom to give time for smooth scroll
|
| + // events to arrive. The value for the longest timeout duration is
|
| + // retrieved from crbug.com/575409.
|
| + this._waitForScrollTimeout = setTimeout(updateViewportState.bind(this), 200);
|
|
|
| /**
|
| - * @param {number} index
|
| + * @this {!WebInspector.ConsoleView}
|
| */
|
| - _jumpToMatch: function(index)
|
| - {
|
| - if (!this._regexMatchRanges.length)
|
| - return;
|
| -
|
| - var matchRange;
|
| - if (this._currentMatchRangeIndex >= 0) {
|
| - matchRange = this._regexMatchRanges[this._currentMatchRangeIndex];
|
| - var message = this._visibleViewMessages[matchRange.messageIndex];
|
| - message.searchHighlightNode(matchRange.matchIndex).classList.remove(WebInspector.highlightedCurrentSearchResultClassName);
|
| - }
|
| -
|
| - index = mod(index, this._regexMatchRanges.length);
|
| - this._currentMatchRangeIndex = index;
|
| - this._searchableView.updateCurrentMatchIndex(index);
|
| - matchRange = this._regexMatchRanges[index];
|
| - var message = this._visibleViewMessages[matchRange.messageIndex];
|
| - var highlightNode = message.searchHighlightNode(matchRange.matchIndex);
|
| - highlightNode.classList.add(WebInspector.highlightedCurrentSearchResultClassName);
|
| - this._viewport.scrollItemIntoView(matchRange.messageIndex);
|
| - highlightNode.scrollIntoViewIfNeeded();
|
| - },
|
| -
|
| - _updateStickToBottomOnMouseDown: function()
|
| - {
|
| - this._muteViewportUpdates = true;
|
| - this._viewport.setStickToBottom(false);
|
| - if (this._waitForScrollTimeout) {
|
| - clearTimeout(this._waitForScrollTimeout);
|
| - delete this._waitForScrollTimeout;
|
| - }
|
| - },
|
| -
|
| - _updateStickToBottomOnMouseUp: function()
|
| - {
|
| - if (!this._muteViewportUpdates)
|
| - return;
|
| -
|
| - // Delay querying isScrolledToBottom to give time for smooth scroll
|
| - // events to arrive. The value for the longest timeout duration is
|
| - // retrieved from crbug.com/575409.
|
| - this._waitForScrollTimeout = setTimeout(updateViewportState.bind(this), 200);
|
| -
|
| - /**
|
| - * @this {!WebInspector.ConsoleView}
|
| - */
|
| - function updateViewportState()
|
| - {
|
| - this._muteViewportUpdates = false;
|
| - this._viewport.setStickToBottom(this._messagesElement.isScrolledToBottom());
|
| - if (this._maybeDirtyWhileMuted) {
|
| - this._scheduleViewportRefresh();
|
| - delete this._maybeDirtyWhileMuted;
|
| - }
|
| - delete this._waitForScrollTimeout;
|
| - this._updateViewportStickinessForTest();
|
| - }
|
| - },
|
| -
|
| - _updateViewportStickinessForTest: function()
|
| - {
|
| - // This method is sniffed in tests.
|
| - },
|
| -
|
| - _updateStickToBottomOnWheel: function()
|
| - {
|
| - this._updateStickToBottomOnMouseDown();
|
| - this._updateStickToBottomOnMouseUp();
|
| - },
|
| -
|
| - _promptInput: function(event)
|
| - {
|
| - // Scroll to the bottom, except when the prompt is the only visible item.
|
| - if (this.itemCount() !== 0 && this._viewport.firstVisibleIndex() !== this.itemCount())
|
| - this._immediatelyScrollToBottom();
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| + function updateViewportState() {
|
| + this._muteViewportUpdates = false;
|
| + this._viewport.setStickToBottom(this._messagesElement.isScrolledToBottom());
|
| + if (this._maybeDirtyWhileMuted) {
|
| + this._scheduleViewportRefresh();
|
| + delete this._maybeDirtyWhileMuted;
|
| + }
|
| + delete this._waitForScrollTimeout;
|
| + this._updateViewportStickinessForTest();
|
| + }
|
| + }
|
| +
|
| + _updateViewportStickinessForTest() {
|
| + // This method is sniffed in tests.
|
| + }
|
| +
|
| + _updateStickToBottomOnWheel() {
|
| + this._updateStickToBottomOnMouseDown();
|
| + this._updateStickToBottomOnMouseUp();
|
| + }
|
| +
|
| + _promptInput(event) {
|
| + // Scroll to the bottom, except when the prompt is the only visible item.
|
| + if (this.itemCount() !== 0 && this._viewport.firstVisibleIndex() !== this.itemCount())
|
| + this._immediatelyScrollToBottom();
|
| + }
|
| };
|
|
|
| +WebInspector.ConsoleView.persistedHistorySize = 300;
|
| +
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.Object}
|
| - * @param {!WebInspector.ConsoleView} view
|
| + * @unrestricted
|
| */
|
| -WebInspector.ConsoleViewFilter = function(view)
|
| -{
|
| - this._messageURLFiltersSetting = WebInspector.settings.createSetting("messageURLFilters", {});
|
| - this._messageLevelFiltersSetting = WebInspector.settings.createSetting("messageLevelFilters", {});
|
| +WebInspector.ConsoleViewFilter = class extends WebInspector.Object {
|
| + /**
|
| + * @param {!WebInspector.ConsoleView} view
|
| + */
|
| + constructor(view) {
|
| + super();
|
| + this._messageURLFiltersSetting = WebInspector.settings.createSetting('messageURLFilters', {});
|
| + this._messageLevelFiltersSetting = WebInspector.settings.createSetting('messageLevelFilters', {});
|
|
|
| this._view = view;
|
| this._messageURLFilters = this._messageURLFiltersSetting.get();
|
| this._filterChanged = this.dispatchEventToListeners.bind(this, WebInspector.ConsoleViewFilter.Events.FilterChanged);
|
| -};
|
| + }
|
| +
|
| + addFilters(filterBar) {
|
| + this._textFilterUI = new WebInspector.TextFilterUI(true);
|
| + this._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._textFilterChanged, this);
|
| + filterBar.addFilter(this._textFilterUI);
|
| +
|
| + this._hideNetworkMessagesCheckbox = new WebInspector.CheckboxFilterUI(
|
| + 'hide-network-messages', WebInspector.UIString('Hide network messages'), true,
|
| + WebInspector.moduleSetting('hideNetworkMessages'));
|
| + this._hideNetworkMessagesCheckbox.addEventListener(
|
| + WebInspector.FilterUI.Events.FilterChanged, this._filterChanged.bind(this), this);
|
| + filterBar.addFilter(this._hideNetworkMessagesCheckbox);
|
| +
|
| + var levels = [
|
| + {name: WebInspector.ConsoleMessage.MessageLevel.Error, label: WebInspector.UIString('Errors')},
|
| + {name: WebInspector.ConsoleMessage.MessageLevel.Warning, label: WebInspector.UIString('Warnings')},
|
| + {name: WebInspector.ConsoleMessage.MessageLevel.Info, label: WebInspector.UIString('Info')},
|
| + {name: WebInspector.ConsoleMessage.MessageLevel.Log, label: WebInspector.UIString('Logs')},
|
| + {name: WebInspector.ConsoleMessage.MessageLevel.Debug, label: WebInspector.UIString('Debug')},
|
| + {name: WebInspector.ConsoleMessage.MessageLevel.RevokedError, label: WebInspector.UIString('Handled')}
|
| + ];
|
| + this._levelFilterUI = new WebInspector.NamedBitSetFilterUI(levels, this._messageLevelFiltersSetting);
|
| + this._levelFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._filterChanged, this);
|
| + filterBar.addFilter(this._levelFilterUI);
|
| + }
|
| +
|
| + _textFilterChanged(event) {
|
| + this._filterRegex = this._textFilterUI.regex();
|
| +
|
| + this._filterChanged();
|
| + }
|
| +
|
| + /**
|
| + * @param {string} url
|
| + */
|
| + addMessageURLFilter(url) {
|
| + this._messageURLFilters[url] = true;
|
| + this._messageURLFiltersSetting.set(this._messageURLFilters);
|
| + this._filterChanged();
|
| + }
|
| +
|
| + /**
|
| + * @param {string} url
|
| + */
|
| + removeMessageURLFilter(url) {
|
| + if (!url)
|
| + this._messageURLFilters = {};
|
| + else
|
| + delete this._messageURLFilters[url];
|
| +
|
| + this._messageURLFiltersSetting.set(this._messageURLFilters);
|
| + this._filterChanged();
|
| + }
|
| +
|
| + /**
|
| + * @returns {!Object}
|
| + */
|
| + get messageURLFilters() {
|
| + return this._messageURLFilters;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleViewMessage} viewMessage
|
| + * @return {boolean}
|
| + */
|
| + shouldBeVisible(viewMessage) {
|
| + var message = viewMessage.consoleMessage();
|
| + var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| + if (!message.target())
|
| + return true;
|
| +
|
| + if (!this._view._showAllMessagesCheckbox.checked() && executionContext) {
|
| + if (message.target() !== executionContext.target())
|
| + return false;
|
| + if (message.executionContextId && message.executionContextId !== executionContext.id) {
|
| + return false;
|
| + }
|
| + }
|
|
|
| -/** @enum {symbol} */
|
| -WebInspector.ConsoleViewFilter.Events = {
|
| - FilterChanged: Symbol("FilterChanged")
|
| -};
|
| + if (WebInspector.moduleSetting('hideNetworkMessages').get() &&
|
| + viewMessage.consoleMessage().source === WebInspector.ConsoleMessage.MessageSource.Network)
|
| + return false;
|
|
|
| -WebInspector.ConsoleViewFilter.prototype = {
|
| - addFilters: function(filterBar)
|
| - {
|
| - this._textFilterUI = new WebInspector.TextFilterUI(true);
|
| - this._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._textFilterChanged, this);
|
| - filterBar.addFilter(this._textFilterUI);
|
| -
|
| - this._hideNetworkMessagesCheckbox = new WebInspector.CheckboxFilterUI("hide-network-messages", WebInspector.UIString("Hide network messages"), true, WebInspector.moduleSetting("hideNetworkMessages"));
|
| - this._hideNetworkMessagesCheckbox.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._filterChanged.bind(this), this);
|
| - filterBar.addFilter(this._hideNetworkMessagesCheckbox);
|
| -
|
| - var levels = [
|
| - {name: WebInspector.ConsoleMessage.MessageLevel.Error, label: WebInspector.UIString("Errors")},
|
| - {name: WebInspector.ConsoleMessage.MessageLevel.Warning, label: WebInspector.UIString("Warnings")},
|
| - {name: WebInspector.ConsoleMessage.MessageLevel.Info, label: WebInspector.UIString("Info")},
|
| - {name: WebInspector.ConsoleMessage.MessageLevel.Log, label: WebInspector.UIString("Logs")},
|
| - {name: WebInspector.ConsoleMessage.MessageLevel.Debug, label: WebInspector.UIString("Debug")},
|
| - {name: WebInspector.ConsoleMessage.MessageLevel.RevokedError, label: WebInspector.UIString("Handled")}
|
| - ];
|
| - this._levelFilterUI = new WebInspector.NamedBitSetFilterUI(levels, this._messageLevelFiltersSetting);
|
| - this._levelFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._filterChanged, this);
|
| - filterBar.addFilter(this._levelFilterUI);
|
| - },
|
| -
|
| - _textFilterChanged: function(event)
|
| - {
|
| - this._filterRegex = this._textFilterUI.regex();
|
| -
|
| - this._filterChanged();
|
| - },
|
| + if (viewMessage.consoleMessage().isGroupMessage())
|
| + return true;
|
|
|
| - /**
|
| - * @param {string} url
|
| - */
|
| - addMessageURLFilter: function(url)
|
| - {
|
| - this._messageURLFilters[url] = true;
|
| - this._messageURLFiltersSetting.set(this._messageURLFilters);
|
| - this._filterChanged();
|
| - },
|
| + if (message.type === WebInspector.ConsoleMessage.MessageType.Result ||
|
| + message.type === WebInspector.ConsoleMessage.MessageType.Command)
|
| + return true;
|
|
|
| - /**
|
| - * @param {string} url
|
| - */
|
| - removeMessageURLFilter: function(url)
|
| - {
|
| - if (!url)
|
| - this._messageURLFilters = {};
|
| - else
|
| - delete this._messageURLFilters[url];
|
| + if (message.url && this._messageURLFilters[message.url])
|
| + return false;
|
|
|
| - this._messageURLFiltersSetting.set(this._messageURLFilters);
|
| - this._filterChanged();
|
| - },
|
| + if (message.level && !this._levelFilterUI.accept(message.level))
|
| + return false;
|
|
|
| - /**
|
| - * @returns {!Object}
|
| - */
|
| - get messageURLFilters()
|
| - {
|
| - return this._messageURLFilters;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.ConsoleViewMessage} viewMessage
|
| - * @return {boolean}
|
| - */
|
| - shouldBeVisible: function(viewMessage)
|
| - {
|
| - var message = viewMessage.consoleMessage();
|
| - var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| - if (!message.target())
|
| - return true;
|
| -
|
| - if (!this._view._showAllMessagesCheckbox.checked() && executionContext) {
|
| - if (message.target() !== executionContext.target())
|
| - return false;
|
| - if (message.executionContextId && message.executionContextId !== executionContext.id) {
|
| - return false;
|
| - }
|
| - }
|
| -
|
| - if (WebInspector.moduleSetting("hideNetworkMessages").get() && viewMessage.consoleMessage().source === WebInspector.ConsoleMessage.MessageSource.Network)
|
| - return false;
|
| -
|
| - if (viewMessage.consoleMessage().isGroupMessage())
|
| - return true;
|
| -
|
| - if (message.type === WebInspector.ConsoleMessage.MessageType.Result || message.type === WebInspector.ConsoleMessage.MessageType.Command)
|
| - return true;
|
| -
|
| - if (message.url && this._messageURLFilters[message.url])
|
| - return false;
|
| -
|
| - if (message.level && !this._levelFilterUI.accept(message.level))
|
| - return false;
|
| -
|
| - if (this._filterRegex) {
|
| - this._filterRegex.lastIndex = 0;
|
| - if (!viewMessage.matchesFilterRegex(this._filterRegex))
|
| - return false;
|
| - }
|
| + if (this._filterRegex) {
|
| + this._filterRegex.lastIndex = 0;
|
| + if (!viewMessage.matchesFilterRegex(this._filterRegex))
|
| + return false;
|
| + }
|
|
|
| - return true;
|
| - },
|
| -
|
| - reset: function()
|
| - {
|
| - this._messageURLFilters = {};
|
| - this._messageURLFiltersSetting.set(this._messageURLFilters);
|
| - this._messageLevelFiltersSetting.set({});
|
| - this._view._showAllMessagesCheckbox.inputElement.checked = true;
|
| - WebInspector.moduleSetting("hideNetworkMessages").set(false);
|
| - this._textFilterUI.setValue("");
|
| - this._filterChanged();
|
| - },
|
| -
|
| - __proto__: WebInspector.Object.prototype
|
| + return true;
|
| + }
|
| +
|
| + reset() {
|
| + this._messageURLFilters = {};
|
| + this._messageURLFiltersSetting.set(this._messageURLFilters);
|
| + this._messageLevelFiltersSetting.set({});
|
| + this._view._showAllMessagesCheckbox.inputElement.checked = true;
|
| + WebInspector.moduleSetting('hideNetworkMessages').set(false);
|
| + this._textFilterUI.setValue('');
|
| + this._filterChanged();
|
| + }
|
| };
|
|
|
| +/** @enum {symbol} */
|
| +WebInspector.ConsoleViewFilter.Events = {
|
| + FilterChanged: Symbol('FilterChanged')
|
| +};
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.ConsoleViewMessage}
|
| - * @param {!WebInspector.ConsoleMessage} message
|
| - * @param {!WebInspector.Linkifier} linkifier
|
| - * @param {number} nestingLevel
|
| + * @unrestricted
|
| */
|
| -WebInspector.ConsoleCommand = function(message, linkifier, nestingLevel)
|
| -{
|
| - WebInspector.ConsoleViewMessage.call(this, message, linkifier, nestingLevel);
|
| -};
|
| +WebInspector.ConsoleCommand = class extends WebInspector.ConsoleViewMessage {
|
| + /**
|
| + * @param {!WebInspector.ConsoleMessage} message
|
| + * @param {!WebInspector.Linkifier} linkifier
|
| + * @param {number} nestingLevel
|
| + */
|
| + constructor(message, linkifier, nestingLevel) {
|
| + super(message, linkifier, nestingLevel);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!Element}
|
| + */
|
| + contentElement() {
|
| + if (!this._contentElement) {
|
| + this._contentElement = createElementWithClass('div', 'console-user-command');
|
| + this._contentElement.message = this;
|
| +
|
| + this._formattedCommand = createElementWithClass('span', 'console-message-text source-code');
|
| + this._formattedCommand.textContent = this.text.replaceControlCharacters();
|
| + this._contentElement.appendChild(this._formattedCommand);
|
| +
|
| + if (this._formattedCommand.textContent.length < WebInspector.ConsoleCommand.MaxLengthToIgnoreHighlighter) {
|
| + var javascriptSyntaxHighlighter = new WebInspector.DOMSyntaxHighlighter('text/javascript', true);
|
| + javascriptSyntaxHighlighter.syntaxHighlightNode(this._formattedCommand).then(this._updateSearch.bind(this));
|
| + } else {
|
| + this._updateSearch();
|
| + }
|
| + }
|
| + return this._contentElement;
|
| + }
|
|
|
| -WebInspector.ConsoleCommand.prototype = {
|
| - /**
|
| - * @override
|
| - * @return {!Element}
|
| - */
|
| - contentElement: function()
|
| - {
|
| - if (!this._contentElement) {
|
| - this._contentElement = createElementWithClass("div", "console-user-command");
|
| - this._contentElement.message = this;
|
| -
|
| - this._formattedCommand = createElementWithClass("span", "console-message-text source-code");
|
| - this._formattedCommand.textContent = this.text.replaceControlCharacters();
|
| - this._contentElement.appendChild(this._formattedCommand);
|
| -
|
| - if (this._formattedCommand.textContent.length < WebInspector.ConsoleCommand.MaxLengthToIgnoreHighlighter) {
|
| - var javascriptSyntaxHighlighter = new WebInspector.DOMSyntaxHighlighter("text/javascript", true);
|
| - javascriptSyntaxHighlighter.syntaxHighlightNode(this._formattedCommand).then(this._updateSearch.bind(this));
|
| - } else {
|
| - this._updateSearch();
|
| - }
|
| - }
|
| - return this._contentElement;
|
| - },
|
| -
|
| - _updateSearch: function()
|
| - {
|
| - this.setSearchRegex(this.searchRegex());
|
| - },
|
| -
|
| - __proto__: WebInspector.ConsoleViewMessage.prototype
|
| + _updateSearch() {
|
| + this.setSearchRegex(this.searchRegex());
|
| + }
|
| };
|
|
|
| /**
|
| @@ -1250,130 +1230,103 @@ WebInspector.ConsoleCommand.prototype = {
|
| WebInspector.ConsoleCommand.MaxLengthToIgnoreHighlighter = 10000;
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.ConsoleViewMessage}
|
| - * @param {!WebInspector.ConsoleMessage} message
|
| - * @param {!WebInspector.Linkifier} linkifier
|
| - * @param {number} nestingLevel
|
| + * @unrestricted
|
| */
|
| -WebInspector.ConsoleCommandResult = function(message, linkifier, nestingLevel)
|
| -{
|
| - WebInspector.ConsoleViewMessage.call(this, message, linkifier, nestingLevel);
|
| -};
|
| -
|
| -WebInspector.ConsoleCommandResult.prototype = {
|
| - /**
|
| - * @override
|
| - * @return {!Element}
|
| - */
|
| - contentElement: function()
|
| - {
|
| - var element = WebInspector.ConsoleViewMessage.prototype.contentElement.call(this);
|
| - element.classList.add("console-user-command-result");
|
| - this.updateTimestamp(false);
|
| - return element;
|
| - },
|
| -
|
| - __proto__: WebInspector.ConsoleViewMessage.prototype
|
| +WebInspector.ConsoleCommandResult = class extends WebInspector.ConsoleViewMessage {
|
| + /**
|
| + * @param {!WebInspector.ConsoleMessage} message
|
| + * @param {!WebInspector.Linkifier} linkifier
|
| + * @param {number} nestingLevel
|
| + */
|
| + constructor(message, linkifier, nestingLevel) {
|
| + super(message, linkifier, nestingLevel);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!Element}
|
| + */
|
| + contentElement() {
|
| + var element = super.contentElement();
|
| + element.classList.add('console-user-command-result');
|
| + this.updateTimestamp(false);
|
| + return element;
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {?WebInspector.ConsoleGroup} parentGroup
|
| - * @param {?WebInspector.ConsoleViewMessage} groupMessage
|
| + * @unrestricted
|
| */
|
| -WebInspector.ConsoleGroup = function(parentGroup, groupMessage)
|
| -{
|
| +WebInspector.ConsoleGroup = class {
|
| + /**
|
| + * @param {?WebInspector.ConsoleGroup} parentGroup
|
| + * @param {?WebInspector.ConsoleViewMessage} groupMessage
|
| + */
|
| + constructor(parentGroup, groupMessage) {
|
| this._parentGroup = parentGroup;
|
| this._nestingLevel = parentGroup ? parentGroup.nestingLevel() + 1 : 0;
|
| - this._messagesHidden = groupMessage && groupMessage.collapsed() || this._parentGroup && this._parentGroup.messagesHidden();
|
| -};
|
| -
|
| -/**
|
| - * @return {!WebInspector.ConsoleGroup}
|
| - */
|
| -WebInspector.ConsoleGroup.createTopGroup = function()
|
| -{
|
| + this._messagesHidden =
|
| + groupMessage && groupMessage.collapsed() || this._parentGroup && this._parentGroup.messagesHidden();
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.ConsoleGroup}
|
| + */
|
| + static createTopGroup() {
|
| return new WebInspector.ConsoleGroup(null, null);
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + messagesHidden() {
|
| + return this._messagesHidden;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + nestingLevel() {
|
| + return this._nestingLevel;
|
| + }
|
| +
|
| + /**
|
| + * @return {?WebInspector.ConsoleGroup}
|
| + */
|
| + parentGroup() {
|
| + return this._parentGroup || this;
|
| + }
|
| };
|
|
|
| -WebInspector.ConsoleGroup.prototype = {
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - messagesHidden: function()
|
| - {
|
| - return this._messagesHidden;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - nestingLevel: function()
|
| - {
|
| - return this._nestingLevel;
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.ConsoleGroup}
|
| - */
|
| - parentGroup: function()
|
| - {
|
| - return this._parentGroup || this;
|
| - },
|
| -};
|
| -
|
| -/**
|
| - * @return {!WebInspector.ConsoleView}
|
| - */
|
| -WebInspector.ConsoleView.instance = function()
|
| -{
|
| - if (!WebInspector.ConsoleView._instance)
|
| - WebInspector.ConsoleView._instance = new WebInspector.ConsoleView();
|
| - return WebInspector.ConsoleView._instance;
|
| -};
|
| -
|
| -WebInspector.ConsoleView.clearConsole = function()
|
| -{
|
| - for (var target of WebInspector.targetManager.targets()) {
|
| - target.runtimeModel.discardConsoleEntries();
|
| - target.consoleModel.requestClearMessages();
|
| - }
|
| -};
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.ActionDelegate}
|
| + * @unrestricted
|
| */
|
| -WebInspector.ConsoleView.ActionDelegate = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.ConsoleView.ActionDelegate.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Context} context
|
| - * @param {string} actionId
|
| - * @return {boolean}
|
| - */
|
| - handleAction: function(context, actionId)
|
| - {
|
| - switch (actionId) {
|
| - case "console.show":
|
| - WebInspector.console.show();
|
| - return true;
|
| - case "console.clear":
|
| - WebInspector.ConsoleView.clearConsole();
|
| - return true;
|
| - case "console.clear.history":
|
| - WebInspector.ConsoleView.instance()._clearHistory();
|
| - return true;
|
| - }
|
| - return false;
|
| +WebInspector.ConsoleView.ActionDelegate = class {
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Context} context
|
| + * @param {string} actionId
|
| + * @return {boolean}
|
| + */
|
| + handleAction(context, actionId) {
|
| + switch (actionId) {
|
| + case 'console.show':
|
| + WebInspector.console.show();
|
| + return true;
|
| + case 'console.clear':
|
| + WebInspector.ConsoleView.clearConsole();
|
| + return true;
|
| + case 'console.clear.history':
|
| + WebInspector.ConsoleView.instance()._clearHistory();
|
| + return true;
|
| }
|
| + return false;
|
| + }
|
| };
|
|
|
| /**
|
| -* @typedef {{messageIndex: number, matchIndex: number}}
|
| -*/
|
| + * @typedef {{messageIndex: number, matchIndex: number}}
|
| + */
|
| WebInspector.ConsoleView.RegexMatchRange;
|
|
|