| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2009 Joseph Pecoraro | 3 * Copyright (C) 2009 Joseph Pecoraro |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 | 29 |
| 30 /** | 30 /** |
| 31 * @extends {WebInspector.View} | 31 * @extends {WebInspector.View} |
| 32 * @implements {WebInspector.Searchable} | 32 * @implements {WebInspector.Searchable} |
| 33 * @constructor | 33 * @constructor |
| 34 * @param {boolean} hideContextSelector | 34 * @param {boolean} hideContextSelector |
| 35 */ | 35 */ |
| 36 WebInspector.ConsoleView = function(hideContextSelector) | 36 WebInspector.ConsoleView = function(hideContextSelector) |
| 37 { | 37 { |
| 38 WebInspector.View.call(this); | 38 WebInspector.View.call(this); |
| 39 this.registerRequiredCSS("filter.css"); |
| 40 |
| 39 this.element.classList.add("fill", "vbox"); | 41 this.element.classList.add("fill", "vbox"); |
| 40 this._visibleMessagesIndices = []; | 42 this._visibleMessagesIndices = []; |
| 41 this._urlToMessageCount = {}; | 43 this._urlToMessageCount = {}; |
| 42 | 44 |
| 43 this._clearConsoleButton = new WebInspector.StatusBarButton(WebInspector.UIS
tring("Clear console log."), "clear-status-bar-item"); | 45 this._clearConsoleButton = new WebInspector.StatusBarButton(WebInspector.UIS
tring("Clear console log."), "clear-status-bar-item"); |
| 44 this._clearConsoleButton.addEventListener("click", this._requestClearMessage
s, this); | 46 this._clearConsoleButton.addEventListener("click", this._requestClearMessage
s, this); |
| 45 | 47 |
| 46 this._frameSelector = new WebInspector.StatusBarComboBox(this._frameChanged.
bind(this), "console-context"); | 48 this._frameSelector = new WebInspector.StatusBarComboBox(this._frameChanged.
bind(this), "console-context"); |
| 47 this._contextSelector = new WebInspector.StatusBarComboBox(this._contextChan
ged.bind(this), "console-context"); | 49 this._contextSelector = new WebInspector.StatusBarComboBox(this._contextChan
ged.bind(this), "console-context"); |
| 48 | 50 |
| 49 this._filter = new WebInspector.ConsoleViewFilter(); | 51 this._filter = new WebInspector.ConsoleViewFilter(); |
| 50 this._filter.addEventListener(WebInspector.ConsoleViewFilter.Events.FilterCh
anged, this._updateMessageList.bind(this)); | 52 this._filter.addEventListener(WebInspector.ConsoleViewFilter.Events.FilterCh
anged, this._updateMessageList.bind(this)); |
| 51 | 53 |
| 52 if (hideContextSelector) { | 54 if (hideContextSelector) { |
| 53 this._frameSelector.element.addStyleClass("hidden"); | 55 this._frameSelector.element.addStyleClass("hidden"); |
| 54 this._contextSelector.element.addStyleClass("hidden"); | 56 this._contextSelector.element.addStyleClass("hidden"); |
| 55 } | 57 } |
| 56 | 58 |
| 59 this._filterBar = new WebInspector.FilterBar(); |
| 60 |
| 57 var statusBarElement = this.element.createChild("div", "console-status-bar")
; | 61 var statusBarElement = this.element.createChild("div", "console-status-bar")
; |
| 62 statusBarElement.appendChild(this._filterBar.filterButton()); |
| 58 statusBarElement.appendChild(this._clearConsoleButton.element); | 63 statusBarElement.appendChild(this._clearConsoleButton.element); |
| 59 statusBarElement.appendChild(this._frameSelector.element); | 64 statusBarElement.appendChild(this._frameSelector.element); |
| 60 statusBarElement.appendChild(this._contextSelector.element); | 65 statusBarElement.appendChild(this._contextSelector.element); |
| 61 statusBarElement.appendChild(this._filter.sourceFilterButton.element); | 66 |
| 62 statusBarElement.appendChild(this._filter.filterBarElement); | 67 this._filtersContainer = this.element.createChild("div", "console-filters-he
ader hidden"); |
| 68 this._filtersContainer.appendChild(this._filterBar.filtersElement()); |
| 69 this._filterBar.addEventListener(WebInspector.FilterBar.Events.FiltersToggle
d, this._onFiltersToggled, this); |
| 70 this._filter.addFilters(this._filterBar); |
| 63 | 71 |
| 64 this.messagesElement = document.createElement("div"); | 72 this.messagesElement = document.createElement("div"); |
| 65 this.messagesElement.id = "console-messages"; | 73 this.messagesElement.id = "console-messages"; |
| 66 this.messagesElement.className = "monospace"; | 74 this.messagesElement.className = "monospace"; |
| 67 this.messagesElement.addEventListener("click", this._messagesClicked.bind(th
is), true); | 75 this.messagesElement.addEventListener("click", this._messagesClicked.bind(th
is), true); |
| 68 this.element.appendChild(this.messagesElement); | 76 this.element.appendChild(this.messagesElement); |
| 69 this._scrolledToBottom = true; | 77 this._scrolledToBottom = true; |
| 70 | 78 |
| 71 this.promptElement = document.createElement("div"); | 79 this.promptElement = document.createElement("div"); |
| 72 this.promptElement.id = "console-prompt"; | 80 this.promptElement.id = "console-prompt"; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 var resetFiltersLink = this._filterStatusMessageElement.createChild("span",
"console-info node-link"); | 117 var resetFiltersLink = this._filterStatusMessageElement.createChild("span",
"console-info node-link"); |
| 110 resetFiltersLink.textContent = WebInspector.UIString("Show all messages."); | 118 resetFiltersLink.textContent = WebInspector.UIString("Show all messages."); |
| 111 resetFiltersLink.addEventListener("click", this._filter.reset.bind(this._fil
ter), true); | 119 resetFiltersLink.addEventListener("click", this._filter.reset.bind(this._fil
ter), true); |
| 112 | 120 |
| 113 this.messagesElement.insertBefore(this._filterStatusMessageElement, this.top
Group.element); | 121 this.messagesElement.insertBefore(this._filterStatusMessageElement, this.top
Group.element); |
| 114 | 122 |
| 115 this._updateFilterStatus(); | 123 this._updateFilterStatus(); |
| 116 } | 124 } |
| 117 | 125 |
| 118 WebInspector.ConsoleView.prototype = { | 126 WebInspector.ConsoleView.prototype = { |
| 127 _onFiltersToggled: function(event) |
| 128 { |
| 129 var toggled = /** @type {boolean} */ (event.data); |
| 130 this._filtersContainer.enableStyleClass("hidden", !toggled); |
| 131 }, |
| 132 |
| 119 /** | 133 /** |
| 120 * @param {WebInspector.Event} event | 134 * @param {WebInspector.Event} event |
| 121 */ | 135 */ |
| 122 _frameAdded: function(event) | 136 _frameAdded: function(event) |
| 123 { | 137 { |
| 124 var contextList = /** @type {WebInspector.FrameExecutionContextList} */
(event.data); | 138 var contextList = /** @type {WebInspector.FrameExecutionContextList} */
(event.data); |
| 125 this._addFrame(contextList); | 139 this._addFrame(contextList); |
| 126 }, | 140 }, |
| 127 | 141 |
| 128 /** | 142 /** |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 return; | 301 return; |
| 288 | 302 |
| 289 clearTimeout(this._scrollIntoViewTimer); | 303 clearTimeout(this._scrollIntoViewTimer); |
| 290 delete this._scrollIntoViewTimer; | 304 delete this._scrollIntoViewTimer; |
| 291 }, | 305 }, |
| 292 | 306 |
| 293 /** | 307 /** |
| 294 * @param {number=} count | 308 * @param {number=} count |
| 295 */ | 309 */ |
| 296 _updateFilterStatus: function(count) { | 310 _updateFilterStatus: function(count) { |
| 297 count = (typeof count === undefined) ? (WebInspector.console.messages.le
ngth - this._visibleMessagesIndices.length) : count; | 311 count = (typeof count === "undefined") ? (WebInspector.console.messages.
length - this._visibleMessagesIndices.length) : count; |
| 298 this._filterStatusTextElement.textContent = WebInspector.UIString(count
== 1 ? "%d message is hidden by filters." : "%d messages are hidden by filters."
, count); | 312 this._filterStatusTextElement.textContent = WebInspector.UIString(count
== 1 ? "%d message is hidden by filters." : "%d messages are hidden by filters."
, count); |
| 299 this._filterStatusMessageElement.style.display = count ? "" : "none"; | 313 this._filterStatusMessageElement.style.display = count ? "" : "none"; |
| 300 }, | 314 }, |
| 301 | 315 |
| 302 /** | 316 /** |
| 303 * @param {WebInspector.Event} event | 317 * @param {WebInspector.Event} event |
| 304 */ | 318 */ |
| 305 _consoleMessageAdded: function(event) | 319 _consoleMessageAdded: function(event) |
| 306 { | 320 { |
| 307 var message = /** @type {WebInspector.ConsoleMessage} */ (event.data); | 321 var message = /** @type {WebInspector.ConsoleMessage} */ (event.data); |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 delete this._searchProvider; | 690 delete this._searchProvider; |
| 677 delete this._searchResultsIndices; | 691 delete this._searchResultsIndices; |
| 678 delete this._searchRegex; | 692 delete this._searchRegex; |
| 679 }, | 693 }, |
| 680 | 694 |
| 681 canSearchAndReplace: function() | 695 canSearchAndReplace: function() |
| 682 { | 696 { |
| 683 return false; | 697 return false; |
| 684 }, | 698 }, |
| 685 | 699 |
| 686 canFilter: function() | |
| 687 { | |
| 688 return true; | |
| 689 }, | |
| 690 | |
| 691 /** | 700 /** |
| 692 * @param {string} query | 701 * @param {string} query |
| 693 * @param {boolean} shouldJump | 702 * @param {boolean} shouldJump |
| 694 * @param {WebInspector.Searchable=} self | 703 * @param {WebInspector.Searchable=} self |
| 695 */ | 704 */ |
| 696 performSearch: function(query, shouldJump, self) | 705 performSearch: function(query, shouldJump, self) |
| 697 { | 706 { |
| 698 this.searchCanceled(); | 707 this.searchCanceled(); |
| 699 this._searchProvider = self || this; | 708 this._searchProvider = self || this; |
| 700 WebInspector.searchController.updateSearchMatchesCount(0, this._searchPr
ovider); | 709 WebInspector.searchController.updateSearchMatchesCount(0, this._searchPr
ovider); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 713 | 722 |
| 714 /** | 723 /** |
| 715 * @return {number} | 724 * @return {number} |
| 716 */ | 725 */ |
| 717 minimalSearchQuerySize: function() | 726 minimalSearchQuerySize: function() |
| 718 { | 727 { |
| 719 return 0; | 728 return 0; |
| 720 }, | 729 }, |
| 721 | 730 |
| 722 /** | 731 /** |
| 723 * @param {string} query | |
| 724 */ | |
| 725 performFilter: function(query) | |
| 726 { | |
| 727 this._filter.performFilter(query); | |
| 728 }, | |
| 729 | |
| 730 /** | |
| 731 * @param {WebInspector.Searchable=} self | 732 * @param {WebInspector.Searchable=} self |
| 732 */ | 733 */ |
| 733 jumpToNextSearchResult: function(self) | 734 jumpToNextSearchResult: function(self) |
| 734 { | 735 { |
| 735 if (!this._searchResultsIndices || !this._searchResultsIndices.length) | 736 if (!this._searchResultsIndices || !this._searchResultsIndices.length) |
| 736 return; | 737 return; |
| 737 this._jumpToSearchResult((this._currentSearchResultIndex + 1) % this._se
archResultsIndices.length, self); | 738 this._jumpToSearchResult((this._currentSearchResultIndex + 1) % this._se
archResultsIndices.length, self); |
| 738 }, | 739 }, |
| 739 | 740 |
| 740 /** | 741 /** |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 __proto__: WebInspector.View.prototype | 782 __proto__: WebInspector.View.prototype |
| 782 } | 783 } |
| 783 | 784 |
| 784 /** | 785 /** |
| 785 * @extends {WebInspector.Object} | 786 * @extends {WebInspector.Object} |
| 786 * @constructor | 787 * @constructor |
| 787 */ | 788 */ |
| 788 WebInspector.ConsoleViewFilter = function() | 789 WebInspector.ConsoleViewFilter = function() |
| 789 { | 790 { |
| 790 this._messageURLFilters = WebInspector.settings.messageURLFilters.get(); | 791 this._messageURLFilters = WebInspector.settings.messageURLFilters.get(); |
| 791 this._messageSourceFilters = WebInspector.settings.messageSourceFilters.get(
); | 792 this._hideCSSErrorsInConsole = WebInspector.settings.hideCSSErrorsInConsole.
get(); |
| 792 this._messageLevelFilters = WebInspector.settings.messageLevelFilters.get(); | 793 this._messageLevelFilters = WebInspector.settings.messageLevelFilters.get(); |
| 793 | 794 |
| 794 this._sourceToKeyMap = {}; | |
| 795 | |
| 796 for (var key in WebInspector.ConsoleViewFilter._messageSourceGroups) { | |
| 797 if (!WebInspector.ConsoleViewFilter._messageSourceGroups[key].sources) { | |
| 798 console.assert(!this._otherKey); | |
| 799 this._otherKey = key; | |
| 800 continue; | |
| 801 } | |
| 802 | |
| 803 for (var i = 0; i < WebInspector.ConsoleViewFilter._messageSourceGroups[
key].sources.length; ++i) | |
| 804 this._sourceToKeyMap[WebInspector.ConsoleViewFilter._messageSourceGr
oups[key].sources[i]] = key; | |
| 805 } | |
| 806 | |
| 807 this._filterChanged = this.dispatchEventToListeners.bind(this, WebInspector.
ConsoleViewFilter.Events.FilterChanged); | 795 this._filterChanged = this.dispatchEventToListeners.bind(this, WebInspector.
ConsoleViewFilter.Events.FilterChanged); |
| 808 | 796 |
| 809 WebInspector.settings.messageSourceFilters.addChangeListener(this._updateSou
rceFilterButton.bind(this)); | 797 WebInspector.settings.hideCSSErrorsInConsole.addChangeListener(this._updateC
SSFilter.bind(this)); |
| 810 WebInspector.settings.messageLevelFilters.addChangeListener(this._updateLeve
lFilterBar.bind(this)); | 798 WebInspector.settings.messageLevelFilters.addChangeListener(this._updateLeve
lFilter.bind(this)); |
| 811 | |
| 812 this.sourceFilterButton = new WebInspector.StatusBarButton(WebInspector.UISt
ring("Filter"), "console-filter", 2); | |
| 813 this.sourceFilterButton.element.addEventListener("mousedown", this._handleSo
urceFilterButtonClick.bind(this), false); | |
| 814 | |
| 815 this._filterBarElements = []; | |
| 816 | |
| 817 this.filterBarElement = document.createElement("div"); | |
| 818 this.filterBarElement.className = "scope-bar status-bar-item"; | |
| 819 | |
| 820 this._createLevelFilterBarElement("all", WebInspector.UIString("All")); | |
| 821 | |
| 822 var dividerElement = document.createElement("div"); | |
| 823 dividerElement.addStyleClass("scope-bar-divider"); | |
| 824 this.filterBarElement.appendChild(dividerElement); | |
| 825 | |
| 826 this._createLevelFilterBarElement("error", WebInspector.UIString("Errors")); | |
| 827 this._createLevelFilterBarElement("warning", WebInspector.UIString("Warnings
")); | |
| 828 this._createLevelFilterBarElement("log", WebInspector.UIString("Logs")); | |
| 829 this._createLevelFilterBarElement("debug", WebInspector.UIString("Debug")); | |
| 830 | |
| 831 this._updateLevelFilterBar(); | |
| 832 this._updateSourceFilterButton(); | |
| 833 }; | 799 }; |
| 834 | 800 |
| 835 WebInspector.ConsoleViewFilter.Events = { | 801 WebInspector.ConsoleViewFilter.Events = { |
| 836 FilterChanged: "FilterChanged" | 802 FilterChanged: "FilterChanged" |
| 837 }; | 803 }; |
| 838 | 804 |
| 839 WebInspector.ConsoleViewFilter._messageSourceGroups = { | 805 WebInspector.ConsoleViewFilter.prototype = { |
| 840 JS: { sources: [WebInspector.ConsoleMessage.MessageSource.JS], title: "JavaS
cript", styleClass: "filter-type-javascript"}, | 806 addFilters: function(filterBar) |
| 841 Network: { sources: [WebInspector.ConsoleMessage.MessageSource.Network], tit
le: "Network", styleClass: "filter-type-network"}, | 807 { |
| 842 Logging: { sources: [WebInspector.ConsoleMessage.MessageSource.ConsoleAPI],
title: "Logging", styleClass: "filter-type-logging"}, | 808 this._textFilterUI = new WebInspector.TextFilterUI(); |
| 843 CSS: { sources: [WebInspector.ConsoleMessage.MessageSource.CSS], title: "CSS
", styleClass: "filter-type-css"}, | 809 this._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterC
hanged, this._textFilterChanged, this); |
| 844 Other: { title: "Other", styleClass: "filter-type-other"} | 810 filterBar.addFilter(this._textFilterUI); |
| 845 }; | |
| 846 | 811 |
| 847 WebInspector.ConsoleViewFilter.prototype = { | 812 this._levelFilterUI = new WebInspector.NamedBitSetFilterUI(); |
| 813 this._levelFilterUI.addBit("error", WebInspector.UIString("Errors")); |
| 814 this._levelFilterUI.addBit("warning", WebInspector.UIString("Warnings"))
; |
| 815 this._levelFilterUI.addBit("log", WebInspector.UIString("Logs")); |
| 816 this._levelFilterUI.addBit("debug", WebInspector.UIString("Debug")); |
| 817 this._levelFilterUI.addEventListener(WebInspector.FilterUI.Events.Filter
Changed, this._levelFilterChanged, this); |
| 818 filterBar.addFilter(this._levelFilterUI); |
| 819 this._updateLevelFilter(); |
| 820 |
| 821 this._cssFilterUI = new WebInspector.CheckboxFilterUI(WebInspector.Conso
leMessage.MessageSource.CSS, WebInspector.UIString("Hide CSS"), true); |
| 822 this._cssFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterCh
anged, this._cssFilterChanged, this); |
| 823 filterBar.addFilter(this._cssFilterUI); |
| 824 this._updateCSSFilter(); |
| 825 }, |
| 826 |
| 827 _textFilterChanged: function(event) |
| 828 { |
| 829 var query = this._textFilterUI.value(); |
| 830 if (!query) |
| 831 delete this._filterRegex; |
| 832 else |
| 833 this._filterRegex = createPlainTextSearchRegex(query, "gi"); |
| 834 |
| 835 this._filterChanged(); |
| 836 }, |
| 837 |
| 838 _levelFilterChanged: function(event) |
| 839 { |
| 840 if (this._updatingLevelFilter) |
| 841 return; |
| 842 var filteredOutTypes = this._levelFilterUI.filteredOutTypes(); |
| 843 this._messageLevelFilters = {}; |
| 844 for (var i = 0; i < filteredOutTypes.length; ++i) |
| 845 this._messageLevelFilters[filteredOutTypes[i]] = true; |
| 846 WebInspector.settings.messageLevelFilters.set(this._messageLevelFilters)
; |
| 847 this._filterChanged(); |
| 848 }, |
| 849 |
| 850 _cssFilterChanged: function(event) |
| 851 { |
| 852 if (this._updatingCSSFilter) |
| 853 return; |
| 854 |
| 855 this._hideCSSErrorsInConsole = this._cssFilterUI.checked(); |
| 856 WebInspector.settings.hideCSSErrorsInConsole.set(this._hideCSSErrorsInCo
nsole); |
| 857 this._filterChanged(); |
| 858 }, |
| 859 |
| 848 /** | 860 /** |
| 849 * @param {string} url | 861 * @param {string} url |
| 850 */ | 862 */ |
| 851 addMessageURLFilter: function(url) | 863 addMessageURLFilter: function(url) |
| 852 { | 864 { |
| 853 this._messageURLFilters[url] = true; | 865 this._messageURLFilters[url] = true; |
| 854 WebInspector.settings.messageURLFilters.set(this._messageURLFilters); | 866 WebInspector.settings.messageURLFilters.set(this._messageURLFilters); |
| 855 this._filterChanged(); | 867 this._filterChanged(); |
| 856 }, | 868 }, |
| 857 | 869 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 891 | 903 |
| 892 if (message.level && this._messageLevelFilters[message.level]) | 904 if (message.level && this._messageLevelFilters[message.level]) |
| 893 return false; | 905 return false; |
| 894 | 906 |
| 895 if (this._filterRegex) { | 907 if (this._filterRegex) { |
| 896 this._filterRegex.lastIndex = 0; | 908 this._filterRegex.lastIndex = 0; |
| 897 if (!message.matchesRegex(this._filterRegex)) | 909 if (!message.matchesRegex(this._filterRegex)) |
| 898 return false; | 910 return false; |
| 899 } | 911 } |
| 900 | 912 |
| 901 // We store group keys, and we have resolved group by message source | 913 if (message.source && message.source === WebInspector.ConsoleMessage.Mes
sageSource.CSS && this._hideCSSErrorsInConsole) |
| 902 if (message.source) { | 914 return false; |
| 903 if (this._sourceToKeyMap[message.source]) | |
| 904 return !this._messageSourceFilters[this._sourceToKeyMap[message.
source]]; | |
| 905 else | |
| 906 return !this._messageSourceFilters[this._otherKey]; | |
| 907 } | |
| 908 | |
| 909 | 915 |
| 910 return true; | 916 return true; |
| 911 }, | 917 }, |
| 912 | 918 |
| 913 reset: function() | 919 reset: function() |
| 914 { | 920 { |
| 915 this._messageSourceFilters = {}; | 921 this._hideCSSErrorsInConsole = false; |
| 916 WebInspector.settings.messageSourceFilters.set(this._messageSourceFilter
s); | 922 WebInspector.settings.hideCSSErrorsInConsole.set(this._hideCSSErrorsInCo
nsole); |
| 917 this._messageURLFilters = {}; | 923 this._messageURLFilters = {}; |
| 918 WebInspector.settings.messageURLFilters.set(this._messageURLFilters); | 924 WebInspector.settings.messageURLFilters.set(this._messageURLFilters); |
| 919 this._messageLevelFilters = {}; | 925 this._messageLevelFilters = {}; |
| 920 WebInspector.settings.messageLevelFilters.set(this._messageLevelFilters)
; | 926 WebInspector.settings.messageLevelFilters.set(this._messageLevelFilters)
; |
| 921 this._filterChanged(); | 927 this._filterChanged(); |
| 922 }, | 928 }, |
| 923 | 929 |
| 924 /** | 930 /** |
| 925 * @param {string} query | |
| 926 */ | |
| 927 performFilter: function(query) | |
| 928 { | |
| 929 if (!query) | |
| 930 delete this._filterRegex; | |
| 931 else | |
| 932 this._filterRegex = createPlainTextSearchRegex(query, "gi"); | |
| 933 | |
| 934 this._filterChanged(); | |
| 935 }, | |
| 936 | |
| 937 /** | |
| 938 * @param {string} sourceGroup | |
| 939 * @private | |
| 940 */ | |
| 941 _toggleMessageSourceFilter: function(sourceGroup) | |
| 942 { | |
| 943 if (!this._messageSourceFilters[sourceGroup]) | |
| 944 this._messageSourceFilters[sourceGroup] = true; | |
| 945 else | |
| 946 delete this._messageSourceFilters[sourceGroup]; | |
| 947 | |
| 948 WebInspector.settings.messageSourceFilters.set(this._messageSourceFilter
s); | |
| 949 this._filterChanged(); | |
| 950 }, | |
| 951 | |
| 952 /** | |
| 953 * @private | 931 * @private |
| 954 */ | 932 */ |
| 955 _updateSourceFilterButton: function() | 933 _updateLevelFilter: function() |
| 956 { | 934 { |
| 957 var hasActiveSourceFilter = false; | 935 this._updatingLevelFilter = true; |
| 958 for (var sourceGroup in WebInspector.ConsoleViewFilter._messageSourceGro
ups) { | 936 var filteredOutTypes = Object.keys(this._messageLevelFilters); |
| 959 if (this._messageSourceFilters[sourceGroup]) { | 937 this._levelFilterUI.setFilteredOutTypes(filteredOutTypes); |
| 960 hasActiveSourceFilter = true; | 938 delete this._updatingLevelFilter; |
| 961 break; | |
| 962 } | |
| 963 } | |
| 964 | |
| 965 this.sourceFilterButton.state = hasActiveSourceFilter; | |
| 966 }, | |
| 967 | |
| 968 /** | |
| 969 * @param {Event} event | |
| 970 * @returns {WebInspector.ContextMenu} | |
| 971 * @private | |
| 972 */ | |
| 973 _createSourceFilterMenu: function(event) | |
| 974 { | |
| 975 var menu = new WebInspector.ContextMenu(event); | |
| 976 | |
| 977 for (var sourceGroup in WebInspector.ConsoleViewFilter._messageSourceGro
ups) { | |
| 978 var filter = WebInspector.ConsoleViewFilter._messageSourceGroups[sou
rceGroup]; | |
| 979 | |
| 980 menu.appendCheckboxItem(WebInspector.UIString(WebInspector.UIString(
filter.title)), this._toggleMessageSourceFilter.bind(this, sourceGroup), !this._
messageSourceFilters[sourceGroup]); | |
| 981 } | |
| 982 | |
| 983 return menu; | |
| 984 }, | |
| 985 | |
| 986 /** | |
| 987 * @param {string} level | |
| 988 * @param {string} label | |
| 989 * @private | |
| 990 */ | |
| 991 _createLevelFilterBarElement: function(level, label) | |
| 992 { | |
| 993 var categoryElement = document.createElement("li"); | |
| 994 categoryElement.category = level; | |
| 995 categoryElement.className = level; | |
| 996 categoryElement.textContent = label; | |
| 997 categoryElement.addEventListener("click", this._toggleLevelFilter.bind(t
his, level), false); | |
| 998 | |
| 999 this._filterBarElements[level] = categoryElement; | |
| 1000 this.filterBarElement.appendChild(categoryElement); | |
| 1001 }, | |
| 1002 | |
| 1003 /** | |
| 1004 * @param {string} level | |
| 1005 * @param {Event} event | |
| 1006 * @private | |
| 1007 */ | |
| 1008 _toggleLevelFilter: function(level, event) | |
| 1009 { | |
| 1010 var isMac = WebInspector.isMac(); | |
| 1011 var selectMultiple = false; | |
| 1012 if (isMac && event.metaKey && !event.ctrlKey && !event.altKey && !event.
shiftKey) | |
| 1013 selectMultiple = true; | |
| 1014 if (!isMac && event.ctrlKey && !event.metaKey && !event.altKey && !event
.shiftKey) | |
| 1015 selectMultiple = true; | |
| 1016 | |
| 1017 if (level === "all") | |
| 1018 this._messageLevelFilters = {}; | |
| 1019 else { | |
| 1020 if (!selectMultiple) { | |
| 1021 this._messageLevelFilters = {error: true, warning: true, log: tr
ue, debug: true}; | |
| 1022 delete this._messageLevelFilters[level]; | |
| 1023 } else { | |
| 1024 if (this._messageLevelFilters[level]) | |
| 1025 delete this._messageLevelFilters[level]; | |
| 1026 else | |
| 1027 this._messageLevelFilters[level] = true; | |
| 1028 } | |
| 1029 } | |
| 1030 | |
| 1031 WebInspector.settings.messageLevelFilters.set(this._messageLevelFilters)
; | |
| 1032 this._filterChanged(); | |
| 1033 }, | 939 }, |
| 1034 | 940 |
| 1035 /** | 941 /** |
| 1036 * @private | 942 * @private |
| 1037 */ | 943 */ |
| 1038 _updateLevelFilterBar: function() | 944 _updateCSSFilter: function() |
| 1039 { | 945 { |
| 1040 var all = !(this._messageLevelFilters["error"] || this._messageLevelFilt
ers["warning"] || this._messageLevelFilters["log"] || this._messageLevelFilters[
"debug"]); | 946 this._updatingCSSFilter = true; |
| 1041 | 947 this._cssFilterUI.setChecked(this._hideCSSErrorsInConsole); |
| 1042 this._filterBarElements["all"].enableStyleClass("selected", all); | 948 delete this._updatingCSSFilter; |
| 1043 | |
| 1044 this._filterBarElements["error"].enableStyleClass("selected", !all && !t
his._messageLevelFilters["error"]); | |
| 1045 this._filterBarElements["warning"].enableStyleClass("selected", !all &&
!this._messageLevelFilters["warning"]); | |
| 1046 this._filterBarElements["log"].enableStyleClass("selected", !all && !thi
s._messageLevelFilters["log"]); | |
| 1047 this._filterBarElements["debug"].enableStyleClass("selected", !all && !t
his._messageLevelFilters["debug"]); | |
| 1048 }, | |
| 1049 | |
| 1050 /** | |
| 1051 * @param {Event} event | |
| 1052 * @private | |
| 1053 */ | |
| 1054 _handleSourceFilterButtonClick: function(event) | |
| 1055 { | |
| 1056 if (!event.button) | |
| 1057 this._createSourceFilterMenu(event).showSoftMenu(); | |
| 1058 }, | 949 }, |
| 1059 | 950 |
| 1060 __proto__: WebInspector.Object.prototype | 951 __proto__: WebInspector.Object.prototype |
| 1061 }; | 952 }; |
| 1062 | 953 |
| 1063 | 954 |
| 1064 /** | 955 /** |
| 1065 * @constructor | 956 * @constructor |
| 1066 * @extends WebInspector.ConsoleMessage | 957 * @extends WebInspector.ConsoleMessage |
| 1067 */ | 958 */ |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1241 | 1132 |
| 1242 /** | 1133 /** |
| 1243 * @type {?WebInspector.ConsoleView} | 1134 * @type {?WebInspector.ConsoleView} |
| 1244 */ | 1135 */ |
| 1245 WebInspector.consoleView = null; | 1136 WebInspector.consoleView = null; |
| 1246 | 1137 |
| 1247 WebInspector.ConsoleMessage.create = function(source, level, message, type, url,
line, column, repeatCount, parameters, stackTrace, requestId, isOutdated) | 1138 WebInspector.ConsoleMessage.create = function(source, level, message, type, url,
line, column, repeatCount, parameters, stackTrace, requestId, isOutdated) |
| 1248 { | 1139 { |
| 1249 return new WebInspector.ConsoleMessageImpl(source, level, message, WebInspec
tor.consoleView._linkifier, type, url, line, column, repeatCount, parameters, st
ackTrace, requestId, isOutdated); | 1140 return new WebInspector.ConsoleMessageImpl(source, level, message, WebInspec
tor.consoleView._linkifier, type, url, line, column, repeatCount, parameters, st
ackTrace, requestId, isOutdated); |
| 1250 } | 1141 } |
| OLD | NEW |