Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 3 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 this._message = consoleMessage; | 41 this._message = consoleMessage; |
| 42 this._linkifier = linkifier; | 42 this._linkifier = linkifier; |
| 43 this._repeatCount = 1; | 43 this._repeatCount = 1; |
| 44 this._closeGroupDecorationCount = 0; | 44 this._closeGroupDecorationCount = 0; |
| 45 this._nestingLevel = nestingLevel; | 45 this._nestingLevel = nestingLevel; |
| 46 | 46 |
| 47 /** @type {?DataGrid.DataGrid} */ | 47 /** @type {?DataGrid.DataGrid} */ |
| 48 this._dataGrid = null; | 48 this._dataGrid = null; |
| 49 this._previewFormatter = new Components.RemoteObjectPreviewFormatter(); | 49 this._previewFormatter = new Components.RemoteObjectPreviewFormatter(); |
| 50 this._searchRegex = null; | 50 this._searchRegex = null; |
| 51 /** @type {?UI.Icon} */ | 51 /** @type {?Element} */ |
| 52 this._messageLevelIcon = null; | 52 this._decorationWrapper = null; |
| 53 /** @type {?Element} */ | |
| 54 this._repeatCountElement = null; | |
| 53 } | 55 } |
| 54 | 56 |
| 55 /** | 57 /** |
| 56 * @return {?SDK.Target} | 58 * @return {?SDK.Target} |
| 57 */ | 59 */ |
| 58 _target() { | 60 _target() { |
| 59 return this.consoleMessage().target(); | 61 return this.consoleMessage().target(); |
| 60 } | 62 } |
| 61 | 63 |
| 62 /** | 64 /** |
| 63 * @override | 65 * @override |
| 64 * @return {!Element} | 66 * @return {!Element} |
| 65 */ | 67 */ |
| 66 element() { | 68 element() { |
| 67 return this.toMessageElement(); | 69 return this.toMessageElement(); |
| 68 } | 70 } |
| 69 | 71 |
| 70 /** | 72 /** |
| 71 * @override | 73 * @override |
| 72 */ | 74 */ |
| 73 wasShown() { | 75 wasShown() { |
| 74 if (this._dataGrid) | 76 if (this._dataGrid) |
| 75 this._dataGrid.updateWidths(); | 77 this._dataGrid.updateWidths(); |
| 78 this._rebuildDecorations(); | |
| 76 this._isVisible = true; | 79 this._isVisible = true; |
| 77 } | 80 } |
| 78 | 81 |
| 79 onResize() { | 82 onResize() { |
| 80 if (!this._isVisible) | 83 if (!this._isVisible) |
| 81 return; | 84 return; |
| 82 if (this._dataGrid) | 85 if (this._dataGrid) |
| 83 this._dataGrid.onResize(); | 86 this._dataGrid.onResize(); |
| 84 } | 87 } |
| 85 | 88 |
| 86 /** | 89 /** |
| 87 * @override | 90 * @override |
| 88 */ | 91 */ |
| 89 willHide() { | 92 willHide() { |
| 90 this._isVisible = false; | 93 this._isVisible = false; |
| 91 this._cachedHeight = this.contentElement().offsetHeight; | 94 this._cachedHeight = this.contentElement().offsetHeight; |
| 92 } | 95 } |
| 93 | 96 |
| 97 _rebuildDecorations() { | |
| 98 if (!this._decorationWrapper) | |
| 99 return; | |
| 100 this._decorationWrapper.removeChildren(); | |
| 101 | |
| 102 // Console viewport text selection logic requires every element that can be | |
| 103 // the start/end of a selection to have a text node. | |
| 104 this._decorationWrapper.createTextChild(''); | |
| 105 | |
| 106 // Build timestamp. | |
| 107 if (Common.moduleSetting('consoleTimestampsEnabled').get()) { | |
| 108 var timestampElement = this._decorationWrapper.createChild('span', 'messag e-timestamp'); | |
| 109 timestampElement.textContent = formatTimestamp(this._message.timestamp, fa lse) + ' '; | |
| 110 timestampElement.title = formatTimestamp(this._message.timestamp, true); | |
| 111 } | |
| 112 | |
| 113 // Build level icon. | |
| 114 var iconType = ''; | |
| 115 if (this._message.level === SDK.ConsoleMessage.MessageLevel.Warning) | |
| 116 iconType = 'smallicon-warning'; | |
| 117 else if (this._message.level === SDK.ConsoleMessage.MessageLevel.Error) | |
| 118 iconType = 'smallicon-error'; | |
| 119 else if (this._message.type === SDK.ConsoleMessage.MessageType.Command) | |
| 120 iconType = 'smallicon-user-command'; | |
| 121 else if (this._message.type === SDK.ConsoleMessage.MessageType.Result) | |
| 122 iconType = 'smallicon-command-result'; | |
| 123 this._decorationWrapper.appendChild(UI.Icon.create(iconType, 'message-level- icon')); | |
| 124 | |
| 125 // Timestamps may affect repeat counter. | |
| 126 this._updateRepeatCountElement(); | |
| 127 | |
| 128 /** | |
| 129 * @param {number} timestamp | |
| 130 * @param {boolean} full | |
| 131 * @return {string} | |
| 132 */ | |
| 133 function formatTimestamp(timestamp, full) { | |
| 134 var date = new Date(timestamp); | |
| 135 var yymmdd = date.getFullYear() + '-' + leadZero(date.getMonth() + 1, 2) + '-' + leadZero(date.getDate(), 2); | |
| 136 var hhmmssfff = leadZero(date.getHours(), 2) + ':' + leadZero(date.getMinu tes(), 2) + ':' + | |
| 137 leadZero(date.getSeconds(), 2) + '.' + leadZero(date.getMilliseconds() , 3); | |
| 138 return full ? (yymmdd + ' ' + hhmmssfff) : hhmmssfff; | |
| 139 | |
| 140 /** | |
| 141 * @param {number} value | |
| 142 * @param {number} length | |
| 143 * @return {string} | |
| 144 */ | |
| 145 function leadZero(value, length) { | |
| 146 var valueString = value.toString(); | |
| 147 var padding = length - valueString.length; | |
| 148 return padding <= 0 ? valueString : '0'.repeat(padding) + valueString; | |
| 149 } | |
| 150 } | |
| 151 } | |
| 152 | |
| 94 /** | 153 /** |
| 95 * @return {number} | 154 * @return {number} |
| 96 */ | 155 */ |
| 97 fastHeight() { | 156 fastHeight() { |
| 98 if (this._cachedHeight) | 157 if (this._cachedHeight) |
| 99 return this._cachedHeight; | 158 return this._cachedHeight; |
| 100 // This value reflects the 18px min-height of .console-message, plus the | 159 // This value reflects the 18px min-height of .console-message, plus the |
| 101 // 1px border of .console-message-wrapper. Keep in sync with consoleView.css . | 160 // 1px border of .console-message-wrapper. Keep in sync with consoleView.css . |
| 102 const defaultConsoleRowHeight = 19; | 161 const defaultConsoleRowHeight = 19; |
| 103 if (this._message.type === SDK.ConsoleMessage.MessageType.Table) { | 162 if (this._message.type === SDK.ConsoleMessage.MessageType.Table) { |
| (...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 823 | 882 |
| 824 /** | 883 /** |
| 825 * @param {string} filter | 884 * @param {string} filter |
| 826 * @return {boolean} | 885 * @return {boolean} |
| 827 */ | 886 */ |
| 828 matchesFilterText(filter) { | 887 matchesFilterText(filter) { |
| 829 var text = this.contentElement().deepTextContent(); | 888 var text = this.contentElement().deepTextContent(); |
| 830 return text.toLowerCase().includes(filter.toLowerCase()); | 889 return text.toLowerCase().includes(filter.toLowerCase()); |
| 831 } | 890 } |
| 832 | 891 |
| 833 updateTimestamp() { | |
| 834 if (!this._contentElement) | |
| 835 return; | |
| 836 | |
| 837 if (Common.moduleSetting('consoleTimestampsEnabled').get()) { | |
| 838 if (!this._timestampElement) | |
| 839 this._timestampElement = createElementWithClass('span', 'console-timesta mp'); | |
| 840 this._timestampElement.textContent = formatTimestamp(this._message.timesta mp, false) + ' '; | |
| 841 this._timestampElement.title = formatTimestamp(this._message.timestamp, tr ue); | |
| 842 this._contentElement.insertBefore(this._timestampElement, this._contentEle ment.firstChild); | |
| 843 } else if (this._timestampElement) { | |
| 844 this._timestampElement.remove(); | |
| 845 delete this._timestampElement; | |
| 846 } | |
| 847 | |
| 848 /** | |
| 849 * @param {number} timestamp | |
| 850 * @param {boolean} full | |
| 851 * @return {string} | |
| 852 */ | |
| 853 function formatTimestamp(timestamp, full) { | |
| 854 var date = new Date(timestamp); | |
| 855 var yymmdd = date.getFullYear() + '-' + leadZero(date.getMonth() + 1, 2) + '-' + leadZero(date.getDate(), 2); | |
| 856 var hhmmssfff = leadZero(date.getHours(), 2) + ':' + leadZero(date.getMinu tes(), 2) + ':' + | |
| 857 leadZero(date.getSeconds(), 2) + '.' + leadZero(date.getMilliseconds() , 3); | |
| 858 return full ? (yymmdd + ' ' + hhmmssfff) : hhmmssfff; | |
| 859 | |
| 860 /** | |
| 861 * @param {number} value | |
| 862 * @param {number} length | |
| 863 * @return {string} | |
| 864 */ | |
| 865 function leadZero(value, length) { | |
| 866 var valueString = value.toString(); | |
| 867 var padding = length - valueString.length; | |
| 868 return padding <= 0 ? valueString : '0'.repeat(padding) + valueString; | |
| 869 } | |
| 870 } | |
| 871 } | |
| 872 | |
| 873 /** | 892 /** |
| 874 * @return {number} | 893 * @return {number} |
| 875 */ | 894 */ |
| 876 nestingLevel() { | 895 nestingLevel() { |
| 877 return this._nestingLevel; | 896 return this._nestingLevel; |
| 878 } | 897 } |
| 879 | 898 |
| 880 resetCloseGroupDecorationCount() { | 899 resetCloseGroupDecorationCount() { |
| 881 if (!this._closeGroupDecorationCount) | 900 if (!this._closeGroupDecorationCount) |
| 882 return; | 901 return; |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 899 } | 918 } |
| 900 | 919 |
| 901 /** | 920 /** |
| 902 * @return {!Element} | 921 * @return {!Element} |
| 903 */ | 922 */ |
| 904 contentElement() { | 923 contentElement() { |
| 905 if (this._contentElement) | 924 if (this._contentElement) |
| 906 return this._contentElement; | 925 return this._contentElement; |
| 907 | 926 |
| 908 var contentElement = createElementWithClass('div', 'console-message'); | 927 var contentElement = createElementWithClass('div', 'console-message'); |
| 909 if (this._messageLevelIcon) | |
| 910 contentElement.appendChild(this._messageLevelIcon); | |
| 911 this._contentElement = contentElement; | 928 this._contentElement = contentElement; |
| 912 if (this._message.type === SDK.ConsoleMessage.MessageType.StartGroup || | 929 if (this._message.type === SDK.ConsoleMessage.MessageType.StartGroup || |
| 913 this._message.type === SDK.ConsoleMessage.MessageType.StartGroupCollapse d) | 930 this._message.type === SDK.ConsoleMessage.MessageType.StartGroupCollapse d) |
| 914 contentElement.classList.add('console-group-title'); | 931 contentElement.classList.add('console-group-title'); |
| 932 else if (this._message.type === SDK.ConsoleMessage.MessageType.Result) | |
| 933 contentElement.classList.add('console-user-command-result'); | |
| 915 | 934 |
| 916 var formattedMessage; | 935 var formattedMessage; |
| 917 var consoleMessage = this._message; | 936 var consoleMessage = this._message; |
| 918 var target = consoleMessage.target(); | 937 var target = consoleMessage.target(); |
| 919 var shouldIncludeTrace = | 938 var shouldIncludeTrace = |
| 920 !!consoleMessage.stackTrace && (consoleMessage.source === SDK.ConsoleMes sage.MessageSource.Network || | 939 !!consoleMessage.stackTrace && (consoleMessage.source === SDK.ConsoleMes sage.MessageSource.Network || |
| 921 consoleMessage.level === SDK.ConsoleMess age.MessageLevel.Error || | 940 consoleMessage.level === SDK.ConsoleMess age.MessageLevel.Error || |
| 922 consoleMessage.type === SDK.ConsoleMessa ge.MessageType.Trace || | 941 consoleMessage.type === SDK.ConsoleMessa ge.MessageType.Trace || |
| 923 consoleMessage.level === SDK.ConsoleMess age.MessageLevel.Warning); | 942 consoleMessage.level === SDK.ConsoleMess age.MessageLevel.Warning); |
| 924 if (target && shouldIncludeTrace) | 943 if (target && shouldIncludeTrace) |
| 925 formattedMessage = this._buildMessageWithStackTrace(consoleMessage, target , this._linkifier); | 944 formattedMessage = this._buildMessageWithStackTrace(consoleMessage, target , this._linkifier); |
| 926 else if (this._message.type === SDK.ConsoleMessage.MessageType.Table) | 945 else if (this._message.type === SDK.ConsoleMessage.MessageType.Table) |
| 927 formattedMessage = this._buildTableMessage(this._message); | 946 formattedMessage = this._buildTableMessage(this._message); |
| 928 else | 947 else |
| 929 formattedMessage = this._buildMessage(consoleMessage); | 948 formattedMessage = this._buildMessage(consoleMessage); |
| 930 contentElement.appendChild(formattedMessage); | 949 contentElement.appendChild(formattedMessage); |
| 931 | 950 |
| 932 this.updateTimestamp(); | |
| 933 return this._contentElement; | 951 return this._contentElement; |
| 934 } | 952 } |
| 935 | 953 |
| 936 /** | 954 /** |
| 937 * @return {!Element} | 955 * @return {!Element} |
| 938 */ | 956 */ |
| 939 toMessageElement() { | 957 toMessageElement() { |
| 940 if (this._element) | 958 if (this._element) |
| 941 return this._element; | 959 return this._element; |
| 942 | 960 |
| 943 this._element = createElement('div'); | 961 this._element = createElement('div'); |
| 944 this.updateMessageElement(); | 962 this.updateMessageElement(); |
| 945 return this._element; | 963 return this._element; |
| 946 } | 964 } |
| 947 | 965 |
| 948 updateMessageElement() { | 966 updateMessageElement() { |
| 949 if (!this._element) | 967 if (!this._element) |
| 950 return; | 968 return; |
| 951 | 969 |
| 952 this._element.className = 'console-message-wrapper'; | 970 this._element.className = 'console-message-wrapper'; |
| 953 this._element.removeChildren(); | 971 this._element.removeChildren(); |
| 954 | |
| 955 this._nestingLevelMarkers = []; | |
| 956 for (var i = 0; i < this._nestingLevel; ++i) | |
| 957 this._nestingLevelMarkers.push(this._element.createChild('div', 'nesting-l evel-marker')); | |
| 958 this._updateCloseGroupDecorations(); | |
| 959 this._element.message = this; | 972 this._element.message = this; |
| 960 | 973 |
| 961 switch (this._message.level) { | 974 switch (this._message.level) { |
| 962 case SDK.ConsoleMessage.MessageLevel.Verbose: | 975 case SDK.ConsoleMessage.MessageLevel.Verbose: |
| 963 this._element.classList.add('console-verbose-level'); | 976 this._element.classList.add('console-verbose-level'); |
| 964 this._updateMessageLevelIcon(''); | |
| 965 break; | 977 break; |
| 966 case SDK.ConsoleMessage.MessageLevel.Info: | 978 case SDK.ConsoleMessage.MessageLevel.Info: |
| 967 this._element.classList.add('console-info-level'); | 979 this._element.classList.add('console-info-level'); |
| 968 break; | 980 break; |
| 969 case SDK.ConsoleMessage.MessageLevel.Warning: | 981 case SDK.ConsoleMessage.MessageLevel.Warning: |
| 970 this._element.classList.add('console-warning-level'); | 982 this._element.classList.add('console-warning-level'); |
| 971 this._updateMessageLevelIcon('smallicon-warning'); | |
| 972 break; | 983 break; |
| 973 case SDK.ConsoleMessage.MessageLevel.Error: | 984 case SDK.ConsoleMessage.MessageLevel.Error: |
| 974 this._element.classList.add('console-error-level'); | 985 this._element.classList.add('console-error-level'); |
| 975 this._updateMessageLevelIcon('smallicon-error'); | |
| 976 break; | 986 break; |
| 977 } | 987 } |
| 978 | 988 |
| 979 // Render verbose and info deprecations, interventions and violations with w arning background. | 989 // Render verbose and info deprecations, interventions and violations with w arning background. |
| 980 if (this._message.level === SDK.ConsoleMessage.MessageLevel.Verbose || | 990 if (this._message.level === SDK.ConsoleMessage.MessageLevel.Verbose || |
| 981 this._message.level === SDK.ConsoleMessage.MessageLevel.Info) { | 991 this._message.level === SDK.ConsoleMessage.MessageLevel.Info) { |
| 982 switch (this._message.source) { | 992 switch (this._message.source) { |
| 983 case SDK.ConsoleMessage.MessageSource.Violation: | 993 case SDK.ConsoleMessage.MessageSource.Violation: |
| 984 case SDK.ConsoleMessage.MessageSource.Deprecation: | 994 case SDK.ConsoleMessage.MessageSource.Deprecation: |
| 985 case SDK.ConsoleMessage.MessageSource.Intervention: | 995 case SDK.ConsoleMessage.MessageSource.Intervention: |
| 986 this._element.classList.add('console-warning-level'); | 996 this._element.classList.add('console-warning-level'); |
| 987 break; | 997 break; |
| 988 } | 998 } |
| 989 } | 999 } |
| 990 | 1000 |
| 1001 this._decorationWrapper = this._element.createChild('span', 'message-decorat ion-wrapper'); | |
| 1002 this._nestingLevelMarkers = []; | |
| 1003 for (var i = 0; i < this._nestingLevel; ++i) | |
| 1004 this._nestingLevelMarkers.push(this._element.createChild('div', 'message-n esting-level-marker')); | |
| 1005 this._updateCloseGroupDecorations(); | |
| 1006 this._repeatCountElement = this._element.createChild('label', 'message-repea t-count', 'dt-small-bubble'); | |
| 1007 switch (this._message.level) { | |
| 1008 case SDK.ConsoleMessage.MessageLevel.Warning: | |
|
pfeldman
2017/02/22 00:10:45
How come it is in a different location from updati
| |
| 1009 this._repeatCountElement.type = 'warning'; | |
| 1010 break; | |
| 1011 case SDK.ConsoleMessage.MessageLevel.Error: | |
| 1012 this._repeatCountElement.type = 'error'; | |
| 1013 break; | |
| 1014 case SDK.ConsoleMessage.MessageLevel.Verbose: | |
| 1015 this._repeatCountElement.type = 'verbose'; | |
| 1016 break; | |
| 1017 default: | |
| 1018 this._repeatCountElement.type = 'info'; | |
| 1019 } | |
| 1020 this._rebuildDecorations(); | |
| 991 this._element.appendChild(this.contentElement()); | 1021 this._element.appendChild(this.contentElement()); |
| 992 if (this._repeatCount > 1) | |
| 993 this._showRepeatCountElement(); | |
| 994 } | 1022 } |
| 995 | 1023 |
| 996 /** | 1024 /** |
| 997 * @param {string} iconType | |
| 998 */ | |
| 999 _updateMessageLevelIcon(iconType) { | |
| 1000 if (!iconType && !this._messageLevelIcon) | |
| 1001 return; | |
| 1002 if (iconType && !this._messageLevelIcon) { | |
| 1003 this._messageLevelIcon = UI.Icon.create('', 'message-level-icon'); | |
| 1004 if (this._contentElement) | |
| 1005 this._contentElement.insertBefore(this._messageLevelIcon, this._contentE lement.firstChild); | |
| 1006 } | |
| 1007 this._messageLevelIcon.setIconType(iconType); | |
| 1008 } | |
| 1009 | |
| 1010 /** | |
| 1011 * @return {number} | 1025 * @return {number} |
| 1012 */ | 1026 */ |
| 1013 repeatCount() { | 1027 repeatCount() { |
| 1014 return this._repeatCount || 1; | 1028 return this._repeatCount || 1; |
| 1015 } | 1029 } |
| 1016 | 1030 |
| 1017 resetIncrementRepeatCount() { | 1031 resetIncrementRepeatCount() { |
| 1018 this._repeatCount = 1; | 1032 this._repeatCount = 1; |
| 1019 if (!this._repeatCountElement) | 1033 this._updateRepeatCountElement(); |
| 1020 return; | |
| 1021 | |
| 1022 this._repeatCountElement.remove(); | |
| 1023 if (this._contentElement) | |
| 1024 this._contentElement.classList.remove('repeated-message'); | |
| 1025 delete this._repeatCountElement; | |
| 1026 } | 1034 } |
| 1027 | 1035 |
| 1028 incrementRepeatCount() { | 1036 incrementRepeatCount() { |
| 1029 this._repeatCount++; | 1037 this._repeatCount++; |
| 1030 this._showRepeatCountElement(); | 1038 this._updateRepeatCountElement(); |
| 1031 } | 1039 } |
| 1032 | 1040 |
| 1033 _showRepeatCountElement() { | 1041 _updateRepeatCountElement() { |
| 1034 if (!this._element) | 1042 if (!this._repeatCountElement) |
| 1035 return; | 1043 return; |
| 1036 | 1044 var show = this._repeatCount > 1; |
| 1037 if (!this._repeatCountElement) { | 1045 this._repeatCountElement.textContent = show ? this._repeatCount : ''; |
| 1038 this._repeatCountElement = createElementWithClass('label', 'console-messag e-repeat-count', 'dt-small-bubble'); | 1046 this._repeatCountElement.classList.toggle('hidden', !show); |
| 1039 switch (this._message.level) { | 1047 if (this._element) |
| 1040 case SDK.ConsoleMessage.MessageLevel.Warning: | 1048 this._element.classList.toggle('repeated-message', show); |
| 1041 this._repeatCountElement.type = 'warning'; | |
| 1042 break; | |
| 1043 case SDK.ConsoleMessage.MessageLevel.Error: | |
| 1044 this._repeatCountElement.type = 'error'; | |
| 1045 break; | |
| 1046 case SDK.ConsoleMessage.MessageLevel.Verbose: | |
| 1047 this._repeatCountElement.type = 'verbose'; | |
| 1048 break; | |
| 1049 default: | |
| 1050 this._repeatCountElement.type = 'info'; | |
| 1051 } | |
| 1052 this._element.insertBefore(this._repeatCountElement, this._contentElement) ; | |
| 1053 this._contentElement.classList.add('repeated-message'); | |
| 1054 } | |
| 1055 this._repeatCountElement.textContent = this._repeatCount; | |
| 1056 } | 1049 } |
| 1057 | 1050 |
| 1058 get text() { | 1051 get text() { |
| 1059 return this._message.messageText; | 1052 return this._message.messageText; |
| 1060 } | 1053 } |
| 1061 | 1054 |
| 1062 /** | 1055 /** |
| 1063 * @return {string} | 1056 * @return {string} |
| 1064 */ | 1057 */ |
| 1065 toExportString() { | 1058 toExportString() { |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1247 toMessageElement() { | 1240 toMessageElement() { |
| 1248 if (!this._element) { | 1241 if (!this._element) { |
| 1249 super.toMessageElement(); | 1242 super.toMessageElement(); |
| 1250 this._expandGroupIcon = UI.Icon.create('', 'expand-group-icon'); | 1243 this._expandGroupIcon = UI.Icon.create('', 'expand-group-icon'); |
| 1251 this._contentElement.insertBefore(this._expandGroupIcon, this._contentElem ent.firstChild); | 1244 this._contentElement.insertBefore(this._expandGroupIcon, this._contentElem ent.firstChild); |
| 1252 this.setCollapsed(this._collapsed); | 1245 this.setCollapsed(this._collapsed); |
| 1253 } | 1246 } |
| 1254 return this._element; | 1247 return this._element; |
| 1255 } | 1248 } |
| 1256 }; | 1249 }; |
| OLD | NEW |