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 |