Console.ConsoleContextSelector=class{constructor(){this._items=new UI.ListModel();this._dropDown=new UI.SoftDropDown(this._items,this);this._dropDown.setRowHeight(36);this._toolbarItem=new UI.ToolbarItem(this._dropDown.element);this._toolbarItem.setEnabled(false);this._items.addEventListener(UI.ListModel.Events.ItemsReplaced,()=>this._toolbarItem.setEnabled(!!this._items.length));this._badgePoolForExecutionContext=new Map();this._toolbarItem.element.classList.add('toolbar-has-dropdown');SDK.targetManager.addModelListener(SDK.RuntimeModel,SDK.RuntimeModel.Events.ExecutionContextCreated,this._onExecutionContextCreated,this);SDK.targetManager.addModelListener(SDK.RuntimeModel,SDK.RuntimeModel.Events.ExecutionContextChanged,this._onExecutionContextChanged,this);SDK.targetManager.addModelListener(SDK.RuntimeModel,SDK.RuntimeModel.Events.ExecutionContextDestroyed,this._onExecutionContextDestroyed,this);SDK.targetManager.addModelListener(SDK.ResourceTreeModel,SDK.ResourceTreeModel.Events.FrameNavigated,this._frameNavigated,this);UI.context.addFlavorChangeListener(SDK.ExecutionContext,this._executionContextChangedExternally,this);UI.context.addFlavorChangeListener(SDK.DebuggerModel.CallFrame,this._callFrameSelectedInUI,this);SDK.targetManager.observeModels(SDK.RuntimeModel,this);SDK.targetManager.addModelListener(SDK.DebuggerModel,SDK.DebuggerModel.Events.CallFrameSelected,this._callFrameSelectedInModel,this);} toolbarItem(){return this._toolbarItem;} highlightedItemChanged(from,to,fromElement,toElement){SDK.OverlayModel.hideDOMNodeHighlight();if(to&&to.frameId){const overlayModel=to.target().model(SDK.OverlayModel);if(overlayModel) overlayModel.highlightFrame(to.frameId);} if(fromElement) fromElement.classList.remove('highlighted');if(toElement) toElement.classList.add('highlighted');} titleFor(executionContext){const target=executionContext.target();let label=executionContext.label()?target.decorateLabel(executionContext.label()):'';if(executionContext.frameId){const resourceTreeModel=target.model(SDK.ResourceTreeModel);const frame=resourceTreeModel&&resourceTreeModel.frameForId(executionContext.frameId);if(frame) label=label||frame.displayName();} label=label||executionContext.origin;return label;} _depthFor(executionContext){let target=executionContext.target();let depth=0;if(!executionContext.isDefault) depth++;if(executionContext.frameId){const resourceTreeModel=target.model(SDK.ResourceTreeModel);let frame=resourceTreeModel&&resourceTreeModel.frameForId(executionContext.frameId);while(frame&&frame.parentFrame){depth++;frame=frame.parentFrame;}} let targetDepth=0;while(target.parentTarget()){if(target.parentTarget().hasJSCapability()){targetDepth++;}else{targetDepth=0;break;} target=target.parentTarget();} depth+=targetDepth;return depth;} _badgeFor(executionContext){if(!executionContext.frameId||!executionContext.isDefault) return null;const resourceTreeModel=executionContext.target().model(SDK.ResourceTreeModel);const frame=resourceTreeModel&&resourceTreeModel.frameForId(executionContext.frameId);if(!frame) return null;const badgePool=new ProductRegistry.BadgePool();this._badgePoolForExecutionContext.set(executionContext,badgePool);return badgePool.badgeForFrame(frame);} _disposeExecutionContextBadge(executionContext){const badgePool=this._badgePoolForExecutionContext.get(executionContext);if(!badgePool) return;badgePool.reset();this._badgePoolForExecutionContext.delete(executionContext);} _executionContextCreated(executionContext){if(!executionContext.target().hasJSCapability()) return;this._items.insertWithComparator(executionContext,executionContext.runtimeModel.executionContextComparator());if(executionContext===UI.context.flavor(SDK.ExecutionContext)) this._dropDown.selectItem(executionContext);} _onExecutionContextCreated(event){const executionContext=(event.data);this._executionContextCreated(executionContext);} _onExecutionContextChanged(event){const executionContext=(event.data);if(this._items.indexOf(executionContext)===-1) return;this._executionContextDestroyed(executionContext);this._executionContextCreated(executionContext);} _executionContextDestroyed(executionContext){const index=this._items.indexOf(executionContext);if(index===-1) return;this._disposeExecutionContextBadge(executionContext);this._items.remove(index);} _onExecutionContextDestroyed(event){const executionContext=(event.data);this._executionContextDestroyed(executionContext);} _executionContextChangedExternally(event){const executionContext=(event.data);this._dropDown.selectItem(executionContext);} _isTopContext(executionContext){if(!executionContext||!executionContext.isDefault) return false;const resourceTreeModel=executionContext.target().model(SDK.ResourceTreeModel);const frame=executionContext.frameId&&resourceTreeModel&&resourceTreeModel.frameForId(executionContext.frameId);if(!frame) return false;return frame.isTopFrame();} _hasTopContext(){return this._items.some(executionContext=>this._isTopContext(executionContext));} modelAdded(runtimeModel){runtimeModel.executionContexts().forEach(this._executionContextCreated,this);} modelRemoved(runtimeModel){for(let i=0;i!!callFrame.url);if(callFrame) return new Common.ParsedURL(callFrame.url).domain();return Common.UIString('IFrame');} return'';} isItemSelectable(item){const callFrame=item.debuggerModel.selectedCallFrame();const callFrameContext=callFrame&&callFrame.script.executionContext();return!callFrameContext||item===callFrameContext;} itemSelected(item){this._toolbarItem.element.classList.toggle('warning',!this._isTopContext(item)&&this._hasTopContext());UI.context.setFlavor(SDK.ExecutionContext,item);} _callFrameSelectedInUI(){const callFrame=UI.context.flavor(SDK.DebuggerModel.CallFrame);const callFrameContext=callFrame&&callFrame.script.executionContext();if(callFrameContext) UI.context.setFlavor(SDK.ExecutionContext,callFrameContext);} _callFrameSelectedInModel(event){const debuggerModel=(event.data);for(const executionContext of this._items){if(executionContext.debuggerModel===debuggerModel){this._disposeExecutionContextBadge(executionContext);this._dropDown.refreshItem(executionContext);}}} _frameNavigated(event){const frame=(event.data);const runtimeModel=frame.resourceTreeModel().target().model(SDK.RuntimeModel);if(!runtimeModel) return;for(const executionContext of runtimeModel.executionContexts()){if(frame.id===executionContext.frameId){this._disposeExecutionContextBadge(executionContext);this._dropDown.refreshItem(executionContext);}}}};;Console.ConsoleFilter=class{constructor(name,parsedFilters,executionContext,levelsMask){this.name=name;this.parsedFilters=parsedFilters;this.executionContext=executionContext;this.levelsMask=levelsMask||Console.ConsoleFilter.defaultLevelsFilterValue();} static allLevelsFilterValue(){const result={};for(const name of Object.values(SDK.ConsoleMessage.MessageLevel)) result[name]=true;return result;} static defaultLevelsFilterValue(){const result=Console.ConsoleFilter.allLevelsFilterValue();result[SDK.ConsoleMessage.MessageLevel.Verbose]=false;return result;} static singleLevelMask(level){const result={};result[level]=true;return result;} clone(){const parsedFilters=this.parsedFilters.map(TextUtils.FilterParser.cloneFilter);const levelsMask=Object.assign({},this.levelsMask);return new Console.ConsoleFilter(this.name,parsedFilters,this.executionContext,levelsMask);} shouldBeVisible(viewMessage){const message=viewMessage.consoleMessage();if(this.executionContext&&(this.executionContext.runtimeModel!==message.runtimeModel()||this.executionContext.id!==message.executionContextId)) return false;if(message.type===SDK.ConsoleMessage.MessageType.Command||message.type===SDK.ConsoleMessage.MessageType.Result||message.isGroupMessage()) return true;if(message.level&&!this.levelsMask[(message.level)]) return false;for(const filter of this.parsedFilters){if(!filter.key){if(filter.regex&&viewMessage.matchesFilterRegex(filter.regex)===filter.negative) return false;if(filter.text&&viewMessage.matchesFilterText(filter.text)===filter.negative) return false;}else{switch(filter.key){case Console.ConsoleFilter.FilterType.Context:if(!passesFilter(filter,message.context,false)) return false;break;case Console.ConsoleFilter.FilterType.Source:const sourceNameForMessage=message.source?SDK.ConsoleMessage.MessageSourceDisplayName.get((message.source)):message.source;if(!passesFilter(filter,sourceNameForMessage,true)) return false;break;case Console.ConsoleFilter.FilterType.Url:if(!passesFilter(filter,message.url,false)) return false;break;}}} return true;function passesFilter(filter,value,exactMatch){if(!filter.text) return!!value===filter.negative;if(!value) return!filter.text===!filter.negative;const filterText=(filter.text).toLowerCase();const lowerCaseValue=value.toLowerCase();if(exactMatch&&(lowerCaseValue===filterText)===filter.negative) return false;if(!exactMatch&&lowerCaseValue.includes(filterText)===filter.negative) return false;return true;}}};Console.ConsoleFilter.FilterType={Context:'context',Source:'source',Url:'url'};;Console.ConsoleSidebar=class extends UI.VBox{constructor(badgePool){super(true);this.setMinimumSize(125,0);this._tree=new UI.TreeOutlineInShadow();this._tree.registerRequiredCSS('console/consoleSidebar.css');this._tree.addEventListener(UI.TreeOutline.Events.ElementSelected,this._selectionChanged.bind(this));this.contentElement.appendChild(this._tree.element);this._selectedTreeElement=null;this._treeElements=[];const selectedFilterSetting=Common.settings.createSetting('console.sidebarSelectedFilter',null);const Levels=SDK.ConsoleMessage.MessageLevel;const consoleAPIParsedFilters=[{key:Console.ConsoleFilter.FilterType.Source,text:SDK.ConsoleMessage.MessageSource.ConsoleAPI,negative:false}];this._appendGroup(Console.ConsoleSidebar._groupSingularName.All,[],Console.ConsoleFilter.allLevelsFilterValue(),UI.Icon.create('mediumicon-list'),badgePool,selectedFilterSetting);this._appendGroup(Console.ConsoleSidebar._groupSingularName.ConsoleAPI,consoleAPIParsedFilters,Console.ConsoleFilter.allLevelsFilterValue(),UI.Icon.create('mediumicon-account-circle'),badgePool,selectedFilterSetting);this._appendGroup(Console.ConsoleSidebar._groupSingularName.Error,[],Console.ConsoleFilter.singleLevelMask(Levels.Error),UI.Icon.create('mediumicon-error-circle'),badgePool,selectedFilterSetting);this._appendGroup(Console.ConsoleSidebar._groupSingularName.Warning,[],Console.ConsoleFilter.singleLevelMask(Levels.Warning),UI.Icon.create('mediumicon-warning-triangle'),badgePool,selectedFilterSetting);this._appendGroup(Console.ConsoleSidebar._groupSingularName.Info,[],Console.ConsoleFilter.singleLevelMask(Levels.Info),UI.Icon.create('mediumicon-info-circle'),badgePool,selectedFilterSetting);this._appendGroup(Console.ConsoleSidebar._groupSingularName.Verbose,[],Console.ConsoleFilter.singleLevelMask(Levels.Verbose),UI.Icon.create('mediumicon-bug'),badgePool,selectedFilterSetting);const selectedTreeElementName=selectedFilterSetting.get();const defaultTreeElement=this._treeElements.find(x=>x.name()===selectedTreeElementName)||this._treeElements[0];defaultTreeElement.select();} _appendGroup(name,parsedFilters,levelsMask,icon,badgePool,selectedFilterSetting){const filter=new Console.ConsoleFilter(name,parsedFilters,null,levelsMask);const treeElement=new Console.ConsoleSidebar.FilterTreeElement(filter,icon,badgePool,selectedFilterSetting);this._tree.appendChild(treeElement);this._treeElements.push(treeElement);} clear(){for(const treeElement of this._treeElements) treeElement.clear();} onMessageAdded(viewMessage){for(const treeElement of this._treeElements) treeElement.onMessageAdded(viewMessage);} shouldBeVisible(viewMessage){if(!this._selectedTreeElement) return true;return this._selectedTreeElement._filter.shouldBeVisible(viewMessage);} _selectionChanged(event){this._selectedTreeElement=(event.data);this.dispatchEventToListeners(Console.ConsoleSidebar.Events.FilterSelected);}};Console.ConsoleSidebar.Events={FilterSelected:Symbol('FilterSelected')};Console.ConsoleSidebar.URLGroupTreeElement=class extends UI.TreeElement{constructor(filter,badge){super(filter.name);this._filter=filter;this._countElement=this.listItemElement.createChild('span','count');const leadingIcons=[UI.Icon.create('largeicon-navigator-file')];if(badge) leadingIcons.push(badge);this.setLeadingIcons(leadingIcons);this._messageCount=0;} incrementAndUpdateCounter(){this._messageCount++;this._countElement.textContent=this._messageCount;}};Console.ConsoleSidebar.FilterTreeElement=class extends UI.TreeElement{constructor(filter,icon,badgePool,selectedFilterSetting){super(filter.name,true);this._filter=filter;this._badgePool=badgePool;this._selectedFilterSetting=selectedFilterSetting;this._urlTreeElements=new Map();this.setLeadingIcons([icon]);this._messageCount=0;this._updateCounter();} clear(){this._urlTreeElements.clear();this.removeChildren();this._messageCount=0;this._updateCounter();} name(){return this._filter.name;} onselect(selectedByUser){this._selectedFilterSetting.set(this._filter.name);return super.onselect(selectedByUser);} _updateCounter(){const prefix=this._messageCount?this._messageCount:Common.UIString('No');const pluralizedName=this._messageCount===1?this._filter.name:Console.ConsoleSidebar._groupPluralNameMap.get(this._filter.name);this.title=`${prefix} ${pluralizedName}`;} onMessageAdded(viewMessage){const message=viewMessage.consoleMessage();const shouldIncrementCounter=message.type!==SDK.ConsoleMessage.MessageType.Command&&message.type!==SDK.ConsoleMessage.MessageType.Result&&!message.isGroupMessage();if(!this._filter.shouldBeVisible(viewMessage)||!shouldIncrementCounter) return;const child=this._childElement(message.url);child.incrementAndUpdateCounter();this._messageCount++;this._updateCounter();} _childElement(url){const urlValue=url||null;let child=this._urlTreeElements.get(urlValue);if(child) return child;const filter=this._filter.clone();const parsedURL=urlValue?urlValue.asParsedURL():null;if(urlValue) filter.name=parsedURL?parsedURL.displayName:urlValue;else filter.name=Common.UIString('');filter.parsedFilters.push({key:Console.ConsoleFilter.FilterType.Url,text:urlValue,negative:false});const badge=parsedURL?this._badgePool.badgeForURL(parsedURL):null;child=new Console.ConsoleSidebar.URLGroupTreeElement(filter,badge);if(urlValue) child.tooltip=urlValue;this._urlTreeElements.set(urlValue,child);this.appendChild(child);return child;}};Console.ConsoleSidebar._groupSingularName={ConsoleAPI:Common.UIString('user message'),All:Common.UIString('message'),Error:Common.UIString('error'),Warning:Common.UIString('warning'),Info:Common.UIString('info'),Verbose:Common.UIString('verbose')};Console.ConsoleSidebar._groupPluralNameMap=new Map([[Console.ConsoleSidebar._groupSingularName.ConsoleAPI,Common.UIString('user messages')],[Console.ConsoleSidebar._groupSingularName.All,Common.UIString('messages')],[Console.ConsoleSidebar._groupSingularName.Error,Common.UIString('errors')],[Console.ConsoleSidebar._groupSingularName.Warning,Common.UIString('warnings')],[Console.ConsoleSidebar._groupSingularName.Info,Common.UIString('info')],[Console.ConsoleSidebar._groupSingularName.Verbose,Common.UIString('verbose')]]);;Console.ConsoleViewport=class{constructor(provider){this.element=createElement('div');this.element.style.overflow='auto';this._topGapElement=this.element.createChild('div');this._topGapElement.style.height='0px';this._topGapElement.style.color='transparent';this._contentElement=this.element.createChild('div');this._bottomGapElement=this.element.createChild('div');this._bottomGapElement.style.height='0px';this._bottomGapElement.style.color='transparent';this._topGapElement.textContent='\uFEFF';this._bottomGapElement.textContent='\uFEFF';this._provider=provider;this.element.addEventListener('scroll',this._onScroll.bind(this),false);this.element.addEventListener('copy',this._onCopy.bind(this),false);this.element.addEventListener('dragstart',this._onDragStart.bind(this),false);this._firstActiveIndex=-1;this._lastActiveIndex=-1;this._renderedItems=[];this._anchorSelection=null;this._headSelection=null;this._itemCount=0;this._cumulativeHeights=new Int32Array(0);this._muteCopyHandler=false;this._observer=new MutationObserver(this.refresh.bind(this));this._observerConfig={childList:true,subtree:true};} stickToBottom(){return this._stickToBottom;} setStickToBottom(value){this._stickToBottom=value;if(this._stickToBottom) this._observer.observe(this._contentElement,this._observerConfig);else this._observer.disconnect();} copyWithStyles(){this._muteCopyHandler=true;this.element.ownerDocument.execCommand('copy');this._muteCopyHandler=false;} _onCopy(event){if(this._muteCopyHandler) return;const text=this._selectedText();if(!text) return;event.preventDefault();event.clipboardData.setData('text/plain',text);} _onDragStart(event){const text=this._selectedText();if(!text) return false;event.dataTransfer.clearData();event.dataTransfer.setData('text/plain',text);event.dataTransfer.effectAllowed='copy';return true;} contentElement(){return this._contentElement;} invalidate(){delete this._cachedProviderElements;this._itemCount=this._provider.itemCount();this._rebuildCumulativeHeights();this.refresh();} _providerElement(index){if(!this._cachedProviderElements) this._cachedProviderElements=new Array(this._itemCount);let element=this._cachedProviderElements[index];if(!element){element=this._provider.itemElement(index);this._cachedProviderElements[index]=element;} return element;} _rebuildCumulativeHeights(){const firstActiveIndex=this._firstActiveIndex;const lastActiveIndex=this._lastActiveIndex;let height=0;this._cumulativeHeights=new Int32Array(this._itemCount);for(let i=0;i1){this._rebuildCumulativeHeights();break;}}} _cachedItemHeight(index){return index===0?this._cumulativeHeights[0]:this._cumulativeHeights[index]-this._cumulativeHeights[index-1];} _isSelectionBackwards(selection){if(!selection||!selection.rangeCount) return false;const range=document.createRange();range.setStart(selection.anchorNode,selection.anchorOffset);range.setEnd(selection.focusNode,selection.focusOffset);return range.collapsed;} _createSelectionModel(itemIndex,node,offset){return{item:itemIndex,node:node,offset:offset};} _updateSelectionModel(selection){const range=selection&&selection.rangeCount?selection.getRangeAt(0):null;if(!range||selection.isCollapsed||!this.element.hasSelection()){this._headSelection=null;this._anchorSelection=null;return false;} let firstSelected=Number.MAX_VALUE;let lastSelected=-1;let hasVisibleSelection=false;for(let i=0;iendSelection.item?lastSelected:endSelection;}else if(!hasVisibleSelection){firstSelected=startSelection;lastSelected=endSelection;}else if(topOverlap){firstSelected=isBackward?this._headSelection:this._anchorSelection;}else if(bottomOverlap){lastSelected=isBackward?this._anchorSelection:this._headSelection;} if(isBackward){this._anchorSelection=lastSelected;this._headSelection=firstSelected;}else{this._anchorSelection=firstSelected;this._headSelection=lastSelected;} this._selectionIsBackward=isBackward;return true;} _restoreSelection(selection){let anchorElement=null;let anchorOffset;if(this._firstActiveIndex<=this._anchorSelection.item&&this._anchorSelection.item<=this._lastActiveIndex){anchorElement=this._anchorSelection.node;anchorOffset=this._anchorSelection.offset;}else{if(this._anchorSelection.itemthis._lastActiveIndex) anchorElement=this._bottomGapElement;anchorOffset=this._selectionIsBackward?1:0;} let headElement=null;let headOffset;if(this._firstActiveIndex<=this._headSelection.item&&this._headSelection.item<=this._lastActiveIndex){headElement=this._headSelection.node;headOffset=this._headSelection.offset;}else{if(this._headSelection.itemthis._lastActiveIndex) headElement=this._bottomGapElement;headOffset=this._selectionIsBackward?0:1;} selection.setBaseAndExtent(anchorElement,anchorOffset,headElement,headOffset);} refresh(){this._observer.disconnect();this._innerRefresh();if(this._stickToBottom) this._observer.observe(this._contentElement,this._observerConfig);} _innerRefresh(){if(!this._visibleHeight()) return;if(!this._itemCount){for(let i=0;i!itemsToRender.has(item));for(let i=0;i0&&untruncatedContainerLength!==selectionNode.textContent.length) offset=untruncatedContainerLength;return chars+offset;} _onScroll(event){this.refresh();} firstVisibleIndex(){if(!this._cumulativeHeights.length) return-1;this._rebuildCumulativeHeightsIfNeeded();return this._cumulativeHeights.lowerBound(this.element.scrollTop+1);} lastVisibleIndex(){if(!this._cumulativeHeights.length) return-1;this._rebuildCumulativeHeightsIfNeeded();const scrollBottom=this.element.scrollTop+this.element.clientHeight;const right=this._itemCount-1;return this._cumulativeHeights.lowerBound(scrollBottom,undefined,undefined,right);} renderedElementAt(index){if(indexthis._lastActiveIndex) return null;return this._renderedItems[index-this._firstActiveIndex].element();} scrollItemIntoView(index,makeLast){const firstVisibleIndex=this.firstVisibleIndex();const lastVisibleIndex=this.lastVisibleIndex();if(index>firstVisibleIndex&&index=lastVisibleIndex) this.forceScrollItemToBeLast(index);} forceScrollItemToBeFirst(index){console.assert(index>=0&&index0?this._cumulativeHeights[index-1]:0;if(this.element.isScrolledToBottom()) this.setStickToBottom(true);this.refresh();} forceScrollItemToBeLast(index){console.assert(index>=0&&indexname===rawValueColumnSymbol?Common.UIString('Value'):name);if(flatValues.length){this._dataGrid=DataGrid.SortableDataGrid.create(columnDisplayNames,flatValues);this._dataGrid.setStriped(true);const formattedResult=createElementWithClass('span','console-message-text');const tableElement=formattedResult.createChild('div','console-message-formatted-table');const dataGridContainer=tableElement.createChild('span');tableElement.appendChild(this._formatParameter(table,true,false));dataGridContainer.appendChild(this._dataGrid.element);formattedMessage.appendChild(formattedResult);this._dataGrid.renderInline();} return formattedMessage;} _buildMessage(){let messageElement;let messageText=this._message.messageText;if(this._message.source===SDK.ConsoleMessage.MessageSource.ConsoleAPI){switch(this._message.type){case SDK.ConsoleMessage.MessageType.Trace:messageElement=this._format(this._message.parameters||['console.trace']);break;case SDK.ConsoleMessage.MessageType.Clear:messageElement=createElementWithClass('span','console-info');if(Common.moduleSetting('preserveConsoleLog').get()) messageElement.textContent=Common.UIString('console.clear() was prevented due to \'Preserve log\'');else messageElement.textContent=Common.UIString('Console was cleared');messageElement.title=Common.UIString('Clear all messages with '+UI.shortcutRegistry.shortcutTitleForAction('console.clear'));break;case SDK.ConsoleMessage.MessageType.Assert:{let args=[Common.UIString('Assertion failed:')];if(this._message.parameters) args=args.concat(this._message.parameters);messageElement=this._format(args);break;} case SDK.ConsoleMessage.MessageType.Dir:{const obj=this._message.parameters?this._message.parameters[0]:undefined;const args=['%O',obj];messageElement=this._format(args);break;} case SDK.ConsoleMessage.MessageType.Profile:case SDK.ConsoleMessage.MessageType.ProfileEnd:messageElement=this._format([messageText]);break;default:{if(this._message.parameters&&this._message.parameters.length===1&&this._message.parameters[0].type==='string') messageElement=this._tryFormatAsError((this._message.parameters[0].value));const args=this._message.parameters||[messageText];messageElement=messageElement||this._format(args);}}}else{let rendered=false;this._completeElementForTestPromise=null;for(const extension of self.runtime.extensions(Common.Renderer,this._message)){if(extension.descriptor()['source']===this._message.source){messageElement=createElement('span');let callback;this._completeElementForTestPromise=new Promise(fulfill=>callback=fulfill);extension.instance().then(renderer=>{renderer.render(this._message).then(element=>messageElement.appendChild(element||this._format([messageText]))).then(callback);});rendered=true;break;}} if(!rendered){const messageInParameters=this._message.parameters&&messageText===(this._message.parameters[0]);if(this._message.source===SDK.ConsoleMessage.MessageSource.Violation) messageText=Common.UIString('[Violation] %s',messageText);else if(this._message.source===SDK.ConsoleMessage.MessageSource.Intervention) messageText=Common.UIString('[Intervention] %s',messageText);else if(this._message.source===SDK.ConsoleMessage.MessageSource.Deprecation) messageText=Common.UIString('[Deprecation] %s',messageText);const args=this._message.parameters||[messageText];if(messageInParameters) args[0]=messageText;messageElement=this._format(args);}} messageElement.classList.add('console-message-text');const formattedMessage=createElementWithClass('span','source-code');const anchorElement=this._buildMessageAnchor();if(anchorElement) formattedMessage.appendChild(anchorElement);const badgeElement=this._buildMessageBadge();if(badgeElement) formattedMessage.appendChild(badgeElement);formattedMessage.appendChild(messageElement);return formattedMessage;} _buildMessageAnchor(){let anchorElement=null;if(this._message.scriptId){anchorElement=this._linkifyScriptId(this._message.scriptId,this._message.url||'',this._message.line,this._message.column);}else if(this._message.stackTrace&&this._message.stackTrace.callFrames.length){anchorElement=this._linkifyStackTraceTopFrame(this._message.stackTrace);}else if(this._message.url&&this._message.url!=='undefined'){anchorElement=this._linkifyLocation(this._message.url,this._message.line,this._message.column);} if(anchorElement){const anchorWrapperElement=createElementWithClass('span','console-message-anchor');anchorWrapperElement.appendChild(anchorElement);anchorWrapperElement.createTextChild(' ');return anchorWrapperElement;} return null;} _buildMessageBadge(){const badgeElement=this._badgeElement();if(!badgeElement) return null;badgeElement.classList.add('console-message-badge');return badgeElement;} _badgeElement(){if(this._message._url) return this._badgePool.badgeForURL(new Common.ParsedURL(this._message._url));if(this._message.stackTrace){let stackTrace=this._message.stackTrace;while(stackTrace){for(const callFrame of this._message.stackTrace.callFrames){if(callFrame.url) return this._badgePool.badgeForURL(new Common.ParsedURL(callFrame.url));} stackTrace=stackTrace.parent;}} if(!this._message.executionContextId) return null;const runtimeModel=this._message.runtimeModel();if(!runtimeModel) return null;const executionContext=runtimeModel.executionContext(this._message.executionContextId);if(!executionContext||!executionContext.frameId) return null;const resourceTreeModel=executionContext.target().model(SDK.ResourceTreeModel);if(!resourceTreeModel) return null;const frame=resourceTreeModel.frameForId(executionContext.frameId);if(!frame||!frame.parentFrame) return null;return this._badgePool.badgeForFrame(frame);} _buildMessageWithStackTrace(){const toggleElement=createElementWithClass('div','console-message-stack-trace-toggle');const contentElement=toggleElement.createChild('div','console-message-stack-trace-wrapper');const messageElement=this._buildMessage();const icon=UI.Icon.create('smallicon-triangle-right','console-message-expand-icon');const clickableElement=contentElement.createChild('div');clickableElement.appendChild(icon);clickableElement.appendChild(messageElement);const stackTraceElement=contentElement.createChild('div');const stackTracePreview=Components.JSPresentationUtils.buildStackTracePreviewContents(this._message.runtimeModel().target(),this._linkifier,this._message.stackTrace);stackTraceElement.appendChild(stackTracePreview);stackTraceElement.classList.add('hidden');function expandStackTrace(expand){icon.setIconType(expand?'smallicon-triangle-down':'smallicon-triangle-right');stackTraceElement.classList.toggle('hidden',!expand);} function toggleStackTrace(event){if(event.target.hasSelection()) return;expandStackTrace(stackTraceElement.classList.contains('hidden'));event.consume();} clickableElement.addEventListener('click',toggleStackTrace,false);if(this._message.type===SDK.ConsoleMessage.MessageType.Trace) expandStackTrace(true);toggleElement._expandStackTraceForTest=expandStackTrace.bind(null,true);return toggleElement;} _linkifyLocation(url,lineNumber,columnNumber){if(!this._message.runtimeModel()) return null;return this._linkifier.linkifyScriptLocation(this._message.runtimeModel().target(),null,url,lineNumber,columnNumber);} _linkifyStackTraceTopFrame(stackTrace){if(!this._message.runtimeModel()) return null;return this._linkifier.linkifyStackTraceTopFrame(this._message.runtimeModel().target(),stackTrace);} _linkifyScriptId(scriptId,url,lineNumber,columnNumber){if(!this._message.runtimeModel()) return null;return this._linkifier.linkifyScriptLocation(this._message.runtimeModel().target(),scriptId,url,lineNumber,columnNumber);} _parameterToRemoteObject(parameter){if(parameter instanceof SDK.RemoteObject) return parameter;const runtimeModel=this._message.runtimeModel();if(!runtimeModel) return SDK.RemoteObject.fromLocalObject(parameter);if(typeof parameter==='object') return runtimeModel.createRemoteObject(parameter);return runtimeModel.createRemoteObjectFromPrimitiveValue(parameter);} _format(rawParameters){const formattedResult=createElement('span');if(!rawParameters.length) return formattedResult;let parameters=[];for(let i=0;iConsole.ConsoleViewMessage._MaxTokenizableStringLength) result.appendChild(Console.ConsoleViewMessage._createExpandableFragment(description));else result.createTextChild(description);if(obj.objectId) result.addEventListener('contextmenu',this._contextMenuEventFired.bind(this,obj),false);return result;} _formatParameterAsObject(obj,includePreview){const titleElement=createElementWithClass('span','console-object');if(includePreview&&obj.preview){titleElement.classList.add('console-object-preview');this._previewFormatter.appendObjectPreview(titleElement,obj.preview,false);}else if(obj.type==='function'){const functionElement=titleElement.createChild('span');ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(obj,functionElement,false);titleElement.classList.add('object-value-function');}else{titleElement.createTextChild(obj.description||'');} if(!obj.hasChildren||obj.customPreview()) return titleElement;const note=titleElement.createChild('span','object-state-note');note.classList.add('info-note');note.title=Common.UIString('Value below was evaluated just now.');const section=new ObjectUI.ObjectPropertiesSection(obj,titleElement,this._linkifier);section.element.classList.add('console-view-object-properties-section');section.enableContextMenu();return section.element;} _formatParameterAsFunction(func,includePreview){const result=createElement('span');SDK.RemoteFunction.objectAsFunction(func).targetFunction().then(formatTargetFunction.bind(this));return result;function formatTargetFunction(targetFunction){const functionElement=createElement('span');ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(targetFunction,functionElement,true,includePreview);result.appendChild(functionElement);if(targetFunction!==func){const note=result.createChild('span','object-info-state-note');note.title=Common.UIString('Function was resolved from bound function.');} result.addEventListener('contextmenu',this._contextMenuEventFired.bind(this,targetFunction),false);}} _contextMenuEventFired(obj,event){const contextMenu=new UI.ContextMenu(event);contextMenu.appendApplicableItems(obj);contextMenu.show();} _renderPropertyPreviewOrAccessor(object,propertyPath){const property=propertyPath.peekLast();if(property.type==='accessor') return this._formatAsAccessorProperty(object,propertyPath.map(property=>property.name),false);return this._previewFormatter.renderPropertyPreview(property.type,(property.subtype),property.value);} _formatParameterAsNode(remoteObject){const result=createElement('span');const domModel=remoteObject.runtimeModel().target().model(SDK.DOMModel);if(!domModel) return result;domModel.pushObjectAsNodeToFrontend(remoteObject).then(node=>{if(!node){result.appendChild(this._formatParameterAsObject(remoteObject,false));return;} Common.Renderer.render(node).then(rendererNode=>{if(rendererNode) result.appendChild(rendererNode);else result.appendChild(this._formatParameterAsObject(remoteObject,false));this._formattedParameterAsNodeForTest();});});return result;} _formattedParameterAsNodeForTest(){} _formatParameterAsString(output){const span=createElement('span');span.appendChild(Console.ConsoleViewMessage._linkifyStringAsFragment(output.description||''));const result=createElement('span');result.createChild('span','object-value-string-quote').textContent='"';result.appendChild(span);result.createChild('span','object-value-string-quote').textContent='"';return result;} _formatParameterAsError(output){const result=createElement('span');const errorSpan=this._tryFormatAsError(output.description||'');result.appendChild(errorSpan?errorSpan:Console.ConsoleViewMessage._linkifyStringAsFragment(output.description||''));return result;} _formatAsArrayEntry(output){return this._previewFormatter.renderPropertyPreview(output.type,output.subtype,output.description);} _formatAsAccessorProperty(object,propertyPath,isArrayEntry){const rootElement=ObjectUI.ObjectPropertyTreeElement.createRemoteObjectAccessorPropertySpan(object,propertyPath,onInvokeGetterClick.bind(this));function onInvokeGetterClick(result,wasThrown){if(!result) return;rootElement.removeChildren();if(wasThrown){const element=rootElement.createChild('span');element.textContent=Common.UIString('');element.title=(result.description);}else if(isArrayEntry){rootElement.appendChild(this._formatAsArrayEntry(result));}else{const maxLength=100;const type=result.type;const subtype=result.subtype;let description='';if(type!=='function'&&result.description){if(type==='string'||subtype==='regexp') description=result.description.trimMiddle(maxLength);else description=result.description.trimEnd(maxLength);} rootElement.appendChild(this._previewFormatter.renderPropertyPreview(type,subtype,description));}} return rootElement;} _formatWithSubstitutionString(format,parameters,formattedResult){const formatters={};function parameterFormatter(force,includePreview,obj){return this._formatParameter(obj,force,includePreview);} function stringFormatter(obj){return obj.description;} function floatFormatter(obj){if(typeof obj.value!=='number') return'NaN';return obj.value;} function integerFormatter(obj){if(typeof obj.value!=='number') return'NaN';return Math.floor(obj.value);} function bypassFormatter(obj){return(obj instanceof Node)?obj:'';} let currentStyle=null;function styleFormatter(obj){currentStyle={};const buffer=createElement('span');buffer.setAttribute('style',obj.description);for(let i=0;i1) this._showRepeatCountElement();} _shouldRenderAsWarning(){return(this._message.level===SDK.ConsoleMessage.MessageLevel.Verbose||this._message.level===SDK.ConsoleMessage.MessageLevel.Info)&&(this._message.source===SDK.ConsoleMessage.MessageSource.Violation||this._message.source===SDK.ConsoleMessage.MessageSource.Deprecation||this._message.source===SDK.ConsoleMessage.MessageSource.Intervention||this._message.source===SDK.ConsoleMessage.MessageSource.Recommendation);} _updateMessageLevelIcon(iconType){if(!iconType&&!this._messageLevelIcon) return;if(iconType&&!this._messageLevelIcon){this._messageLevelIcon=UI.Icon.create('','message-level-icon');if(this._contentElement) this._contentElement.insertBefore(this._messageLevelIcon,this._contentElement.firstChild);} this._messageLevelIcon.setIconType(iconType);} repeatCount(){return this._repeatCount||1;} resetIncrementRepeatCount(){this._repeatCount=1;if(!this._repeatCountElement) return;this._repeatCountElement.remove();if(this._contentElement) this._contentElement.classList.remove('repeated-message');delete this._repeatCountElement;} incrementRepeatCount(){this._repeatCount++;this._showRepeatCountElement();} setRepeatCount(repeatCount){this._repeatCount=repeatCount;this._showRepeatCountElement();} _showRepeatCountElement(){if(!this._element) return;if(!this._repeatCountElement){this._repeatCountElement=createElementWithClass('span','console-message-repeat-count','dt-small-bubble');switch(this._message.level){case SDK.ConsoleMessage.MessageLevel.Warning:this._repeatCountElement.type='warning';break;case SDK.ConsoleMessage.MessageLevel.Error:this._repeatCountElement.type='error';break;case SDK.ConsoleMessage.MessageLevel.Verbose:this._repeatCountElement.type='verbose';break;default:this._repeatCountElement.type='info';} if(this._shouldRenderAsWarning()) this._repeatCountElement.type='warning';this._element.insertBefore(this._repeatCountElement,this._contentElement);this._contentElement.classList.add('repeated-message');} this._repeatCountElement.textContent=this._repeatCount;} get text(){return this._message.messageText;} toExportString(){const lines=[];const nodes=this.contentElement().childTextNodes();const messageContent=nodes.map(Components.Linkifier.untruncatedNodeText).join('');for(let i=0;i0?lines[i-1].length+1:0;const isCallFrameLine=/^\s*at\s/.test(lines[i]);if(!isCallFrameLine&&links.length) return null;if(!isCallFrameLine) continue;let openBracketIndex=-1;let closeBracketIndex=-1;const match=/\([^\)\(]+\)/.exec(lines[i]);if(match){openBracketIndex=match.index;closeBracketIndex=match.index+match[0].length-1;} const hasOpenBracket=openBracketIndex!==-1;const left=hasOpenBracket?openBracketIndex+1:lines[i].indexOf('at')+3;const right=hasOpenBracket?closeBracketIndex:lines[i].length;const linkCandidate=lines[i].substring(left,right);const splitResult=Common.ParsedURL.splitLineAndColumn(linkCandidate);if(!splitResult) return null;if(splitResult.url==='') continue;let url=parseOrScriptMatch(splitResult.url);if(!url&&Common.ParsedURL.isRelativeURL(splitResult.url)) url=parseOrScriptMatch(Common.ParsedURL.completeURL(baseURL,splitResult.url));if(!url) return null;links.push({url:url,positionLeft:position+left,positionRight:position+right,lineNumber:splitResult.lineNumber,columnNumber:splitResult.columnNumber});} if(!links.length) return null;const formattedResult=createElement('span');let start=0;for(let i=0;iConsole.ConsoleViewMessage._MaxTokenizableStringLength) return Console.ConsoleViewMessage._createExpandableFragment(string);const container=createDocumentFragment();const tokens=this._tokenizeMessageText(string);for(const token of tokens){switch(token.type){case'url':{const realURL=(token.text.startsWith('www.')?'http://'+token.text:token.text);const splitResult=Common.ParsedURL.splitLineAndColumn(realURL);let linkNode;if(splitResult) linkNode=linkifier(token.text,splitResult.url,splitResult.lineNumber,splitResult.columnNumber);else linkNode=linkifier(token.text,token.value);container.appendChild(linkNode);break;} default:container.appendChild(createTextNode(token.text));break;}} return container;} static _createExpandableFragment(text){const fragment=createDocumentFragment();fragment.textContent=text.slice(0,Console.ConsoleViewMessage._LongStringVisibleLength);const hiddenText=text.slice(Console.ConsoleViewMessage._LongStringVisibleLength);const expandButton=fragment.createChild('span','console-inline-button');expandButton.setAttribute('data-text',ls`Show ${Number.withThousandsSeparator(hiddenText.length)} more`);expandButton.addEventListener('click',()=>{if(expandButton.parentElement) expandButton.parentElement.insertBefore(createTextNode(hiddenText),expandButton);expandButton.remove();});const copyButton=fragment.createChild('span','console-inline-button');copyButton.setAttribute('data-text',ls`Copy`);copyButton.addEventListener('click',()=>{InspectorFrontendHost.copyText(text);});return fragment;} static _linkifyStringAsFragment(string){return Console.ConsoleViewMessage.linkifyWithCustomLinkifier(string,(text,url,lineNumber,columnNumber)=>{return Components.Linkifier.linkifyURL(url,{text,lineNumber,columnNumber});});} static _tokenizeMessageText(string){if(!Console.ConsoleViewMessage._tokenizerRegexes){const controlCodes='\\u0000-\\u0020\\u007f-\\u009f';const linkStringRegex=new RegExp('(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\/\\/|data:|www\\.)[^\\s'+controlCodes+'"]{2,}[^\\s'+controlCodes+'"\')}\\],:;.!?]','u');const pathLineRegex=/(?:\/[\w\.-]*)+\:[\d]+/;const timeRegex=/took [\d]+ms/;const eventRegex=/'\w+' event/;const milestoneRegex=/\sM[6-7]\d/;const autofillRegex=/\(suggested: \"[\w-]+\"\)/;const handlers=new Map();handlers.set(linkStringRegex,'url');handlers.set(pathLineRegex,'url');handlers.set(timeRegex,'time');handlers.set(eventRegex,'event');handlers.set(milestoneRegex,'milestone');handlers.set(autofillRegex,'autofill');Console.ConsoleViewMessage._tokenizerRegexes=Array.from(handlers.keys());Console.ConsoleViewMessage._tokenizerTypes=Array.from(handlers.values());} if(string.length>Console.ConsoleViewMessage._MaxTokenizableStringLength) return[{text:string,type:undefined}];const results=TextUtils.TextUtils.splitStringByRegexes(string,Console.ConsoleViewMessage._tokenizerRegexes);return results.map(result=>({text:result.value,type:Console.ConsoleViewMessage._tokenizerTypes[result.regexIndex]}));} groupKey(){if(!this._groupKey) this._groupKey=this._message.groupCategoryKey()+':'+this.groupTitle();return this._groupKey;} groupTitle(){const tokens=Console.ConsoleViewMessage._tokenizeMessageText(this._message.messageText);const result=tokens.reduce((acc,token)=>{let text=token.text;if(token.type==='url') text=Common.UIString('');else if(token.type==='time') text=Common.UIString('took ms');else if(token.type==='event') text=Common.UIString(' event');else if(token.type==='milestone') text=Common.UIString(' M');else if(token.type==='autofill') text=Common.UIString('');return acc+text;},'');return result.replace(/[%]o/g,'');}};Console.ConsoleGroupViewMessage=class extends Console.ConsoleViewMessage{constructor(consoleMessage,linkifier,badgePool,nestingLevel){console.assert(consoleMessage.isGroupStartMessage());super(consoleMessage,linkifier,badgePool,nestingLevel);this._collapsed=consoleMessage.type===SDK.ConsoleMessage.MessageType.StartGroupCollapsed;this._expandGroupIcon=null;} setCollapsed(collapsed){this._collapsed=collapsed;if(this._expandGroupIcon) this._expandGroupIcon.setIconType(this._collapsed?'smallicon-triangle-right':'smallicon-triangle-down');} collapsed(){return this._collapsed;} toMessageElement(){if(!this._element){super.toMessageElement();this._expandGroupIcon=UI.Icon.create('','expand-group-icon');if(this._repeatCountElement) this._repeatCountElement.insertBefore(this._expandGroupIcon,this._repeatCountElement.firstChild);else this._element.insertBefore(this._expandGroupIcon,this._contentElement);this.setCollapsed(this._collapsed);} return this._element;} _showRepeatCountElement(){super._showRepeatCountElement();if(this._repeatCountElement&&this._expandGroupIcon) this._repeatCountElement.insertBefore(this._expandGroupIcon,this._repeatCountElement.firstChild);}};Console.ConsoleViewMessage.MaxLengthForLinks=40;Console.ConsoleViewMessage._MaxTokenizableStringLength=10000;Console.ConsoleViewMessage._LongStringVisibleLength=5000;;Console.ConsolePrompt=class extends UI.Widget{constructor(){super();this._addCompletionsFromHistory=true;this._history=new Console.ConsoleHistoryManager();this._initialText='';this._editor=null;this.element.tabIndex=0;self.runtime.extension(UI.TextEditorFactory).instance().then(gotFactory.bind(this));function gotFactory(factory){this._editor=factory.createEditor({lineNumbers:false,lineWrapping:true,mimeType:'javascript',autoHeight:true});this._editor.configureAutocomplete({substituteRangeCallback:this._substituteRange.bind(this),suggestionsCallback:this._wordsWithQuery.bind(this),captureEnter:true});this._editor.widget().element.addEventListener('keydown',this._editorKeyDown.bind(this),true);this._editor.widget().show(this.element);this._editor.addEventListener(UI.TextEditor.Events.TextChanged,this._onTextChanged,this);this.setText(this._initialText);delete this._initialText;if(this.hasFocus()) this.focus();this.element.tabIndex=-1;this._editorSetForTest();}} _onTextChanged(){this.dispatchEventToListeners(Console.ConsolePrompt.Events.TextChanged);} history(){return this._history;} clearAutocomplete(){if(this._editor) this._editor.clearAutocomplete();} _isCaretAtEndOfPrompt(){return!!this._editor&&this._editor.selection().collapseToEnd().equal(this._editor.fullRange().collapseToEnd());} moveCaretToEndOfPrompt(){if(this._editor) this._editor.setSelection(TextUtils.TextRange.createFromLocation(Infinity,Infinity));} setText(text){if(this._editor) this._editor.setText(text);else this._initialText=text;this.dispatchEventToListeners(Console.ConsolePrompt.Events.TextChanged);} text(){return this._editor?this._editor.text():this._initialText;} setAddCompletionsFromHistory(value){this._addCompletionsFromHistory=value;} _editorKeyDown(event){const keyboardEvent=(event);let newText;let isPrevious;switch(keyboardEvent.keyCode){case UI.KeyboardShortcut.Keys.Up.code:if(keyboardEvent.shiftKey||this._editor.selection().endLine>0) break;newText=this._history.previous(this.text());isPrevious=true;break;case UI.KeyboardShortcut.Keys.Down.code:if(keyboardEvent.shiftKey||this._editor.selection().endLine=0&&result.length<50;--i){const item=data[i];if(!item.startsWith(text)) continue;if(set.has(item)) continue;set.add(item);result.push({text:item.substring(text.length-prefix.length),iconType:'smallicon-text-prompt',isSecondary:true});} return result;} focus(){if(this._editor) this._editor.widget().focus();else this.element.focus();} _substituteRange(lineNumber,columnNumber){const token=this._editor.tokenAtTextPosition(lineNumber,columnNumber);if(token&&token.type==='js-string') return new TextUtils.TextRange(lineNumber,token.startColumn,lineNumber,columnNumber);const lineText=this._editor.line(lineNumber);let index;for(index=columnNumber-1;index>=0;index--){if(' =:[({;,!+-*/&|^<>.\t\r\n'.indexOf(lineText.charAt(index))!==-1) break;} return new TextUtils.TextRange(lineNumber,index+1,lineNumber,columnNumber);} _wordsWithQuery(queryRange,substituteRange,force){const query=this._editor.text(queryRange);const before=this._editor.text(new TextUtils.TextRange(0,0,queryRange.startLine,queryRange.startColumn));const historyWords=this._historyCompletions(query,force);const token=this._editor.tokenAtTextPosition(substituteRange.startLine,substituteRange.startColumn);if(token){const excludedTokens=new Set(['js-comment','js-string-2','js-def']);const trimmedBefore=before.trim();if(!trimmedBefore.endsWith('[')&&!trimmedBefore.match(/\.\s*(get|set|delete)\s*\(\s*$/)) excludedTokens.add('js-string');if(!trimmedBefore.endsWith('.')) excludedTokens.add('js-property');if(excludedTokens.has(token.type)) return Promise.resolve(historyWords);} return ObjectUI.javaScriptAutocomplete.completionsForTextInCurrentContext(before,query,force).then(words=>words.concat(historyWords));} _editorSetForTest(){}};Console.ConsoleHistoryManager=class{constructor(){this._data=[];this._historyOffset=1;} historyData(){return this._data;} setHistoryData(data){this._data=data.slice();this._historyOffset=1;} pushHistoryItem(text){if(this._uncommittedIsTop){this._data.pop();delete this._uncommittedIsTop;} this._historyOffset=1;if(text===this._currentHistoryItem()) return;this._data.push(text);} _pushCurrentText(currentText){if(this._uncommittedIsTop) this._data.pop();this._uncommittedIsTop=true;this._data.push(currentText);} previous(currentText){if(this._historyOffset>this._data.length) return undefined;if(this._historyOffset===1) this._pushCurrentText(currentText);++this._historyOffset;return this._currentHistoryItem();} next(){if(this._historyOffset===1) return undefined;--this._historyOffset;return this._currentHistoryItem();} _currentHistoryItem(){return this._data[this._data.length-this._historyOffset];}};Console.ConsolePrompt.Events={TextChanged:Symbol('TextChanged')};;Console.ConsoleView=class extends UI.VBox{constructor(){super();this.setMinimumSize(0,35);this.registerRequiredCSS('console/consoleView.css');this.registerRequiredCSS('object_ui/objectValue.css');this._searchableView=new UI.SearchableView(this);this._searchableView.element.classList.add('console-searchable-view');this._searchableView.setPlaceholder(Common.UIString('Find string in logs'));this._searchableView.setMinimalSearchQuerySize(0);this._badgePool=new ProductRegistry.BadgePool();this._sidebar=new Console.ConsoleSidebar(this._badgePool);this._sidebar.addEventListener(Console.ConsoleSidebar.Events.FilterSelected,this._onFilterChanged.bind(this));this._isSidebarOpen=false;this._filter=new Console.ConsoleViewFilter(this._onFilterChanged.bind(this));const toolbar=new UI.Toolbar('',this.element);this._splitWidget=new UI.SplitWidget(true,false,'console.sidebar.width',100);this._splitWidget.setMainWidget(this._searchableView);this._splitWidget.setSidebarWidget(this._sidebar);this._splitWidget.show(this.element);this._splitWidget.hideSidebar();this._splitWidget.enableShowModeSaving();this._isSidebarOpen=this._splitWidget.showMode()===UI.SplitWidget.ShowMode.Both;if(this._isSidebarOpen) this._filter._levelMenuButton.setEnabled(false);toolbar.appendToolbarItem(this._splitWidget.createShowHideSidebarButton('console sidebar'));this._splitWidget.addEventListener(UI.SplitWidget.Events.ShowModeChanged,event=>{this._isSidebarOpen=event.data===UI.SplitWidget.ShowMode.Both;this._filter._levelMenuButton.setEnabled(!this._isSidebarOpen);this._onFilterChanged();});this._contentsElement=this._searchableView.element;this.element.classList.add('console-view');this._visibleViewMessages=[];this._urlToMessageCount={};this._hiddenByFilterCount=0;this._shouldBeHiddenCache=new Set();this._groupableMessages=new Map();this._groupableMessageTitle=new Map();this._regexMatchRanges=[];this._consoleContextSelector=new Console.ConsoleContextSelector();this._filterStatusText=new UI.ToolbarText();this._filterStatusText.element.classList.add('dimmed');this._showSettingsPaneSetting=Common.settings.createSetting('consoleShowSettingsToolbar',false);this._showSettingsPaneButton=new UI.ToolbarSettingToggle(this._showSettingsPaneSetting,'largeicon-settings-gear',Common.UIString('Console settings'));this._progressToolbarItem=new UI.ToolbarItem(createElement('div'));this._groupSimilarSetting=Common.settings.moduleSetting('consoleGroupSimilar');this._groupSimilarSetting.addChangeListener(()=>this._updateMessageList());const groupSimilarToggle=new UI.ToolbarSettingCheckbox(this._groupSimilarSetting,Common.UIString('Group similar'));toolbar.appendToolbarItem(UI.Toolbar.createActionButton((UI.actionRegistry.action('console.clear'))));toolbar.appendSeparator();toolbar.appendToolbarItem(this._consoleContextSelector.toolbarItem());toolbar.appendSeparator();toolbar.appendToolbarItem(this._filter._textFilterUI);toolbar.appendToolbarItem(this._filter._levelMenuButton);toolbar.appendToolbarItem(groupSimilarToggle);toolbar.appendToolbarItem(this._progressToolbarItem);toolbar.appendSpacer();toolbar.appendToolbarItem(this._filterStatusText);toolbar.appendSeparator();toolbar.appendToolbarItem(this._showSettingsPaneButton);this._preserveLogCheckbox=new UI.ToolbarSettingCheckbox(Common.moduleSetting('preserveConsoleLog'),Common.UIString('Do not clear log on page reload / navigation'),Common.UIString('Preserve log'));this._hideNetworkMessagesCheckbox=new UI.ToolbarSettingCheckbox(this._filter._hideNetworkMessagesSetting,this._filter._hideNetworkMessagesSetting.title(),Common.UIString('Hide network'));const filterByExecutionContextCheckbox=new UI.ToolbarSettingCheckbox(this._filter._filterByExecutionContextSetting,Common.UIString('Only show messages from the current context (top, iframe, worker, extension)'),Common.UIString('Selected context only'));const monitoringXHREnabledSetting=Common.moduleSetting('monitoringXHREnabled');this._timestampsSetting=Common.moduleSetting('consoleTimestampsEnabled');this._consoleHistoryAutocompleteSetting=Common.moduleSetting('consoleHistoryAutocomplete');const settingsPane=new UI.HBox();settingsPane.show(this._contentsElement);settingsPane.element.classList.add('console-settings-pane');const settingsToolbarLeft=new UI.Toolbar('',settingsPane.element);settingsToolbarLeft.makeVertical();settingsToolbarLeft.appendToolbarItem(this._hideNetworkMessagesCheckbox);settingsToolbarLeft.appendToolbarItem(this._preserveLogCheckbox);settingsToolbarLeft.appendToolbarItem(filterByExecutionContextCheckbox);const settingsToolbarRight=new UI.Toolbar('',settingsPane.element);settingsToolbarRight.makeVertical();settingsToolbarRight.appendToolbarItem(new UI.ToolbarSettingCheckbox(monitoringXHREnabledSetting));settingsToolbarRight.appendToolbarItem(new UI.ToolbarSettingCheckbox(this._timestampsSetting));settingsToolbarRight.appendToolbarItem(new UI.ToolbarSettingCheckbox(this._consoleHistoryAutocompleteSetting));if(!this._showSettingsPaneSetting.get()) settingsPane.element.classList.add('hidden');this._showSettingsPaneSetting.addChangeListener(()=>settingsPane.element.classList.toggle('hidden',!this._showSettingsPaneSetting.get()));var consoleTipElement=createElement("div");consoleTipElement.className="console-view-tip";consoleTipElement.innerHTML="请不要在代码中使用文档未开放API或私有属性,避免版本兼容问题!";this._contentsElement.appendChild(consoleTipElement);this._contentsElement=this._searchableView.element;this.element.classList.add('console-view');this._viewport=new Console.ConsoleViewport(this);this._viewport.setStickToBottom(true);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.addEventListener('paste',this._messagesPasted.bind(this),true);this._viewportThrottler=new Common.Throttler(50);this._topGroup=Console.ConsoleGroup.createTopGroup();this._currentGroup=this._topGroup;this._promptElement=this._messagesElement.createChild('div','source-code');const promptIcon=UI.Icon.create('smallicon-text-prompt','console-prompt-icon');this._promptElement.appendChild(promptIcon);this._promptElement.id='console-prompt';const selectAllFixer=this._messagesElement.createChild('div','console-view-fix-select-all');selectAllFixer.textContent='.';this._registerShortcuts();this._messagesElement.addEventListener('contextmenu',this._handleContextMenuEvent.bind(this),false);this._linkifier=new Components.Linkifier(Console.ConsoleViewMessage.MaxLengthForLinks);this._consoleMessages=[];this._viewMessageSymbol=Symbol('viewMessage');this._consoleHistorySetting=Common.settings.createLocalSetting('consoleHistory',[]);this._prompt=new Console.ConsolePrompt();this._prompt.show(this._promptElement);this._prompt.element.addEventListener('keydown',this._promptKeyDown.bind(this),true);this._prompt.addEventListener(Console.ConsolePrompt.Events.TextChanged,this._promptTextChanged,this);this._consoleHistoryAutocompleteSetting.addChangeListener(this._consoleHistoryAutocompleteChanged,this);const historyData=this._consoleHistorySetting.get();this._prompt.history().setHistoryData(historyData);this._consoleHistoryAutocompleteChanged();this._updateFilterStatus();this._timestampsSetting.addChangeListener(this._consoleTimestampsSettingChanged,this);this._registerWithMessageSink();UI.context.addFlavorChangeListener(SDK.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);SDK.consoleModel.addEventListener(SDK.ConsoleModel.Events.ConsoleCleared,this._consoleCleared,this);SDK.consoleModel.addEventListener(SDK.ConsoleModel.Events.MessageAdded,this._onConsoleMessageAdded,this);SDK.consoleModel.addEventListener(SDK.ConsoleModel.Events.MessageUpdated,this._onConsoleMessageUpdated,this);SDK.consoleModel.addEventListener(SDK.ConsoleModel.Events.CommandEvaluated,this._commandEvaluated,this);SDK.consoleModel.messages().forEach(this._addConsoleMessage,this);} static instance(){if(!Console.ConsoleView._instance) Console.ConsoleView._instance=new Console.ConsoleView();return Console.ConsoleView._instance;} static clearConsole(){SDK.consoleModel.requestClearMessages();} _onFilterChanged(){this._filter._currentFilter.levelsMask=this._isSidebarOpen?Console.ConsoleFilter.allLevelsFilterValue():this._filter._messageLevelFiltersSetting.get();this._cancelBuildHiddenCache();if(this._immediatelyFilterMessagesForTest){for(const viewMessage of this._consoleMessages) this._computeShouldMessageBeVisible(viewMessage);this._updateMessageList();return;} this._buildHiddenCache(0,this._consoleMessages.slice());} _setImmediatelyFilterMessagesForTest(){this._immediatelyFilterMessagesForTest=true;} searchableView(){return this._searchableView;} _clearHistory(){this._consoleHistorySetting.set([]);this._prompt.history().setHistoryData([]);} _consoleHistoryAutocompleteChanged(){this._prompt.setAddCompletionsFromHistory(this._consoleHistoryAutocompleteSetting.get());} itemCount(){return this._visibleViewMessages.length;} itemElement(index){return this._visibleViewMessages[index];} fastHeight(index){return this._visibleViewMessages[index].fastHeight();} minimumRowHeight(){return 16;} _registerWithMessageSink(){Common.console.messages().forEach(this._addSinkMessage,this);Common.console.addEventListener(Common.Console.Events.MessageAdded,messageAdded,this);function messageAdded(event){this._addSinkMessage((event.data));}} _addSinkMessage(message){let level=SDK.ConsoleMessage.MessageLevel.Verbose;switch(message.level){case Common.Console.MessageLevel.Info:level=SDK.ConsoleMessage.MessageLevel.Info;break;case Common.Console.MessageLevel.Error:level=SDK.ConsoleMessage.MessageLevel.Error;break;case Common.Console.MessageLevel.Warning:level=SDK.ConsoleMessage.MessageLevel.Warning;break;} const consoleMessage=new SDK.ConsoleMessage(null,SDK.ConsoleMessage.MessageSource.Other,level,message.text,SDK.ConsoleMessage.MessageType.System,undefined,undefined,undefined,undefined,undefined,message.timestamp);this._addConsoleMessage(consoleMessage);} _consoleTimestampsSettingChanged(){this._updateMessageList();this._consoleMessages.forEach(viewMessage=>viewMessage.updateTimestamp());this._groupableMessageTitle.forEach(viewMessage=>viewMessage.updateTimestamp());} _executionContextChanged(){this._prompt.clearAutocomplete();} willHide(){this._hidePromptSuggestBox();} wasShown(){this._viewport.refresh();} focus(){if(!this._prompt.hasFocus()){const oldScrollTop=this._viewport.element.scrollTop;this._prompt.focus();this._viewport.element.scrollTop=oldScrollTop;}} restoreScrollPositions(){if(this._viewport.stickToBottom()) this._immediatelyScrollToBottom();else super.restoreScrollPositions();} onResize(){this._scheduleViewportRefresh();this._hidePromptSuggestBox();if(this._viewport.stickToBottom()) this._immediatelyScrollToBottom();for(let i=0;i0) insertAt=this._consoleMessages.length;else insertAt=this._consoleMessages.upperBound(viewMessage,timeComparator);const insertedInMiddle=insertAt12) break;} if(i===viewMessages.length){this._updateMessageList();return;} this._buildHiddenCacheTimeout=this.element.window().requestAnimationFrame(this._buildHiddenCache.bind(this,i,viewMessages));} _cancelBuildHiddenCache(){this._shouldBeHiddenCache.clear();if(this._buildHiddenCacheTimeout){this.element.window().cancelAnimationFrame(this._buildHiddenCacheTimeout);delete this._buildHiddenCacheTimeout;}} _updateMessageList(){this._topGroup=Console.ConsoleGroup.createTopGroup();this._currentGroup=this._topGroup;this._regexMatchRanges=[];this._hiddenByFilterCount=0;for(let i=0;ithis._shouldMessageBeVisible(x))){alreadyAdded.addAll(viewMessagesInGroup);continue;} let startGroupViewMessage=this._groupableMessageTitle.get(key);if(!startGroupViewMessage){const startGroupMessage=new SDK.ConsoleMessage(null,message.source,message.level,viewMessage.groupTitle(),SDK.ConsoleMessage.MessageType.StartGroupCollapsed);startGroupViewMessage=this._createViewMessage(startGroupMessage);this._groupableMessageTitle.set(key,startGroupViewMessage);} startGroupViewMessage.setRepeatCount(viewMessagesInGroup.length);this._appendMessageToEnd(startGroupViewMessage);for(const viewMessageInGroup of viewMessagesInGroup){viewMessageInGroup.setInSimilarGroup(true,viewMessagesInGroup.peekLast()===viewMessageInGroup);this._appendMessageToEnd(viewMessageInGroup,true);alreadyAdded.add(viewMessageInGroup.consoleMessage());} const endGroupMessage=new SDK.ConsoleMessage(null,message.source,message.level,message.messageText,SDK.ConsoleMessage.MessageType.EndGroup);this._appendMessageToEnd(this._createViewMessage(endGroupMessage));}} _messagesClicked(event){if(!this._messagesElement.hasSelection()){const clickedOutsideMessageList=event.target===this._messagesElement;if(clickedOutsideMessageList) this._prompt.moveCaretToEndOfPrompt();this.focus();} const groupMessage=event.target.enclosingNodeOrSelfWithClass('console-group-title');if(!groupMessage) return;const consoleGroupViewMessage=groupMessage.message;consoleGroupViewMessage.setCollapsed(!consoleGroupViewMessage.collapsed());this._updateMessageList();} _messagesPasted(event){if(UI.isEditing()) return;this._prompt.focus();} _registerShortcuts(){this._shortcuts={};const shortcut=UI.KeyboardShortcut;const section=UI.shortcutsScreen.section(Common.UIString('Console'));const shortcutL=shortcut.makeDescriptor('l',UI.KeyboardShortcut.Modifiers.Ctrl);let keys=[shortcutL];if(Host.isMac()){const shortcutK=shortcut.makeDescriptor('k',UI.KeyboardShortcut.Modifiers.Meta);keys.unshift(shortcutK);} section.addAlternateKeys(keys,Common.UIString('Clear console'));keys=[shortcut.makeDescriptor(shortcut.Keys.Tab),shortcut.makeDescriptor(shortcut.Keys.Right)];section.addRelatedKeys(keys,Common.UIString('Accept suggestion'));const shortcutU=shortcut.makeDescriptor('u',UI.KeyboardShortcut.Modifiers.Ctrl);this._shortcuts[shortcutU.key]=this._clearPromptBackwards.bind(this);section.addAlternateKeys([shortcutU],Common.UIString('Clear console prompt'));keys=[shortcut.makeDescriptor(shortcut.Keys.Down),shortcut.makeDescriptor(shortcut.Keys.Up)];section.addRelatedKeys(keys,Common.UIString('Next/previous line'));if(Host.isMac()){keys=[shortcut.makeDescriptor('N',shortcut.Modifiers.Alt),shortcut.makeDescriptor('P',shortcut.Modifiers.Alt)];section.addRelatedKeys(keys,Common.UIString('Next/previous command'));} section.addKey(shortcut.makeDescriptor(shortcut.Keys.Enter),Common.UIString('Execute command'));} _clearPromptBackwards(){this._prompt.setText('');} _promptKeyDown(event){const keyboardEvent=(event);if(keyboardEvent.key==='PageUp'){this._updateStickToBottomOnWheel();return;} const shortcut=UI.KeyboardShortcut.makeKeyFromEvent(keyboardEvent);const handler=this._shortcuts[shortcut];if(handler){handler();keyboardEvent.preventDefault();}} _printResult(result,originatingConsoleMessage,exceptionDetails){if(!result) return;const level=!!exceptionDetails?SDK.ConsoleMessage.MessageLevel.Error:SDK.ConsoleMessage.MessageLevel.Info;let message;if(!exceptionDetails){message=new SDK.ConsoleMessage(result.runtimeModel(),SDK.ConsoleMessage.MessageSource.JS,level,'',SDK.ConsoleMessage.MessageType.Result,undefined,undefined,undefined,[result]);}else{message=SDK.ConsoleMessage.fromException(result.runtimeModel(),exceptionDetails,SDK.ConsoleMessage.MessageType.Result,undefined,undefined);} message.setOriginatingMessage(originatingConsoleMessage);SDK.consoleModel.addMessage(message);} _commandEvaluated(event){const data=(event.data);this._prompt.history().pushHistoryItem(data.commandMessage.messageText);this._consoleHistorySetting.set(this._prompt.history().historyData().slice(-Console.ConsoleView.persistedHistorySize));this._printResult(data.result,data.commandMessage,data.exceptionDetails);} elementsToRestoreScrollPositionsFor(){return[this._messagesElement];} searchCanceled(){this._cleanupAfterSearch();for(let i=0;i=0){matchRange=this._regexMatchRanges[this._currentMatchRangeIndex];const message=this._visibleViewMessages[matchRange.messageIndex];message.searchHighlightNode(matchRange.matchIndex).classList.remove(UI.highlightedCurrentSearchResultClassName);} index=mod(index,this._regexMatchRanges.length);this._currentMatchRangeIndex=index;this._searchableView.updateCurrentMatchIndex(index);matchRange=this._regexMatchRanges[index];const message=this._visibleViewMessages[matchRange.messageIndex];const highlightNode=message.searchHighlightNode(matchRange.matchIndex);highlightNode.classList.add(UI.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;this._waitForScrollTimeout=setTimeout(updateViewportState.bind(this),200);function updateViewportState(){this._muteViewportUpdates=false;if(this.isShowing()) this._viewport.setStickToBottom(this._messagesElement.isScrolledToBottom());if(this._maybeDirtyWhileMuted){this._scheduleViewportRefresh();delete this._maybeDirtyWhileMuted;} delete this._waitForScrollTimeout;this._updateViewportStickinessForTest();}} _updateViewportStickinessForTest(){} _updateStickToBottomOnWheel(){this._updateStickToBottomOnMouseDown();this._updateStickToBottomOnMouseUp();} _promptTextChanged(){this._viewport.setStickToBottom(this._messagesElement.isScrolledToBottom());this._promptTextChangedForTest();} _promptTextChangedForTest(){}};Console.ConsoleView.persistedHistorySize=300;Console.ConsoleViewFilter=class{constructor(filterChangedCallback){this._filterChanged=filterChangedCallback;this._messageURLFiltersSetting=Common.settings.createSetting('messageURLFilters',{});this._messageLevelFiltersSetting=Console.ConsoleViewFilter.levelFilterSetting();this._hideNetworkMessagesSetting=Common.moduleSetting('hideNetworkMessages');this._filterByExecutionContextSetting=Common.moduleSetting('selectedContextFilterEnabled');this._messageURLFiltersSetting.addChangeListener(this._onFilterChanged.bind(this));this._messageLevelFiltersSetting.addChangeListener(this._onFilterChanged.bind(this));this._hideNetworkMessagesSetting.addChangeListener(this._onFilterChanged.bind(this));this._filterByExecutionContextSetting.addChangeListener(this._onFilterChanged.bind(this));UI.context.addFlavorChangeListener(SDK.ExecutionContext,this._onFilterChanged,this);const filterKeys=Object.values(Console.ConsoleFilter.FilterType);this._suggestionBuilder=new UI.FilterSuggestionBuilder(filterKeys);this._textFilterUI=new UI.ToolbarInput(Common.UIString('Filter'),0.2,1,Common.UIString('e.g. /event\\d/ -cdn url:a.com'),this._suggestionBuilder.completions.bind(this._suggestionBuilder));this._textFilterSetting=Common.settings.createSetting('console.textFilter','');if(this._textFilterSetting.get()) this._textFilterUI.setValue(this._textFilterSetting.get());this._textFilterUI.addEventListener(UI.ToolbarInput.Event.TextChanged,()=>{this._textFilterSetting.set(this._textFilterUI.value());this._onFilterChanged();});this._filterParser=new TextUtils.FilterParser(filterKeys);this._currentFilter=new Console.ConsoleFilter('',[],null,this._messageLevelFiltersSetting.get());this._updateCurrentFilter();this._levelLabels={};this._levelLabels[SDK.ConsoleMessage.MessageLevel.Verbose]=Common.UIString('Verbose');this._levelLabels[SDK.ConsoleMessage.MessageLevel.Info]=Common.UIString('Info');this._levelLabels[SDK.ConsoleMessage.MessageLevel.Warning]=Common.UIString('Warnings');this._levelLabels[SDK.ConsoleMessage.MessageLevel.Error]=Common.UIString('Errors');this._levelMenuButton=new UI.ToolbarButton('');this._levelMenuButton.turnIntoSelect();this._levelMenuButton.addEventListener(UI.ToolbarButton.Events.Click,this._showLevelContextMenu.bind(this));this._updateLevelMenuButtonText();this._messageLevelFiltersSetting.addChangeListener(this._updateLevelMenuButtonText.bind(this));} onMessageAdded(message){if(message.type===SDK.ConsoleMessage.MessageType.Command||message.type===SDK.ConsoleMessage.MessageType.Result||message.isGroupMessage()) return;if(message.context) this._suggestionBuilder.addItem(Console.ConsoleFilter.FilterType.Context,message.context);if(message.source) this._suggestionBuilder.addItem(Console.ConsoleFilter.FilterType.Source,message.source);if(message.url) this._suggestionBuilder.addItem(Console.ConsoleFilter.FilterType.Url,message.url);} static levelFilterSetting(){return Common.settings.createSetting('messageLevelFilters',Console.ConsoleFilter.defaultLevelsFilterValue());} _updateCurrentFilter(){let parsedFilters=this._filterParser.parse(this._textFilterUI.value());if(this._hideNetworkMessagesSetting.get()){parsedFilters.push({key:Console.ConsoleFilter.FilterType.Source,text:SDK.ConsoleMessage.MessageSource.Network,negative:true});} const blockedURLs=Object.keys(this._messageURLFiltersSetting.get());const urlFilters=blockedURLs.map(url=>({key:Console.ConsoleFilter.FilterType.Url,text:url,negative:true}));parsedFilters=parsedFilters.concat(urlFilters);this._currentFilter.executionContext=this._filterByExecutionContextSetting.get()?UI.context.flavor(SDK.ExecutionContext):null;this._currentFilter.parsedFilters=parsedFilters;this._currentFilter.levelsMask=this._messageLevelFiltersSetting.get();} _onFilterChanged(){this._updateCurrentFilter();this._filterChanged();} _updateLevelMenuButtonText(){let isAll=true;let isDefault=true;const allValue=Console.ConsoleFilter.allLevelsFilterValue();const defaultValue=Console.ConsoleFilter.defaultLevelsFilterValue();let text=null;const levels=this._messageLevelFiltersSetting.get();for(const name of Object.values(SDK.ConsoleMessage.MessageLevel)){isAll=isAll&&levels[name]===allValue[name];isDefault=isDefault&&levels[name]===defaultValue[name];if(levels[name]) text=text?Common.UIString('Custom levels'):Common.UIString('%s only',this._levelLabels[name]);} if(isAll) text=Common.UIString('All levels');else if(isDefault) text=Common.UIString('Default levels');else text=text||Common.UIString('Hide all');this._levelMenuButton.setText(text);} _showLevelContextMenu(event){const mouseEvent=(event.data);const setting=this._messageLevelFiltersSetting;const levels=setting.get();const contextMenu=new UI.ContextMenu(mouseEvent,true,this._levelMenuButton.element.totalOffsetLeft(),this._levelMenuButton.element.totalOffsetTop()+this._levelMenuButton.element.offsetHeight);contextMenu.headerSection().appendItem(Common.UIString('Default'),()=>setting.set(Console.ConsoleFilter.defaultLevelsFilterValue()));for(const level in this._levelLabels){contextMenu.defaultSection().appendCheckboxItem(this._levelLabels[level],toggleShowLevel.bind(null,level),levels[level]);} contextMenu.show();function toggleShowLevel(level){levels[level]=!levels[level];setting.set(levels);}} addMessageURLFilter(url){const value=this._messageURLFiltersSetting.get();value[url]=true;this._messageURLFiltersSetting.set(value);} removeMessageURLFilter(url){let value;if(url){value=this._messageURLFiltersSetting.get();delete value[url];}else{value={};} this._messageURLFiltersSetting.set(value);} messageURLFilters(){return this._messageURLFiltersSetting.get();} shouldBeVisible(viewMessage){return this._currentFilter.shouldBeVisible(viewMessage);} clear(){this._suggestionBuilder.clear();} reset(){this._messageURLFiltersSetting.set({});this._messageLevelFiltersSetting.set(Console.ConsoleFilter.defaultLevelsFilterValue());this._filterByExecutionContextSetting.set(false);this._hideNetworkMessagesSetting.set(false);this._textFilterUI.setValue('');this._onFilterChanged();}};Console.ConsoleCommand=class extends Console.ConsoleViewMessage{constructor(message,linkifier,badgePool,nestingLevel){super(message,linkifier,badgePool,nestingLevel);} contentElement(){if(!this._contentElement){this._contentElement=createElementWithClass('div','console-user-command');const icon=UI.Icon.create('smallicon-user-command','command-result-icon');this._contentElement.appendChild(icon);this._contentElement.message=this;this._formattedCommand=createElementWithClass('span','source-code');this._formattedCommand.textContent=this.text.replaceControlCharacters();this._contentElement.appendChild(this._formattedCommand);if(this._formattedCommand.textContent.length .toolbar {\n border-bottom: 1px solid #dadada;\n}\n\n.console-view-wrapper {\n background-color: #eee;\n}\n\n.console-view-fix-select-all {\n height: 0;\n overflow: hidden;\n}\n\n.console-settings-pane {\n flex: none;\n border-bottom: 1px solid #dadada;\n}\n\n.console-settings-pane .toolbar {\n flex: 1 1;\n}\n\n#console-messages {\n flex: 1 1;\n padding: 2px 0;\n overflow-y: auto;\n word-wrap: break-word;\n -webkit-user-select: text;\n transform: translateZ(0);\n}\n\n#console-prompt {\n clear: right;\n position: relative;\n margin: 0 22px 0 20px;\n min-height: 18px; /* Sync with ConsoleViewMessage.js */\n}\n\n#console-prompt .CodeMirror {\n padding: 3px 0 1px 0;\n}\n\n#console-prompt .CodeMirror-line {\n padding-top: 0;\n}\n\n#console-prompt .CodeMirror-lines {\n padding-top: 0;\n}\n\n#console-prompt .console-prompt-icon {\n position: absolute;\n left: -13px;\n top: 5px;\n -webkit-user-select: none;\n}\n\n.console-message,\n.console-user-command {\n clear: right;\n position: relative;\n padding: 3px 22px 1px 0;\n margin-left: 24px;\n min-height: 18px; /* Sync with ConsoleViewMessage.js */\n flex: auto;\n display: flex;\n}\n\n.console-message > * {\n flex: auto;\n}\n\n.console-timestamp {\n color: gray;\n -webkit-user-select: none;\n flex: none;\n margin-right: 5px;\n}\n\n.message-level-icon, .command-result-icon {\n position: absolute;\n left: -17px;\n top: 4px;\n -webkit-user-select: none;\n}\n\n.console-message-repeat-count {\n margin: 2px 0 0 10px;\n flex: none;\n}\n\n.repeated-message {\n margin-left: 4px;\n}\n\n.repeated-message .message-level-icon {\n display: none;\n}\n\n.repeated-message .console-message-stack-trace-toggle,\n.repeated-message > .console-message-text {\n flex: 1;\n}\n\n.console-error-level .repeated-message,\n.console-warning-level .repeated-message,\n.console-verbose-level .repeated-message,\n.console-info-level .repeated-message {\n display: flex;\n}\n\n.console-info {\n color: rgb(128, 128, 128);\n font-style: italic;\n padding-bottom: 2px;\n}\n\n.console-group .console-group > .console-group-messages {\n margin-left: 16px;\n}\n\n.console-group-title.console-from-api {\n font-weight: bold;\n}\n\n.console-group-title .console-message {\n margin-left: 12px;\n}\n\n.expand-group-icon {\n -webkit-user-select: none;\n flex: none;\n background-color: rgb(110, 110, 110);\n position: relative;\n left: 10px;\n top: 5px;\n margin-right: 2px;\n}\n\n.console-group-title .message-level-icon {\n display: none;\n}\n\n.console-message-repeat-count .expand-group-icon {\n left: 2px;\n top: 2px;\n background-color: #fff;\n margin-right: 4px;\n}\n\n.console-group {\n position: relative;\n}\n\n.console-message-wrapper {\n display: flex;\n border-bottom: 1px solid rgb(240, 240, 240);\n}\n\n.console-message-wrapper.console-adjacent-user-command-result {\n border-bottom: none;\n}\n\n.console-message-wrapper.console-error-level {\n border-top: 1px solid hsl(0, 100%, 92%);\n border-bottom: 1px solid hsl(0, 100%, 92%);\n margin-top: -1px;\n}\n\n.console-message-wrapper.console-warning-level {\n border-top: 1px solid hsl(50, 100%, 88%);\n border-bottom: 1px solid hsl(50, 100%, 88%);\n margin-top: -1px;\n}\n\n.console-message-wrapper .nesting-level-marker {\n width: 14px;\n flex: 0 0 auto;\n border-right: 1px solid #a5a5a5;\n position: relative;\n margin-bottom: -1px;\n}\n\n.console-message-wrapper:last-child .nesting-level-marker::before,\n.console-message-wrapper .nesting-level-marker.group-closed::before {\n content: \"\";\n}\n\n.console-message-wrapper .nesting-level-marker::before {\n border-bottom: 1px solid #a5a5a5;\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 100%;\n width: 3px;\n height: 100%;\n box-sizing: border-box;\n}\n\n.console-error-level {\n background-color: hsl(0, 100%, 97%);\n}\n\n.-theme-with-dark-background .console-error-level {\n background-color: hsl(0, 100%, 8%);\n}\n\n.console-warning-level {\n background-color: hsl(50, 100%, 95%);\n}\n\n.-theme-with-dark-background .console-warning-level {\n background-color: hsl(50, 100%, 10%);\n}\n\n.console-warning-level .console-message-text {\n color: hsl(39, 100%, 18%);\n}\n\n.console-error-level .console-message-text,\n.console-error-level .console-view-object-properties-section {\n color: red !important;\n}\n\n.-theme-with-dark-background .console-error-level .console-message-text,\n.-theme-with-dark-background .console-error-level .console-view-object-properties-section {\n color: hsl(0, 100%, 75%) !important;\n}\n\n.-theme-with-dark-background .console-verbose-level .console-message-text {\n color: hsl(220, 100%, 65%) !important;\n}\n\n.console-message.console-warning-level {\n background-color: rgb(255, 250, 224);\n}\n\n/*\n hotfix: Adapt to the previous version\n */\n.console-verbose-level .console-message-text {\n color: blue;\n}\n\n#console-messages .link {\n text-decoration: underline;\n}\n\n#console-messages .link,\n#console-messages .devtools-link {\n color: rgb(33%, 33%, 33%);\n cursor: pointer;\n word-break: break-all;\n}\n\n#console-messages .link:hover,\n#console-messages .devtools-link:hover {\n color: rgb(15%, 15%, 15%);\n}\n\n.console-group-messages .section {\n margin: 0 0 0 12px !important;\n}\n\n.console-group-messages .section > .header {\n padding: 0 8px 0 0;\n background-image: none;\n border: none;\n min-height: 0;\n}\n\n.console-group-messages .section > .header::before {\n margin-left: -12px;\n}\n\n.console-group-messages .section > .header .title {\n color: #222;\n font-weight: normal;\n line-height: 13px;\n}\n\n.console-group-messages .section .properties li .info {\n padding-top: 0;\n padding-bottom: 0;\n color: rgb(60%, 60%, 60%);\n}\n\n.console-object-preview {\n white-space: normal;\n word-wrap: break-word;\n font-style: italic;\n}\n\n.console-object-preview .name {\n /* Follows .section .properties .name, .event-properties .name */\n color: rgb(136, 19, 145);\n flex-shrink: 0;\n}\n\n.console-message-text .object-value-string,\n.console-message-text .object-value-regexp,\n.console-message-text .object-value-symbol {\n white-space: pre-wrap;\n word-break: break-all;\n}\n\n.console-message-formatted-table {\n clear: both;\n}\n\n.console-message-anchor {\n float: right;\n text-align: right;\n max-width: 100%;\n margin-left: 4px;\n}\n\n.console-message-badge {\n float: right;\n margin-left: 4px;\n}\n\n.console-message-nowrap-below,\n.console-message-nowrap-below div,\n.console-message-nowrap-below span {\n white-space: nowrap !important;\n}\n\n.object-state-note {\n display: inline-block;\n width: 11px;\n height: 11px;\n color: white;\n text-align: center;\n border-radius: 3px;\n line-height: 13px;\n margin: 0 6px;\n font-size: 9px;\n}\n\n.-theme-with-dark-background .object-state-note {\n background-color: hsl(230, 100%, 80%);\n}\n\n.info-note {\n background-color: rgb(179, 203, 247);\n}\n\n.info-note::before {\n content: \"i\";\n}\n\n.console-view-object-properties-section:not(.expanded) .info-note {\n display: none;\n}\n\n.console-view-object-properties-section {\n padding: 0px;\n position: relative;\n vertical-align: baseline;\n color: inherit;\n display: inline-block;\n overflow-wrap: break-word;\n max-width: 100%;\n}\n\n.console-object {\n white-space: pre-wrap;\n word-break: break-all;\n}\n\n.console-message-stack-trace-toggle {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n}\n\n.console-message-stack-trace-wrapper {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n.console-message-stack-trace-wrapper > * {\n flex: none;\n}\n\n.console-message-expand-icon {\n margin-bottom: -2px;\n}\n\n.console-inline-button {\n background-color: #dedede;\n padding: 2px 4px;\n margin: 0 2px;\n color: #333;\n cursor: pointer;\n border-radius: 3px;\n font-size: 12px;\n font-family: sans-serif;\n white-space: nowrap;\n display: inline-block;\n}\n\n.console-inline-button::after {\n content: attr(data-text);\n}\n\n.console-inline-button:hover {\n background-color: #d5d5d5;\n}\n\n.console-searchable-view {\n max-height: 100%;\n}\n\n.console-view-tip{ /* hotfix: add tip in console panel. */\n padding: 2px 22px;\n flex: none;\n background-color: #fdf2c0;\n border-bottom: 1px solid #ababab;\n}\n\n/*# sourceURL=console/consoleView.css */";