Index: chrome_linux64/resources/inspector/ScriptsPanel.js |
=================================================================== |
--- chrome_linux64/resources/inspector/ScriptsPanel.js (revision 221742) |
+++ chrome_linux64/resources/inspector/ScriptsPanel.js (working copy) |
@@ -1,6257 +1,1238 @@ |
- |
- |
- |
- |
- |
- |
-WebInspector.JavaScriptBreakpointsSidebarPane = function(breakpointManager, showSourceLineDelegate) |
-{ |
-WebInspector.SidebarPane.call(this, WebInspector.UIString("Breakpoints")); |
-this.registerRequiredCSS("breakpointsList.css"); |
- |
-this._breakpointManager = breakpointManager; |
-this._showSourceLineDelegate = showSourceLineDelegate; |
- |
-this.listElement = document.createElement("ol"); |
-this.listElement.className = "breakpoint-list"; |
- |
-this.emptyElement = document.createElement("div"); |
-this.emptyElement.className = "info"; |
-this.emptyElement.textContent = WebInspector.UIString("No Breakpoints"); |
- |
-this.bodyElement.appendChild(this.emptyElement); |
- |
-this._items = new Map(); |
- |
-var breakpointLocations = this._breakpointManager.allBreakpointLocations(); |
-for (var i = 0; i < breakpointLocations.length; ++i) |
-this._addBreakpoint(breakpointLocations[i].breakpoint, breakpointLocations[i].uiLocation); |
- |
-this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded, this._breakpointAdded, this); |
-this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved, this._breakpointRemoved, this); |
- |
-this.emptyElement.addEventListener("contextmenu", this._emptyElementContextMenu.bind(this), true); |
-} |
- |
-WebInspector.JavaScriptBreakpointsSidebarPane.prototype = { |
-_emptyElementContextMenu: function(event) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-var breakpointActive = WebInspector.debuggerModel.breakpointsActive(); |
-var breakpointActiveTitle = breakpointActive ? |
-WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Deactivate breakpoints" : "Deactivate Breakpoints") : |
-WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Activate breakpoints" : "Activate Breakpoints"); |
-contextMenu.appendItem(breakpointActiveTitle, WebInspector.debuggerModel.setBreakpointsActive.bind(WebInspector.debuggerModel, !breakpointActive)); |
-contextMenu.show(); |
-}, |
- |
- |
-_breakpointAdded: function(event) |
-{ |
-this._breakpointRemoved(event); |
- |
-var breakpoint = (event.data.breakpoint); |
-var uiLocation = (event.data.uiLocation); |
-this._addBreakpoint(breakpoint, uiLocation); |
-}, |
- |
- |
-_addBreakpoint: function(breakpoint, uiLocation) |
-{ |
-var element = document.createElement("li"); |
-element.addStyleClass("cursor-pointer"); |
-element.addEventListener("contextmenu", this._breakpointContextMenu.bind(this, breakpoint), true); |
-element.addEventListener("click", this._breakpointClicked.bind(this, uiLocation), false); |
- |
-var checkbox = document.createElement("input"); |
-checkbox.className = "checkbox-elem"; |
-checkbox.type = "checkbox"; |
-checkbox.checked = breakpoint.enabled(); |
-checkbox.addEventListener("click", this._breakpointCheckboxClicked.bind(this, breakpoint), false); |
-element.appendChild(checkbox); |
- |
-var labelElement = document.createTextNode(uiLocation.linkText()); |
-element.appendChild(labelElement); |
- |
-var snippetElement = document.createElement("div"); |
-snippetElement.className = "source-text monospace"; |
-element.appendChild(snippetElement); |
- |
- |
-function didRequestContent(content, contentEncoded, mimeType) |
-{ |
-var lineEndings = content.lineEndings(); |
-if (uiLocation.lineNumber < lineEndings.length) |
-snippetElement.textContent = content.substring(lineEndings[uiLocation.lineNumber - 1], lineEndings[uiLocation.lineNumber]); |
-} |
-uiLocation.uiSourceCode.requestContent(didRequestContent.bind(this)); |
- |
-element._data = uiLocation; |
-var currentElement = this.listElement.firstChild; |
-while (currentElement) { |
-if (currentElement._data && this._compareBreakpoints(currentElement._data, element._data) > 0) |
-break; |
-currentElement = currentElement.nextSibling; |
-} |
-this._addListElement(element, currentElement); |
- |
-var breakpointItem = {}; |
-breakpointItem.element = element; |
-breakpointItem.checkbox = checkbox; |
-this._items.put(breakpoint, breakpointItem); |
- |
-this.expand(); |
-}, |
- |
- |
-_breakpointRemoved: function(event) |
-{ |
-var breakpoint = (event.data.breakpoint); |
-var uiLocation = (event.data.uiLocation); |
-var breakpointItem = this._items.get(breakpoint); |
-if (!breakpointItem) |
-return; |
-this._items.remove(breakpoint); |
-this._removeListElement(breakpointItem.element); |
-}, |
- |
- |
-highlightBreakpoint: function(breakpoint) |
-{ |
-var breakpointItem = this._items.get(breakpoint); |
-if (!breakpointItem) |
-return; |
-breakpointItem.element.addStyleClass("breakpoint-hit"); |
-this._highlightedBreakpointItem = breakpointItem; |
-}, |
- |
-clearBreakpointHighlight: function() |
-{ |
-if (this._highlightedBreakpointItem) { |
-this._highlightedBreakpointItem.element.removeStyleClass("breakpoint-hit"); |
-delete this._highlightedBreakpointItem; |
-} |
-}, |
- |
-_breakpointClicked: function(uiLocation, event) |
-{ |
-this._showSourceLineDelegate(uiLocation.uiSourceCode, uiLocation.lineNumber); |
-}, |
- |
- |
-_breakpointCheckboxClicked: function(breakpoint, event) |
-{ |
- |
-event.consume(); |
-breakpoint.setEnabled(event.target.checked); |
-}, |
- |
- |
-_breakpointContextMenu: function(breakpoint, event) |
-{ |
-var breakpoints = this._items.values(); |
-var contextMenu = new WebInspector.ContextMenu(event); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove breakpoint" : "Remove Breakpoint"), breakpoint.remove.bind(breakpoint)); |
-if (breakpoints.length > 1) { |
-var removeAllTitle = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove all breakpoints" : "Remove All Breakpoints"); |
-contextMenu.appendItem(removeAllTitle, this._breakpointManager.removeAllBreakpoints.bind(this._breakpointManager)); |
-} |
- |
-contextMenu.appendSeparator(); |
-var breakpointActive = WebInspector.debuggerModel.breakpointsActive(); |
-var breakpointActiveTitle = breakpointActive ? |
-WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Deactivate breakpoints" : "Deactivate Breakpoints") : |
-WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Activate breakpoints" : "Activate Breakpoints"); |
-contextMenu.appendItem(breakpointActiveTitle, WebInspector.debuggerModel.setBreakpointsActive.bind(WebInspector.debuggerModel, !breakpointActive)); |
- |
-function enabledBreakpointCount(breakpoints) |
-{ |
-var count = 0; |
-for (var i = 0; i < breakpoints.length; ++i) { |
-if (breakpoints[i].checkbox.checked) |
-count++; |
-} |
-return count; |
-} |
-if (breakpoints.length > 1) { |
-var enableBreakpointCount = enabledBreakpointCount(breakpoints); |
-var enableTitle = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Enable all breakpoints" : "Enable All Breakpoints"); |
-var disableTitle = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Disable all breakpoints" : "Disable All Breakpoints"); |
- |
-contextMenu.appendSeparator(); |
- |
-contextMenu.appendItem(enableTitle, this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager, true), !(enableBreakpointCount != breakpoints.length)); |
-contextMenu.appendItem(disableTitle, this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager, false), !(enableBreakpointCount > 1)); |
-} |
- |
-contextMenu.show(); |
-}, |
- |
-_addListElement: function(element, beforeElement) |
-{ |
-if (beforeElement) |
-this.listElement.insertBefore(element, beforeElement); |
-else { |
-if (!this.listElement.firstChild) { |
-this.bodyElement.removeChild(this.emptyElement); |
-this.bodyElement.appendChild(this.listElement); |
-} |
-this.listElement.appendChild(element); |
-} |
-}, |
- |
-_removeListElement: function(element) |
-{ |
-this.listElement.removeChild(element); |
-if (!this.listElement.firstChild) { |
-this.bodyElement.removeChild(this.listElement); |
-this.bodyElement.appendChild(this.emptyElement); |
-} |
-}, |
- |
-_compare: function(x, y) |
-{ |
-if (x !== y) |
-return x < y ? -1 : 1; |
-return 0; |
-}, |
- |
-_compareBreakpoints: function(b1, b2) |
-{ |
-return this._compare(b1.uiSourceCode.originURL(), b2.uiSourceCode.originURL()) || this._compare(b1.lineNumber, b2.lineNumber); |
-}, |
- |
-reset: function() |
-{ |
-this.listElement.removeChildren(); |
-if (this.listElement.parentElement) { |
-this.bodyElement.removeChild(this.listElement); |
-this.bodyElement.appendChild(this.emptyElement); |
-} |
-this._items.clear(); |
-}, |
- |
-__proto__: WebInspector.SidebarPane.prototype |
-} |
- |
- |
-WebInspector.XHRBreakpointsSidebarPane = function() |
-{ |
-WebInspector.NativeBreakpointsSidebarPane.call(this, WebInspector.UIString("XHR Breakpoints")); |
- |
-this._breakpointElements = {}; |
- |
-var addButton = document.createElement("button"); |
-addButton.className = "pane-title-button add"; |
-addButton.addEventListener("click", this._addButtonClicked.bind(this), false); |
-addButton.title = WebInspector.UIString("Add XHR breakpoint"); |
-this.titleElement.appendChild(addButton); |
- |
-this.emptyElement.addEventListener("contextmenu", this._emptyElementContextMenu.bind(this), true); |
- |
-this._restoreBreakpoints(); |
-} |
- |
-WebInspector.XHRBreakpointsSidebarPane.prototype = { |
-_emptyElementContextMenu: function(event) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add breakpoint" : "Add Breakpoint"), this._addButtonClicked.bind(this)); |
-contextMenu.show(); |
-}, |
- |
-_addButtonClicked: function(event) |
-{ |
-if (event) |
-event.consume(); |
- |
-this.expand(); |
- |
-var inputElementContainer = document.createElement("p"); |
-inputElementContainer.className = "breakpoint-condition"; |
-var inputElement = document.createElement("span"); |
-inputElementContainer.textContent = WebInspector.UIString("Break when URL contains:"); |
-inputElement.className = "editing"; |
-inputElement.id = "breakpoint-condition-input"; |
-inputElementContainer.appendChild(inputElement); |
-this._addListElement(inputElementContainer, this.listElement.firstChild); |
- |
-function finishEditing(accept, e, text) |
-{ |
-this._removeListElement(inputElementContainer); |
-if (accept) { |
-this._setBreakpoint(text, true); |
-this._saveBreakpoints(); |
-} |
-} |
- |
-var config = new WebInspector.EditingConfig(finishEditing.bind(this, true), finishEditing.bind(this, false)); |
-WebInspector.startEditing(inputElement, config); |
-}, |
- |
-_setBreakpoint: function(url, enabled) |
-{ |
-if (url in this._breakpointElements) |
-return; |
- |
-var element = document.createElement("li"); |
-element._url = url; |
-element.addEventListener("contextmenu", this._contextMenu.bind(this, url), true); |
- |
-var checkboxElement = document.createElement("input"); |
-checkboxElement.className = "checkbox-elem"; |
-checkboxElement.type = "checkbox"; |
-checkboxElement.checked = enabled; |
-checkboxElement.addEventListener("click", this._checkboxClicked.bind(this, url), false); |
-element._checkboxElement = checkboxElement; |
-element.appendChild(checkboxElement); |
- |
-var labelElement = document.createElement("span"); |
-if (!url) |
-labelElement.textContent = WebInspector.UIString("Any XHR"); |
-else |
-labelElement.textContent = WebInspector.UIString("URL contains \"%s\"", url); |
-labelElement.addStyleClass("cursor-auto"); |
-labelElement.addEventListener("dblclick", this._labelClicked.bind(this, url), false); |
-element.appendChild(labelElement); |
- |
-var currentElement = this.listElement.firstChild; |
-while (currentElement) { |
-if (currentElement._url && currentElement._url < element._url) |
-break; |
-currentElement = currentElement.nextSibling; |
-} |
-this._addListElement(element, currentElement); |
-this._breakpointElements[url] = element; |
-if (enabled) |
-DOMDebuggerAgent.setXHRBreakpoint(url); |
-}, |
- |
-_removeBreakpoint: function(url) |
-{ |
-var element = this._breakpointElements[url]; |
-if (!element) |
-return; |
- |
-this._removeListElement(element); |
-delete this._breakpointElements[url]; |
-if (element._checkboxElement.checked) |
-DOMDebuggerAgent.removeXHRBreakpoint(url); |
-}, |
- |
-_contextMenu: function(url, event) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-function removeBreakpoint() |
-{ |
-this._removeBreakpoint(url); |
-this._saveBreakpoints(); |
-} |
+WebInspector.JavaScriptBreakpointsSidebarPane=function(breakpointManager,showSourceLineDelegate) |
+{WebInspector.SidebarPane.call(this,WebInspector.UIString("Breakpoints"));this.registerRequiredCSS("breakpointsList.css");this._breakpointManager=breakpointManager;this._showSourceLineDelegate=showSourceLineDelegate;this.listElement=document.createElement("ol");this.listElement.className="breakpoint-list";this.emptyElement=document.createElement("div");this.emptyElement.className="info";this.emptyElement.textContent=WebInspector.UIString("No Breakpoints");this.bodyElement.appendChild(this.emptyElement);this._items=new Map();var breakpointLocations=this._breakpointManager.allBreakpointLocations();for(var i=0;i<breakpointLocations.length;++i) |
+this._addBreakpoint(breakpointLocations[i].breakpoint,breakpointLocations[i].uiLocation);this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded,this._breakpointAdded,this);this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved,this._breakpointRemoved,this);this.emptyElement.addEventListener("contextmenu",this._emptyElementContextMenu.bind(this),true);} |
+WebInspector.JavaScriptBreakpointsSidebarPane.prototype={_emptyElementContextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);var breakpointActive=WebInspector.debuggerModel.breakpointsActive();var breakpointActiveTitle=breakpointActive?WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Deactivate breakpoints":"Deactivate Breakpoints"):WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Activate breakpoints":"Activate Breakpoints");contextMenu.appendItem(breakpointActiveTitle,WebInspector.debuggerModel.setBreakpointsActive.bind(WebInspector.debuggerModel,!breakpointActive));contextMenu.show();},_breakpointAdded:function(event) |
+{this._breakpointRemoved(event);var breakpoint=(event.data.breakpoint);var uiLocation=(event.data.uiLocation);this._addBreakpoint(breakpoint,uiLocation);},_addBreakpoint:function(breakpoint,uiLocation) |
+{var element=document.createElement("li");element.addStyleClass("cursor-pointer");element.addEventListener("contextmenu",this._breakpointContextMenu.bind(this,breakpoint),true);element.addEventListener("click",this._breakpointClicked.bind(this,uiLocation),false);var checkbox=document.createElement("input");checkbox.className="checkbox-elem";checkbox.type="checkbox";checkbox.checked=breakpoint.enabled();checkbox.addEventListener("click",this._breakpointCheckboxClicked.bind(this,breakpoint),false);element.appendChild(checkbox);var labelElement=document.createTextNode(uiLocation.linkText());element.appendChild(labelElement);var snippetElement=document.createElement("div");snippetElement.className="source-text monospace";element.appendChild(snippetElement);function didRequestContent(content,contentEncoded,mimeType) |
+{var lineEndings=content.lineEndings();if(uiLocation.lineNumber<lineEndings.length) |
+snippetElement.textContent=content.substring(lineEndings[uiLocation.lineNumber-1],lineEndings[uiLocation.lineNumber]);} |
+uiLocation.uiSourceCode.requestContent(didRequestContent.bind(this));element._data=uiLocation;var currentElement=this.listElement.firstChild;while(currentElement){if(currentElement._data&&this._compareBreakpoints(currentElement._data,element._data)>0) |
+break;currentElement=currentElement.nextSibling;} |
+this._addListElement(element,currentElement);var breakpointItem={};breakpointItem.element=element;breakpointItem.checkbox=checkbox;this._items.put(breakpoint,breakpointItem);this.expand();},_breakpointRemoved:function(event) |
+{var breakpoint=(event.data.breakpoint);var uiLocation=(event.data.uiLocation);var breakpointItem=this._items.get(breakpoint);if(!breakpointItem) |
+return;this._items.remove(breakpoint);this._removeListElement(breakpointItem.element);},highlightBreakpoint:function(breakpoint) |
+{var breakpointItem=this._items.get(breakpoint);if(!breakpointItem) |
+return;breakpointItem.element.addStyleClass("breakpoint-hit");this._highlightedBreakpointItem=breakpointItem;},clearBreakpointHighlight:function() |
+{if(this._highlightedBreakpointItem){this._highlightedBreakpointItem.element.removeStyleClass("breakpoint-hit");delete this._highlightedBreakpointItem;}},_breakpointClicked:function(uiLocation,event) |
+{this._showSourceLineDelegate(uiLocation.uiSourceCode,uiLocation.lineNumber);},_breakpointCheckboxClicked:function(breakpoint,event) |
+{event.consume();breakpoint.setEnabled(event.target.checked);},_breakpointContextMenu:function(breakpoint,event) |
+{var breakpoints=this._items.values();var contextMenu=new WebInspector.ContextMenu(event);contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove breakpoint":"Remove Breakpoint"),breakpoint.remove.bind(breakpoint));if(breakpoints.length>1){var removeAllTitle=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove all breakpoints":"Remove All Breakpoints");contextMenu.appendItem(removeAllTitle,this._breakpointManager.removeAllBreakpoints.bind(this._breakpointManager));} |
+contextMenu.appendSeparator();var breakpointActive=WebInspector.debuggerModel.breakpointsActive();var breakpointActiveTitle=breakpointActive?WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Deactivate breakpoints":"Deactivate Breakpoints"):WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Activate breakpoints":"Activate Breakpoints");contextMenu.appendItem(breakpointActiveTitle,WebInspector.debuggerModel.setBreakpointsActive.bind(WebInspector.debuggerModel,!breakpointActive));function enabledBreakpointCount(breakpoints) |
+{var count=0;for(var i=0;i<breakpoints.length;++i){if(breakpoints[i].checkbox.checked) |
+count++;} |
+return count;} |
+if(breakpoints.length>1){var enableBreakpointCount=enabledBreakpointCount(breakpoints);var enableTitle=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Enable all breakpoints":"Enable All Breakpoints");var disableTitle=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Disable all breakpoints":"Disable All Breakpoints");contextMenu.appendSeparator();contextMenu.appendItem(enableTitle,this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager,true),!(enableBreakpointCount!=breakpoints.length));contextMenu.appendItem(disableTitle,this._breakpointManager.toggleAllBreakpoints.bind(this._breakpointManager,false),!(enableBreakpointCount>1));} |
+contextMenu.show();},_addListElement:function(element,beforeElement) |
+{if(beforeElement) |
+this.listElement.insertBefore(element,beforeElement);else{if(!this.listElement.firstChild){this.bodyElement.removeChild(this.emptyElement);this.bodyElement.appendChild(this.listElement);} |
+this.listElement.appendChild(element);}},_removeListElement:function(element) |
+{this.listElement.removeChild(element);if(!this.listElement.firstChild){this.bodyElement.removeChild(this.listElement);this.bodyElement.appendChild(this.emptyElement);}},_compare:function(x,y) |
+{if(x!==y) |
+return x<y?-1:1;return 0;},_compareBreakpoints:function(b1,b2) |
+{return this._compare(b1.uiSourceCode.originURL(),b2.uiSourceCode.originURL())||this._compare(b1.lineNumber,b2.lineNumber);},reset:function() |
+{this.listElement.removeChildren();if(this.listElement.parentElement){this.bodyElement.removeChild(this.listElement);this.bodyElement.appendChild(this.emptyElement);} |
+this._items.clear();},__proto__:WebInspector.SidebarPane.prototype} |
+WebInspector.XHRBreakpointsSidebarPane=function() |
+{WebInspector.NativeBreakpointsSidebarPane.call(this,WebInspector.UIString("XHR Breakpoints"));this._breakpointElements={};var addButton=document.createElement("button");addButton.className="pane-title-button add";addButton.addEventListener("click",this._addButtonClicked.bind(this),false);addButton.title=WebInspector.UIString("Add XHR breakpoint");this.titleElement.appendChild(addButton);this.emptyElement.addEventListener("contextmenu",this._emptyElementContextMenu.bind(this),true);this._restoreBreakpoints();} |
+WebInspector.XHRBreakpointsSidebarPane.prototype={_emptyElementContextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add breakpoint":"Add Breakpoint"),this._addButtonClicked.bind(this));contextMenu.show();},_addButtonClicked:function(event) |
+{if(event) |
+event.consume();this.expand();var inputElementContainer=document.createElement("p");inputElementContainer.className="breakpoint-condition";var inputElement=document.createElement("span");inputElementContainer.textContent=WebInspector.UIString("Break when URL contains:");inputElement.className="editing";inputElement.id="breakpoint-condition-input";inputElementContainer.appendChild(inputElement);this._addListElement(inputElementContainer,this.listElement.firstChild);function finishEditing(accept,e,text) |
+{this._removeListElement(inputElementContainer);if(accept){this._setBreakpoint(text,true);this._saveBreakpoints();}} |
+var config=new WebInspector.EditingConfig(finishEditing.bind(this,true),finishEditing.bind(this,false));WebInspector.startEditing(inputElement,config);},_setBreakpoint:function(url,enabled) |
+{if(url in this._breakpointElements) |
+return;var element=document.createElement("li");element._url=url;element.addEventListener("contextmenu",this._contextMenu.bind(this,url),true);var checkboxElement=document.createElement("input");checkboxElement.className="checkbox-elem";checkboxElement.type="checkbox";checkboxElement.checked=enabled;checkboxElement.addEventListener("click",this._checkboxClicked.bind(this,url),false);element._checkboxElement=checkboxElement;element.appendChild(checkboxElement);var labelElement=document.createElement("span");if(!url) |
+labelElement.textContent=WebInspector.UIString("Any XHR");else |
+labelElement.textContent=WebInspector.UIString("URL contains \"%s\"",url);labelElement.addStyleClass("cursor-auto");labelElement.addEventListener("dblclick",this._labelClicked.bind(this,url),false);element.appendChild(labelElement);var currentElement=this.listElement.firstChild;while(currentElement){if(currentElement._url&¤tElement._url<element._url) |
+break;currentElement=currentElement.nextSibling;} |
+this._addListElement(element,currentElement);this._breakpointElements[url]=element;if(enabled) |
+DOMDebuggerAgent.setXHRBreakpoint(url);},_removeBreakpoint:function(url) |
+{var element=this._breakpointElements[url];if(!element) |
+return;this._removeListElement(element);delete this._breakpointElements[url];if(element._checkboxElement.checked) |
+DOMDebuggerAgent.removeXHRBreakpoint(url);},_contextMenu:function(url,event) |
+{var contextMenu=new WebInspector.ContextMenu(event);function removeBreakpoint() |
+{this._removeBreakpoint(url);this._saveBreakpoints();} |
function removeAllBreakpoints() |
-{ |
-for (var url in this._breakpointElements) |
-this._removeBreakpoint(url); |
-this._saveBreakpoints(); |
-} |
-var removeAllTitle = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove all breakpoints" : "Remove All Breakpoints"); |
- |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add breakpoint" : "Add Breakpoint"), this._addButtonClicked.bind(this)); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove breakpoint" : "Remove Breakpoint"), removeBreakpoint.bind(this)); |
-contextMenu.appendItem(removeAllTitle, removeAllBreakpoints.bind(this)); |
-contextMenu.show(); |
-}, |
- |
-_checkboxClicked: function(url, event) |
-{ |
-if (event.target.checked) |
-DOMDebuggerAgent.setXHRBreakpoint(url); |
-else |
-DOMDebuggerAgent.removeXHRBreakpoint(url); |
-this._saveBreakpoints(); |
-}, |
- |
-_labelClicked: function(url) |
-{ |
-var element = this._breakpointElements[url]; |
-var inputElement = document.createElement("span"); |
-inputElement.className = "breakpoint-condition editing"; |
-inputElement.textContent = url; |
-this.listElement.insertBefore(inputElement, element); |
-element.addStyleClass("hidden"); |
- |
-function finishEditing(accept, e, text) |
-{ |
-this._removeListElement(inputElement); |
-if (accept) { |
-this._removeBreakpoint(url); |
-this._setBreakpoint(text, element._checkboxElement.checked); |
-this._saveBreakpoints(); |
-} else |
-element.removeStyleClass("hidden"); |
-} |
- |
-WebInspector.startEditing(inputElement, new WebInspector.EditingConfig(finishEditing.bind(this, true), finishEditing.bind(this, false))); |
-}, |
- |
-highlightBreakpoint: function(url) |
-{ |
-var element = this._breakpointElements[url]; |
-if (!element) |
-return; |
-this.expand(); |
-element.addStyleClass("breakpoint-hit"); |
-this._highlightedElement = element; |
-}, |
- |
-clearBreakpointHighlight: function() |
-{ |
-if (this._highlightedElement) { |
-this._highlightedElement.removeStyleClass("breakpoint-hit"); |
-delete this._highlightedElement; |
-} |
-}, |
- |
-_saveBreakpoints: function() |
-{ |
-var breakpoints = []; |
-for (var url in this._breakpointElements) |
-breakpoints.push({ url: url, enabled: this._breakpointElements[url]._checkboxElement.checked }); |
-WebInspector.settings.xhrBreakpoints.set(breakpoints); |
-}, |
- |
-_restoreBreakpoints: function() |
-{ |
-var breakpoints = WebInspector.settings.xhrBreakpoints.get(); |
-for (var i = 0; i < breakpoints.length; ++i) { |
-var breakpoint = breakpoints[i]; |
-if (breakpoint && typeof breakpoint.url === "string") |
-this._setBreakpoint(breakpoint.url, breakpoint.enabled); |
-} |
-}, |
- |
-__proto__: WebInspector.NativeBreakpointsSidebarPane.prototype |
-} |
- |
- |
-WebInspector.EventListenerBreakpointsSidebarPane = function() |
-{ |
-WebInspector.SidebarPane.call(this, WebInspector.UIString("Event Listener Breakpoints")); |
-this.registerRequiredCSS("breakpointsList.css"); |
- |
-this.categoriesElement = document.createElement("ol"); |
-this.categoriesElement.tabIndex = 0; |
-this.categoriesElement.addStyleClass("properties-tree"); |
-this.categoriesElement.addStyleClass("event-listener-breakpoints"); |
-this.categoriesTreeOutline = new TreeOutline(this.categoriesElement); |
-this.bodyElement.appendChild(this.categoriesElement); |
- |
-this._breakpointItems = {}; |
- |
- |
- |
-this._createCategory(WebInspector.UIString("Animation"), false, ["requestAnimationFrame", "cancelAnimationFrame", "animationFrameFired"]); |
-this._createCategory(WebInspector.UIString("Control"), true, ["resize", "scroll", "zoom", "focus", "blur", "select", "change", "submit", "reset"]); |
-this._createCategory(WebInspector.UIString("Clipboard"), true, ["copy", "cut", "paste", "beforecopy", "beforecut", "beforepaste"]); |
-this._createCategory(WebInspector.UIString("DOM Mutation"), true, ["DOMActivate", "DOMFocusIn", "DOMFocusOut", "DOMAttrModified", "DOMCharacterDataModified", "DOMNodeInserted", "DOMNodeInsertedIntoDocument", "DOMNodeRemoved", "DOMNodeRemovedFromDocument", "DOMSubtreeModified", "DOMContentLoaded"]); |
-this._createCategory(WebInspector.UIString("Device"), true, ["deviceorientation", "devicemotion"]); |
-this._createCategory(WebInspector.UIString("Keyboard"), true, ["keydown", "keyup", "keypress", "input"]); |
-this._createCategory(WebInspector.UIString("Load"), true, ["load", "unload", "abort", "error"]); |
-this._createCategory(WebInspector.UIString("Mouse"), true, ["click", "dblclick", "mousedown", "mouseup", "mouseover", "mousemove", "mouseout", "mousewheel"]); |
-this._createCategory(WebInspector.UIString("Timer"), false, ["setTimer", "clearTimer", "timerFired"]); |
-this._createCategory(WebInspector.UIString("Touch"), true, ["touchstart", "touchmove", "touchend", "touchcancel"]); |
- |
-this._restoreBreakpoints(); |
-} |
- |
-WebInspector.EventListenerBreakpointsSidebarPane.categotyListener = "listener:"; |
-WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation = "instrumentation:"; |
- |
-WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI = function(eventName) |
-{ |
-if (!WebInspector.EventListenerBreakpointsSidebarPane._eventNamesForUI) { |
-WebInspector.EventListenerBreakpointsSidebarPane._eventNamesForUI = { |
-"instrumentation:setTimer": WebInspector.UIString("Set Timer"), |
-"instrumentation:clearTimer": WebInspector.UIString("Clear Timer"), |
-"instrumentation:timerFired": WebInspector.UIString("Timer Fired"), |
-"instrumentation:requestAnimationFrame": WebInspector.UIString("Request Animation Frame"), |
-"instrumentation:cancelAnimationFrame": WebInspector.UIString("Cancel Animation Frame"), |
-"instrumentation:animationFrameFired": WebInspector.UIString("Animation Frame Fired") |
-}; |
-} |
-return WebInspector.EventListenerBreakpointsSidebarPane._eventNamesForUI[eventName] || eventName.substring(eventName.indexOf(":") + 1); |
-} |
- |
-WebInspector.EventListenerBreakpointsSidebarPane.prototype = { |
-_createCategory: function(name, isDOMEvent, eventNames) |
-{ |
-var categoryItem = {}; |
-categoryItem.element = new TreeElement(name); |
-this.categoriesTreeOutline.appendChild(categoryItem.element); |
-categoryItem.element.listItemElement.addStyleClass("event-category"); |
-categoryItem.element.selectable = true; |
- |
-categoryItem.checkbox = this._createCheckbox(categoryItem.element); |
-categoryItem.checkbox.addEventListener("click", this._categoryCheckboxClicked.bind(this, categoryItem), true); |
- |
-categoryItem.children = {}; |
-for (var i = 0; i < eventNames.length; ++i) { |
-var eventName = (isDOMEvent ? WebInspector.EventListenerBreakpointsSidebarPane.categotyListener : WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation) + eventNames[i]; |
- |
-var breakpointItem = {}; |
-var title = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName); |
-breakpointItem.element = new TreeElement(title); |
-categoryItem.element.appendChild(breakpointItem.element); |
-var hitMarker = document.createElement("div"); |
-hitMarker.className = "breakpoint-hit-marker"; |
-breakpointItem.element.listItemElement.appendChild(hitMarker); |
-breakpointItem.element.listItemElement.addStyleClass("source-code"); |
-breakpointItem.element.selectable = true; |
- |
-breakpointItem.checkbox = this._createCheckbox(breakpointItem.element); |
-breakpointItem.checkbox.addEventListener("click", this._breakpointCheckboxClicked.bind(this, eventName), true); |
-breakpointItem.parent = categoryItem; |
- |
-this._breakpointItems[eventName] = breakpointItem; |
-categoryItem.children[eventName] = breakpointItem; |
-} |
-}, |
- |
-_createCheckbox: function(treeElement) |
-{ |
-var checkbox = document.createElement("input"); |
-checkbox.className = "checkbox-elem"; |
-checkbox.type = "checkbox"; |
-treeElement.listItemElement.insertBefore(checkbox, treeElement.listItemElement.firstChild); |
-return checkbox; |
-}, |
- |
-_categoryCheckboxClicked: function(categoryItem) |
-{ |
-var checked = categoryItem.checkbox.checked; |
-for (var eventName in categoryItem.children) { |
-var breakpointItem = categoryItem.children[eventName]; |
-if (breakpointItem.checkbox.checked === checked) |
-continue; |
-if (checked) |
-this._setBreakpoint(eventName); |
-else |
-this._removeBreakpoint(eventName); |
-} |
-this._saveBreakpoints(); |
-}, |
- |
-_breakpointCheckboxClicked: function(eventName, event) |
-{ |
-if (event.target.checked) |
-this._setBreakpoint(eventName); |
-else |
-this._removeBreakpoint(eventName); |
-this._saveBreakpoints(); |
-}, |
- |
-_setBreakpoint: function(eventName) |
-{ |
-var breakpointItem = this._breakpointItems[eventName]; |
-if (!breakpointItem) |
-return; |
-breakpointItem.checkbox.checked = true; |
-if (eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener)) |
-DOMDebuggerAgent.setEventListenerBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener.length)); |
-else if (eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation)) |
-DOMDebuggerAgent.setInstrumentationBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation.length)); |
-this._updateCategoryCheckbox(breakpointItem.parent); |
-}, |
- |
-_removeBreakpoint: function(eventName) |
-{ |
-var breakpointItem = this._breakpointItems[eventName]; |
-if (!breakpointItem) |
-return; |
-breakpointItem.checkbox.checked = false; |
-if (eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener)) |
-DOMDebuggerAgent.removeEventListenerBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener.length)); |
-else if (eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation)) |
-DOMDebuggerAgent.removeInstrumentationBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation.length)); |
-this._updateCategoryCheckbox(breakpointItem.parent); |
-}, |
- |
-_updateCategoryCheckbox: function(categoryItem) |
-{ |
-var hasEnabled = false, hasDisabled = false; |
-for (var eventName in categoryItem.children) { |
-var breakpointItem = categoryItem.children[eventName]; |
-if (breakpointItem.checkbox.checked) |
-hasEnabled = true; |
-else |
-hasDisabled = true; |
-} |
-categoryItem.checkbox.checked = hasEnabled; |
-categoryItem.checkbox.indeterminate = hasEnabled && hasDisabled; |
-}, |
- |
-highlightBreakpoint: function(eventName) |
-{ |
-var breakpointItem = this._breakpointItems[eventName]; |
-if (!breakpointItem) |
-return; |
-this.expand(); |
-breakpointItem.parent.element.expand(); |
-breakpointItem.element.listItemElement.addStyleClass("breakpoint-hit"); |
-this._highlightedElement = breakpointItem.element.listItemElement; |
-}, |
- |
-clearBreakpointHighlight: function() |
-{ |
-if (this._highlightedElement) { |
-this._highlightedElement.removeStyleClass("breakpoint-hit"); |
-delete this._highlightedElement; |
-} |
-}, |
- |
-_saveBreakpoints: function() |
-{ |
-var breakpoints = []; |
-for (var eventName in this._breakpointItems) { |
-if (this._breakpointItems[eventName].checkbox.checked) |
-breakpoints.push({ eventName: eventName }); |
-} |
-WebInspector.settings.eventListenerBreakpoints.set(breakpoints); |
-}, |
- |
-_restoreBreakpoints: function() |
-{ |
-var breakpoints = WebInspector.settings.eventListenerBreakpoints.get(); |
-for (var i = 0; i < breakpoints.length; ++i) { |
-var breakpoint = breakpoints[i]; |
-if (breakpoint && typeof breakpoint.eventName === "string") |
-this._setBreakpoint(breakpoint.eventName); |
-} |
-}, |
- |
-__proto__: WebInspector.SidebarPane.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.CallStackSidebarPane = function() |
-{ |
-WebInspector.SidebarPane.call(this, WebInspector.UIString("Call Stack")); |
-this._model = WebInspector.debuggerModel; |
- |
-this.bodyElement.addEventListener("keydown", this._keyDown.bind(this), true); |
-this.bodyElement.tabIndex = 0; |
-} |
- |
-WebInspector.CallStackSidebarPane.prototype = { |
-update: function(callFrames) |
-{ |
-this.bodyElement.removeChildren(); |
-delete this._statusMessageElement; |
-this.placards = []; |
- |
-if (!callFrames) { |
-var infoElement = document.createElement("div"); |
-infoElement.className = "info"; |
-infoElement.textContent = WebInspector.UIString("Not Paused"); |
-this.bodyElement.appendChild(infoElement); |
-return; |
-} |
- |
-for (var i = 0; i < callFrames.length; ++i) { |
-var callFrame = callFrames[i]; |
-var placard = new WebInspector.CallStackSidebarPane.Placard(callFrame, this); |
-placard.element.addEventListener("click", this._placardSelected.bind(this, placard), false); |
-this.placards.push(placard); |
-this.bodyElement.appendChild(placard.element); |
-} |
-}, |
- |
-setSelectedCallFrame: function(x) |
-{ |
-for (var i = 0; i < this.placards.length; ++i) { |
-var placard = this.placards[i]; |
-placard.selected = (placard._callFrame === x); |
-} |
-}, |
- |
- |
-_selectNextCallFrameOnStack: function(event) |
-{ |
-var index = this._selectedCallFrameIndex(); |
-if (index == -1) |
-return true; |
-this._selectedPlacardByIndex(index + 1); |
-return true; |
-}, |
- |
- |
-_selectPreviousCallFrameOnStack: function(event) |
-{ |
-var index = this._selectedCallFrameIndex(); |
-if (index == -1) |
-return true; |
-this._selectedPlacardByIndex(index - 1); |
-return true; |
-}, |
- |
- |
-_selectedPlacardByIndex: function(index) |
-{ |
-if (index < 0 || index >= this.placards.length) |
-return; |
-this._placardSelected(this.placards[index]) |
-}, |
- |
- |
-_selectedCallFrameIndex: function() |
-{ |
-if (!this._model.selectedCallFrame()) |
-return -1; |
-for (var i = 0; i < this.placards.length; ++i) { |
-var placard = this.placards[i]; |
-if (placard._callFrame === this._model.selectedCallFrame()) |
-return i; |
-} |
-return -1; |
-}, |
- |
-_placardSelected: function(placard) |
-{ |
-this._model.setSelectedCallFrame(placard._callFrame); |
-}, |
- |
-_copyStackTrace: function() |
-{ |
-var text = ""; |
-for (var i = 0; i < this.placards.length; ++i) |
-text += this.placards[i].title + " (" + this.placards[i].subtitle + ")\n"; |
-InspectorFrontendHost.copyText(text); |
-}, |
- |
- |
-registerShortcuts: function(registerShortcutDelegate) |
-{ |
-registerShortcutDelegate(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.NextCallFrame, this._selectNextCallFrameOnStack.bind(this)); |
-registerShortcutDelegate(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.PrevCallFrame, this._selectPreviousCallFrameOnStack.bind(this)); |
-}, |
- |
-setStatus: function(status) |
-{ |
-if (!this._statusMessageElement) { |
-this._statusMessageElement = document.createElement("div"); |
-this._statusMessageElement.className = "info"; |
-this.bodyElement.appendChild(this._statusMessageElement); |
-} |
-if (typeof status === "string") |
-this._statusMessageElement.textContent = status; |
-else { |
-this._statusMessageElement.removeChildren(); |
-this._statusMessageElement.appendChild(status); |
-} |
-}, |
- |
-_keyDown: function(event) |
-{ |
-if (event.altKey || event.shiftKey || event.metaKey || event.ctrlKey) |
-return; |
- |
-if (event.keyIdentifier === "Up") { |
-this._selectPreviousCallFrameOnStack(); |
-event.consume(); |
-} else if (event.keyIdentifier === "Down") { |
-this._selectNextCallFrameOnStack(); |
-event.consume(); |
-} |
-}, |
- |
-__proto__: WebInspector.SidebarPane.prototype |
-} |
- |
- |
-WebInspector.CallStackSidebarPane.Placard = function(callFrame, pane) |
-{ |
-WebInspector.Placard.call(this, callFrame.functionName || WebInspector.UIString("(anonymous function)"), ""); |
-callFrame.createLiveLocation(this._update.bind(this)); |
-this.element.addEventListener("contextmenu", this._placardContextMenu.bind(this), true); |
-this._callFrame = callFrame; |
-this._pane = pane; |
-} |
- |
-WebInspector.CallStackSidebarPane.Placard.prototype = { |
-_update: function(uiLocation) |
-{ |
-this.subtitle = uiLocation.linkText().trimMiddle(100); |
-}, |
- |
-_placardContextMenu: function(event) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
- |
-if (WebInspector.debuggerModel.canSetScriptSource()) { |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Restart frame" : "Restart Frame"), this._restartFrame.bind(this)); |
-contextMenu.appendSeparator(); |
-} |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy stack trace" : "Copy Stack Trace"), this._pane._copyStackTrace.bind(this._pane)); |
- |
-contextMenu.show(); |
-}, |
- |
-_restartFrame: function() |
-{ |
-this._callFrame.restart(undefined); |
-}, |
- |
-__proto__: WebInspector.Placard.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.FilteredItemSelectionDialog = function(delegate) |
-{ |
-WebInspector.DialogDelegate.call(this); |
- |
-var xhr = new XMLHttpRequest(); |
-xhr.open("GET", "filteredItemSelectionDialog.css", false); |
-xhr.send(null); |
- |
-this.element = document.createElement("div"); |
-this.element.className = "filtered-item-list-dialog"; |
-this.element.addEventListener("keydown", this._onKeyDown.bind(this), false); |
-var styleElement = this.element.createChild("style"); |
-styleElement.type = "text/css"; |
-styleElement.textContent = xhr.responseText; |
- |
-this._promptElement = this.element.createChild("input", "monospace"); |
-this._promptElement.addEventListener("input", this._onInput.bind(this), false); |
-this._promptElement.type = "text"; |
-this._promptElement.setAttribute("spellcheck", "false"); |
- |
-this._progressElement = this.element.createChild("div", "progress"); |
- |
-this._filteredItems = []; |
-this._viewportControl = new WebInspector.ViewportControl(this); |
-this._itemElementsContainer = this._viewportControl.element; |
-this._itemElementsContainer.addStyleClass("container"); |
-this._itemElementsContainer.addStyleClass("monospace"); |
-this._itemElementsContainer.addEventListener("click", this._onClick.bind(this), false); |
-this.element.appendChild(this._itemElementsContainer); |
- |
-this._delegate = delegate; |
-this._delegate.requestItems(this._itemsLoaded.bind(this)); |
-} |
- |
-WebInspector.FilteredItemSelectionDialog.prototype = { |
- |
-position: function(element, relativeToElement) |
-{ |
-const minWidth = 500; |
-const minHeight = 204; |
-var width = Math.max(relativeToElement.offsetWidth * 2 / 3, minWidth); |
-var height = Math.max(relativeToElement.offsetHeight * 2 / 3, minHeight); |
- |
-this.element.style.width = width + "px"; |
-this.element.style.height = height + "px"; |
- |
-const shadowPadding = 20; |
-element.positionAt( |
-relativeToElement.totalOffsetLeft() + Math.max((relativeToElement.offsetWidth - width - 2 * shadowPadding) / 2, shadowPadding), |
-relativeToElement.totalOffsetTop() + Math.max((relativeToElement.offsetHeight - height - 2 * shadowPadding) / 2, shadowPadding)); |
-}, |
- |
-focus: function() |
-{ |
-WebInspector.setCurrentFocusElement(this._promptElement); |
-if (this._filteredItems.length && this._viewportControl.lastVisibleIndex() === -1) |
-this._viewportControl.refresh(); |
-}, |
- |
-willHide: function() |
-{ |
-if (this._isHiding) |
-return; |
-this._isHiding = true; |
-this._delegate.dispose(); |
-if (this._filterTimer) |
-clearTimeout(this._filterTimer); |
-}, |
- |
-renderAsTwoRows: function() |
-{ |
-this._renderAsTwoRows = true; |
-}, |
- |
-onEnter: function() |
-{ |
-if (!this._delegate.itemsCount()) |
-return; |
-this._delegate.selectItem(this._filteredItems[this._selectedIndexInFiltered], this._promptElement.value.trim()); |
-}, |
- |
- |
-_itemsLoaded: function(loadedCount, totalCount) |
-{ |
-this._loadedCount = loadedCount; |
-this._totalCount = totalCount; |
- |
-if (this._loadTimeout) |
-return; |
-this._loadTimeout = setTimeout(this._updateAfterItemsLoaded.bind(this), 100); |
-}, |
- |
-_updateAfterItemsLoaded: function() |
-{ |
-delete this._loadTimeout; |
-this._filterItems(); |
-if (this._loadedCount === this._totalCount) |
-this._progressElement.style.backgroundImage = ""; |
-else { |
-const color = "rgb(66, 129, 235)"; |
-const percent = ((this._loadedCount / this._totalCount) * 100) + "%"; |
-this._progressElement.style.backgroundImage = "-webkit-linear-gradient(left, " + color + ", " + color + " " + percent + ", transparent " + percent + ")"; |
-} |
-}, |
- |
- |
-_createItemElement: function(index) |
-{ |
-var itemElement = document.createElement("div"); |
-itemElement.className = "filtered-item-list-dialog-item " + (this._renderAsTwoRows ? "two-rows" : "one-row"); |
-itemElement._titleElement = itemElement.createChild("span"); |
-itemElement._titleElement.textContent = this._delegate.itemTitleAt(index); |
-itemElement._titleSuffixElement = itemElement.createChild("span"); |
-itemElement._titleSuffixElement.textContent = this._delegate.itemSuffixAt(index); |
-itemElement._subtitleElement = itemElement.createChild("div", "filtered-item-list-dialog-subtitle"); |
-itemElement._subtitleElement.textContent = this._delegate.itemSubtitleAt(index) || "\u200B"; |
-itemElement._index = index; |
- |
-var key = this._delegate.itemKeyAt(index); |
-var ranges = []; |
-var match; |
-if (this._query) { |
-var regex = this._createSearchRegex(this._query, true); |
-while ((match = regex.exec(key)) !== null && match[0]) |
-ranges.push({ offset: match.index, length: regex.lastIndex - match.index }); |
-if (ranges.length) |
-WebInspector.highlightRangesWithStyleClass(itemElement, ranges, "highlight"); |
-} |
-if (index === this._filteredItems[this._selectedIndexInFiltered]) |
-itemElement.addStyleClass("selected"); |
- |
-return itemElement; |
-}, |
- |
- |
-_createSearchRegex: function(query, isGlobal) |
-{ |
-const toEscape = String.regexSpecialCharacters(); |
-var regexString = ""; |
-for (var i = 0; i < query.length; ++i) { |
-var c = query.charAt(i); |
-if (toEscape.indexOf(c) !== -1) |
-c = "\\" + c; |
-if (i) |
-regexString += "[^" + c + "]*"; |
-regexString += c; |
-} |
-return new RegExp(regexString, "i" + (isGlobal ? "g" : "")); |
-}, |
- |
- |
-_createScoringRegex: function(query, ignoreCase, camelCase) |
-{ |
-if (!camelCase || (camelCase && ignoreCase)) |
-query = query.toUpperCase(); |
-var regexString = ""; |
-for (var i = 0; i < query.length; ++i) { |
-var c = query.charAt(i); |
-if (c < "A" || c > "Z") |
-continue; |
-if (regexString) |
-regexString += camelCase ? "[^A-Z]*" : "[^-_ .]*[-_ .]"; |
-regexString += c; |
-} |
-if (!camelCase) |
-regexString = "(?:^|[-_ .])" + regexString; |
-return new RegExp(regexString, camelCase ? "" : "i"); |
-}, |
- |
- |
-setQuery: function(query) |
-{ |
-this._promptElement.value = query; |
-this._scheduleFilter(); |
-}, |
- |
-_filterItems: function() |
-{ |
-delete this._filterTimer; |
- |
-var query = this._delegate.rewriteQuery(this._promptElement.value.trim()); |
-this._query = query; |
- |
-var ignoreCase = (query === query.toLowerCase()); |
- |
-var filterRegex = query ? this._createSearchRegex(query) : null; |
-var camelCaseScoringRegex = query ? this._createScoringRegex(query, ignoreCase, true) : null; |
-var underscoreScoringRegex = query ? this._createScoringRegex(query, ignoreCase, false) : null; |
- |
-var oldSelectedAbsoluteIndex = this._selectedIndexInFiltered ? this._filteredItems[this._selectedIndexInFiltered] : null; |
-this._filteredItems = []; |
-this._selectedIndexInFiltered = 0; |
- |
-var cachedKeys = new Array(this._delegate.itemsCount()); |
-var scores = query ? new Array(this._delegate.itemsCount()) : null; |
- |
-for (var i = 0; i < this._delegate.itemsCount(); ++i) { |
-var key = this._delegate.itemKeyAt(i); |
-if (filterRegex && !filterRegex.test(key)) |
-continue; |
-cachedKeys[i] = key; |
-this._filteredItems.push(i); |
- |
-if (!filterRegex) |
-continue; |
- |
-var score = 0; |
-if (underscoreScoringRegex.test(key)) |
-score += 10; |
-if (camelCaseScoringRegex.test(key)) |
-score += ignoreCase ? 10 : 20; |
-for (var j = 0; j < key.length && j < query.length; ++j) { |
-if (key[j] === query[j]) |
-score++; |
-if (key[j].toUpperCase() === query[j].toUpperCase()) |
-score++; |
-else |
-break; |
-} |
-scores[i] = score; |
-} |
- |
-function compareFunction(index1, index2) |
-{ |
-if (scores) { |
-var score1 = scores[index1]; |
-var score2 = scores[index2]; |
-if (score1 > score2) |
-return -1; |
-if (score1 < score2) |
-return 1; |
-} |
-var key1 = cachedKeys[index1]; |
-var key2 = cachedKeys[index2]; |
-return key1.compareTo(key2) || (index2 - index1); |
-} |
- |
-const numberOfItemsToSort = 100; |
-if (this._filteredItems.length > numberOfItemsToSort) |
-this._filteredItems.sortRange(compareFunction.bind(this), 0, this._filteredItems.length - 1, numberOfItemsToSort); |
-else |
-this._filteredItems.sort(compareFunction.bind(this)); |
- |
-for (var i = 0; i < this._filteredItems.length; ++i) { |
-if (this._filteredItems[i] === oldSelectedAbsoluteIndex) { |
-this._selectedIndexInFiltered = i; |
-break; |
-} |
-} |
-this._viewportControl.refresh(); |
-if (!query) |
-this._selectedIndexInFiltered = 0; |
-this._updateSelection(this._selectedIndexInFiltered, false); |
-}, |
- |
-_onInput: function(event) |
-{ |
-this._scheduleFilter(); |
-}, |
- |
-_onKeyDown: function(event) |
-{ |
-var newSelectedIndex = this._selectedIndexInFiltered; |
- |
-switch (event.keyCode) { |
-case WebInspector.KeyboardShortcut.Keys.Down.code: |
-if (++newSelectedIndex >= this._filteredItems.length) |
-newSelectedIndex = this._filteredItems.length - 1; |
-this._updateSelection(newSelectedIndex, true); |
-event.consume(true); |
-break; |
-case WebInspector.KeyboardShortcut.Keys.Up.code: |
-if (--newSelectedIndex < 0) |
-newSelectedIndex = 0; |
-this._updateSelection(newSelectedIndex, false); |
-event.consume(true); |
-break; |
-case WebInspector.KeyboardShortcut.Keys.PageDown.code: |
-newSelectedIndex = Math.min(newSelectedIndex + this._viewportControl.rowsPerViewport(), this._filteredItems.length - 1); |
-this._updateSelection(newSelectedIndex, true); |
-event.consume(true); |
-break; |
-case WebInspector.KeyboardShortcut.Keys.PageUp.code: |
-newSelectedIndex = Math.max(newSelectedIndex - this._viewportControl.rowsPerViewport(), 0); |
-this._updateSelection(newSelectedIndex, false); |
-event.consume(true); |
-break; |
-default: |
-} |
-}, |
- |
-_scheduleFilter: function() |
-{ |
-if (this._filterTimer) |
-return; |
-this._filterTimer = setTimeout(this._filterItems.bind(this), 0); |
-}, |
- |
- |
-_updateSelection: function(index, makeLast) |
-{ |
-var element = this._viewportControl.renderedElementAt(this._selectedIndexInFiltered); |
-if (element) |
-element.removeStyleClass("selected"); |
-this._viewportControl.scrollItemIntoView(index, makeLast); |
-this._selectedIndexInFiltered = index; |
-element = this._viewportControl.renderedElementAt(index); |
-if (element) |
-element.addStyleClass("selected"); |
-}, |
- |
-_onClick: function(event) |
-{ |
-var itemElement = event.target.enclosingNodeOrSelfWithClass("filtered-item-list-dialog-item"); |
-if (!itemElement) |
-return; |
-this._delegate.selectItem(itemElement._index, this._promptElement.value.trim()); |
-WebInspector.Dialog.hide(); |
-}, |
- |
- |
-itemCount: function() |
-{ |
-return this._filteredItems.length; |
-}, |
- |
- |
-itemElement: function(index) |
-{ |
-var delegateIndex = this._filteredItems[index]; |
-var element = this._createItemElement(delegateIndex); |
-element._filteredIndex = index; |
-return element; |
-}, |
- |
-__proto__: WebInspector.DialogDelegate.prototype |
-} |
- |
- |
-WebInspector.SelectionDialogContentProvider = function() |
-{ |
-} |
- |
-WebInspector.SelectionDialogContentProvider.prototype = { |
- |
-itemTitleAt: function(itemIndex) { }, |
- |
- |
-itemSuffixAt: function(itemIndex) { }, |
- |
- |
-itemSubtitleAt: function(itemIndex) { }, |
- |
- |
-itemKeyAt: function(itemIndex) { }, |
- |
- |
-itemsCount: function() { }, |
- |
- |
-requestItems: function(callback) { }, |
- |
- |
-selectItem: function(itemIndex, promptValue) { }, |
- |
- |
-rewriteQuery: function(query) { }, |
- |
-dispose: function() { } |
-} |
- |
- |
-WebInspector.JavaScriptOutlineDialog = function(view, contentProvider) |
-{ |
-WebInspector.SelectionDialogContentProvider.call(this); |
- |
-this._functionItems = []; |
-this._view = view; |
-this._contentProvider = contentProvider; |
-} |
- |
- |
-WebInspector.JavaScriptOutlineDialog.show = function(view, contentProvider) |
-{ |
-if (WebInspector.Dialog.currentInstance()) |
-return null; |
-var delegate = new WebInspector.JavaScriptOutlineDialog(view, contentProvider); |
-var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(delegate); |
-WebInspector.Dialog.show(view.element, filteredItemSelectionDialog); |
-} |
- |
-WebInspector.JavaScriptOutlineDialog.prototype = { |
- |
-itemTitleAt: function(itemIndex) |
-{ |
-var functionItem = this._functionItems[itemIndex]; |
-return functionItem.name + (functionItem.arguments ? functionItem.arguments : ""); |
-}, |
- |
- |
-itemSuffixAt: function(itemIndex) |
-{ |
-return ""; |
-}, |
- |
- |
-itemSubtitleAt: function(itemIndex) |
-{ |
-return ":" + (this._functionItems[itemIndex].line + 1); |
-}, |
- |
- |
-itemKeyAt: function(itemIndex) |
-{ |
-return this._functionItems[itemIndex].name; |
-}, |
- |
- |
-itemsCount: function() |
-{ |
-return this._functionItems.length; |
-}, |
- |
- |
-requestItems: function(callback) |
-{ |
- |
-function contentCallback(content, contentEncoded, mimeType) |
-{ |
-if (this._outlineWorker) |
-this._outlineWorker.terminate(); |
-this._outlineWorker = new Worker("ScriptFormatterWorker.js"); |
-this._outlineWorker.onmessage = this._didBuildOutlineChunk.bind(this, callback); |
-const method = "outline"; |
-this._outlineWorker.postMessage({ method: method, params: { content: content } }); |
-} |
-this._contentProvider.requestContent(contentCallback.bind(this)); |
-}, |
- |
-_didBuildOutlineChunk: function(callback, event) |
-{ |
-var data = event.data; |
-var chunk = data["chunk"]; |
-for (var i = 0; i < chunk.length; ++i) |
-this._functionItems.push(chunk[i]); |
-callback(data.index, data.total); |
- |
-if (data.total === data.index && this._outlineWorker) { |
-this._outlineWorker.terminate(); |
-delete this._outlineWorker; |
-} |
-}, |
- |
- |
-selectItem: function(itemIndex, promptValue) |
-{ |
-var lineNumber = this._functionItems[itemIndex].line; |
-if (!isNaN(lineNumber) && lineNumber >= 0) |
-this._view.highlightLine(lineNumber); |
-this._view.focus(); |
-}, |
- |
- |
-rewriteQuery: function(query) |
-{ |
-return query; |
-}, |
- |
-dispose: function() |
-{ |
-} |
-} |
- |
- |
-WebInspector.SelectUISourceCodeDialog = function() |
-{ |
-var projects = WebInspector.workspace.projects().filter(this.filterProject.bind(this)); |
-this._uiSourceCodes = []; |
-for (var i = 0; i < projects.length; ++i) |
-this._uiSourceCodes = this._uiSourceCodes.concat(projects[i].uiSourceCodes().filter(this.filterUISourceCode.bind(this))); |
-WebInspector.workspace.addEventListener(WebInspector.UISourceCodeProvider.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
-} |
- |
-WebInspector.SelectUISourceCodeDialog.prototype = { |
- |
-uiSourceCodeSelected: function(uiSourceCode, lineNumber) |
-{ |
- |
-}, |
- |
- |
-filterProject: function(project) |
-{ |
-return true; |
- |
-}, |
- |
- |
-filterUISourceCode: function(uiSourceCode) |
-{ |
-return uiSourceCode.name(); |
-}, |
- |
- |
-itemTitleAt: function(itemIndex) |
-{ |
-return this._uiSourceCodes[itemIndex].name().trimEnd(100); |
-}, |
- |
- |
-itemSuffixAt: function(itemIndex) |
-{ |
-return this._queryLineNumber || ""; |
-}, |
- |
- |
-itemSubtitleAt: function(itemIndex) |
-{ |
-var uiSourceCode = this._uiSourceCodes[itemIndex] |
-var projectName = uiSourceCode.project().displayName(); |
-var path = uiSourceCode.path().slice(); |
-path.pop(); |
-path.unshift(projectName); |
-return path.join("/"); |
-}, |
- |
- |
-itemKeyAt: function(itemIndex) |
-{ |
-return this._uiSourceCodes[itemIndex].name(); |
-}, |
- |
- |
-itemsCount: function() |
-{ |
-return this._uiSourceCodes.length; |
-}, |
- |
- |
-requestItems: function(callback) |
-{ |
-this._itemsLoaded = callback; |
-this._itemsLoaded(1, 1); |
-}, |
- |
- |
-selectItem: function(itemIndex, promptValue) |
-{ |
-var lineNumberMatch = promptValue.match(/[^:]+\:([\d]*)$/); |
-var lineNumber = lineNumberMatch ? Math.max(parseInt(lineNumberMatch[1], 10) - 1, 0) : undefined; |
-this.uiSourceCodeSelected(this._uiSourceCodes[itemIndex], lineNumber); |
-}, |
- |
- |
-rewriteQuery: function(query) |
-{ |
-if (!query) |
-return query; |
-query = query.trim(); |
-var lineNumberMatch = query.match(/([^:]+)(\:[\d]*)$/); |
-this._queryLineNumber = lineNumberMatch ? lineNumberMatch[2] : ""; |
-return lineNumberMatch ? lineNumberMatch[1] : query; |
-}, |
- |
- |
-_uiSourceCodeAdded: function(event) |
-{ |
-var uiSourceCode = (event.data); |
-if (!this.filterUISourceCode(uiSourceCode)) |
-return; |
-this._uiSourceCodes.push(uiSourceCode) |
-this._itemsLoaded(1, 1); |
-}, |
- |
-dispose: function() |
-{ |
-WebInspector.workspace.removeEventListener(WebInspector.UISourceCodeProvider.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
-} |
-} |
- |
- |
-WebInspector.OpenResourceDialog = function(panel) |
-{ |
-WebInspector.SelectUISourceCodeDialog.call(this); |
-this._panel = panel; |
-} |
- |
-WebInspector.OpenResourceDialog.prototype = { |
- |
- |
-uiSourceCodeSelected: function(uiSourceCode, lineNumber) |
-{ |
-this._panel.showUISourceCode(uiSourceCode, lineNumber); |
-}, |
- |
- |
-filterProject: function(project) |
-{ |
-return !project.isServiceProject(); |
-}, |
- |
-__proto__: WebInspector.SelectUISourceCodeDialog.prototype |
-} |
- |
- |
-WebInspector.OpenResourceDialog.show = function(panel, relativeToElement, name) |
-{ |
-if (WebInspector.Dialog.currentInstance()) |
-return; |
- |
-var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(new WebInspector.OpenResourceDialog(panel)); |
-filteredItemSelectionDialog.renderAsTwoRows(); |
-if (name) |
-filteredItemSelectionDialog.setQuery(name); |
-WebInspector.Dialog.show(relativeToElement, filteredItemSelectionDialog); |
-} |
- |
- |
-WebInspector.SelectUISourceCodeForProjectTypeDialog = function(type, callback) |
-{ |
-this._type = type; |
-WebInspector.SelectUISourceCodeDialog.call(this); |
-this._callback = callback; |
-} |
- |
-WebInspector.SelectUISourceCodeForProjectTypeDialog.prototype = { |
- |
-uiSourceCodeSelected: function(uiSourceCode, lineNumber) |
-{ |
-this._callback(uiSourceCode); |
-}, |
- |
- |
-filterProject: function(project) |
-{ |
-return project.type() === this._type; |
-}, |
- |
-__proto__: WebInspector.SelectUISourceCodeDialog.prototype |
-} |
- |
- |
-WebInspector.SelectUISourceCodeForProjectTypeDialog.show = function(name, type, callback, relativeToElement) |
-{ |
-if (WebInspector.Dialog.currentInstance()) |
-return; |
- |
-var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(new WebInspector.SelectUISourceCodeForProjectTypeDialog(type, callback)); |
-filteredItemSelectionDialog.setQuery(name); |
-filteredItemSelectionDialog.renderAsTwoRows(); |
-WebInspector.Dialog.show(relativeToElement, filteredItemSelectionDialog); |
-} |
-; |
- |
- |
- |
-WebInspector.UISourceCodeFrame = function(uiSourceCode) |
-{ |
-this._uiSourceCode = uiSourceCode; |
-WebInspector.SourceFrame.call(this, this._uiSourceCode); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.FormattedChanged, this._onFormattedChanged, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._onWorkingCopyChanged, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._onWorkingCopyCommitted, this); |
-} |
- |
-WebInspector.UISourceCodeFrame.prototype = { |
-wasShown: function() |
-{ |
-WebInspector.SourceFrame.prototype.wasShown.call(this); |
-this._boundWindowFocused = this._windowFocused.bind(this); |
-window.addEventListener("focus", this._boundWindowFocused, false); |
-this._checkContentUpdated(); |
-}, |
- |
-willHide: function() |
-{ |
-WebInspector.SourceFrame.prototype.willHide.call(this); |
-window.removeEventListener("focus", this._boundWindowFocused, false); |
-delete this._boundWindowFocused; |
-this._uiSourceCode.removeWorkingCopyGetter(); |
-}, |
- |
- |
-canEditSource: function() |
-{ |
-return this._uiSourceCode.isEditable(); |
-}, |
- |
-_windowFocused: function(event) |
-{ |
-this._checkContentUpdated(); |
-}, |
- |
-_checkContentUpdated: function() |
-{ |
-if (!this.loaded || !this.isShowing()) |
-return; |
-this._uiSourceCode.checkContentUpdated(); |
-}, |
- |
- |
-commitEditing: function(text) |
-{ |
-if (!this._uiSourceCode.isDirty()) |
-return; |
- |
-this._muteSourceCodeEvents = true; |
-this._uiSourceCode.commitWorkingCopy(this._didEditContent.bind(this)); |
-delete this._muteSourceCodeEvents; |
-}, |
- |
-onTextChanged: function(oldRange, newRange) |
-{ |
-WebInspector.SourceFrame.prototype.onTextChanged.call(this, oldRange, newRange); |
-if (this._isSettingContent) |
-return; |
-this._muteSourceCodeEvents = true; |
-if (this._textEditor.isClean()) |
-this._uiSourceCode.resetWorkingCopy(); |
-else |
-this._uiSourceCode.setWorkingCopyGetter(this._textEditor.text.bind(this._textEditor)); |
-delete this._muteSourceCodeEvents; |
-}, |
- |
-_didEditContent: function(error) |
-{ |
-if (error) { |
-WebInspector.log(error, WebInspector.ConsoleMessage.MessageLevel.Error, true); |
-return; |
-} |
-}, |
- |
- |
-_onFormattedChanged: function(event) |
-{ |
-var content = (event.data.content); |
-this._textEditor.setReadOnly(this._uiSourceCode.formatted()); |
-this._innerSetContent(content); |
-}, |
- |
- |
-_onWorkingCopyChanged: function(event) |
-{ |
-if (this._muteSourceCodeEvents) |
-return; |
-this._innerSetContent(this._uiSourceCode.workingCopy()); |
-this.onUISourceCodeContentChanged(); |
-}, |
- |
- |
-_onWorkingCopyCommitted: function(event) |
-{ |
-this._textEditor.markClean(); |
-if (this._muteSourceCodeEvents) |
-return; |
-this._innerSetContent(this._uiSourceCode.workingCopy()); |
-this.onUISourceCodeContentChanged(); |
-}, |
- |
-onUISourceCodeContentChanged: function() |
-{ |
-}, |
- |
- |
-_innerSetContent: function(content) |
-{ |
-this._isSettingContent = true; |
-this.setContent(content, false, this._uiSourceCode.mimeType()); |
-delete this._isSettingContent; |
-}, |
- |
-populateTextAreaContextMenu: function(contextMenu, lineNumber) |
-{ |
-WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber); |
-contextMenu.appendApplicableItems(this._uiSourceCode); |
-contextMenu.appendSeparator(); |
-}, |
- |
-dispose: function() |
-{ |
-this.detach(); |
-}, |
- |
-__proto__: WebInspector.SourceFrame.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.JavaScriptSourceFrame = function(scriptsPanel, uiSourceCode) |
-{ |
-this._scriptsPanel = scriptsPanel; |
-this._breakpointManager = WebInspector.breakpointManager; |
-this._uiSourceCode = uiSourceCode; |
- |
-WebInspector.UISourceCodeFrame.call(this, uiSourceCode); |
-if (uiSourceCode.project().type() === WebInspector.projectTypes.Debugger) |
-this.element.addStyleClass("source-frame-debugger-script"); |
- |
-this._popoverHelper = new WebInspector.ObjectPopoverHelper(this.textEditor.element, |
-this._getPopoverAnchor.bind(this), this._resolveObjectForPopover.bind(this), this._onHidePopover.bind(this), true); |
- |
-this.textEditor.element.addEventListener("keydown", this._onKeyDown.bind(this), true); |
- |
-this.textEditor.addEventListener(WebInspector.TextEditor.Events.GutterClick, this._handleGutterClick.bind(this), this); |
- |
-this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded, this._breakpointAdded, this); |
-this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved, this._breakpointRemoved, this); |
- |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.ConsoleMessageAdded, this._consoleMessageAdded, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.ConsoleMessageRemoved, this._consoleMessageRemoved, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.ConsoleMessagesCleared, this._consoleMessagesCleared, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.SourceMappingChanged, this._onSourceMappingChanged, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._workingCopyChanged, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._workingCopyCommitted, this); |
- |
-this._updateScriptFile(); |
-} |
- |
-WebInspector.JavaScriptSourceFrame.prototype = { |
- |
-wasShown: function() |
-{ |
-WebInspector.UISourceCodeFrame.prototype.wasShown.call(this); |
-}, |
- |
-willHide: function() |
-{ |
-WebInspector.UISourceCodeFrame.prototype.willHide.call(this); |
-this._popoverHelper.hidePopover(); |
-}, |
- |
-onUISourceCodeContentChanged: function() |
-{ |
-this._removeAllBreakpoints(); |
-WebInspector.UISourceCodeFrame.prototype.onUISourceCodeContentChanged.call(this); |
-}, |
- |
-populateLineGutterContextMenu: function(contextMenu, lineNumber) |
-{ |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Continue to here" : "Continue to Here"), this._continueToLine.bind(this, lineNumber)); |
- |
-var breakpoint = this._breakpointManager.findBreakpoint(this._uiSourceCode, lineNumber); |
-if (!breakpoint) { |
- |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add breakpoint" : "Add Breakpoint"), this._setBreakpoint.bind(this, lineNumber, "", true)); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add conditional breakpoint…" : "Add Conditional Breakpoint…"), this._editBreakpointCondition.bind(this, lineNumber)); |
-} else { |
- |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove breakpoint" : "Remove Breakpoint"), breakpoint.remove.bind(breakpoint)); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Edit breakpoint…" : "Edit Breakpoint…"), this._editBreakpointCondition.bind(this, lineNumber, breakpoint)); |
-if (breakpoint.enabled()) |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Disable breakpoint" : "Disable Breakpoint"), breakpoint.setEnabled.bind(breakpoint, false)); |
-else |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Enable breakpoint" : "Enable Breakpoint"), breakpoint.setEnabled.bind(breakpoint, true)); |
-} |
-}, |
- |
-populateTextAreaContextMenu: function(contextMenu, lineNumber) |
-{ |
-var selection = window.getSelection(); |
-if (selection.type === "Range" && !selection.isCollapsed) { |
-var addToWatchLabel = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add to watch" : "Add to Watch"); |
-contextMenu.appendItem(addToWatchLabel, this._scriptsPanel.addToWatch.bind(this._scriptsPanel, selection.toString())); |
-var evaluateLabel = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Evaluate in console" : "Evaluate in Console"); |
-contextMenu.appendItem(evaluateLabel, WebInspector.evaluateInConsole.bind(WebInspector, selection.toString())); |
-contextMenu.appendSeparator(); |
-} else if (!this._uiSourceCode.isEditable() && this._uiSourceCode.contentType() === WebInspector.resourceTypes.Script) { |
-function liveEdit(event) |
-{ |
-var liveEditUISourceCode = WebInspector.liveEditSupport.uiSourceCodeForLiveEdit(this._uiSourceCode); |
-this._scriptsPanel.showUISourceCode(liveEditUISourceCode, lineNumber) |
-} |
- |
- |
- |
-var liveEditLabel = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Live edit" : "Live Edit"); |
-contextMenu.appendItem(liveEditLabel, liveEdit.bind(this)); |
-contextMenu.appendSeparator(); |
-} |
-WebInspector.UISourceCodeFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber); |
-}, |
- |
-_workingCopyChanged: function(event) |
-{ |
-if (this._supportsEnabledBreakpointsWhileEditing() || this._scriptFile) |
-return; |
- |
-if (this._uiSourceCode.isDirty()) |
-this._muteBreakpointsWhileEditing(); |
-else |
-this._restoreBreakpointsAfterEditing(); |
-}, |
- |
-_workingCopyCommitted: function(event) |
-{ |
-if (this._supportsEnabledBreakpointsWhileEditing() || this._scriptFile) |
-return; |
-this._restoreBreakpointsAfterEditing(); |
-}, |
- |
-_didMergeToVM: function() |
-{ |
-if (this._supportsEnabledBreakpointsWhileEditing()) |
-return; |
-this._restoreBreakpointsAfterEditing(); |
-}, |
- |
-_didDivergeFromVM: function() |
-{ |
-if (this._supportsEnabledBreakpointsWhileEditing()) |
-return; |
-this._muteBreakpointsWhileEditing(); |
-}, |
- |
-_muteBreakpointsWhileEditing: function() |
-{ |
-if (this._muted) |
-return; |
-for (var lineNumber = 0; lineNumber < this._textEditor.linesCount; ++lineNumber) { |
-var breakpointDecoration = this._textEditor.getAttribute(lineNumber, "breakpoint"); |
-if (!breakpointDecoration) |
-continue; |
-this._removeBreakpointDecoration(lineNumber); |
-this._addBreakpointDecoration(lineNumber, breakpointDecoration.condition, breakpointDecoration.enabled, true); |
-} |
-this._muted = true; |
-}, |
- |
-_supportsEnabledBreakpointsWhileEditing: function() |
-{ |
-return this._uiSourceCode.project().type() === WebInspector.projectTypes.Snippets; |
-}, |
- |
-_restoreBreakpointsAfterEditing: function() |
-{ |
-delete this._muted; |
-var breakpoints = {}; |
- |
-for (var lineNumber = 0; lineNumber < this._textEditor.linesCount; ++lineNumber) { |
-var breakpointDecoration = this._textEditor.getAttribute(lineNumber, "breakpoint"); |
-if (breakpointDecoration) { |
-breakpoints[lineNumber] = breakpointDecoration; |
-this._removeBreakpointDecoration(lineNumber); |
-} |
-} |
- |
- |
-this._removeAllBreakpoints(); |
- |
- |
-for (var lineNumberString in breakpoints) { |
-var lineNumber = parseInt(lineNumberString, 10); |
-if (isNaN(lineNumber)) |
-continue; |
-var breakpointDecoration = breakpoints[lineNumberString]; |
-this._setBreakpoint(lineNumber, breakpointDecoration.condition, breakpointDecoration.enabled); |
-} |
-}, |
- |
-_removeAllBreakpoints: function() |
-{ |
-var breakpoints = this._breakpointManager.breakpointsForUISourceCode(this._uiSourceCode); |
-for (var i = 0; i < breakpoints.length; ++i) |
-breakpoints[i].remove(); |
-}, |
- |
-_getPopoverAnchor: function(element, event) |
-{ |
-if (!WebInspector.debuggerModel.isPaused()) |
-return null; |
-if (window.getSelection().type === "Range") |
-return null; |
- |
-var textPosition = this.textEditor.coordinatesToCursorPosition(event.x, event.y); |
-if (!textPosition) |
-return null; |
- |
-var token = this.textEditor.tokenAtTextPosition(textPosition.startLine, textPosition.startColumn); |
-if (!token) |
-return null; |
-var lineNumber = textPosition.startLine; |
-var line = this.textEditor.line(lineNumber); |
-var tokenContent = line.substring(token.startColumn, token.endColumn + 1); |
-if (token.type !== "javascript-ident" && (token.type !== "javascript-keyword" || tokenContent !== "this")) |
-return null; |
- |
-var leftCorner = this.textEditor.cursorPositionToCoordinates(lineNumber, token.startColumn); |
-var rightCorner = this.textEditor.cursorPositionToCoordinates(lineNumber, token.endColumn + 1); |
-var anchorBox = new AnchorBox(leftCorner.x, leftCorner.y, rightCorner.x - leftCorner.x, leftCorner.height); |
- |
-anchorBox.token = token; |
-anchorBox.lineNumber = lineNumber; |
- |
-return anchorBox; |
-}, |
- |
-_resolveObjectForPopover: function(anchorBox, showCallback, objectGroupName) |
-{ |
- |
-function showObjectPopover(result, wasThrown) |
-{ |
-if (!WebInspector.debuggerModel.isPaused()) { |
-this._popoverHelper.hidePopover(); |
-return; |
-} |
-this._popoverAnchorBox = anchorBox; |
-showCallback(WebInspector.RemoteObject.fromPayload(result), wasThrown, this._popoverAnchorBox); |
- |
-if (this._popoverAnchorBox) { |
-var highlightRange = new WebInspector.TextRange(anchorBox.lineNumber, startHighlight, anchorBox.lineNumber, endHighlight); |
-this._popoverAnchorBox._highlightDescriptor = this.textEditor.highlightRange(highlightRange, "source-frame-eval-expression"); |
-} |
-} |
- |
-if (!WebInspector.debuggerModel.isPaused()) { |
-this._popoverHelper.hidePopover(); |
-return; |
-} |
- |
-var startHighlight = anchorBox.token.startColumn; |
-var endHighlight = anchorBox.token.endColumn; |
-var line = this.textEditor.line(anchorBox.lineNumber); |
-while (startHighlight > 1 && line.charAt(startHighlight - 1) === '.') |
-startHighlight = this.textEditor.tokenAtTextPosition(anchorBox.lineNumber, startHighlight - 2).startColumn; |
-var evaluationText = line.substring(startHighlight, endHighlight + 1); |
- |
-var selectedCallFrame = WebInspector.debuggerModel.selectedCallFrame(); |
-selectedCallFrame.evaluate(evaluationText, objectGroupName, false, true, false, false, showObjectPopover.bind(this)); |
-}, |
- |
-_onHidePopover: function() |
-{ |
-if (!this._popoverAnchorBox) |
-return; |
-if (this._popoverAnchorBox._highlightDescriptor) |
-this.textEditor.removeHighlight(this._popoverAnchorBox._highlightDescriptor); |
-delete this._popoverAnchorBox; |
-}, |
- |
- |
-_addBreakpointDecoration: function(lineNumber, condition, enabled, mutedWhileEditing) |
-{ |
-var breakpoint = { |
-condition: condition, |
-enabled: enabled |
-}; |
- |
-this.textEditor.setAttribute(lineNumber, "breakpoint", breakpoint); |
- |
-var disabled = !enabled || mutedWhileEditing; |
-this.textEditor.addBreakpoint(lineNumber, disabled, !!condition); |
-}, |
- |
-_removeBreakpointDecoration: function(lineNumber) |
-{ |
-this.textEditor.removeAttribute(lineNumber, "breakpoint"); |
-this.textEditor.removeBreakpoint(lineNumber); |
-}, |
- |
-_onKeyDown: function(event) |
-{ |
-if (event.keyIdentifier === "U+001B") { |
-if (this._popoverHelper.isPopoverVisible()) { |
-this._popoverHelper.hidePopover(); |
-event.consume(); |
-} |
-} |
-}, |
- |
- |
-_editBreakpointCondition: function(lineNumber, breakpoint) |
-{ |
-this._conditionElement = this._createConditionElement(lineNumber); |
-this.textEditor.addDecoration(lineNumber, this._conditionElement); |
- |
-function finishEditing(committed, element, newText) |
-{ |
-this.textEditor.removeDecoration(lineNumber, this._conditionElement); |
-delete this._conditionEditorElement; |
-delete this._conditionElement; |
-if (breakpoint) |
-breakpoint.setCondition(newText); |
-else |
-this._setBreakpoint(lineNumber, newText, true); |
-} |
- |
-var config = new WebInspector.EditingConfig(finishEditing.bind(this, true), finishEditing.bind(this, false)); |
-WebInspector.startEditing(this._conditionEditorElement, config); |
-this._conditionEditorElement.value = breakpoint ? breakpoint.condition() : ""; |
-this._conditionEditorElement.select(); |
-}, |
- |
-_createConditionElement: function(lineNumber) |
-{ |
-var conditionElement = document.createElement("div"); |
-conditionElement.className = "source-frame-breakpoint-condition"; |
- |
-var labelElement = document.createElement("label"); |
-labelElement.className = "source-frame-breakpoint-message"; |
-labelElement.htmlFor = "source-frame-breakpoint-condition"; |
-labelElement.appendChild(document.createTextNode(WebInspector.UIString("The breakpoint on line %d will stop only if this expression is true:", lineNumber))); |
-conditionElement.appendChild(labelElement); |
- |
-var editorElement = document.createElement("input"); |
-editorElement.id = "source-frame-breakpoint-condition"; |
-editorElement.className = "monospace"; |
-editorElement.type = "text"; |
-conditionElement.appendChild(editorElement); |
-this._conditionEditorElement = editorElement; |
- |
-return conditionElement; |
-}, |
- |
- |
-setExecutionLine: function(lineNumber) |
-{ |
-this._executionLineNumber = lineNumber; |
-if (this.loaded) { |
-this.textEditor.setExecutionLine(lineNumber); |
-this.revealLine(this._executionLineNumber); |
-if (this.canEditSource()) |
-this.setSelection(WebInspector.TextRange.createFromLocation(lineNumber, 0)); |
-} |
-}, |
- |
-clearExecutionLine: function() |
-{ |
-if (this.loaded && typeof this._executionLineNumber === "number") |
-this.textEditor.clearExecutionLine(); |
-delete this._executionLineNumber; |
-}, |
- |
-_lineNumberAfterEditing: function(lineNumber, oldRange, newRange) |
-{ |
-var shiftOffset = lineNumber <= oldRange.startLine ? 0 : newRange.linesCount - oldRange.linesCount; |
- |
- |
-if (lineNumber === oldRange.startLine) { |
-var whiteSpacesRegex = /^[\s\xA0]*$/; |
-for (var i = 0; lineNumber + i <= newRange.endLine; ++i) { |
-if (!whiteSpacesRegex.test(this.textEditor.line(lineNumber + i))) { |
-shiftOffset = i; |
-break; |
-} |
-} |
-} |
- |
-var newLineNumber = Math.max(0, lineNumber + shiftOffset); |
-if (oldRange.startLine < lineNumber && lineNumber < oldRange.endLine) |
-newLineNumber = oldRange.startLine; |
-return newLineNumber; |
-}, |
- |
- |
-_shouldIgnoreExternalBreakpointEvents: function() |
-{ |
-if (this._supportsEnabledBreakpointsWhileEditing()) |
-return false; |
-if (this._muted) |
-return true; |
-return this._scriptFile && (this._scriptFile.isDivergingFromVM() || this._scriptFile.isMergingToVM()); |
-}, |
- |
-_breakpointAdded: function(event) |
-{ |
-var uiLocation = (event.data.uiLocation); |
-if (uiLocation.uiSourceCode !== this._uiSourceCode) |
-return; |
-if (this._shouldIgnoreExternalBreakpointEvents()) |
-return; |
- |
-var breakpoint = (event.data.breakpoint); |
-if (this.loaded) |
-this._addBreakpointDecoration(uiLocation.lineNumber, breakpoint.condition(), breakpoint.enabled(), false); |
-}, |
- |
-_breakpointRemoved: function(event) |
-{ |
-var uiLocation = (event.data.uiLocation); |
-if (uiLocation.uiSourceCode !== this._uiSourceCode) |
-return; |
-if (this._shouldIgnoreExternalBreakpointEvents()) |
-return; |
- |
-var breakpoint = (event.data.breakpoint); |
-var remainingBreakpoint = this._breakpointManager.findBreakpoint(this._uiSourceCode, uiLocation.lineNumber); |
-if (!remainingBreakpoint && this.loaded) |
-this._removeBreakpointDecoration(uiLocation.lineNumber); |
-}, |
- |
-_consoleMessageAdded: function(event) |
-{ |
-var message = (event.data); |
-if (this.loaded) |
-this.addMessageToSource(message.lineNumber, message.originalMessage); |
-}, |
- |
-_consoleMessageRemoved: function(event) |
-{ |
-var message = (event.data); |
-if (this.loaded) |
-this.removeMessageFromSource(message.lineNumber, message.originalMessage); |
-}, |
- |
-_consoleMessagesCleared: function(event) |
-{ |
-this.clearMessages(); |
-}, |
- |
- |
-_onSourceMappingChanged: function(event) |
-{ |
-this._updateScriptFile(); |
-}, |
- |
-_updateScriptFile: function() |
-{ |
-if (this._scriptFile) { |
-this._scriptFile.removeEventListener(WebInspector.ScriptFile.Events.DidMergeToVM, this._didMergeToVM, this); |
-this._scriptFile.removeEventListener(WebInspector.ScriptFile.Events.DidDivergeFromVM, this._didDivergeFromVM, this); |
-if (this._muted && !this._uiSourceCode.isDirty()) |
-this._restoreBreakpointsAfterEditing(); |
-} |
-this._scriptFile = this._uiSourceCode.scriptFile(); |
-if (this._scriptFile) { |
-this._scriptFile.addEventListener(WebInspector.ScriptFile.Events.DidMergeToVM, this._didMergeToVM, this); |
-this._scriptFile.addEventListener(WebInspector.ScriptFile.Events.DidDivergeFromVM, this._didDivergeFromVM, this); |
- |
-if (this.loaded) |
-this._scriptFile.checkMapping(); |
-} |
-}, |
- |
-onTextEditorContentLoaded: function() |
-{ |
-if (typeof this._executionLineNumber === "number") |
-this.setExecutionLine(this._executionLineNumber); |
- |
-var breakpointLocations = this._breakpointManager.breakpointLocationsForUISourceCode(this._uiSourceCode); |
-for (var i = 0; i < breakpointLocations.length; ++i) |
-this._breakpointAdded({data:breakpointLocations[i]}); |
- |
-var messages = this._uiSourceCode.consoleMessages(); |
-for (var i = 0; i < messages.length; ++i) { |
-var message = messages[i]; |
-this.addMessageToSource(message.lineNumber, message.originalMessage); |
-} |
- |
-if (this._scriptFile) |
-this._scriptFile.checkMapping(); |
-}, |
- |
- |
-_handleGutterClick: function(event) |
-{ |
-if (this._muted) |
-return; |
- |
-var eventData = (event.data); |
-var lineNumber = eventData.lineNumber; |
-var eventObject = (eventData.event); |
- |
-if (eventObject.button != 0 || eventObject.altKey || eventObject.ctrlKey || eventObject.metaKey) |
-return; |
- |
-this._toggleBreakpoint(lineNumber, eventObject.shiftKey); |
-eventObject.consume(true); |
-}, |
- |
- |
-_toggleBreakpoint: function(lineNumber, onlyDisable) |
-{ |
-var breakpoint = this._breakpointManager.findBreakpoint(this._uiSourceCode, lineNumber); |
-if (breakpoint) { |
-if (onlyDisable) |
-breakpoint.setEnabled(!breakpoint.enabled()); |
-else |
-breakpoint.remove(); |
-} else |
-this._setBreakpoint(lineNumber, "", true); |
-}, |
- |
-toggleBreakpointOnCurrentLine: function() |
-{ |
-if (this._muted) |
-return; |
- |
-var selection = this.textEditor.selection(); |
-if (!selection) |
-return; |
-this._toggleBreakpoint(selection.startLine, false); |
-}, |
- |
- |
-_setBreakpoint: function(lineNumber, condition, enabled) |
-{ |
-this._breakpointManager.setBreakpoint(this._uiSourceCode, lineNumber, condition, enabled); |
- |
-WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { |
-action: WebInspector.UserMetrics.UserActionNames.SetBreakpoint, |
-url: this._uiSourceCode.originURL(), |
-line: lineNumber, |
-enabled: enabled |
-}); |
-}, |
- |
- |
-_continueToLine: function(lineNumber) |
-{ |
-var rawLocation = (this._uiSourceCode.uiLocationToRawLocation(lineNumber, 0)); |
-WebInspector.debuggerModel.continueToLocation(rawLocation); |
-}, |
- |
-dispose: function() |
-{ |
-this._breakpointManager.removeEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded, this._breakpointAdded, this); |
-this._breakpointManager.removeEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved, this._breakpointRemoved, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.ConsoleMessageAdded, this._consoleMessageAdded, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.ConsoleMessageRemoved, this._consoleMessageRemoved, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.ConsoleMessagesCleared, this._consoleMessagesCleared, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.SourceMappingChanged, this._onSourceMappingChanged, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._workingCopyChanged, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._workingCopyCommitted, this); |
-WebInspector.UISourceCodeFrame.prototype.dispose.call(this); |
-}, |
- |
-__proto__: WebInspector.UISourceCodeFrame.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.NavigatorOverlayController = function(parentSidebarView, navigatorView, editorView) |
-{ |
-this._parentSidebarView = parentSidebarView; |
-this._navigatorView = navigatorView; |
-this._editorView = editorView; |
- |
-this._navigatorSidebarResizeWidgetElement = document.createElement("div"); |
-this._navigatorSidebarResizeWidgetElement.addStyleClass("scripts-navigator-resizer-widget"); |
-this._parentSidebarView.installResizer(this._navigatorSidebarResizeWidgetElement); |
-this._navigatorView.element.appendChild(this._navigatorSidebarResizeWidgetElement); |
- |
-this._navigatorShowHideButton = new WebInspector.StatusBarButton(WebInspector.UIString("Hide navigator"), "scripts-navigator-show-hide-button", 3); |
-this._navigatorShowHideButton.state = "pinned"; |
-this._navigatorShowHideButton.addEventListener("click", this._toggleNavigator, this); |
-this._editorView.element.appendChild(this._navigatorShowHideButton.element); |
- |
-WebInspector.settings.navigatorHidden = WebInspector.settings.createSetting("navigatorHidden", true); |
-if (WebInspector.settings.navigatorHidden.get()) |
-this._toggleNavigator(); |
-} |
- |
-WebInspector.NavigatorOverlayController.prototype = { |
-wasShown: function() |
-{ |
-window.setTimeout(this._maybeShowNavigatorOverlay.bind(this), 0); |
-}, |
- |
-_maybeShowNavigatorOverlay: function() |
-{ |
-if (WebInspector.settings.navigatorHidden.get() && !WebInspector.settings.navigatorWasOnceHidden.get()) |
-this.showNavigatorOverlay(); |
-}, |
- |
-_toggleNavigator: function() |
-{ |
-if (this._navigatorShowHideButton.state === "overlay") |
-this._pinNavigator(); |
-else if (this._navigatorShowHideButton.state === "hidden") |
-this.showNavigatorOverlay(); |
-else |
-this._hidePinnedNavigator(); |
-}, |
- |
-_hidePinnedNavigator: function() |
-{ |
-this._navigatorShowHideButton.state = "hidden"; |
-this._navigatorShowHideButton.title = WebInspector.UIString("Show navigator"); |
-this._parentSidebarView.element.appendChild(this._navigatorShowHideButton.element); |
- |
-this._editorView.element.addStyleClass("navigator-hidden"); |
-this._navigatorSidebarResizeWidgetElement.addStyleClass("hidden"); |
- |
-this._parentSidebarView.hideSidebarElement(); |
-this._navigatorView.detach(); |
-this._editorView.focus(); |
- |
-WebInspector.settings.navigatorWasOnceHidden.set(true); |
-WebInspector.settings.navigatorHidden.set(true); |
-}, |
- |
-_pinNavigator: function() |
-{ |
-this._navigatorShowHideButton.state = "pinned"; |
-this._navigatorShowHideButton.title = WebInspector.UIString("Hide navigator"); |
- |
-this._editorView.element.removeStyleClass("navigator-hidden"); |
-this._navigatorSidebarResizeWidgetElement.removeStyleClass("hidden"); |
-this._editorView.element.appendChild(this._navigatorShowHideButton.element); |
- |
-this._innerHideNavigatorOverlay(); |
-this._parentSidebarView.showSidebarElement(); |
-this._navigatorView.show(this._parentSidebarView.sidebarElement); |
-this._navigatorView.focus(); |
-WebInspector.settings.navigatorHidden.set(false); |
-}, |
- |
-showNavigatorOverlay: function() |
-{ |
-if (this._navigatorShowHideButton.state === "overlay") |
-return; |
- |
-this._navigatorShowHideButton.state = "overlay"; |
-this._navigatorShowHideButton.title = WebInspector.UIString("Pin navigator"); |
- |
-this._sidebarOverlay = new WebInspector.SidebarOverlay(this._navigatorView, "scriptsPanelNavigatorOverlayWidth", Preferences.minScriptsSidebarWidth); |
-this._boundKeyDown = this._keyDown.bind(this); |
-this._sidebarOverlay.element.addEventListener("keydown", this._boundKeyDown, false); |
-var navigatorOverlayResizeWidgetElement = document.createElement("div"); |
-navigatorOverlayResizeWidgetElement.addStyleClass("scripts-navigator-resizer-widget"); |
-this._sidebarOverlay.resizerWidgetElement = navigatorOverlayResizeWidgetElement; |
- |
-this._navigatorView.element.appendChild(this._navigatorShowHideButton.element); |
-this._boundContainingElementFocused = this._containingElementFocused.bind(this); |
-this._parentSidebarView.element.addEventListener("mousedown", this._boundContainingElementFocused, false); |
- |
-this._sidebarOverlay.show(this._parentSidebarView.element); |
-this._navigatorView.focus(); |
-}, |
- |
-_keyDown: function(event) |
-{ |
-if (event.handled) |
-return; |
- |
-if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code) { |
-this.hideNavigatorOverlay(); |
-event.consume(true); |
-} |
-}, |
- |
-hideNavigatorOverlay: function() |
-{ |
-if (this._navigatorShowHideButton.state !== "overlay") |
-return; |
- |
-this._navigatorShowHideButton.state = "hidden"; |
-this._navigatorShowHideButton.title = WebInspector.UIString("Show navigator"); |
-this._parentSidebarView.element.appendChild(this._navigatorShowHideButton.element); |
- |
-this._innerHideNavigatorOverlay(); |
-this._editorView.focus(); |
-}, |
- |
-_innerHideNavigatorOverlay: function() |
-{ |
-this._parentSidebarView.element.removeEventListener("mousedown", this._boundContainingElementFocused, false); |
-this._sidebarOverlay.element.removeEventListener("keydown", this._boundKeyDown, false); |
-this._sidebarOverlay.hide(); |
-}, |
- |
-_containingElementFocused: function(event) |
-{ |
-if (!event.target.isSelfOrDescendant(this._sidebarOverlay.element)) |
-this.hideNavigatorOverlay(); |
-}, |
- |
-isNavigatorPinned: function() |
-{ |
-return this._navigatorShowHideButton.state === "pinned"; |
-}, |
- |
-isNavigatorHidden: function() |
-{ |
-return this._navigatorShowHideButton.state === "hidden"; |
-} |
-} |
-; |
- |
- |
- |
-WebInspector.NavigatorView = function() |
-{ |
-WebInspector.View.call(this); |
-this.registerRequiredCSS("navigatorView.css"); |
- |
-var scriptsTreeElement = document.createElement("ol"); |
-this._scriptsTree = new WebInspector.NavigatorTreeOutline(scriptsTreeElement); |
-this._scriptsTree.childrenListElement.addEventListener("keypress", this._treeKeyPress.bind(this), true); |
- |
-var scriptsOutlineElement = document.createElement("div"); |
-scriptsOutlineElement.addStyleClass("outline-disclosure"); |
-scriptsOutlineElement.addStyleClass("navigator"); |
-scriptsOutlineElement.appendChild(scriptsTreeElement); |
- |
-this.element.addStyleClass("fill"); |
-this.element.addStyleClass("navigator-container"); |
-this.element.appendChild(scriptsOutlineElement); |
-this.setDefaultFocusedElement(this._scriptsTree.element); |
- |
- |
-this._uiSourceCodeNodes = {}; |
- |
-this._rootNode = new WebInspector.NavigatorRootTreeNode(this); |
-this._rootNode.populate(); |
- |
-WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._inspectedURLChanged, this); |
-} |
- |
-WebInspector.NavigatorView.Events = { |
-ItemSelected: "ItemSelected", |
-ItemSearchStarted: "ItemSearchStarted", |
-FileRenamed: "FileRenamed" |
-} |
- |
-WebInspector.NavigatorView.iconClassForType = function(type) |
-{ |
-if (type === WebInspector.NavigatorTreeOutline.Types.Domain) |
-return "navigator-domain-tree-item"; |
-if (type === WebInspector.NavigatorTreeOutline.Types.FileSystem) |
-return "navigator-folder-tree-item"; |
-return "navigator-folder-tree-item"; |
-} |
- |
-WebInspector.NavigatorView.prototype = { |
- |
-addUISourceCode: function(uiSourceCode) |
-{ |
-var node = this._getOrCreateUISourceCodeParentNode(uiSourceCode); |
-var uiSourceCodeNode = new WebInspector.NavigatorUISourceCodeTreeNode(this, uiSourceCode); |
-this._uiSourceCodeNodes[uiSourceCode.uri()] = uiSourceCodeNode; |
-node.appendChild(uiSourceCodeNode); |
-if (uiSourceCode.url === WebInspector.inspectedPageURL) |
-this.revealUISourceCode(uiSourceCode); |
-}, |
- |
- |
-_inspectedURLChanged: function(event) |
-{ |
-var nodes = Object.values(this._uiSourceCodeNodes); |
-for (var i = 0; i < nodes.length; ++i) { |
-var uiSourceCode = nodes[i].uiSourceCode(); |
-if (uiSourceCode.url === WebInspector.inspectedPageURL) |
-this.revealUISourceCode(uiSourceCode); |
-} |
- |
-}, |
- |
- |
-_getProjectNode: function(project) |
-{ |
-if (!project.displayName()) |
-return this._rootNode; |
-return this._rootNode.child(project.id()); |
-}, |
- |
- |
-_createProjectNode: function(project) |
-{ |
-var type = project.type() === WebInspector.projectTypes.FileSystem ? WebInspector.NavigatorTreeOutline.Types.FileSystem : WebInspector.NavigatorTreeOutline.Types.Domain; |
-var projectNode = new WebInspector.NavigatorFolderTreeNode(this, project.id(), type, project.displayName()); |
-this._rootNode.appendChild(projectNode); |
-return projectNode; |
-}, |
- |
- |
-_getOrCreateProjectNode: function(project) |
-{ |
-return this._getProjectNode(project) || this._createProjectNode(project); |
-}, |
- |
- |
-_getFolderNode: function(parentNode, name) |
-{ |
-return parentNode.child(name); |
-}, |
- |
- |
-_createFolderNode: function(parentNode, name) |
-{ |
-var folderNode = new WebInspector.NavigatorFolderTreeNode(this, name, WebInspector.NavigatorTreeOutline.Types.Folder, name); |
-parentNode.appendChild(folderNode); |
-return folderNode; |
-}, |
- |
- |
-_getOrCreateFolderNode: function(parentNode, name) |
-{ |
-return this._getFolderNode(parentNode, name) || this._createFolderNode(parentNode, name); |
-}, |
- |
- |
-_getUISourceCodeParentNode: function(uiSourceCode) |
-{ |
-var projectNode = this._getProjectNode(uiSourceCode.project()); |
-if (!projectNode) |
-return null; |
-var path = uiSourceCode.path(); |
-var parentNode = projectNode; |
-for (var i = 0; i < path.length - 1; ++i) { |
-parentNode = this._getFolderNode(parentNode, path[i]); |
-if (!parentNode) |
-return null; |
-} |
-return parentNode; |
-}, |
- |
- |
-_getOrCreateUISourceCodeParentNode: function(uiSourceCode) |
-{ |
-var projectNode = this._getOrCreateProjectNode(uiSourceCode.project()); |
-if (!projectNode) |
-return null; |
-var path = uiSourceCode.path(); |
-var parentNode = projectNode; |
-for (var i = 0; i < path.length - 1; ++i) { |
-parentNode = this._getOrCreateFolderNode(parentNode, path[i]); |
-if (!parentNode) |
-return null; |
-} |
-return parentNode; |
-}, |
- |
- |
-revealUISourceCode: function(uiSourceCode, select) |
-{ |
-var node = this._uiSourceCodeNodes[uiSourceCode.uri()]; |
-if (!node) |
-return null; |
-if (this._scriptsTree.selectedTreeElement) |
-this._scriptsTree.selectedTreeElement.deselect(); |
-this._lastSelectedUISourceCode = uiSourceCode; |
-node.reveal(select); |
-}, |
- |
- |
-_scriptSelected: function(uiSourceCode, focusSource) |
-{ |
-this._lastSelectedUISourceCode = uiSourceCode; |
-var data = { uiSourceCode: uiSourceCode, focusSource: focusSource}; |
-this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemSelected, data); |
-}, |
- |
- |
-removeUISourceCode: function(uiSourceCode) |
-{ |
-var parentNode = this._getUISourceCodeParentNode(uiSourceCode); |
-if (!parentNode) |
-return; |
-var node = this._uiSourceCodeNodes[uiSourceCode.uri()]; |
-if (!node) |
-return; |
-delete this._uiSourceCodeNodes[uiSourceCode.uri()] |
-parentNode.removeChild(node); |
-node = parentNode; |
-while (node) { |
-parentNode = node.parent; |
-if (!parentNode || !node.isEmpty()) |
-break; |
-parentNode.removeChild(node); |
-node = parentNode; |
-} |
-}, |
- |
-_fileRenamed: function(uiSourceCode, newTitle) |
-{ |
-var data = { uiSourceCode: uiSourceCode, name: newTitle }; |
-this.dispatchEventToListeners(WebInspector.NavigatorView.Events.FileRenamed, data); |
-}, |
- |
- |
-handleRename: function(uiSourceCode, callback) |
-{ |
-}, |
- |
- |
-rename: function(uiSourceCode, callback) |
-{ |
-var node = this._uiSourceCodeNodes[uiSourceCode.uri()]; |
-if (!node) |
-return null; |
-node.rename(callback); |
-}, |
- |
-reset: function() |
-{ |
-for (var uri in this._uiSourceCodeNodes) |
-this._uiSourceCodeNodes[uri].dispose(); |
- |
-this._scriptsTree.removeChildren(); |
-this._uiSourceCodeNodes = {}; |
-this._rootNode.reset(); |
-}, |
- |
-handleContextMenu: function(event, uiSourceCode) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-contextMenu.appendApplicableItems(uiSourceCode); |
-contextMenu.show(); |
-}, |
- |
-_treeKeyPress: function(event) |
-{ |
-if (WebInspector.isBeingEdited(this._scriptsTree.childrenListElement)) |
-return; |
- |
-var searchText = String.fromCharCode(event.charCode); |
-if (searchText.trim() !== searchText) |
-return; |
-this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemSearchStarted, searchText); |
-event.consume(true); |
-}, |
- |
-__proto__: WebInspector.View.prototype |
-} |
- |
- |
-WebInspector.NavigatorTreeOutline = function(element) |
-{ |
-TreeOutline.call(this, element); |
-this.element = element; |
- |
-this.comparator = WebInspector.NavigatorTreeOutline._treeElementsCompare; |
-} |
- |
-WebInspector.NavigatorTreeOutline.Types = { |
-Root: "Root", |
-Domain: "Domain", |
-Folder: "Folder", |
-UISourceCode: "UISourceCode", |
-FileSystem: "FileSystem" |
-} |
- |
-WebInspector.NavigatorTreeOutline._treeElementsCompare = function compare(treeElement1, treeElement2) |
-{ |
- |
-function typeWeight(treeElement) |
-{ |
-var type = treeElement.type(); |
-if (type === WebInspector.NavigatorTreeOutline.Types.Domain) { |
-if (treeElement.titleText === WebInspector.inspectedPageDomain) |
-return 1; |
-return 2; |
-} |
-if (type === WebInspector.NavigatorTreeOutline.Types.FileSystem) |
-return 3; |
-if (type === WebInspector.NavigatorTreeOutline.Types.Folder) |
-return 4; |
-return 5; |
-} |
- |
-var typeWeight1 = typeWeight(treeElement1); |
-var typeWeight2 = typeWeight(treeElement2); |
- |
-var result; |
-if (typeWeight1 > typeWeight2) |
-result = 1; |
-else if (typeWeight1 < typeWeight2) |
-result = -1; |
-else { |
-var title1 = treeElement1.titleText; |
-var title2 = treeElement2.titleText; |
-result = title1.compareTo(title2); |
-} |
-return result; |
-} |
- |
-WebInspector.NavigatorTreeOutline.prototype = { |
- |
-scriptTreeElements: function() |
-{ |
-var result = []; |
-if (this.children.length) { |
-for (var treeElement = this.children[0]; treeElement; treeElement = treeElement.traverseNextTreeElement(false, this, true)) { |
-if (treeElement instanceof WebInspector.NavigatorSourceTreeElement) |
-result.push(treeElement.uiSourceCode); |
-} |
-} |
-return result; |
-}, |
- |
-__proto__: TreeOutline.prototype |
-} |
- |
- |
-WebInspector.BaseNavigatorTreeElement = function(type, title, iconClasses, hasChildren, noIcon) |
-{ |
-this._type = type; |
-TreeElement.call(this, "", null, hasChildren); |
-this._titleText = title; |
-this._iconClasses = iconClasses; |
-this._noIcon = noIcon; |
-} |
- |
-WebInspector.BaseNavigatorTreeElement.prototype = { |
-onattach: function() |
-{ |
-this.listItemElement.removeChildren(); |
-if (this._iconClasses) { |
-for (var i = 0; i < this._iconClasses.length; ++i) |
-this.listItemElement.addStyleClass(this._iconClasses[i]); |
-} |
- |
-var selectionElement = document.createElement("div"); |
-selectionElement.className = "selection"; |
-this.listItemElement.appendChild(selectionElement); |
- |
-if (!this._noIcon) { |
-this.imageElement = document.createElement("img"); |
-this.imageElement.className = "icon"; |
-this.listItemElement.appendChild(this.imageElement); |
-} |
- |
-this.titleElement = document.createElement("div"); |
-this.titleElement.className = "base-navigator-tree-element-title"; |
-this._titleTextNode = document.createTextNode(""); |
-this._titleTextNode.textContent = this._titleText; |
-this.titleElement.appendChild(this._titleTextNode); |
-this.listItemElement.appendChild(this.titleElement); |
-}, |
- |
-onreveal: function() |
-{ |
-if (this.listItemElement) |
-this.listItemElement.scrollIntoViewIfNeeded(true); |
-}, |
- |
- |
-get titleText() |
-{ |
-return this._titleText; |
-}, |
- |
-set titleText(titleText) |
-{ |
-if (this._titleText === titleText) |
-return; |
-this._titleText = titleText || ""; |
-if (this.titleElement) |
-this.titleElement.textContent = this._titleText; |
-}, |
- |
- |
-type: function() |
-{ |
-return this._type; |
-}, |
- |
-__proto__: TreeElement.prototype |
-} |
- |
- |
-WebInspector.NavigatorFolderTreeElement = function(type, title) |
-{ |
-var iconClass = WebInspector.NavigatorView.iconClassForType(type); |
-WebInspector.BaseNavigatorTreeElement.call(this, type, title, [iconClass], true); |
-} |
- |
-WebInspector.NavigatorFolderTreeElement.prototype = { |
-onpopulate: function() |
-{ |
-this._node.populate(); |
-}, |
- |
-onattach: function() |
-{ |
-WebInspector.BaseNavigatorTreeElement.prototype.onattach.call(this); |
-this.collapse(); |
-}, |
- |
- |
-setNode: function(node) |
-{ |
-this._node = node; |
-var paths = []; |
-while (node && !node.isRoot()) { |
-paths.push(node._title); |
-node = node.parent; |
-} |
-paths.reverse(); |
-this.tooltip = paths.join("/"); |
-}, |
- |
-__proto__: WebInspector.BaseNavigatorTreeElement.prototype |
-} |
- |
- |
-WebInspector.NavigatorSourceTreeElement = function(navigatorView, uiSourceCode, title) |
-{ |
-WebInspector.BaseNavigatorTreeElement.call(this, WebInspector.NavigatorTreeOutline.Types.UISourceCode, title, ["navigator-" + uiSourceCode.contentType().name() + "-tree-item"], false); |
-this._navigatorView = navigatorView; |
-this._uiSourceCode = uiSourceCode; |
-this.tooltip = uiSourceCode.originURL(); |
-} |
- |
-WebInspector.NavigatorSourceTreeElement.prototype = { |
- |
-get uiSourceCode() |
-{ |
-return this._uiSourceCode; |
-}, |
- |
-onattach: function() |
-{ |
-WebInspector.BaseNavigatorTreeElement.prototype.onattach.call(this); |
-this.listItemElement.draggable = true; |
-this.listItemElement.addEventListener("click", this._onclick.bind(this), false); |
-this.listItemElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), false); |
-this.listItemElement.addEventListener("mousedown", this._onmousedown.bind(this), false); |
-this.listItemElement.addEventListener("dragstart", this._ondragstart.bind(this), false); |
-}, |
- |
-_onmousedown: function(event) |
-{ |
-if (event.which === 1) |
-this._uiSourceCode.requestContent(callback.bind(this)); |
- |
-function callback(content, contentEncoded, mimeType) |
-{ |
-this._warmedUpContent = content; |
-} |
-}, |
- |
-_shouldRenameOnMouseDown: function() |
-{ |
-var isSelected = this === this.treeOutline.selectedTreeElement; |
-var isFocused = this.treeOutline.childrenListElement.isSelfOrAncestor(document.activeElement); |
-return isSelected && isFocused && !WebInspector.isBeingEdited(this.treeOutline.element); |
-}, |
- |
-selectOnMouseDown: function(event) |
-{ |
-if (!this._shouldRenameOnMouseDown()) { |
-TreeElement.prototype.selectOnMouseDown.call(this, event); |
-return; |
-} |
-setTimeout(rename.bind(this), 300); |
- |
-function rename() |
-{ |
-if (this._shouldRenameOnMouseDown()) |
-this._navigatorView.handleRename(this._uiSourceCode); |
-} |
-}, |
- |
-_ondragstart: function(event) |
-{ |
-event.dataTransfer.setData("text/plain", this._warmedUpContent); |
-event.dataTransfer.effectAllowed = "copy"; |
-return true; |
-}, |
- |
-onspace: function() |
-{ |
-this._navigatorView._scriptSelected(this.uiSourceCode, true); |
-return true; |
-}, |
- |
- |
-_onclick: function(event) |
-{ |
-this._navigatorView._scriptSelected(this.uiSourceCode, false); |
-}, |
- |
- |
-ondblclick: function(event) |
-{ |
-var middleClick = event.button === 1; |
-this._navigatorView._scriptSelected(this.uiSourceCode, !middleClick); |
-}, |
- |
-onenter: function() |
-{ |
-this._navigatorView._scriptSelected(this.uiSourceCode, true); |
-return true; |
-}, |
- |
- |
-_handleContextMenuEvent: function(event) |
-{ |
-this.select(); |
-this._navigatorView.handleContextMenu(event, this._uiSourceCode); |
-}, |
- |
-__proto__: WebInspector.BaseNavigatorTreeElement.prototype |
-} |
- |
- |
-WebInspector.NavigatorTreeNode = function(id) |
-{ |
-this.id = id; |
-this._children = {}; |
-} |
- |
-WebInspector.NavigatorTreeNode.prototype = { |
- |
-treeElement: function() { }, |
- |
-dispose: function() { }, |
- |
- |
-isRoot: function() |
-{ |
-return false; |
-}, |
- |
- |
-hasChildren: function() |
-{ |
-return true; |
-}, |
- |
-populate: function() |
-{ |
-if (this.isPopulated()) |
-return; |
-if (this.parent) |
-this.parent.populate(); |
-this._populated = true; |
-this.wasPopulated(); |
-}, |
- |
-wasPopulated: function() |
-{ |
-for (var id in this._children) |
-this.treeElement().appendChild(this._children[id].treeElement()); |
-}, |
- |
-didAddChild: function(node) |
-{ |
-if (this.isPopulated()) |
-this.treeElement().appendChild(node.treeElement()); |
-}, |
- |
-willRemoveChild: function(node) |
-{ |
-if (this.isPopulated()) |
-this.treeElement().removeChild(node.treeElement()); |
-}, |
- |
-isPopulated: function() |
-{ |
-return this._populated; |
-}, |
- |
-isEmpty: function() |
-{ |
-return this.children().length === 0; |
-}, |
- |
-child: function(id) |
-{ |
-return this._children[id]; |
-}, |
- |
-children: function() |
-{ |
-return Object.values(this._children); |
-}, |
- |
-appendChild: function(node) |
-{ |
-this._children[node.id] = node; |
-node.parent = this; |
-this.didAddChild(node); |
-}, |
- |
-removeChild: function(node) |
-{ |
-this.willRemoveChild(node); |
-delete this._children[node.id]; |
-delete node.parent; |
-node.dispose(); |
-}, |
- |
-reset: function() |
-{ |
-this._children = {}; |
-} |
-} |
- |
- |
-WebInspector.NavigatorRootTreeNode = function(navigatorView) |
-{ |
-WebInspector.NavigatorTreeNode.call(this, ""); |
-this._navigatorView = navigatorView; |
-} |
- |
-WebInspector.NavigatorRootTreeNode.prototype = { |
- |
-isRoot: function() |
-{ |
-return true; |
-}, |
- |
- |
-treeElement: function() |
-{ |
-return this._navigatorView._scriptsTree; |
-}, |
- |
-wasPopulated: function() |
-{ |
-for (var id in this._children) |
-this.treeElement().appendChild(this._children[id].treeElement()); |
-}, |
- |
-didAddChild: function(node) |
-{ |
-if (this.isPopulated()) |
-this.treeElement().appendChild(node.treeElement()); |
-}, |
- |
-willRemoveChild: function(node) |
-{ |
-if (this.isPopulated()) |
-this.treeElement().removeChild(node.treeElement()); |
-}, |
- |
-__proto__: WebInspector.NavigatorTreeNode.prototype |
-} |
- |
- |
-WebInspector.NavigatorUISourceCodeTreeNode = function(navigatorView, uiSourceCode) |
-{ |
-WebInspector.NavigatorTreeNode.call(this, uiSourceCode.name()); |
-this._navigatorView = navigatorView; |
-this._uiSourceCode = uiSourceCode; |
-} |
- |
-WebInspector.NavigatorUISourceCodeTreeNode.prototype = { |
- |
-uiSourceCode: function() |
-{ |
-return this._uiSourceCode; |
-}, |
- |
- |
-treeElement: function() |
-{ |
-if (this._treeElement) |
-return this._treeElement; |
- |
-this._treeElement = new WebInspector.NavigatorSourceTreeElement(this._navigatorView, this._uiSourceCode, ""); |
-this.updateTitle(); |
- |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.TitleChanged, this._titleChanged, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._workingCopyChanged, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._workingCopyCommitted, this); |
-this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.FormattedChanged, this._formattedChanged, this); |
- |
-return this._treeElement; |
-}, |
- |
- |
-updateTitle: function(ignoreIsDirty) |
-{ |
-if (!this._treeElement) |
-return; |
- |
-var titleText = this._uiSourceCode.name().trimEnd(100); |
-if (!titleText) |
-titleText = WebInspector.UIString("(program)"); |
-if (!ignoreIsDirty && this._uiSourceCode.isDirty()) |
-titleText = "*" + titleText; |
-this._treeElement.titleText = titleText; |
-}, |
- |
- |
-hasChildren: function() |
-{ |
-return false; |
-}, |
- |
-dispose: function() |
-{ |
-if (!this._treeElement) |
-return; |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.TitleChanged, this._titleChanged, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._workingCopyChanged, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._workingCopyCommitted, this); |
-this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.FormattedChanged, this._formattedChanged, this); |
-}, |
- |
-_titleChanged: function(event) |
-{ |
-this.updateTitle(); |
-}, |
- |
-_workingCopyChanged: function(event) |
-{ |
-this.updateTitle(); |
-}, |
- |
-_workingCopyCommitted: function(event) |
-{ |
-this.updateTitle(); |
-}, |
- |
-_formattedChanged: function(event) |
-{ |
-this.updateTitle(); |
-}, |
- |
- |
-reveal: function(select) |
-{ |
-this.parent.populate(); |
-this.parent.treeElement().expand(); |
-this._treeElement.reveal(); |
-if (select) |
-this._treeElement.select(); |
-}, |
- |
- |
-rename: function(callback) |
-{ |
-if (!this._treeElement) |
-return; |
- |
- |
-var treeOutlineElement = this._treeElement.treeOutline.element; |
-WebInspector.markBeingEdited(treeOutlineElement, true); |
- |
-function commitHandler(element, newTitle, oldTitle) |
-{ |
-if (newTitle && newTitle !== oldTitle) |
-this._navigatorView._fileRenamed(this._uiSourceCode, newTitle); |
-afterEditing.call(this, true); |
-} |
- |
+{for(var url in this._breakpointElements) |
+this._removeBreakpoint(url);this._saveBreakpoints();} |
+var removeAllTitle=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove all breakpoints":"Remove All Breakpoints");contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add breakpoint":"Add Breakpoint"),this._addButtonClicked.bind(this));contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove breakpoint":"Remove Breakpoint"),removeBreakpoint.bind(this));contextMenu.appendItem(removeAllTitle,removeAllBreakpoints.bind(this));contextMenu.show();},_checkboxClicked:function(url,event) |
+{if(event.target.checked) |
+DOMDebuggerAgent.setXHRBreakpoint(url);else |
+DOMDebuggerAgent.removeXHRBreakpoint(url);this._saveBreakpoints();},_labelClicked:function(url) |
+{var element=this._breakpointElements[url];var inputElement=document.createElement("span");inputElement.className="breakpoint-condition editing";inputElement.textContent=url;this.listElement.insertBefore(inputElement,element);element.addStyleClass("hidden");function finishEditing(accept,e,text) |
+{this._removeListElement(inputElement);if(accept){this._removeBreakpoint(url);this._setBreakpoint(text,element._checkboxElement.checked);this._saveBreakpoints();}else |
+element.removeStyleClass("hidden");} |
+WebInspector.startEditing(inputElement,new WebInspector.EditingConfig(finishEditing.bind(this,true),finishEditing.bind(this,false)));},highlightBreakpoint:function(url) |
+{var element=this._breakpointElements[url];if(!element) |
+return;this.expand();element.addStyleClass("breakpoint-hit");this._highlightedElement=element;},clearBreakpointHighlight:function() |
+{if(this._highlightedElement){this._highlightedElement.removeStyleClass("breakpoint-hit");delete this._highlightedElement;}},_saveBreakpoints:function() |
+{var breakpoints=[];for(var url in this._breakpointElements) |
+breakpoints.push({url:url,enabled:this._breakpointElements[url]._checkboxElement.checked});WebInspector.settings.xhrBreakpoints.set(breakpoints);},_restoreBreakpoints:function() |
+{var breakpoints=WebInspector.settings.xhrBreakpoints.get();for(var i=0;i<breakpoints.length;++i){var breakpoint=breakpoints[i];if(breakpoint&&typeof breakpoint.url==="string") |
+this._setBreakpoint(breakpoint.url,breakpoint.enabled);}},__proto__:WebInspector.NativeBreakpointsSidebarPane.prototype} |
+WebInspector.EventListenerBreakpointsSidebarPane=function() |
+{WebInspector.SidebarPane.call(this,WebInspector.UIString("Event Listener Breakpoints"));this.registerRequiredCSS("breakpointsList.css");this.categoriesElement=document.createElement("ol");this.categoriesElement.tabIndex=0;this.categoriesElement.addStyleClass("properties-tree");this.categoriesElement.addStyleClass("event-listener-breakpoints");this.categoriesTreeOutline=new TreeOutline(this.categoriesElement);this.bodyElement.appendChild(this.categoriesElement);this._breakpointItems={};this._createCategory(WebInspector.UIString("Animation"),false,["requestAnimationFrame","cancelAnimationFrame","animationFrameFired"]);this._createCategory(WebInspector.UIString("Control"),true,["resize","scroll","zoom","focus","blur","select","change","submit","reset"]);this._createCategory(WebInspector.UIString("Clipboard"),true,["copy","cut","paste","beforecopy","beforecut","beforepaste"]);this._createCategory(WebInspector.UIString("DOM Mutation"),true,["DOMActivate","DOMFocusIn","DOMFocusOut","DOMAttrModified","DOMCharacterDataModified","DOMNodeInserted","DOMNodeInsertedIntoDocument","DOMNodeRemoved","DOMNodeRemovedFromDocument","DOMSubtreeModified","DOMContentLoaded"]);this._createCategory(WebInspector.UIString("Device"),true,["deviceorientation","devicemotion"]);this._createCategory(WebInspector.UIString("Keyboard"),true,["keydown","keyup","keypress","input"]);this._createCategory(WebInspector.UIString("Load"),true,["load","unload","abort","error","hashchange"]);this._createCategory(WebInspector.UIString("Mouse"),true,["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout","mousewheel"]);this._createCategory(WebInspector.UIString("Timer"),false,["setTimer","clearTimer","timerFired"]);this._createCategory(WebInspector.UIString("Touch"),true,["touchstart","touchmove","touchend","touchcancel"]);this._createCategory(WebInspector.UIString("WebGL"),false,["webglErrorFired","webglWarningFired"]);this._restoreBreakpoints();} |
+WebInspector.EventListenerBreakpointsSidebarPane.categotyListener="listener:";WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation="instrumentation:";WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI=function(eventName,auxData) |
+{if(!WebInspector.EventListenerBreakpointsSidebarPane._eventNamesForUI){WebInspector.EventListenerBreakpointsSidebarPane._eventNamesForUI={"instrumentation:setTimer":WebInspector.UIString("Set Timer"),"instrumentation:clearTimer":WebInspector.UIString("Clear Timer"),"instrumentation:timerFired":WebInspector.UIString("Timer Fired"),"instrumentation:requestAnimationFrame":WebInspector.UIString("Request Animation Frame"),"instrumentation:cancelAnimationFrame":WebInspector.UIString("Cancel Animation Frame"),"instrumentation:animationFrameFired":WebInspector.UIString("Animation Frame Fired"),"instrumentation:webglErrorFired":WebInspector.UIString("WebGL Error Fired"),"instrumentation:webglWarningFired":WebInspector.UIString("WebGL Warning Fired")};} |
+if(auxData){if(eventName==="instrumentation:webglErrorFired"&&auxData["webglErrorName"]){var errorName=auxData["webglErrorName"];errorName=errorName.replace(/^.*(0x[0-9a-f]+).*$/i,"$1");return WebInspector.UIString("WebGL Error Fired (%s)",errorName);}} |
+return WebInspector.EventListenerBreakpointsSidebarPane._eventNamesForUI[eventName]||eventName.substring(eventName.indexOf(":")+1);} |
+WebInspector.EventListenerBreakpointsSidebarPane.prototype={_createCategory:function(name,isDOMEvent,eventNames) |
+{var categoryItem={};categoryItem.element=new TreeElement(name);this.categoriesTreeOutline.appendChild(categoryItem.element);categoryItem.element.listItemElement.addStyleClass("event-category");categoryItem.element.selectable=true;categoryItem.checkbox=this._createCheckbox(categoryItem.element);categoryItem.checkbox.addEventListener("click",this._categoryCheckboxClicked.bind(this,categoryItem),true);categoryItem.children={};for(var i=0;i<eventNames.length;++i){var eventName=(isDOMEvent?WebInspector.EventListenerBreakpointsSidebarPane.categotyListener:WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation)+eventNames[i];var breakpointItem={};var title=WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName);breakpointItem.element=new TreeElement(title);categoryItem.element.appendChild(breakpointItem.element);var hitMarker=document.createElement("div");hitMarker.className="breakpoint-hit-marker";breakpointItem.element.listItemElement.appendChild(hitMarker);breakpointItem.element.listItemElement.addStyleClass("source-code");breakpointItem.element.selectable=false;breakpointItem.checkbox=this._createCheckbox(breakpointItem.element);breakpointItem.checkbox.addEventListener("click",this._breakpointCheckboxClicked.bind(this,eventName),true);breakpointItem.parent=categoryItem;this._breakpointItems[eventName]=breakpointItem;categoryItem.children[eventName]=breakpointItem;}},_createCheckbox:function(treeElement) |
+{var checkbox=document.createElement("input");checkbox.className="checkbox-elem";checkbox.type="checkbox";treeElement.listItemElement.insertBefore(checkbox,treeElement.listItemElement.firstChild);return checkbox;},_categoryCheckboxClicked:function(categoryItem) |
+{var checked=categoryItem.checkbox.checked;for(var eventName in categoryItem.children){var breakpointItem=categoryItem.children[eventName];if(breakpointItem.checkbox.checked===checked) |
+continue;if(checked) |
+this._setBreakpoint(eventName);else |
+this._removeBreakpoint(eventName);} |
+this._saveBreakpoints();},_breakpointCheckboxClicked:function(eventName,event) |
+{if(event.target.checked) |
+this._setBreakpoint(eventName);else |
+this._removeBreakpoint(eventName);this._saveBreakpoints();},_setBreakpoint:function(eventName) |
+{var breakpointItem=this._breakpointItems[eventName];if(!breakpointItem) |
+return;breakpointItem.checkbox.checked=true;if(eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener)) |
+DOMDebuggerAgent.setEventListenerBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener.length));else if(eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation)) |
+DOMDebuggerAgent.setInstrumentationBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation.length));this._updateCategoryCheckbox(breakpointItem.parent);},_removeBreakpoint:function(eventName) |
+{var breakpointItem=this._breakpointItems[eventName];if(!breakpointItem) |
+return;breakpointItem.checkbox.checked=false;if(eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener)) |
+DOMDebuggerAgent.removeEventListenerBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyListener.length));else if(eventName.startsWith(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation)) |
+DOMDebuggerAgent.removeInstrumentationBreakpoint(eventName.substring(WebInspector.EventListenerBreakpointsSidebarPane.categotyInstrumentation.length));this._updateCategoryCheckbox(breakpointItem.parent);},_updateCategoryCheckbox:function(categoryItem) |
+{var hasEnabled=false,hasDisabled=false;for(var eventName in categoryItem.children){var breakpointItem=categoryItem.children[eventName];if(breakpointItem.checkbox.checked) |
+hasEnabled=true;else |
+hasDisabled=true;} |
+categoryItem.checkbox.checked=hasEnabled;categoryItem.checkbox.indeterminate=hasEnabled&&hasDisabled;},highlightBreakpoint:function(eventName) |
+{var breakpointItem=this._breakpointItems[eventName];if(!breakpointItem) |
+return;this.expand();breakpointItem.parent.element.expand();breakpointItem.element.listItemElement.addStyleClass("breakpoint-hit");this._highlightedElement=breakpointItem.element.listItemElement;},clearBreakpointHighlight:function() |
+{if(this._highlightedElement){this._highlightedElement.removeStyleClass("breakpoint-hit");delete this._highlightedElement;}},_saveBreakpoints:function() |
+{var breakpoints=[];for(var eventName in this._breakpointItems){if(this._breakpointItems[eventName].checkbox.checked) |
+breakpoints.push({eventName:eventName});} |
+WebInspector.settings.eventListenerBreakpoints.set(breakpoints);},_restoreBreakpoints:function() |
+{var breakpoints=WebInspector.settings.eventListenerBreakpoints.get();for(var i=0;i<breakpoints.length;++i){var breakpoint=breakpoints[i];if(breakpoint&&typeof breakpoint.eventName==="string") |
+this._setBreakpoint(breakpoint.eventName);}},__proto__:WebInspector.SidebarPane.prototype};WebInspector.CallStackSidebarPane=function() |
+{WebInspector.SidebarPane.call(this,WebInspector.UIString("Call Stack"));this._model=WebInspector.debuggerModel;this.bodyElement.addEventListener("keydown",this._keyDown.bind(this),true);this.bodyElement.tabIndex=0;} |
+WebInspector.CallStackSidebarPane.Events={CallFrameSelected:"CallFrameSelected"} |
+WebInspector.CallStackSidebarPane.prototype={update:function(callFrames) |
+{this.bodyElement.removeChildren();delete this._statusMessageElement;this.placards=[];if(!callFrames){var infoElement=document.createElement("div");infoElement.className="info";infoElement.textContent=WebInspector.UIString("Not Paused");this.bodyElement.appendChild(infoElement);return;} |
+for(var i=0;i<callFrames.length;++i){var callFrame=callFrames[i];var placard=new WebInspector.CallStackSidebarPane.Placard(callFrame,this);placard.element.addEventListener("click",this._placardSelected.bind(this,placard),false);this.placards.push(placard);this.bodyElement.appendChild(placard.element);}},setSelectedCallFrame:function(x) |
+{for(var i=0;i<this.placards.length;++i){var placard=this.placards[i];placard.selected=(placard._callFrame===x);}},_selectNextCallFrameOnStack:function(event) |
+{var index=this._selectedCallFrameIndex();if(index==-1) |
+return true;this._selectedPlacardByIndex(index+1);return true;},_selectPreviousCallFrameOnStack:function(event) |
+{var index=this._selectedCallFrameIndex();if(index==-1) |
+return true;this._selectedPlacardByIndex(index-1);return true;},_selectedPlacardByIndex:function(index) |
+{if(index<0||index>=this.placards.length) |
+return;this._placardSelected(this.placards[index])},_selectedCallFrameIndex:function() |
+{if(!this._model.selectedCallFrame()) |
+return-1;for(var i=0;i<this.placards.length;++i){var placard=this.placards[i];if(placard._callFrame===this._model.selectedCallFrame()) |
+return i;} |
+return-1;},_placardSelected:function(placard) |
+{this.dispatchEventToListeners(WebInspector.CallStackSidebarPane.Events.CallFrameSelected,placard._callFrame);},_copyStackTrace:function() |
+{var text="";for(var i=0;i<this.placards.length;++i) |
+text+=this.placards[i].title+" ("+this.placards[i].subtitle+")\n";InspectorFrontendHost.copyText(text);},registerShortcuts:function(registerShortcutDelegate) |
+{registerShortcutDelegate(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.NextCallFrame,this._selectNextCallFrameOnStack.bind(this));registerShortcutDelegate(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.PrevCallFrame,this._selectPreviousCallFrameOnStack.bind(this));},setStatus:function(status) |
+{if(!this._statusMessageElement){this._statusMessageElement=document.createElement("div");this._statusMessageElement.className="info";this.bodyElement.appendChild(this._statusMessageElement);} |
+if(typeof status==="string") |
+this._statusMessageElement.textContent=status;else{this._statusMessageElement.removeChildren();this._statusMessageElement.appendChild(status);}},_keyDown:function(event) |
+{if(event.altKey||event.shiftKey||event.metaKey||event.ctrlKey) |
+return;if(event.keyIdentifier==="Up"){this._selectPreviousCallFrameOnStack();event.consume();}else if(event.keyIdentifier==="Down"){this._selectNextCallFrameOnStack();event.consume();}},__proto__:WebInspector.SidebarPane.prototype} |
+WebInspector.CallStackSidebarPane.Placard=function(callFrame,pane) |
+{WebInspector.Placard.call(this,callFrame.functionName||WebInspector.UIString("(anonymous function)"),"");callFrame.createLiveLocation(this._update.bind(this));this.element.addEventListener("contextmenu",this._placardContextMenu.bind(this),true);this._callFrame=callFrame;this._pane=pane;} |
+WebInspector.CallStackSidebarPane.Placard.prototype={_update:function(uiLocation) |
+{this.subtitle=uiLocation.linkText().trimMiddle(100);},_placardContextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);if(WebInspector.debuggerModel.canSetScriptSource()){contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Restart frame":"Restart Frame"),this._restartFrame.bind(this));contextMenu.appendSeparator();} |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Copy stack trace":"Copy Stack Trace"),this._pane._copyStackTrace.bind(this._pane));contextMenu.show();},_restartFrame:function() |
+{this._callFrame.restart(undefined);},__proto__:WebInspector.Placard.prototype};WebInspector.FilePathScoreFunction=function(query) |
+{this._query=query;this._queryUpperCase=query.toUpperCase();this._score=null;this._sequence=null;this._dataUpperCase="";this._fileNameIndex=0;} |
+WebInspector.FilePathScoreFunction.filterRegex=function(query) |
+{const toEscape=String.regexSpecialCharacters();var regexString="";for(var i=0;i<query.length;++i){var c=query.charAt(i);if(toEscape.indexOf(c)!==-1) |
+c="\\"+c;if(i) |
+regexString+="[^"+c+"]*";regexString+=c;} |
+return new RegExp(regexString,"i");} |
+WebInspector.FilePathScoreFunction.prototype={score:function(data,matchIndexes) |
+{if(!data||!this._query) |
+return 0;var n=this._query.length;var m=data.length;if(!this._score||this._score.length<n*m){this._score=new Int32Array(n*m*2);this._sequence=new Int32Array(n*m*2);} |
+var score=this._score;var sequence=this._sequence;this._dataUpperCase=data.toUpperCase();this._fileNameIndex=data.lastIndexOf("/");for(var i=0;i<n;++i){for(var j=0;j<m;++j){var skipCharScore=j===0?0:score[i*m+j-1];var prevCharScore=i===0||j===0?0:score[(i-1)*m+j-1];var consecutiveMatch=i===0||j===0?0:sequence[(i-1)*m+j-1];var pickCharScore=this._match(this._query,data,i,j,consecutiveMatch);if(pickCharScore&&prevCharScore+pickCharScore>skipCharScore){sequence[i*m+j]=consecutiveMatch+1;score[i*m+j]=(prevCharScore+pickCharScore);}else{sequence[i*m+j]=0;score[i*m+j]=skipCharScore;}}} |
+if(matchIndexes) |
+this._restoreMatchIndexes(sequence,n,m,matchIndexes);return score[n*m-1];},_testWordStart:function(data,j) |
+{var prevChar=data.charAt(j-1);return j===0||prevChar==="_"||prevChar==="-"||prevChar==="/"||(data[j-1]!==this._dataUpperCase[j-1]&&data[j]===this._dataUpperCase[j]);},_restoreMatchIndexes:function(sequence,n,m,out) |
+{var i=n-1,j=m-1;while(i>=0&&j>=0){switch(sequence[i*m+j]){case 0:--j;break;default:out.push(j);--i;--j;break;}} |
+out.reverse();},_singleCharScore:function(query,data,i,j) |
+{var isWordStart=this._testWordStart(data,j);var isFileName=j>this._fileNameIndex;var isPathTokenStart=j===0||data[j-1]==="/";var isCapsMatch=query[i]===data[j]&&query[i]==this._queryUpperCase[i];var score=10;if(isPathTokenStart) |
+score+=4;if(isWordStart) |
+score+=2;if(isCapsMatch) |
+score+=6;if(isFileName) |
+score+=4;if(j===this._fileNameIndex+1&&i===0) |
+score+=5;if(isFileName&&isWordStart) |
+score+=3;return score;},_sequenceCharScore:function(query,data,i,j,sequenceLength) |
+{var isFileName=j>this._fileNameIndex;var isPathTokenStart=j===0||data[j-1]==="/";var score=10;if(isFileName) |
+score+=4;if(isPathTokenStart) |
+score+=5;score+=sequenceLength*4;return score;},_match:function(query,data,i,j,consecutiveMatch) |
+{if(this._queryUpperCase[i]!==this._dataUpperCase[j]) |
+return 0;if(!consecutiveMatch) |
+return this._singleCharScore(query,data,i,j);else |
+return this._sequenceCharScore(query,data,i,j-consecutiveMatch,consecutiveMatch);},};WebInspector.FilteredItemSelectionDialog=function(delegate) |
+{WebInspector.DialogDelegate.call(this);var xhr=new XMLHttpRequest();xhr.open("GET","filteredItemSelectionDialog.css",false);xhr.send(null);this.element=document.createElement("div");this.element.className="filtered-item-list-dialog";this.element.addEventListener("keydown",this._onKeyDown.bind(this),false);var styleElement=this.element.createChild("style");styleElement.type="text/css";styleElement.textContent=xhr.responseText;this._promptElement=this.element.createChild("input","monospace");this._promptElement.addEventListener("input",this._onInput.bind(this),false);this._promptElement.type="text";this._promptElement.setAttribute("spellcheck","false");this._filteredItems=[];this._viewportControl=new WebInspector.ViewportControl(this);this._itemElementsContainer=this._viewportControl.element;this._itemElementsContainer.addStyleClass("container");this._itemElementsContainer.addStyleClass("monospace");this._itemElementsContainer.addEventListener("click",this._onClick.bind(this),false);this.element.appendChild(this._itemElementsContainer);this._delegate=delegate;this._delegate.setRefreshCallback(this._itemsLoaded.bind(this));this._itemsLoaded();this._shouldShowMatchingItems=true;} |
+WebInspector.FilteredItemSelectionDialog.prototype={position:function(element,relativeToElement) |
+{const minWidth=500;const minHeight=204;var width=Math.max(relativeToElement.offsetWidth*2/3,minWidth);var height=Math.max(relativeToElement.offsetHeight*2/3,minHeight);this.element.style.width=width+"px";const shadowPadding=20;element.positionAt(relativeToElement.totalOffsetLeft()+Math.max((relativeToElement.offsetWidth-width-2*shadowPadding)/2,shadowPadding),relativeToElement.totalOffsetTop()+Math.max((relativeToElement.offsetHeight-height-2*shadowPadding)/2,shadowPadding));this._dialogHeight=height;this._updateShowMatchingItems();},focus:function() |
+{WebInspector.setCurrentFocusElement(this._promptElement);if(this._filteredItems.length&&this._viewportControl.lastVisibleIndex()===-1) |
+this._viewportControl.refresh();},willHide:function() |
+{if(this._isHiding) |
+return;this._isHiding=true;this._delegate.dispose();if(this._filterTimer) |
+clearTimeout(this._filterTimer);},renderAsTwoRows:function() |
+{this._renderAsTwoRows=true;},onEnter:function() |
+{if(!this._delegate.itemCount()) |
+return;this._delegate.selectItem(this._filteredItems[this._selectedIndexInFiltered],this._promptElement.value.trim());},_itemsLoaded:function() |
+{if(this._loadTimeout) |
+return;this._loadTimeout=setTimeout(this._updateAfterItemsLoaded.bind(this),0);},_updateAfterItemsLoaded:function() |
+{delete this._loadTimeout;this._filterItems();},_createItemElement:function(index) |
+{var itemElement=document.createElement("div");itemElement.className="filtered-item-list-dialog-item "+(this._renderAsTwoRows?"two-rows":"one-row");itemElement._titleElement=itemElement.createChild("span");itemElement._titleSuffixElement=itemElement.createChild("span");itemElement._subtitleElement=itemElement.createChild("div","filtered-item-list-dialog-subtitle");itemElement._subtitleElement.textContent="\u200B";itemElement._index=index;this._delegate.renderItem(index,this._promptElement.value.trim(),itemElement._titleElement,itemElement._subtitleElement);return itemElement;},setQuery:function(query) |
+{this._promptElement.value=query;this._scheduleFilter();},_filterItems:function() |
+{delete this._filterTimer;if(this._scoringTimer){clearTimeout(this._scoringTimer);delete this._scoringTimer;} |
+var query=this._delegate.rewriteQuery(this._promptElement.value.trim());this._query=query;var queryLength=query.length;var filterRegex=query?WebInspector.FilePathScoreFunction.filterRegex(query):null;var oldSelectedAbsoluteIndex=this._selectedIndexInFiltered?this._filteredItems[this._selectedIndexInFiltered]:null;var filteredItems=[];this._selectedIndexInFiltered=0;var bestScores=[];var bestItems=[];var bestItemsToCollect=100;var minBestScore=0;var overflowItems=[];scoreItems.call(this,0);function compareIntegers(a,b) |
+{return b-a;} |
+function scoreItems(fromIndex) |
+{var maxWorkItems=1000;var workDone=0;for(var i=fromIndex;i<this._delegate.itemCount()&&workDone<maxWorkItems;++i){if(filterRegex&&!filterRegex.test(this._delegate.itemKeyAt(i))) |
+continue;var score=this._delegate.itemScoreAt(i,query);if(query) |
+workDone++;if(score>minBestScore||bestScores.length<bestItemsToCollect){var index=insertionIndexForObjectInListSortedByFunction(score,bestScores,compareIntegers,true);bestScores.splice(index,0,score);bestItems.splice(index,0,i);if(bestScores.length>bestItemsToCollect){overflowItems.push(bestItems.peekLast());bestScores.length=bestItemsToCollect;bestItems.length=bestItemsToCollect;} |
+minBestScore=bestScores.peekLast();}else |
+filteredItems.push(i);} |
+if(i<this._delegate.itemCount()){this._scoringTimer=setTimeout(scoreItems.bind(this,i),0);return;} |
+delete this._scoringTimer;this._filteredItems=bestItems.concat(overflowItems).concat(filteredItems);for(var i=0;i<this._filteredItems.length;++i){if(this._filteredItems[i]===oldSelectedAbsoluteIndex){this._selectedIndexInFiltered=i;break;}} |
+this._viewportControl.refresh();if(!query) |
+this._selectedIndexInFiltered=0;this._updateSelection(this._selectedIndexInFiltered,false);}},_onInput:function(event) |
+{this._shouldShowMatchingItems=this._delegate.shouldShowMatchingItems(this._promptElement.value);this._updateShowMatchingItems();this._scheduleFilter();},_updateShowMatchingItems:function() |
+{this._itemElementsContainer.enableStyleClass("hidden",!this._shouldShowMatchingItems);this.element.style.height=this._shouldShowMatchingItems?this._dialogHeight+"px":"auto";},_onKeyDown:function(event) |
+{var newSelectedIndex=this._selectedIndexInFiltered;switch(event.keyCode){case WebInspector.KeyboardShortcut.Keys.Down.code:if(++newSelectedIndex>=this._filteredItems.length) |
+newSelectedIndex=this._filteredItems.length-1;this._updateSelection(newSelectedIndex,true);event.consume(true);break;case WebInspector.KeyboardShortcut.Keys.Up.code:if(--newSelectedIndex<0) |
+newSelectedIndex=0;this._updateSelection(newSelectedIndex,false);event.consume(true);break;case WebInspector.KeyboardShortcut.Keys.PageDown.code:newSelectedIndex=Math.min(newSelectedIndex+this._viewportControl.rowsPerViewport(),this._filteredItems.length-1);this._updateSelection(newSelectedIndex,true);event.consume(true);break;case WebInspector.KeyboardShortcut.Keys.PageUp.code:newSelectedIndex=Math.max(newSelectedIndex-this._viewportControl.rowsPerViewport(),0);this._updateSelection(newSelectedIndex,false);event.consume(true);break;default:}},_scheduleFilter:function() |
+{if(this._filterTimer) |
+return;this._filterTimer=setTimeout(this._filterItems.bind(this),0);},_updateSelection:function(index,makeLast) |
+{var element=this._viewportControl.renderedElementAt(this._selectedIndexInFiltered);if(element) |
+element.removeStyleClass("selected");this._viewportControl.scrollItemIntoView(index,makeLast);this._selectedIndexInFiltered=index;element=this._viewportControl.renderedElementAt(index);if(element) |
+element.addStyleClass("selected");},_onClick:function(event) |
+{var itemElement=event.target.enclosingNodeOrSelfWithClass("filtered-item-list-dialog-item");if(!itemElement) |
+return;this._delegate.selectItem(itemElement._index,this._promptElement.value.trim());WebInspector.Dialog.hide();},itemCount:function() |
+{return this._filteredItems.length;},itemElement:function(index) |
+{var delegateIndex=this._filteredItems[index];var element=this._createItemElement(delegateIndex);if(index===this._selectedIndexInFiltered) |
+element.addStyleClass("selected");return element;},__proto__:WebInspector.DialogDelegate.prototype} |
+WebInspector.SelectionDialogContentProvider=function() |
+{} |
+WebInspector.SelectionDialogContentProvider.prototype={setRefreshCallback:function(refreshCallback) |
+{this._refreshCallback=refreshCallback;},shouldShowMatchingItems:function(query) |
+{return true;},itemCount:function() |
+{return 0;},itemKeyAt:function(itemIndex) |
+{return"";},itemScoreAt:function(itemIndex,query) |
+{return 1;},renderItem:function(itemIndex,query,titleElement,subtitleElement) |
+{},highlightRanges:function(element,query) |
+{if(!query) |
+return false;function rangesForMatch(text,query) |
+{var sm=new difflib.SequenceMatcher(query,text);var opcodes=sm.get_opcodes();var ranges=[];for(var i=0;i<opcodes.length;++i){var opcode=opcodes[i];if(opcode[0]==="equal") |
+ranges.push({offset:opcode[3],length:opcode[4]-opcode[3]});else if(opcode[0]!=="insert") |
+return null;} |
+return ranges;} |
+var text=element.textContent;var ranges=rangesForMatch(text,query);if(!ranges) |
+ranges=rangesForMatch(text.toUpperCase(),query.toUpperCase());if(ranges){WebInspector.highlightRangesWithStyleClass(element,ranges,"highlight");return true;} |
+return false;},selectItem:function(itemIndex,promptValue) |
+{},refresh:function() |
+{this._refreshCallback();},rewriteQuery:function(query) |
+{return query;},dispose:function() |
+{}} |
+WebInspector.JavaScriptOutlineDialog=function(view,contentProvider) |
+{WebInspector.SelectionDialogContentProvider.call(this);this._functionItems=[];this._view=view;contentProvider.requestContent(this._contentAvailable.bind(this));} |
+WebInspector.JavaScriptOutlineDialog.show=function(view,contentProvider) |
+{if(WebInspector.Dialog.currentInstance()) |
+return null;var filteredItemSelectionDialog=new WebInspector.FilteredItemSelectionDialog(new WebInspector.JavaScriptOutlineDialog(view,contentProvider));WebInspector.Dialog.show(view.element,filteredItemSelectionDialog);} |
+WebInspector.JavaScriptOutlineDialog.prototype={_contentAvailable:function(content,contentEncoded,mimeType) |
+{this._outlineWorker=new Worker("ScriptFormatterWorker.js");this._outlineWorker.onmessage=this._didBuildOutlineChunk.bind(this);const method="outline";this._outlineWorker.postMessage({method:method,params:{content:content}});},_didBuildOutlineChunk:function(event) |
+{var data=event.data;var chunk=data["chunk"];for(var i=0;i<chunk.length;++i) |
+this._functionItems.push(chunk[i]);if(data.total===data.index) |
+this.dispose();this.refresh();},itemCount:function() |
+{return this._functionItems.length;},itemKeyAt:function(itemIndex) |
+{return this._functionItems[itemIndex].name;},itemScoreAt:function(itemIndex,query) |
+{var item=this._functionItems[itemIndex];return-item.line;},renderItem:function(itemIndex,query,titleElement,subtitleElement) |
+{var item=this._functionItems[itemIndex];titleElement.textContent=item.name+(item.arguments?item.arguments:"");this.highlightRanges(titleElement,query);subtitleElement.textContent=":"+(item.line+1);},selectItem:function(itemIndex,promptValue) |
+{var lineNumber=this._functionItems[itemIndex].line;if(!isNaN(lineNumber)&&lineNumber>=0) |
+this._view.highlightPosition(lineNumber,this._functionItems[itemIndex].column);this._view.focus();},dispose:function() |
+{if(this._outlineWorker){this._outlineWorker.terminate();delete this._outlineWorker;}},__proto__:WebInspector.SelectionDialogContentProvider.prototype} |
+WebInspector.SelectUISourceCodeDialog=function(defaultScores) |
+{WebInspector.SelectionDialogContentProvider.call(this);this._uiSourceCodes=[];var projects=WebInspector.workspace.projects().filter(this.filterProject.bind(this));for(var i=0;i<projects.length;++i) |
+this._uiSourceCodes=this._uiSourceCodes.concat(projects[i].uiSourceCodes());this._defaultScores=defaultScores;this._scorer=new WebInspector.FilePathScoreFunction("");WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded,this._uiSourceCodeAdded,this);} |
+WebInspector.SelectUISourceCodeDialog.prototype={uiSourceCodeSelected:function(uiSourceCode,lineNumber) |
+{},filterProject:function(project) |
+{return true;},itemCount:function() |
+{return this._uiSourceCodes.length;},itemKeyAt:function(itemIndex) |
+{return this._uiSourceCodes[itemIndex].fullDisplayName();},itemScoreAt:function(itemIndex,query) |
+{var uiSourceCode=this._uiSourceCodes[itemIndex];var score=this._defaultScores?(this._defaultScores.get(uiSourceCode)||0):0;if(!query||query.length<2) |
+return score;if(this._query!==query){this._query=query;this._scorer=new WebInspector.FilePathScoreFunction(query);} |
+var path=uiSourceCode.fullDisplayName();return score+10*this._scorer.score(path,null);},renderItem:function(itemIndex,query,titleElement,subtitleElement) |
+{query=this.rewriteQuery(query);var uiSourceCode=this._uiSourceCodes[itemIndex];titleElement.textContent=uiSourceCode.displayName()+(this._queryLineNumber?this._queryLineNumber:"");subtitleElement.textContent=uiSourceCode.fullDisplayName().trimEnd(100);var indexes=[];var score=new WebInspector.FilePathScoreFunction(query).score(subtitleElement.textContent,indexes);var fileNameIndex=subtitleElement.textContent.lastIndexOf("/");var ranges=[];for(var i=0;i<indexes.length;++i) |
+ranges.push({offset:indexes[i],length:1});if(indexes[0]>fileNameIndex){for(var i=0;i<ranges.length;++i) |
+ranges[i].offset-=fileNameIndex+1;return WebInspector.highlightRangesWithStyleClass(titleElement,ranges,"highlight");}else{return WebInspector.highlightRangesWithStyleClass(subtitleElement,ranges,"highlight");}},selectItem:function(itemIndex,promptValue) |
+{if(/^:\d+$/.test(promptValue.trimRight())){var lineNumber=parseInt(promptValue.trimRight().substring(1),10)-1;if(!isNaN(lineNumber)&&lineNumber>=0) |
+this.uiSourceCodeSelected(null,lineNumber);return;} |
+var lineNumberMatch=promptValue.match(/[^:]+\:([\d]*)$/);var lineNumber=lineNumberMatch?Math.max(parseInt(lineNumberMatch[1],10)-1,0):undefined;this.uiSourceCodeSelected(this._uiSourceCodes[itemIndex],lineNumber);},rewriteQuery:function(query) |
+{if(!query) |
+return query;query=query.trim();var lineNumberMatch=query.match(/([^:]+)(\:[\d]*)$/);this._queryLineNumber=lineNumberMatch?lineNumberMatch[2]:"";return lineNumberMatch?lineNumberMatch[1]:query;},_uiSourceCodeAdded:function(event) |
+{var uiSourceCode=(event.data);if(!this.filterProject(uiSourceCode.project())) |
+return;this._uiSourceCodes.push(uiSourceCode) |
+this.refresh();},dispose:function() |
+{WebInspector.workspace.removeEventListener(WebInspector.Workspace.Events.UISourceCodeAdded,this._uiSourceCodeAdded,this);},__proto__:WebInspector.SelectionDialogContentProvider.prototype} |
+WebInspector.OpenResourceDialog=function(panel,defaultScores) |
+{WebInspector.SelectUISourceCodeDialog.call(this,defaultScores);this._panel=panel;} |
+WebInspector.OpenResourceDialog.prototype={uiSourceCodeSelected:function(uiSourceCode,lineNumber) |
+{if(!uiSourceCode) |
+uiSourceCode=this._panel.currentUISourceCode();if(!uiSourceCode) |
+return;this._panel.showUISourceCode(uiSourceCode,lineNumber);},shouldShowMatchingItems:function(query) |
+{return!query.startsWith(":");},filterProject:function(project) |
+{return!project.isServiceProject();},__proto__:WebInspector.SelectUISourceCodeDialog.prototype} |
+WebInspector.OpenResourceDialog.show=function(panel,relativeToElement,name,defaultScores) |
+{if(WebInspector.Dialog.currentInstance()) |
+return;var filteredItemSelectionDialog=new WebInspector.FilteredItemSelectionDialog(new WebInspector.OpenResourceDialog(panel,defaultScores));filteredItemSelectionDialog.renderAsTwoRows();if(name) |
+filteredItemSelectionDialog.setQuery(name);WebInspector.Dialog.show(relativeToElement,filteredItemSelectionDialog);} |
+WebInspector.SelectUISourceCodeForProjectTypeDialog=function(type,callback) |
+{this._type=type;WebInspector.SelectUISourceCodeDialog.call(this);this._callback=callback;} |
+WebInspector.SelectUISourceCodeForProjectTypeDialog.prototype={uiSourceCodeSelected:function(uiSourceCode,lineNumber) |
+{this._callback(uiSourceCode);},filterProject:function(project) |
+{return project.type()===this._type;},__proto__:WebInspector.SelectUISourceCodeDialog.prototype} |
+WebInspector.SelectUISourceCodeForProjectTypeDialog.show=function(name,type,callback,relativeToElement) |
+{if(WebInspector.Dialog.currentInstance()) |
+return;var filteredItemSelectionDialog=new WebInspector.FilteredItemSelectionDialog(new WebInspector.SelectUISourceCodeForProjectTypeDialog(type,callback));filteredItemSelectionDialog.setQuery(name);filteredItemSelectionDialog.renderAsTwoRows();WebInspector.Dialog.show(relativeToElement,filteredItemSelectionDialog);};WebInspector.UISourceCodeFrame=function(uiSourceCode) |
+{this._uiSourceCode=uiSourceCode;WebInspector.SourceFrame.call(this,this._uiSourceCode);this.textEditor.setCompletionDictionary(new WebInspector.SampleCompletionDictionary());this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.FormattedChanged,this._onFormattedChanged,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._onWorkingCopyChanged,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._onWorkingCopyCommitted,this);this._updateStyle();} |
+WebInspector.UISourceCodeFrame.prototype={wasShown:function() |
+{WebInspector.SourceFrame.prototype.wasShown.call(this);this._boundWindowFocused=this._windowFocused.bind(this);window.addEventListener("focus",this._boundWindowFocused,false);this._checkContentUpdated();},willHide:function() |
+{WebInspector.SourceFrame.prototype.willHide.call(this);window.removeEventListener("focus",this._boundWindowFocused,false);delete this._boundWindowFocused;this._uiSourceCode.removeWorkingCopyGetter();},canEditSource:function() |
+{return this._uiSourceCode.isEditable();},_windowFocused:function(event) |
+{this._checkContentUpdated();},_checkContentUpdated:function() |
+{if(!this.loaded||!this.isShowing()) |
+return;this._uiSourceCode.checkContentUpdated();},commitEditing:function(text) |
+{if(!this._uiSourceCode.isDirty()) |
+return;this._muteSourceCodeEvents=true;this._uiSourceCode.commitWorkingCopy(this._didEditContent.bind(this));delete this._muteSourceCodeEvents;},onTextChanged:function(oldRange,newRange) |
+{WebInspector.SourceFrame.prototype.onTextChanged.call(this,oldRange,newRange);if(this._isSettingContent) |
+return;this._muteSourceCodeEvents=true;if(this._textEditor.isClean()) |
+this._uiSourceCode.resetWorkingCopy();else |
+this._uiSourceCode.setWorkingCopyGetter(this._textEditor.text.bind(this._textEditor));delete this._muteSourceCodeEvents;},_didEditContent:function(error) |
+{if(error){WebInspector.log(error,WebInspector.ConsoleMessage.MessageLevel.Error,true);return;}},_onFormattedChanged:function(event) |
+{var content=(event.data.content);this._textEditor.setReadOnly(this._uiSourceCode.formatted());this._innerSetContent(content);},_onWorkingCopyChanged:function(event) |
+{if(this._muteSourceCodeEvents) |
+return;this._innerSetContent(this._uiSourceCode.workingCopy());this.onUISourceCodeContentChanged();},_onWorkingCopyCommitted:function(event) |
+{if(!this._muteSourceCodeEvents){this._innerSetContent(this._uiSourceCode.workingCopy());this.onUISourceCodeContentChanged();} |
+this._textEditor.markClean();this._updateStyle();},_updateStyle:function() |
+{this.element.enableStyleClass("source-frame-unsaved-committed-changes",this._uiSourceCode.hasUnsavedCommittedChanges());},onUISourceCodeContentChanged:function() |
+{},_innerSetContent:function(content) |
+{this._isSettingContent=true;this.setContent(content,false,this._uiSourceCode.mimeType());delete this._isSettingContent;},populateTextAreaContextMenu:function(contextMenu,lineNumber) |
+{WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this,contextMenu,lineNumber);contextMenu.appendApplicableItems(this._uiSourceCode);contextMenu.appendSeparator();},dispose:function() |
+{this.detach();},__proto__:WebInspector.SourceFrame.prototype};WebInspector.JavaScriptSourceFrame=function(scriptsPanel,uiSourceCode) |
+{this._scriptsPanel=scriptsPanel;this._breakpointManager=WebInspector.breakpointManager;this._uiSourceCode=uiSourceCode;WebInspector.UISourceCodeFrame.call(this,uiSourceCode);if(uiSourceCode.project().type()===WebInspector.projectTypes.Debugger) |
+this.element.addStyleClass("source-frame-debugger-script");this._popoverHelper=new WebInspector.ObjectPopoverHelper(this.textEditor.element,this._getPopoverAnchor.bind(this),this._resolveObjectForPopover.bind(this),this._onHidePopover.bind(this),true);this.textEditor.element.addEventListener("keydown",this._onKeyDown.bind(this),true);this.textEditor.addEventListener(WebInspector.TextEditor.Events.GutterClick,this._handleGutterClick.bind(this),this);this.textEditor.element.addEventListener("mousedown",this._onMouseDownAndClick.bind(this,true),true);this.textEditor.element.addEventListener("click",this._onMouseDownAndClick.bind(this,false),true);this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded,this._breakpointAdded,this);this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved,this._breakpointRemoved,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.ConsoleMessageAdded,this._consoleMessageAdded,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.ConsoleMessageRemoved,this._consoleMessageRemoved,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.ConsoleMessagesCleared,this._consoleMessagesCleared,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.SourceMappingChanged,this._onSourceMappingChanged,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._workingCopyChanged,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._workingCopyCommitted,this);this._registerShortcuts();this._updateScriptFile();} |
+WebInspector.JavaScriptSourceFrame.prototype={_registerShortcuts:function() |
+{var modifiers=WebInspector.KeyboardShortcut.Modifiers;this.addShortcut(WebInspector.KeyboardShortcut.makeKey("e",modifiers.Shift|modifiers.Ctrl),this._evaluateSelectionInConsole.bind(this));},_evaluateSelectionInConsole:function(event) |
+{var selection=this.textEditor.selection();if(!selection||selection.isEmpty()) |
+return false;WebInspector.evaluateInConsole(this.textEditor.copyRange(selection));return true;},wasShown:function() |
+{WebInspector.UISourceCodeFrame.prototype.wasShown.call(this);},willHide:function() |
+{WebInspector.UISourceCodeFrame.prototype.willHide.call(this);this._popoverHelper.hidePopover();},onUISourceCodeContentChanged:function() |
+{this._removeAllBreakpoints();WebInspector.UISourceCodeFrame.prototype.onUISourceCodeContentChanged.call(this);},populateLineGutterContextMenu:function(contextMenu,lineNumber) |
+{contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Continue to here":"Continue to Here"),this._continueToLine.bind(this,lineNumber));var breakpoint=this._breakpointManager.findBreakpoint(this._uiSourceCode,lineNumber);if(!breakpoint){contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add breakpoint":"Add Breakpoint"),this._setBreakpoint.bind(this,lineNumber,"",true));contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add conditional breakpoint…":"Add Conditional Breakpoint…"),this._editBreakpointCondition.bind(this,lineNumber));}else{contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove breakpoint":"Remove Breakpoint"),breakpoint.remove.bind(breakpoint));contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Edit breakpoint…":"Edit Breakpoint…"),this._editBreakpointCondition.bind(this,lineNumber,breakpoint));if(breakpoint.enabled()) |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Disable breakpoint":"Disable Breakpoint"),breakpoint.setEnabled.bind(breakpoint,false));else |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Enable breakpoint":"Enable Breakpoint"),breakpoint.setEnabled.bind(breakpoint,true));}},populateTextAreaContextMenu:function(contextMenu,lineNumber) |
+{var textSelection=this.textEditor.selection();if(textSelection&&!textSelection.isEmpty()){var selection=this.textEditor.copyRange(textSelection);var addToWatchLabel=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add to watch":"Add to Watch");contextMenu.appendItem(addToWatchLabel,this._scriptsPanel.addToWatch.bind(this._scriptsPanel,selection));var evaluateLabel=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Evaluate in console":"Evaluate in Console");contextMenu.appendItem(evaluateLabel,WebInspector.evaluateInConsole.bind(WebInspector,selection));contextMenu.appendSeparator();}else if(!this._uiSourceCode.isEditable()&&this._uiSourceCode.contentType()===WebInspector.resourceTypes.Script){function liveEdit(event) |
+{var liveEditUISourceCode=WebInspector.liveEditSupport.uiSourceCodeForLiveEdit(this._uiSourceCode);this._scriptsPanel.showUISourceCode(liveEditUISourceCode,lineNumber)} |
+var liveEditLabel=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Live edit":"Live Edit");contextMenu.appendItem(liveEditLabel,liveEdit.bind(this));contextMenu.appendSeparator();} |
+WebInspector.UISourceCodeFrame.prototype.populateTextAreaContextMenu.call(this,contextMenu,lineNumber);},_workingCopyChanged:function(event) |
+{if(this._supportsEnabledBreakpointsWhileEditing()||this._scriptFile) |
+return;if(this._uiSourceCode.isDirty()) |
+this._muteBreakpointsWhileEditing();else |
+this._restoreBreakpointsAfterEditing();},_workingCopyCommitted:function(event) |
+{if(this._supportsEnabledBreakpointsWhileEditing()||this._scriptFile) |
+return;this._restoreBreakpointsAfterEditing();},_didMergeToVM:function() |
+{if(this._supportsEnabledBreakpointsWhileEditing()) |
+return;this._restoreBreakpointsAfterEditing();},_didDivergeFromVM:function() |
+{if(this._supportsEnabledBreakpointsWhileEditing()) |
+return;this._muteBreakpointsWhileEditing();},_muteBreakpointsWhileEditing:function() |
+{if(this._muted) |
+return;for(var lineNumber=0;lineNumber<this._textEditor.linesCount;++lineNumber){var breakpointDecoration=this._textEditor.getAttribute(lineNumber,"breakpoint");if(!breakpointDecoration) |
+continue;this._removeBreakpointDecoration(lineNumber);this._addBreakpointDecoration(lineNumber,breakpointDecoration.condition,breakpointDecoration.enabled,true);} |
+this._muted=true;},_supportsEnabledBreakpointsWhileEditing:function() |
+{return this._uiSourceCode.project().type()===WebInspector.projectTypes.Snippets;},_restoreBreakpointsAfterEditing:function() |
+{delete this._muted;var breakpoints={};for(var lineNumber=0;lineNumber<this._textEditor.linesCount;++lineNumber){var breakpointDecoration=this._textEditor.getAttribute(lineNumber,"breakpoint");if(breakpointDecoration){breakpoints[lineNumber]=breakpointDecoration;this._removeBreakpointDecoration(lineNumber);}} |
+this._removeAllBreakpoints();for(var lineNumberString in breakpoints){var lineNumber=parseInt(lineNumberString,10);if(isNaN(lineNumber)) |
+continue;var breakpointDecoration=breakpoints[lineNumberString];this._setBreakpoint(lineNumber,breakpointDecoration.condition,breakpointDecoration.enabled);}},_removeAllBreakpoints:function() |
+{var breakpoints=this._breakpointManager.breakpointsForUISourceCode(this._uiSourceCode);for(var i=0;i<breakpoints.length;++i) |
+breakpoints[i].remove();},_getPopoverAnchor:function(element,event) |
+{if(!WebInspector.debuggerModel.isPaused()) |
+return null;var textPosition=this.textEditor.coordinatesToCursorPosition(event.x,event.y);if(!textPosition) |
+return null;var mouseLine=textPosition.startLine;var mouseColumn=textPosition.startColumn;var textSelection=this.textEditor.selection().normalize();if(textSelection&&!textSelection.isEmpty()){if(textSelection.startLine!==textSelection.endLine||textSelection.startLine!==mouseLine||mouseColumn<textSelection.startColumn||mouseColumn>textSelection.endColumn) |
+return null;var leftCorner=this.textEditor.cursorPositionToCoordinates(textSelection.startLine,textSelection.startColumn);var rightCorner=this.textEditor.cursorPositionToCoordinates(textSelection.endLine,textSelection.endColumn);var anchorBox=new AnchorBox(leftCorner.x,leftCorner.y,rightCorner.x-leftCorner.x,leftCorner.height);anchorBox.highlight={lineNumber:textSelection.startLine,startColumn:textSelection.startColumn,endColumn:textSelection.endColumn-1};anchorBox.forSelection=true;return anchorBox;} |
+var token=this.textEditor.tokenAtTextPosition(textPosition.startLine,textPosition.startColumn);if(!token) |
+return null;var lineNumber=textPosition.startLine;var line=this.textEditor.line(lineNumber);var tokenContent=line.substring(token.startColumn,token.endColumn+1);if(token.type!=="javascript-ident"&&(token.type!=="javascript-keyword"||tokenContent!=="this")) |
+return null;var leftCorner=this.textEditor.cursorPositionToCoordinates(lineNumber,token.startColumn);var rightCorner=this.textEditor.cursorPositionToCoordinates(lineNumber,token.endColumn+1);var anchorBox=new AnchorBox(leftCorner.x,leftCorner.y,rightCorner.x-leftCorner.x,leftCorner.height);anchorBox.highlight={lineNumber:lineNumber,startColumn:token.startColumn,endColumn:token.endColumn};return anchorBox;},_resolveObjectForPopover:function(anchorBox,showCallback,objectGroupName) |
+{function showObjectPopover(result,wasThrown) |
+{if(!WebInspector.debuggerModel.isPaused()){this._popoverHelper.hidePopover();return;} |
+this._popoverAnchorBox=anchorBox;showCallback(WebInspector.RemoteObject.fromPayload(result),wasThrown,this._popoverAnchorBox);if(this._popoverAnchorBox){var highlightRange=new WebInspector.TextRange(lineNumber,startHighlight,lineNumber,endHighlight);this._popoverAnchorBox._highlightDescriptor=this.textEditor.highlightRange(highlightRange,"source-frame-eval-expression");}} |
+if(!WebInspector.debuggerModel.isPaused()){this._popoverHelper.hidePopover();return;} |
+var lineNumber=anchorBox.highlight.lineNumber;var startHighlight=anchorBox.highlight.startColumn;var endHighlight=anchorBox.highlight.endColumn;var line=this.textEditor.line(lineNumber);if(!anchorBox.forSelection){while(startHighlight>1&&line.charAt(startHighlight-1)==='.') |
+startHighlight=this.textEditor.tokenAtTextPosition(lineNumber,startHighlight-2).startColumn;} |
+var evaluationText=line.substring(startHighlight,endHighlight+1);var selectedCallFrame=WebInspector.debuggerModel.selectedCallFrame();selectedCallFrame.evaluate(evaluationText,objectGroupName,false,true,false,false,showObjectPopover.bind(this));},_onHidePopover:function() |
+{if(!this._popoverAnchorBox) |
+return;if(this._popoverAnchorBox._highlightDescriptor) |
+this.textEditor.removeHighlight(this._popoverAnchorBox._highlightDescriptor);delete this._popoverAnchorBox;},_addBreakpointDecoration:function(lineNumber,condition,enabled,mutedWhileEditing) |
+{var breakpoint={condition:condition,enabled:enabled};this.textEditor.setAttribute(lineNumber,"breakpoint",breakpoint);var disabled=!enabled||mutedWhileEditing;this.textEditor.addBreakpoint(lineNumber,disabled,!!condition);},_removeBreakpointDecoration:function(lineNumber) |
+{this.textEditor.removeAttribute(lineNumber,"breakpoint");this.textEditor.removeBreakpoint(lineNumber);},_onKeyDown:function(event) |
+{if(event.keyIdentifier==="U+001B"){if(this._popoverHelper.isPopoverVisible()){this._popoverHelper.hidePopover();event.consume();return;} |
+if(this._stepIntoMarkup&&WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event)){this._stepIntoMarkup.stoptIteratingSelection();event.consume();return;}}},_editBreakpointCondition:function(lineNumber,breakpoint) |
+{this._conditionElement=this._createConditionElement(lineNumber);this.textEditor.addDecoration(lineNumber,this._conditionElement);function finishEditing(committed,element,newText) |
+{this.textEditor.removeDecoration(lineNumber,this._conditionElement);delete this._conditionEditorElement;delete this._conditionElement;if(!committed) |
+return;if(breakpoint) |
+breakpoint.setCondition(newText);else |
+this._setBreakpoint(lineNumber,newText,true);} |
+var config=new WebInspector.EditingConfig(finishEditing.bind(this,true),finishEditing.bind(this,false));WebInspector.startEditing(this._conditionEditorElement,config);this._conditionEditorElement.value=breakpoint?breakpoint.condition():"";this._conditionEditorElement.select();},_createConditionElement:function(lineNumber) |
+{var conditionElement=document.createElement("div");conditionElement.className="source-frame-breakpoint-condition";var labelElement=document.createElement("label");labelElement.className="source-frame-breakpoint-message";labelElement.htmlFor="source-frame-breakpoint-condition";labelElement.appendChild(document.createTextNode(WebInspector.UIString("The breakpoint on line %d will stop only if this expression is true:",lineNumber)));conditionElement.appendChild(labelElement);var editorElement=document.createElement("input");editorElement.id="source-frame-breakpoint-condition";editorElement.className="monospace";editorElement.type="text";conditionElement.appendChild(editorElement);this._conditionEditorElement=editorElement;return conditionElement;},setExecutionLine:function(lineNumber,callFrame) |
+{this._executionLineNumber=lineNumber;this._executionCallFrame=callFrame;if(this.loaded){this.textEditor.setExecutionLine(lineNumber);if(WebInspector.experimentsSettings.stepIntoSelection.isEnabled()){function locationsCallback(locations) |
+{if(this._executionCallFrame!==callFrame||this._stepIntoMarkup) |
+return;this._stepIntoMarkup=WebInspector.JavaScriptSourceFrame.StepIntoMarkup.create(this,locations);if(this._stepIntoMarkup) |
+this._stepIntoMarkup.show();} |
+callFrame.getStepIntoLocations(locationsCallback.bind(this));}}},clearExecutionLine:function() |
+{if(this._stepIntoMarkup){this._stepIntoMarkup.dispose();delete this._stepIntoMarkup;} |
+if(this.loaded&&typeof this._executionLineNumber==="number") |
+this.textEditor.clearExecutionLine();delete this._executionLineNumber;delete this._executionCallFrame;},_lineNumberAfterEditing:function(lineNumber,oldRange,newRange) |
+{var shiftOffset=lineNumber<=oldRange.startLine?0:newRange.linesCount-oldRange.linesCount;if(lineNumber===oldRange.startLine){var whiteSpacesRegex=/^[\s\xA0]*$/;for(var i=0;lineNumber+i<=newRange.endLine;++i){if(!whiteSpacesRegex.test(this.textEditor.line(lineNumber+i))){shiftOffset=i;break;}}} |
+var newLineNumber=Math.max(0,lineNumber+shiftOffset);if(oldRange.startLine<lineNumber&&lineNumber<oldRange.endLine) |
+newLineNumber=oldRange.startLine;return newLineNumber;},_onMouseDownAndClick:function(isMouseDown,event) |
+{var markup=this._stepIntoMarkup;if(!markup) |
+return;var index=markup.findItemByCoordinates(event.x,event.y);if(typeof index==="undefined") |
+return;if(isMouseDown){event.consume();}else{var rawLocation=markup.getRawPosition(index);this._scriptsPanel.doStepIntoSelection(rawLocation);}},_shouldIgnoreExternalBreakpointEvents:function() |
+{if(this._supportsEnabledBreakpointsWhileEditing()) |
+return false;if(this._muted) |
+return true;return this._scriptFile&&(this._scriptFile.isDivergingFromVM()||this._scriptFile.isMergingToVM());},_breakpointAdded:function(event) |
+{var uiLocation=(event.data.uiLocation);if(uiLocation.uiSourceCode!==this._uiSourceCode) |
+return;if(this._shouldIgnoreExternalBreakpointEvents()) |
+return;var breakpoint=(event.data.breakpoint);if(this.loaded) |
+this._addBreakpointDecoration(uiLocation.lineNumber,breakpoint.condition(),breakpoint.enabled(),false);},_breakpointRemoved:function(event) |
+{var uiLocation=(event.data.uiLocation);if(uiLocation.uiSourceCode!==this._uiSourceCode) |
+return;if(this._shouldIgnoreExternalBreakpointEvents()) |
+return;var breakpoint=(event.data.breakpoint);var remainingBreakpoint=this._breakpointManager.findBreakpoint(this._uiSourceCode,uiLocation.lineNumber);if(!remainingBreakpoint&&this.loaded) |
+this._removeBreakpointDecoration(uiLocation.lineNumber);},_consoleMessageAdded:function(event) |
+{var message=(event.data);if(this.loaded) |
+this.addMessageToSource(message.lineNumber,message.originalMessage);},_consoleMessageRemoved:function(event) |
+{var message=(event.data);if(this.loaded) |
+this.removeMessageFromSource(message.lineNumber,message.originalMessage);},_consoleMessagesCleared:function(event) |
+{this.clearMessages();},_onSourceMappingChanged:function(event) |
+{this._updateScriptFile();},_updateScriptFile:function() |
+{if(this._scriptFile){this._scriptFile.removeEventListener(WebInspector.ScriptFile.Events.DidMergeToVM,this._didMergeToVM,this);this._scriptFile.removeEventListener(WebInspector.ScriptFile.Events.DidDivergeFromVM,this._didDivergeFromVM,this);if(this._muted&&!this._uiSourceCode.isDirty()) |
+this._restoreBreakpointsAfterEditing();} |
+this._scriptFile=this._uiSourceCode.scriptFile();if(this._scriptFile){this._scriptFile.addEventListener(WebInspector.ScriptFile.Events.DidMergeToVM,this._didMergeToVM,this);this._scriptFile.addEventListener(WebInspector.ScriptFile.Events.DidDivergeFromVM,this._didDivergeFromVM,this);if(this.loaded) |
+this._scriptFile.checkMapping();}},onTextEditorContentLoaded:function() |
+{if(typeof this._executionLineNumber==="number") |
+this.setExecutionLine(this._executionLineNumber,this._executionCallFrame);var breakpointLocations=this._breakpointManager.breakpointLocationsForUISourceCode(this._uiSourceCode);for(var i=0;i<breakpointLocations.length;++i) |
+this._breakpointAdded({data:breakpointLocations[i]});var messages=this._uiSourceCode.consoleMessages();for(var i=0;i<messages.length;++i){var message=messages[i];this.addMessageToSource(message.lineNumber,message.originalMessage);} |
+if(this._scriptFile) |
+this._scriptFile.checkMapping();},_handleGutterClick:function(event) |
+{if(this._muted) |
+return;var eventData=(event.data);var lineNumber=eventData.lineNumber;var eventObject=(eventData.event);if(eventObject.button!=0||eventObject.altKey||eventObject.ctrlKey||eventObject.metaKey) |
+return;this._toggleBreakpoint(lineNumber,eventObject.shiftKey);eventObject.consume(true);},_toggleBreakpoint:function(lineNumber,onlyDisable) |
+{var breakpoint=this._breakpointManager.findBreakpoint(this._uiSourceCode,lineNumber);if(breakpoint){if(onlyDisable) |
+breakpoint.setEnabled(!breakpoint.enabled());else |
+breakpoint.remove();}else |
+this._setBreakpoint(lineNumber,"",true);},toggleBreakpointOnCurrentLine:function() |
+{if(this._muted) |
+return;var selection=this.textEditor.selection();if(!selection) |
+return;this._toggleBreakpoint(selection.startLine,false);},_setBreakpoint:function(lineNumber,condition,enabled) |
+{this._breakpointManager.setBreakpoint(this._uiSourceCode,lineNumber,condition,enabled);WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction,{action:WebInspector.UserMetrics.UserActionNames.SetBreakpoint,url:this._uiSourceCode.originURL(),line:lineNumber,enabled:enabled});},_continueToLine:function(lineNumber) |
+{var rawLocation=(this._uiSourceCode.uiLocationToRawLocation(lineNumber,0));this._scriptsPanel.continueToLocation(rawLocation);},stepIntoMarkup:function() |
+{return this._stepIntoMarkup;},dispose:function() |
+{this._breakpointManager.removeEventListener(WebInspector.BreakpointManager.Events.BreakpointAdded,this._breakpointAdded,this);this._breakpointManager.removeEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved,this._breakpointRemoved,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.ConsoleMessageAdded,this._consoleMessageAdded,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.ConsoleMessageRemoved,this._consoleMessageRemoved,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.ConsoleMessagesCleared,this._consoleMessagesCleared,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.SourceMappingChanged,this._onSourceMappingChanged,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._workingCopyChanged,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._workingCopyCommitted,this);WebInspector.UISourceCodeFrame.prototype.dispose.call(this);},__proto__:WebInspector.UISourceCodeFrame.prototype} |
+WebInspector.JavaScriptSourceFrame.StepIntoMarkup=function(rawPositions,editorRanges,firstToExecute,sourceFrame) |
+{this._positions=rawPositions;this._editorRanges=editorRanges;this._highlightDescriptors=new Array(rawPositions.length);this._currentHighlight=undefined;this._firstToExecute=firstToExecute;this._currentSelection=undefined;this._sourceFrame=sourceFrame;};WebInspector.JavaScriptSourceFrame.StepIntoMarkup.prototype={show:function() |
+{var highlight=this._getVisibleHighlight();for(var i=0;i<this._positions.length;++i) |
+this._highlightItem(i,i===highlight);this._shownVisibleHighlight=highlight;},startIteratingSelection:function() |
+{this._currentSelection=this._positions.length |
+this._redrawHighlight();},stopIteratingSelection:function() |
+{this._currentSelection=undefined;this._redrawHighlight();},iterateSelection:function(backward) |
+{if(typeof this._currentSelection==="undefined") |
+return;var nextSelection=backward?this._currentSelection-1:this._currentSelection+1;var modulo=this._positions.length+1;nextSelection=(nextSelection+modulo)%modulo;this._currentSelection=nextSelection;this._redrawHighlight();},_redrawHighlight:function() |
+{var visibleHighlight=this._getVisibleHighlight();if(this._shownVisibleHighlight===visibleHighlight) |
+return;this._hideItemHighlight(this._shownVisibleHighlight);this._hideItemHighlight(visibleHighlight);this._highlightItem(this._shownVisibleHighlight,false);this._highlightItem(visibleHighlight,true);this._shownVisibleHighlight=visibleHighlight;},_getVisibleHighlight:function() |
+{return typeof this._currentSelection==="undefined"?this._firstToExecute:this._currentSelection;},_highlightItem:function(position,selected) |
+{if(position===this._positions.length) |
+return;var styleName=selected?"source-frame-stepin-mark-highlighted":"source-frame-stepin-mark";var textEditor=this._sourceFrame.textEditor;var highlightDescriptor=textEditor.highlightRange(this._editorRanges[position],styleName);this._highlightDescriptors[position]=highlightDescriptor;},_hideItemHighlight:function(position) |
+{if(position===this._positions.length) |
+return;var highlightDescriptor=this._highlightDescriptors[position];console.assert(highlightDescriptor);var textEditor=this._sourceFrame.textEditor;textEditor.removeHighlight(highlightDescriptor);this._highlightDescriptors[position]=undefined;},dispose:function() |
+{for(var i=0;i<this._positions.length;++i) |
+this._hideItemHighlight(i);},findItemByCoordinates:function(x,y) |
+{var textPosition=this._sourceFrame.textEditor.coordinatesToCursorPosition(x,y);if(!textPosition) |
+return;var ranges=this._editorRanges;for(var i=0;i<ranges.length;++i){var nextRange=ranges[i];if(nextRange.startLine==textPosition.startLine&&nextRange.startColumn<=textPosition.startColumn&&nextRange.endColumn>=textPosition.startColumn) |
+return i;}},getSelectedItemIndex:function() |
+{if(this._currentSelection===this._positions.length) |
+return undefined;return this._currentSelection;},getRawPosition:function(position) |
+{return(this._positions[position]);}};WebInspector.JavaScriptSourceFrame.StepIntoMarkup.create=function(sourceFrame,stepIntoRawLocations) |
+{if(!stepIntoRawLocations.length) |
+return null;var firstToExecute=stepIntoRawLocations[0];stepIntoRawLocations.sort(WebInspector.JavaScriptSourceFrame.StepIntoMarkup._Comparator);var firstToExecuteIndex=stepIntoRawLocations.indexOf(firstToExecute);var textEditor=sourceFrame.textEditor;var uiRanges=[];for(var i=0;i<stepIntoRawLocations.length;++i){var uiLocation=WebInspector.debuggerModel.rawLocationToUILocation((stepIntoRawLocations[i]));var token=textEditor.tokenAtTextPosition(uiLocation.lineNumber,uiLocation.columnNumber);var startColumn;var endColumn;if(token){startColumn=token.startColumn;endColumn=token.endColumn;}else{startColumn=uiLocation.columnNumber;endColumn=uiLocation.columnNumber;} |
+var range=new WebInspector.TextRange(uiLocation.lineNumber,startColumn,uiLocation.lineNumber,endColumn);uiRanges.push(range);} |
+return new WebInspector.JavaScriptSourceFrame.StepIntoMarkup(stepIntoRawLocations,uiRanges,firstToExecuteIndex,sourceFrame);};WebInspector.JavaScriptSourceFrame.StepIntoMarkup._Comparator=function(locationA,locationB) |
+{if(locationA.lineNumber===locationB.lineNumber) |
+return locationA.columnNumber-locationB.columnNumber;else |
+return locationA.lineNumber-locationB.lineNumber;};;WebInspector.NavigatorOverlayController=function(parentSidebarView,navigatorView,editorView) |
+{this._parentSidebarView=parentSidebarView;this._navigatorView=navigatorView;this._editorView=editorView;this._navigatorSidebarResizeWidgetElement=this._navigatorView.element.createChild("div","resizer-widget");this._parentSidebarView.installResizer(this._navigatorSidebarResizeWidgetElement);this._navigatorShowHideButton=new WebInspector.StatusBarButton(WebInspector.UIString("Hide navigator"),"left-sidebar-show-hide-button scripts-navigator-show-hide-button",3);this._navigatorShowHideButton.state="left";this._navigatorShowHideButton.addEventListener("click",this._toggleNavigator,this);this._editorView.element.appendChild(this._navigatorShowHideButton.element);WebInspector.settings.navigatorHidden=WebInspector.settings.createSetting("navigatorHidden",true);if(WebInspector.settings.navigatorHidden.get()) |
+this._toggleNavigator();} |
+WebInspector.NavigatorOverlayController.prototype={wasShown:function() |
+{window.setTimeout(this._maybeShowNavigatorOverlay.bind(this),0);},_maybeShowNavigatorOverlay:function() |
+{if(WebInspector.settings.navigatorHidden.get()&&!WebInspector.settings.navigatorWasOnceHidden.get()) |
+this.showNavigatorOverlay();},_toggleNavigator:function() |
+{if(this._navigatorShowHideButton.state==="overlay") |
+this._pinNavigator();else if(this._navigatorShowHideButton.state==="right") |
+this.showNavigatorOverlay();else |
+this._hidePinnedNavigator();},_hidePinnedNavigator:function() |
+{this._navigatorShowHideButton.state="right";this._navigatorShowHideButton.title=WebInspector.UIString("Show navigator");this._parentSidebarView.element.appendChild(this._navigatorShowHideButton.element);this._editorView.element.addStyleClass("navigator-hidden");this._navigatorSidebarResizeWidgetElement.addStyleClass("hidden");this._parentSidebarView.hideSidebarElement();this._navigatorView.detach();this._editorView.focus();WebInspector.settings.navigatorWasOnceHidden.set(true);WebInspector.settings.navigatorHidden.set(true);},_pinNavigator:function() |
+{this._navigatorShowHideButton.state="left";this._navigatorShowHideButton.title=WebInspector.UIString("Hide navigator");this._editorView.element.removeStyleClass("navigator-hidden");this._navigatorSidebarResizeWidgetElement.removeStyleClass("hidden");this._editorView.element.appendChild(this._navigatorShowHideButton.element);this._innerHideNavigatorOverlay();this._parentSidebarView.showSidebarElement();this._navigatorView.show(this._parentSidebarView.sidebarElement);this._navigatorView.focus();WebInspector.settings.navigatorHidden.set(false);},showNavigatorOverlay:function() |
+{if(this._navigatorShowHideButton.state==="overlay") |
+return;this._navigatorShowHideButton.state="overlay";this._navigatorShowHideButton.title=WebInspector.UIString("Pin navigator");this._sidebarOverlay=new WebInspector.SidebarOverlay(this._navigatorView,"scriptsPanelNavigatorOverlayWidth",Preferences.minScriptsSidebarWidth);this._boundKeyDown=this._keyDown.bind(this);this._sidebarOverlay.element.addEventListener("keydown",this._boundKeyDown,false);var navigatorOverlayResizeWidgetElement=document.createElement("div");navigatorOverlayResizeWidgetElement.addStyleClass("resizer-widget");this._sidebarOverlay.resizerWidgetElement=navigatorOverlayResizeWidgetElement;this._navigatorView.element.appendChild(this._navigatorShowHideButton.element);this._boundContainingElementFocused=this._containingElementFocused.bind(this);this._parentSidebarView.element.addEventListener("mousedown",this._boundContainingElementFocused,false);this._sidebarOverlay.show(this._parentSidebarView.element);this._navigatorView.focus();},_keyDown:function(event) |
+{if(event.handled) |
+return;if(event.keyCode===WebInspector.KeyboardShortcut.Keys.Esc.code){this.hideNavigatorOverlay();event.consume(true);}},hideNavigatorOverlay:function() |
+{if(this._navigatorShowHideButton.state!=="overlay") |
+return;this._navigatorShowHideButton.state="right";this._navigatorShowHideButton.title=WebInspector.UIString("Show navigator");this._parentSidebarView.element.appendChild(this._navigatorShowHideButton.element);this._innerHideNavigatorOverlay();this._editorView.focus();},_innerHideNavigatorOverlay:function() |
+{this._parentSidebarView.element.removeEventListener("mousedown",this._boundContainingElementFocused,false);this._sidebarOverlay.element.removeEventListener("keydown",this._boundKeyDown,false);this._sidebarOverlay.hide();},_containingElementFocused:function(event) |
+{if(!event.target.isSelfOrDescendant(this._sidebarOverlay.element)) |
+this.hideNavigatorOverlay();},isNavigatorPinned:function() |
+{return this._navigatorShowHideButton.state==="left";},isNavigatorHidden:function() |
+{return this._navigatorShowHideButton.state==="right";}};WebInspector.NavigatorView=function() |
+{WebInspector.View.call(this);this.registerRequiredCSS("navigatorView.css");var scriptsTreeElement=document.createElement("ol");this._scriptsTree=new WebInspector.NavigatorTreeOutline(scriptsTreeElement);this._scriptsTree.childrenListElement.addEventListener("keypress",this._treeKeyPress.bind(this),true);var scriptsOutlineElement=document.createElement("div");scriptsOutlineElement.addStyleClass("outline-disclosure");scriptsOutlineElement.addStyleClass("navigator");scriptsOutlineElement.appendChild(scriptsTreeElement);this.element.addStyleClass("fill");this.element.addStyleClass("navigator-container");this.element.appendChild(scriptsOutlineElement);this.setDefaultFocusedElement(this._scriptsTree.element);this._uiSourceCodeNodes=new Map();this._subfolderNodes=new Map();this._rootNode=new WebInspector.NavigatorRootTreeNode(this);this._rootNode.populate();WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged,this._inspectedURLChanged,this);this.element.addEventListener("contextmenu",this.handleContextMenu.bind(this),false);} |
+WebInspector.NavigatorView.Events={ItemSelected:"ItemSelected",ItemSearchStarted:"ItemSearchStarted",ItemRenamingRequested:"ItemRenamingRequested",ItemCreationRequested:"ItemCreationRequested"} |
+WebInspector.NavigatorView.iconClassForType=function(type) |
+{if(type===WebInspector.NavigatorTreeOutline.Types.Domain) |
+return"navigator-domain-tree-item";if(type===WebInspector.NavigatorTreeOutline.Types.FileSystem) |
+return"navigator-folder-tree-item";return"navigator-folder-tree-item";} |
+WebInspector.NavigatorView.prototype={addUISourceCode:function(uiSourceCode) |
+{var projectNode=this._projectNode(uiSourceCode.project());var folderNode=this._folderNode(projectNode,uiSourceCode.parentPath());var uiSourceCodeNode=new WebInspector.NavigatorUISourceCodeTreeNode(this,uiSourceCode);this._uiSourceCodeNodes.put(uiSourceCode,uiSourceCodeNode);folderNode.appendChild(uiSourceCodeNode);if(uiSourceCode.url===WebInspector.inspectedPageURL) |
+this.revealUISourceCode(uiSourceCode);},_inspectedURLChanged:function(event) |
+{var nodes=this._uiSourceCodeNodes.values();for(var i=0;i<nodes.length;++i){var uiSourceCode=nodes[i].uiSourceCode();if(uiSourceCode.url===WebInspector.inspectedPageURL) |
+this.revealUISourceCode(uiSourceCode);}},_projectNode:function(project) |
+{if(!project.displayName()) |
+return this._rootNode;var projectNode=this._rootNode.child(project.id());if(!projectNode){var type=project.type()===WebInspector.projectTypes.FileSystem?WebInspector.NavigatorTreeOutline.Types.FileSystem:WebInspector.NavigatorTreeOutline.Types.Domain;projectNode=new WebInspector.NavigatorFolderTreeNode(this,project,project.id(),type,"",project.displayName());this._rootNode.appendChild(projectNode);} |
+return projectNode;},_folderNode:function(projectNode,folderPath) |
+{if(!folderPath) |
+return projectNode;var subfolderNodes=this._subfolderNodes.get(projectNode);if(!subfolderNodes){subfolderNodes=(new StringMap());this._subfolderNodes.put(projectNode,subfolderNodes);} |
+var folderNode=subfolderNodes.get(folderPath);if(folderNode) |
+return folderNode;var parentNode=projectNode;var index=folderPath.lastIndexOf("/");if(index!==-1) |
+parentNode=this._folderNode(projectNode,folderPath.substring(0,index));var name=folderPath.substring(index+1);folderNode=new WebInspector.NavigatorFolderTreeNode(this,null,name,WebInspector.NavigatorTreeOutline.Types.Folder,folderPath,name);subfolderNodes.put(folderPath,folderNode);parentNode.appendChild(folderNode);return folderNode;},revealUISourceCode:function(uiSourceCode,select) |
+{var node=this._uiSourceCodeNodes.get(uiSourceCode);if(!node) |
+return null;if(this._scriptsTree.selectedTreeElement) |
+this._scriptsTree.selectedTreeElement.deselect();this._lastSelectedUISourceCode=uiSourceCode;node.reveal(select);},_scriptSelected:function(uiSourceCode,focusSource) |
+{this._lastSelectedUISourceCode=uiSourceCode;var data={uiSourceCode:uiSourceCode,focusSource:focusSource};this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemSelected,data);},removeUISourceCode:function(uiSourceCode) |
+{var node=this._uiSourceCodeNodes.get(uiSourceCode);if(!node) |
+return;var projectNode=this._projectNode(uiSourceCode.project());var subfolderNodes=this._subfolderNodes.get(projectNode);var parentNode=node.parent;this._uiSourceCodeNodes.remove(uiSourceCode);parentNode.removeChild(node);node=parentNode;while(node){parentNode=node.parent;if(!parentNode||!node.isEmpty()) |
+break;if(subfolderNodes) |
+subfolderNodes.remove(node._folderPath);parentNode.removeChild(node);node=parentNode;}},requestRename:function(uiSourceCode) |
+{this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested,uiSourceCode);},rename:function(uiSourceCode,callback) |
+{var node=this._uiSourceCodeNodes.get(uiSourceCode);if(!node) |
+return null;node.rename(callback);},reset:function() |
+{var nodes=this._uiSourceCodeNodes.values();for(var i=0;i<nodes.length;++i) |
+nodes[i].dispose();this._scriptsTree.removeChildren();this._uiSourceCodeNodes.clear();this._subfolderNodes.clear();this._rootNode.reset();},handleContextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);this._appendAddFolderItem(contextMenu);contextMenu.show();},_appendAddFolderItem:function(contextMenu) |
+{function addFolder() |
+{WebInspector.isolatedFileSystemManager.addFileSystem();} |
+var addFolderLabel=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add folder to workspace":"Add Folder to Workspace");contextMenu.appendItem(addFolderLabel,addFolder);},handleFileContextMenu:function(event,uiSourceCode) |
+{var contextMenu=new WebInspector.ContextMenu(event);contextMenu.appendApplicableItems(uiSourceCode);contextMenu.appendSeparator();this._appendAddFolderItem(contextMenu);contextMenu.show();},handleFolderContextMenu:function(event,node) |
+{var contextMenu=new WebInspector.ContextMenu(event);var path="/";var projectNode=node;while(projectNode.parent!==this._rootNode){path="/"+projectNode.id+path;projectNode=projectNode.parent;} |
+var project=projectNode._project;if(project.type()===WebInspector.projectTypes.FileSystem){function refresh() |
+{project.refresh(path);} |
+contextMenu.appendItem(WebInspector.UIString("Refresh"),refresh.bind(this));function create() |
+{var data={};data.project=project;data.path=path;this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemCreationRequested,data);} |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"New file":"New File"),create.bind(this));function exclude() |
+{var shouldExclude=window.confirm(WebInspector.UIString("Are you sure you want to exclude this folder?"));if(shouldExclude){WebInspector.startBatchUpdate();project.excludeFolder(path);WebInspector.endBatchUpdate();}} |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Exclude folder":"Exclude Folder"),exclude.bind(this));} |
+contextMenu.appendSeparator();this._appendAddFolderItem(contextMenu);if(project.type()===WebInspector.projectTypes.FileSystem&&node===projectNode){function removeFolder() |
+{var shouldRemove=window.confirm(WebInspector.UIString("Are you sure you want to remove this folder?"));if(shouldRemove) |
+project.remove();} |
+var removeFolderLabel=WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove folder from workspace":"Remove Folder from Workspace");contextMenu.appendItem(removeFolderLabel,removeFolder);} |
+contextMenu.show();},_treeKeyPress:function(event) |
+{if(WebInspector.isBeingEdited(this._scriptsTree.childrenListElement)) |
+return;var searchText=String.fromCharCode(event.charCode);if(searchText.trim()!==searchText) |
+return;this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemSearchStarted,searchText);event.consume(true);},__proto__:WebInspector.View.prototype} |
+WebInspector.NavigatorTreeOutline=function(element) |
+{TreeOutline.call(this,element);this.element=element;this.comparator=WebInspector.NavigatorTreeOutline._treeElementsCompare;} |
+WebInspector.NavigatorTreeOutline.Types={Root:"Root",Domain:"Domain",Folder:"Folder",UISourceCode:"UISourceCode",FileSystem:"FileSystem"} |
+WebInspector.NavigatorTreeOutline._treeElementsCompare=function compare(treeElement1,treeElement2) |
+{function typeWeight(treeElement) |
+{var type=treeElement.type();if(type===WebInspector.NavigatorTreeOutline.Types.Domain){if(treeElement.titleText===WebInspector.inspectedPageDomain) |
+return 1;return 2;} |
+if(type===WebInspector.NavigatorTreeOutline.Types.FileSystem) |
+return 3;if(type===WebInspector.NavigatorTreeOutline.Types.Folder) |
+return 4;return 5;} |
+var typeWeight1=typeWeight(treeElement1);var typeWeight2=typeWeight(treeElement2);var result;if(typeWeight1>typeWeight2) |
+result=1;else if(typeWeight1<typeWeight2) |
+result=-1;else{var title1=treeElement1.titleText;var title2=treeElement2.titleText;result=title1.compareTo(title2);} |
+return result;} |
+WebInspector.NavigatorTreeOutline.prototype={scriptTreeElements:function() |
+{var result=[];if(this.children.length){for(var treeElement=this.children[0];treeElement;treeElement=treeElement.traverseNextTreeElement(false,this,true)){if(treeElement instanceof WebInspector.NavigatorSourceTreeElement) |
+result.push(treeElement.uiSourceCode);}} |
+return result;},__proto__:TreeOutline.prototype} |
+WebInspector.BaseNavigatorTreeElement=function(type,title,iconClasses,hasChildren,noIcon) |
+{this._type=type;TreeElement.call(this,"",null,hasChildren);this._titleText=title;this._iconClasses=iconClasses;this._noIcon=noIcon;} |
+WebInspector.BaseNavigatorTreeElement.prototype={onattach:function() |
+{this.listItemElement.removeChildren();if(this._iconClasses){for(var i=0;i<this._iconClasses.length;++i) |
+this.listItemElement.addStyleClass(this._iconClasses[i]);} |
+var selectionElement=document.createElement("div");selectionElement.className="selection";this.listItemElement.appendChild(selectionElement);if(!this._noIcon){this.imageElement=document.createElement("img");this.imageElement.className="icon";this.listItemElement.appendChild(this.imageElement);} |
+this.titleElement=document.createElement("div");this.titleElement.className="base-navigator-tree-element-title";this._titleTextNode=document.createTextNode("");this._titleTextNode.textContent=this._titleText;this.titleElement.appendChild(this._titleTextNode);this.listItemElement.appendChild(this.titleElement);},onreveal:function() |
+{if(this.listItemElement) |
+this.listItemElement.scrollIntoViewIfNeeded(true);},get titleText() |
+{return this._titleText;},set titleText(titleText) |
+{if(this._titleText===titleText) |
+return;this._titleText=titleText||"";if(this.titleElement) |
+this.titleElement.textContent=this._titleText;},type:function() |
+{return this._type;},__proto__:TreeElement.prototype} |
+WebInspector.NavigatorFolderTreeElement=function(navigatorView,type,title) |
+{var iconClass=WebInspector.NavigatorView.iconClassForType(type);WebInspector.BaseNavigatorTreeElement.call(this,type,title,[iconClass],true);this._navigatorView=navigatorView;} |
+WebInspector.NavigatorFolderTreeElement.prototype={onpopulate:function() |
+{this._node.populate();},onattach:function() |
+{WebInspector.BaseNavigatorTreeElement.prototype.onattach.call(this);this.collapse();this.listItemElement.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this),false);},setNode:function(node) |
+{this._node=node;var paths=[];while(node&&!node.isRoot()){paths.push(node._title);node=node.parent;} |
+paths.reverse();this.tooltip=paths.join("/");},_handleContextMenuEvent:function(event) |
+{if(!this._node) |
+return;this.select();this._navigatorView.handleFolderContextMenu(event,this._node);},__proto__:WebInspector.BaseNavigatorTreeElement.prototype} |
+WebInspector.NavigatorSourceTreeElement=function(navigatorView,uiSourceCode,title) |
+{WebInspector.BaseNavigatorTreeElement.call(this,WebInspector.NavigatorTreeOutline.Types.UISourceCode,title,["navigator-"+uiSourceCode.contentType().name()+"-tree-item"],false);this._navigatorView=navigatorView;this._uiSourceCode=uiSourceCode;this.tooltip=uiSourceCode.originURL();} |
+WebInspector.NavigatorSourceTreeElement.prototype={get uiSourceCode() |
+{return this._uiSourceCode;},onattach:function() |
+{WebInspector.BaseNavigatorTreeElement.prototype.onattach.call(this);this.listItemElement.draggable=true;this.listItemElement.addEventListener("click",this._onclick.bind(this),false);this.listItemElement.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this),false);this.listItemElement.addEventListener("mousedown",this._onmousedown.bind(this),false);this.listItemElement.addEventListener("dragstart",this._ondragstart.bind(this),false);},_onmousedown:function(event) |
+{if(event.which===1) |
+this._uiSourceCode.requestContent(callback.bind(this));function callback(content,contentEncoded,mimeType) |
+{this._warmedUpContent=content;}},_shouldRenameOnMouseDown:function() |
+{if(!this._uiSourceCode.canRename()) |
+return false;var isSelected=this===this.treeOutline.selectedTreeElement;var isFocused=this.treeOutline.childrenListElement.isSelfOrAncestor(document.activeElement);return isSelected&&isFocused&&!WebInspector.isBeingEdited(this.treeOutline.element);},selectOnMouseDown:function(event) |
+{if(event.which!==1||!this._shouldRenameOnMouseDown()){TreeElement.prototype.selectOnMouseDown.call(this,event);return;} |
+setTimeout(rename.bind(this),300);function rename() |
+{if(this._shouldRenameOnMouseDown()) |
+this._navigatorView.requestRename(this._uiSourceCode);}},_ondragstart:function(event) |
+{event.dataTransfer.setData("text/plain",this._warmedUpContent);event.dataTransfer.effectAllowed="copy";return true;},onspace:function() |
+{this._navigatorView._scriptSelected(this.uiSourceCode,true);return true;},_onclick:function(event) |
+{this._navigatorView._scriptSelected(this.uiSourceCode,false);},ondblclick:function(event) |
+{var middleClick=event.button===1;this._navigatorView._scriptSelected(this.uiSourceCode,!middleClick);},onenter:function() |
+{this._navigatorView._scriptSelected(this.uiSourceCode,true);return true;},_handleContextMenuEvent:function(event) |
+{this.select();this._navigatorView.handleFileContextMenu(event,this._uiSourceCode);},__proto__:WebInspector.BaseNavigatorTreeElement.prototype} |
+WebInspector.NavigatorTreeNode=function(id) |
+{this.id=id;this._children=new StringMap();} |
+WebInspector.NavigatorTreeNode.prototype={treeElement:function(){},dispose:function(){},isRoot:function() |
+{return false;},hasChildren:function() |
+{return true;},populate:function() |
+{if(this.isPopulated()) |
+return;if(this.parent) |
+this.parent.populate();this._populated=true;this.wasPopulated();},wasPopulated:function() |
+{var children=this.children();for(var i=0;i<children.length;++i) |
+this.treeElement().appendChild(children[i].treeElement());},didAddChild:function(node) |
+{if(this.isPopulated()) |
+this.treeElement().appendChild(node.treeElement());},willRemoveChild:function(node) |
+{if(this.isPopulated()) |
+this.treeElement().removeChild(node.treeElement());},isPopulated:function() |
+{return this._populated;},isEmpty:function() |
+{return!this._children.size();},child:function(id) |
+{return this._children.get(id);},children:function() |
+{return this._children.values();},appendChild:function(node) |
+{this._children.put(node.id,node);node.parent=this;this.didAddChild(node);},removeChild:function(node) |
+{this.willRemoveChild(node);this._children.remove(node.id);delete node.parent;node.dispose();},reset:function() |
+{this._children.clear();}} |
+WebInspector.NavigatorRootTreeNode=function(navigatorView) |
+{WebInspector.NavigatorTreeNode.call(this,"");this._navigatorView=navigatorView;} |
+WebInspector.NavigatorRootTreeNode.prototype={isRoot:function() |
+{return true;},treeElement:function() |
+{return this._navigatorView._scriptsTree;},__proto__:WebInspector.NavigatorTreeNode.prototype} |
+WebInspector.NavigatorUISourceCodeTreeNode=function(navigatorView,uiSourceCode) |
+{WebInspector.NavigatorTreeNode.call(this,uiSourceCode.name());this._navigatorView=navigatorView;this._uiSourceCode=uiSourceCode;this._treeElement=null;} |
+WebInspector.NavigatorUISourceCodeTreeNode.prototype={uiSourceCode:function() |
+{return this._uiSourceCode;},treeElement:function() |
+{if(this._treeElement) |
+return this._treeElement;this._treeElement=new WebInspector.NavigatorSourceTreeElement(this._navigatorView,this._uiSourceCode,"");this.updateTitle();this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.TitleChanged,this._titleChanged,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._workingCopyChanged,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._workingCopyCommitted,this);this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.FormattedChanged,this._formattedChanged,this);return this._treeElement;},updateTitle:function(ignoreIsDirty) |
+{if(!this._treeElement) |
+return;var titleText=this._uiSourceCode.displayName();if(!ignoreIsDirty&&(this._uiSourceCode.isDirty()||this._uiSourceCode.hasUnsavedCommittedChanges())) |
+titleText="*"+titleText;this._treeElement.titleText=titleText;},hasChildren:function() |
+{return false;},dispose:function() |
+{if(!this._treeElement) |
+return;this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.TitleChanged,this._titleChanged,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._workingCopyChanged,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._workingCopyCommitted,this);this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.FormattedChanged,this._formattedChanged,this);},_titleChanged:function(event) |
+{this.updateTitle();},_workingCopyChanged:function(event) |
+{this.updateTitle();},_workingCopyCommitted:function(event) |
+{this.updateTitle();},_formattedChanged:function(event) |
+{this.updateTitle();},reveal:function(select) |
+{this.parent.populate();this.parent.treeElement().expand();this._treeElement.reveal();if(select) |
+this._treeElement.select();},rename:function(callback) |
+{if(!this._treeElement) |
+return;var treeOutlineElement=this._treeElement.treeOutline.element;WebInspector.markBeingEdited(treeOutlineElement,true);function commitHandler(element,newTitle,oldTitle) |
+{if(newTitle!==oldTitle){this._treeElement.titleText=newTitle;this._uiSourceCode.rename(newTitle,renameCallback.bind(this));return;} |
+afterEditing.call(this,true);} |
+function renameCallback(success) |
+{if(!success){WebInspector.markBeingEdited(treeOutlineElement,false);this.updateTitle();this.rename(callback);return;} |
+afterEditing.call(this,true);} |
function cancelHandler() |
-{ |
-afterEditing.call(this, false); |
-} |
- |
- |
+{afterEditing.call(this,false);} |
function afterEditing(committed) |
-{ |
-WebInspector.markBeingEdited(treeOutlineElement, false); |
-this.updateTitle(); |
-if (callback) |
-callback(committed); |
-} |
- |
-var editingConfig = new WebInspector.EditingConfig(commitHandler.bind(this), cancelHandler.bind(this)); |
-this.updateTitle(true); |
-WebInspector.startEditing(this._treeElement.titleElement, editingConfig); |
-window.getSelection().setBaseAndExtent(this._treeElement.titleElement, 0, this._treeElement.titleElement, 1); |
-}, |
- |
-__proto__: WebInspector.NavigatorTreeNode.prototype |
-} |
- |
- |
-WebInspector.NavigatorFolderTreeNode = function(navigatorView, id, type, title) |
-{ |
-WebInspector.NavigatorTreeNode.call(this, id); |
-this._navigatorView = navigatorView; |
-this._type = type; |
-this._title = title; |
-} |
- |
-WebInspector.NavigatorFolderTreeNode.prototype = { |
- |
-treeElement: function() |
-{ |
-if (this._treeElement) |
-return this._treeElement; |
-this._treeElement = this._createTreeElement(this._title, this); |
-return this._treeElement; |
-}, |
- |
- |
-_createTreeElement: function(title, node) |
-{ |
-var treeElement = new WebInspector.NavigatorFolderTreeElement(this._type, title); |
-treeElement.setNode(node); |
-return treeElement; |
-}, |
- |
-wasPopulated: function() |
-{ |
-if (!this._treeElement || this._treeElement._node !== this) |
-return; |
-this._addChildrenRecursive(); |
-}, |
- |
-_addChildrenRecursive: function() |
-{ |
-for (var id in this._children) { |
-var child = this._children[id]; |
-this.didAddChild(child); |
-if (child instanceof WebInspector.NavigatorFolderTreeNode) |
-child._addChildrenRecursive(); |
-} |
-}, |
- |
-_shouldMerge: function(node) |
-{ |
-return this._type !== WebInspector.NavigatorTreeOutline.Types.Domain && node instanceof WebInspector.NavigatorFolderTreeNode; |
-}, |
- |
-didAddChild: function(node) |
-{ |
-function titleForNode(node) |
-{ |
-return node._title; |
-} |
- |
-if (!this._treeElement) |
-return; |
- |
-var children = this.children(); |
- |
-if (children.length === 1 && this._shouldMerge(node)) { |
-node._isMerged = true; |
-this._treeElement.titleText = this._treeElement.titleText + "/" + node._title; |
-node._treeElement = this._treeElement; |
-this._treeElement.setNode(node); |
-return; |
-} |
- |
-var oldNode; |
-if (children.length === 2) |
-oldNode = children[0] !== node ? children[0] : children[1]; |
-if (oldNode && oldNode._isMerged) { |
-delete oldNode._isMerged; |
-var mergedToNodes = []; |
-mergedToNodes.push(this); |
-var treeNode = this; |
-while (treeNode._isMerged) { |
-treeNode = treeNode.parent; |
-mergedToNodes.push(treeNode); |
-} |
-mergedToNodes.reverse(); |
-var titleText = mergedToNodes.map(titleForNode).join("/"); |
- |
-var nodes = []; |
-treeNode = oldNode; |
-do { |
-nodes.push(treeNode); |
-children = treeNode.children(); |
-treeNode = children.length === 1 ? children[0] : null; |
-} while (treeNode && treeNode._isMerged); |
- |
-if (!this.isPopulated()) { |
-this._treeElement.titleText = titleText; |
-this._treeElement.setNode(this); |
-for (var i = 0; i < nodes.length; ++i) { |
-delete nodes[i]._treeElement; |
-delete nodes[i]._isMerged; |
-} |
-return; |
-} |
-var oldTreeElement = this._treeElement; |
-var treeElement = this._createTreeElement(titleText, this); |
-for (var i = 0; i < mergedToNodes.length; ++i) |
-mergedToNodes[i]._treeElement = treeElement; |
-oldTreeElement.parent.appendChild(treeElement); |
- |
-oldTreeElement.setNode(nodes[nodes.length - 1]); |
-oldTreeElement.titleText = nodes.map(titleForNode).join("/"); |
-oldTreeElement.parent.removeChild(oldTreeElement); |
-this._treeElement.appendChild(oldTreeElement); |
-if (oldTreeElement.expanded) |
-treeElement.expand(); |
-} |
-if (this.isPopulated()) |
-this._treeElement.appendChild(node.treeElement()); |
-}, |
- |
-willRemoveChild: function(node) |
-{ |
-if (node._isMerged || !this.isPopulated()) |
-return; |
-this._treeElement.removeChild(node._treeElement); |
-}, |
- |
-__proto__: WebInspector.NavigatorTreeNode.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.RevisionHistoryView = function() |
-{ |
-WebInspector.View.call(this); |
-this.registerRequiredCSS("revisionHistory.css"); |
-this.element.addStyleClass("revision-history-drawer"); |
-this.element.addStyleClass("fill"); |
-this.element.addStyleClass("outline-disclosure"); |
-this._uiSourceCodeItems = new Map(); |
- |
-var olElement = this.element.createChild("ol"); |
-this._treeOutline = new TreeOutline(olElement); |
- |
- |
-function populateRevisions(uiSourceCode) |
-{ |
-if (uiSourceCode.history.length) |
-this._createUISourceCodeItem(uiSourceCode); |
-} |
- |
-WebInspector.workspace.uiSourceCodes().forEach(populateRevisions.bind(this)); |
-WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeContentCommitted, this._revisionAdded, this); |
-WebInspector.workspace.addEventListener(WebInspector.UISourceCodeProvider.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this); |
-WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset, this._projectWillReset, this); |
- |
-this._statusElement = document.createElement("span"); |
-this._statusElement.textContent = WebInspector.UIString("Local modifications"); |
- |
-} |
- |
- |
-WebInspector.RevisionHistoryView.showHistory = function(uiSourceCode) |
-{ |
-if (!WebInspector.RevisionHistoryView._view) |
-WebInspector.RevisionHistoryView._view = new WebInspector.RevisionHistoryView(); |
-var view = WebInspector.RevisionHistoryView._view; |
-WebInspector.showViewInDrawer(view._statusElement, view); |
-view._revealUISourceCode(uiSourceCode); |
-} |
- |
-WebInspector.RevisionHistoryView.prototype = { |
- |
-_createUISourceCodeItem: function(uiSourceCode) |
-{ |
-var uiSourceCodeItem = new TreeElement(uiSourceCode.displayName(), null, true); |
-uiSourceCodeItem.selectable = false; |
- |
- |
-for (var i = 0; i < this._treeOutline.children.length; ++i) { |
-if (this._treeOutline.children[i].title.localeCompare(uiSourceCode.displayName()) > 0) { |
-this._treeOutline.insertChild(uiSourceCodeItem, i); |
-break; |
-} |
-} |
-if (i === this._treeOutline.children.length) |
-this._treeOutline.appendChild(uiSourceCodeItem); |
- |
-this._uiSourceCodeItems.put(uiSourceCode, uiSourceCodeItem); |
- |
-var revisionCount = uiSourceCode.history.length; |
-for (var i = revisionCount - 1; i >= 0; --i) { |
-var revision = uiSourceCode.history[i]; |
-var historyItem = new WebInspector.RevisionHistoryTreeElement(revision, uiSourceCode.history[i - 1], i !== revisionCount - 1); |
-uiSourceCodeItem.appendChild(historyItem); |
-} |
- |
-var linkItem = new TreeElement("", null, false); |
-linkItem.selectable = false; |
-uiSourceCodeItem.appendChild(linkItem); |
- |
-var revertToOriginal = linkItem.listItemElement.createChild("span", "revision-history-link revision-history-link-row"); |
-revertToOriginal.textContent = WebInspector.UIString("apply original content"); |
-revertToOriginal.addEventListener("click", uiSourceCode.revertToOriginal.bind(uiSourceCode)); |
- |
-var clearHistoryElement = uiSourceCodeItem.listItemElement.createChild("span", "revision-history-link"); |
-clearHistoryElement.textContent = WebInspector.UIString("revert"); |
-clearHistoryElement.addEventListener("click", this._clearHistory.bind(this, uiSourceCode)); |
-return uiSourceCodeItem; |
-}, |
- |
- |
-_clearHistory: function(uiSourceCode) |
-{ |
-uiSourceCode.revertAndClearHistory(this._removeUISourceCode.bind(this)); |
-}, |
- |
-_revisionAdded: function(event) |
-{ |
-var uiSourceCode = (event.data.uiSourceCode); |
-var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode); |
-if (!uiSourceCodeItem) { |
-uiSourceCodeItem = this._createUISourceCodeItem(uiSourceCode); |
-return; |
-} |
- |
-var historyLength = uiSourceCode.history.length; |
-var historyItem = new WebInspector.RevisionHistoryTreeElement(uiSourceCode.history[historyLength - 1], uiSourceCode.history[historyLength - 2], false); |
-if (uiSourceCodeItem.children.length) |
-uiSourceCodeItem.children[0].allowRevert(); |
-uiSourceCodeItem.insertChild(historyItem, 0); |
-}, |
- |
- |
-_revealUISourceCode: function(uiSourceCode) |
-{ |
-var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode); |
-if (uiSourceCodeItem) { |
-uiSourceCodeItem.reveal(); |
-uiSourceCodeItem.expand(); |
-} |
-}, |
- |
-_uiSourceCodeRemoved: function(event) |
-{ |
-var uiSourceCode = (event.data); |
-this._removeUISourceCode(uiSourceCode); |
-}, |
- |
- |
-_removeUISourceCode: function(uiSourceCode) |
-{ |
-var uiSourceCodeItem = this._uiSourceCodeItems.get(uiSourceCode); |
-if (!uiSourceCodeItem) |
-return; |
-this._treeOutline.removeChild(uiSourceCodeItem); |
-this._uiSourceCodeItems.remove(uiSourceCode); |
-}, |
- |
-_projectWillReset: function(event) |
-{ |
-var project = event.data; |
-project.uiSourceCodes().forEach(this._removeUISourceCode.bind(this)); |
-}, |
- |
-__proto__: WebInspector.View.prototype |
-} |
- |
- |
-WebInspector.RevisionHistoryTreeElement = function(revision, baseRevision, allowRevert) |
-{ |
-TreeElement.call(this, revision.timestamp.toLocaleTimeString(), null, true); |
-this.selectable = false; |
- |
-this._revision = revision; |
-this._baseRevision = baseRevision; |
- |
-this._revertElement = document.createElement("span"); |
-this._revertElement.className = "revision-history-link"; |
-this._revertElement.textContent = WebInspector.UIString("apply revision content"); |
-this._revertElement.addEventListener("click", this._revision.revertToThis.bind(this._revision), false); |
-if (!allowRevert) |
-this._revertElement.addStyleClass("hidden"); |
-} |
- |
-WebInspector.RevisionHistoryTreeElement.prototype = { |
-onattach: function() |
-{ |
-this.listItemElement.addStyleClass("revision-history-revision"); |
-}, |
- |
-onexpand: function() |
-{ |
-this.listItemElement.appendChild(this._revertElement); |
- |
-if (this._wasExpandedOnce) |
-return; |
-this._wasExpandedOnce = true; |
- |
-this.childrenListElement.addStyleClass("source-code"); |
-if (this._baseRevision) |
-this._baseRevision.requestContent(step1.bind(this)); |
-else |
-this._revision.uiSourceCode.requestOriginalContent(step1.bind(this)); |
- |
-function step1(baseContent) |
-{ |
-this._revision.requestContent(step2.bind(this, baseContent)); |
-} |
- |
-function step2(baseContent, newContent) |
-{ |
-var baseLines = difflib.stringAsLines(baseContent); |
-var newLines = difflib.stringAsLines(newContent); |
-var sm = new difflib.SequenceMatcher(baseLines, newLines); |
-var opcodes = sm.get_opcodes(); |
-var lastWasSeparator = false; |
- |
-for (var idx = 0; idx < opcodes.length; idx++) { |
-var code = opcodes[idx]; |
-var change = code[0]; |
-var b = code[1]; |
-var be = code[2]; |
-var n = code[3]; |
-var ne = code[4]; |
-var rowCount = Math.max(be - b, ne - n); |
-var topRows = []; |
-var bottomRows = []; |
-for (var i = 0; i < rowCount; i++) { |
-if (change === "delete" || (change === "replace" && b < be)) { |
-var lineNumber = b++; |
-this._createLine(lineNumber, null, baseLines[lineNumber], "removed"); |
-lastWasSeparator = false; |
-} |
- |
-if (change === "insert" || (change === "replace" && n < ne)) { |
-var lineNumber = n++; |
-this._createLine(null, lineNumber, newLines[lineNumber], "added"); |
-lastWasSeparator = false; |
-} |
- |
-if (change === "equal") { |
-b++; |
-n++; |
-if (!lastWasSeparator) |
-this._createLine(null, null, " \u2026", "separator"); |
-lastWasSeparator = true; |
-} |
-} |
-} |
-} |
-}, |
- |
-oncollapse: function() |
-{ |
-if (this._revertElement.parentElement) |
-this._revertElement.parentElement.removeChild(this._revertElement); |
-}, |
- |
- |
-_createLine: function(baseLineNumber, newLineNumber, lineContent, changeType) |
-{ |
-var child = new TreeElement("", null, false); |
-child.selectable = false; |
-this.appendChild(child); |
-var lineElement = document.createElement("span"); |
- |
-function appendLineNumber(lineNumber) |
-{ |
-var numberString = lineNumber !== null ? numberToStringWithSpacesPadding(lineNumber + 1, 4) : " "; |
-var lineNumberSpan = document.createElement("span"); |
-lineNumberSpan.addStyleClass("webkit-line-number"); |
-lineNumberSpan.textContent = numberString; |
-child.listItemElement.appendChild(lineNumberSpan); |
-} |
- |
-appendLineNumber(baseLineNumber); |
-appendLineNumber(newLineNumber); |
- |
-var contentSpan = document.createElement("span"); |
-contentSpan.textContent = lineContent; |
-child.listItemElement.appendChild(contentSpan); |
-child.listItemElement.addStyleClass("revision-history-line"); |
-child.listItemElement.addStyleClass("revision-history-line-" + changeType); |
-}, |
- |
-allowRevert: function() |
-{ |
-this._revertElement.removeStyleClass("hidden"); |
-}, |
- |
-__proto__: TreeElement.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.ScopeChainSidebarPane = function() |
-{ |
-WebInspector.SidebarPane.call(this, WebInspector.UIString("Scope Variables")); |
-this._sections = []; |
-this._expandedSections = {}; |
-this._expandedProperties = []; |
-} |
- |
-WebInspector.ScopeChainSidebarPane.prototype = { |
-update: function(callFrame) |
-{ |
-this.bodyElement.removeChildren(); |
- |
-if (!callFrame) { |
-var infoElement = document.createElement("div"); |
-infoElement.className = "info"; |
-infoElement.textContent = WebInspector.UIString("Not Paused"); |
-this.bodyElement.appendChild(infoElement); |
-return; |
-} |
- |
-for (var i = 0; i < this._sections.length; ++i) { |
-var section = this._sections[i]; |
-if (!section.title) |
-continue; |
-if (section.expanded) |
-this._expandedSections[section.title] = true; |
-else |
-delete this._expandedSections[section.title]; |
-} |
- |
-this._sections = []; |
- |
-var foundLocalScope = false; |
-var scopeChain = callFrame.scopeChain; |
-for (var i = 0; i < scopeChain.length; ++i) { |
-var scope = scopeChain[i]; |
-var title = null; |
-var subtitle = scope.object.description; |
-var emptyPlaceholder = null; |
-var extraProperties = null; |
-var declarativeScope; |
- |
-switch (scope.type) { |
-case "local": |
-foundLocalScope = true; |
-title = WebInspector.UIString("Local"); |
-emptyPlaceholder = WebInspector.UIString("No Variables"); |
-subtitle = null; |
-if (callFrame.this) |
-extraProperties = [ new WebInspector.RemoteObjectProperty("this", WebInspector.RemoteObject.fromPayload(callFrame.this)) ]; |
-if (i == 0) { |
-var details = WebInspector.debuggerModel.debuggerPausedDetails(); |
-var exception = details.reason === WebInspector.DebuggerModel.BreakReason.Exception ? details.auxData : 0; |
-if (exception) { |
-extraProperties = extraProperties || []; |
-var exceptionObject = (exception); |
-extraProperties.push(new WebInspector.RemoteObjectProperty("<exception>", WebInspector.RemoteObject.fromPayload(exceptionObject))); |
-} |
-} |
-declarativeScope = true; |
-break; |
-case "closure": |
-title = WebInspector.UIString("Closure"); |
-emptyPlaceholder = WebInspector.UIString("No Variables"); |
-subtitle = null; |
-declarativeScope = true; |
-break; |
-case "catch": |
-title = WebInspector.UIString("Catch"); |
-subtitle = null; |
-declarativeScope = true; |
-break; |
-case "with": |
-title = WebInspector.UIString("With Block"); |
-declarativeScope = false; |
-break; |
-case "global": |
-title = WebInspector.UIString("Global"); |
-declarativeScope = false; |
-break; |
-} |
- |
-if (!title || title === subtitle) |
-subtitle = null; |
- |
-var scopeRef; |
-if (declarativeScope) |
-scopeRef = new WebInspector.ScopeRef(i, callFrame.id, undefined); |
-else |
-scopeRef = undefined; |
- |
- |
-var section = new WebInspector.ObjectPropertiesSection(WebInspector.ScopeRemoteObject.fromPayload(scope.object, scopeRef), title, subtitle, emptyPlaceholder, true, extraProperties, WebInspector.ScopeVariableTreeElement); |
-section.editInSelectedCallFrameWhenPaused = true; |
-section.pane = this; |
- |
-if (scope.type === "global") |
-section.expanded = false; |
-else if (!foundLocalScope || scope.type === "local" || title in this._expandedSections) |
-section.expanded = true; |
- |
-this._sections.push(section); |
-this.bodyElement.appendChild(section.element); |
-} |
-}, |
- |
-__proto__: WebInspector.SidebarPane.prototype |
-} |
- |
- |
-WebInspector.ScopeVariableTreeElement = function(property) |
-{ |
-WebInspector.ObjectPropertyTreeElement.call(this, property); |
-} |
- |
-WebInspector.ScopeVariableTreeElement.prototype = { |
-onattach: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.onattach.call(this); |
-if (this.hasChildren && this.propertyIdentifier in this.treeOutline.section.pane._expandedProperties) |
-this.expand(); |
-}, |
- |
-onexpand: function() |
-{ |
-this.treeOutline.section.pane._expandedProperties[this.propertyIdentifier] = true; |
-}, |
- |
-oncollapse: function() |
-{ |
-delete this.treeOutline.section.pane._expandedProperties[this.propertyIdentifier]; |
-}, |
- |
-get propertyIdentifier() |
-{ |
-if ("_propertyIdentifier" in this) |
-return this._propertyIdentifier; |
-var section = this.treeOutline.section; |
-this._propertyIdentifier = section.title + ":" + (section.subtitle ? section.subtitle + ":" : "") + this.propertyPath(); |
-return this._propertyIdentifier; |
-}, |
- |
-__proto__: WebInspector.ObjectPropertyTreeElement.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.ScriptsNavigator = function() |
-{ |
-WebInspector.Object.call(this); |
- |
-this._tabbedPane = new WebInspector.TabbedPane(); |
-this._tabbedPane.shrinkableTabs = true; |
-this._tabbedPane.element.addStyleClass("navigator-tabbed-pane"); |
- |
-this._scriptsView = new WebInspector.NavigatorView(); |
-this._scriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSelected, this._scriptSelected, this); |
-this._scriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSearchStarted, this._itemSearchStarted, this); |
- |
-this._contentScriptsView = new WebInspector.NavigatorView(); |
-this._contentScriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSelected, this._scriptSelected, this); |
-this._contentScriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSearchStarted, this._itemSearchStarted, this); |
- |
-this._snippetsView = new WebInspector.SnippetsNavigatorView(); |
-this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.ItemSelected, this._scriptSelected, this); |
-this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.ItemSearchStarted, this._itemSearchStarted, this); |
-this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.FileRenamed, this._fileRenamed, this); |
-this._snippetsView.addEventListener(WebInspector.SnippetsNavigatorView.Events.SnippetCreationRequested, this._snippetCreationRequested, this); |
-this._snippetsView.addEventListener(WebInspector.SnippetsNavigatorView.Events.ItemRenamingRequested, this._itemRenamingRequested, this); |
- |
-this._tabbedPane.appendTab(WebInspector.ScriptsNavigator.ScriptsTab, WebInspector.UIString("Sources"), this._scriptsView); |
-this._tabbedPane.selectTab(WebInspector.ScriptsNavigator.ScriptsTab); |
-this._tabbedPane.appendTab(WebInspector.ScriptsNavigator.ContentScriptsTab, WebInspector.UIString("Content scripts"), this._contentScriptsView); |
-this._tabbedPane.appendTab(WebInspector.ScriptsNavigator.SnippetsTab, WebInspector.UIString("Snippets"), this._snippetsView); |
-} |
- |
-WebInspector.ScriptsNavigator.Events = { |
-ScriptSelected: "ScriptSelected", |
-SnippetCreationRequested: "SnippetCreationRequested", |
-ItemRenamingRequested: "ItemRenamingRequested", |
-ItemSearchStarted: "ItemSearchStarted", |
-FileRenamed: "FileRenamed" |
-} |
- |
-WebInspector.ScriptsNavigator.ScriptsTab = "scripts"; |
-WebInspector.ScriptsNavigator.ContentScriptsTab = "contentScripts"; |
-WebInspector.ScriptsNavigator.SnippetsTab = "snippets"; |
- |
-WebInspector.ScriptsNavigator.prototype = { |
- |
-get view() |
-{ |
-return this._tabbedPane; |
-}, |
- |
- |
-_navigatorViewForUISourceCode: function(uiSourceCode) |
-{ |
-if (uiSourceCode.isContentScript) |
-return this._contentScriptsView; |
-else if (uiSourceCode.project().type() === WebInspector.projectTypes.Snippets) |
-return this._snippetsView; |
-else |
-return this._scriptsView; |
-}, |
- |
- |
-addUISourceCode: function(uiSourceCode) |
-{ |
-this._navigatorViewForUISourceCode(uiSourceCode).addUISourceCode(uiSourceCode); |
-}, |
- |
- |
-removeUISourceCode: function(uiSourceCode) |
-{ |
-this._navigatorViewForUISourceCode(uiSourceCode).removeUISourceCode(uiSourceCode); |
-}, |
- |
- |
-revealUISourceCode: function(uiSourceCode, select) |
-{ |
-this._navigatorViewForUISourceCode(uiSourceCode).revealUISourceCode(uiSourceCode, select); |
-if (uiSourceCode.isContentScript) |
-this._tabbedPane.selectTab(WebInspector.ScriptsNavigator.ContentScriptsTab); |
-else if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
-this._tabbedPane.selectTab(WebInspector.ScriptsNavigator.ScriptsTab); |
-}, |
- |
- |
-rename: function(uiSourceCode, callback) |
-{ |
-this._navigatorViewForUISourceCode(uiSourceCode).rename(uiSourceCode, callback); |
-}, |
- |
- |
-_scriptSelected: function(event) |
-{ |
-this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ScriptSelected, event.data); |
-}, |
- |
- |
-_itemSearchStarted: function(event) |
-{ |
-this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemSearchStarted, event.data); |
-}, |
- |
- |
-_fileRenamed: function(event) |
-{ |
-this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.FileRenamed, event.data); |
-}, |
- |
- |
-_itemRenamingRequested: function(event) |
-{ |
-this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested, event.data); |
-}, |
- |
- |
-_snippetCreationRequested: function(event) |
-{ |
-this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.SnippetCreationRequested, event.data); |
-}, |
- |
-__proto__: WebInspector.Object.prototype |
-} |
- |
- |
-WebInspector.SnippetsNavigatorView = function() |
-{ |
-WebInspector.NavigatorView.call(this); |
-this.element.addEventListener("contextmenu", this.handleContextMenu.bind(this), false); |
-} |
- |
-WebInspector.SnippetsNavigatorView.Events = { |
-SnippetCreationRequested: "SnippetCreationRequested", |
-ItemRenamingRequested: "ItemRenamingRequested" |
-} |
- |
-WebInspector.SnippetsNavigatorView.prototype = { |
- |
-handleContextMenu: function(event, uiSourceCode) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-if (uiSourceCode) { |
-contextMenu.appendItem(WebInspector.UIString("Run"), this._handleEvaluateSnippet.bind(this, uiSourceCode)); |
-contextMenu.appendItem(WebInspector.UIString("Rename"), this.handleRename.bind(this, uiSourceCode)); |
-contextMenu.appendItem(WebInspector.UIString("Remove"), this._handleRemoveSnippet.bind(this, uiSourceCode)); |
-contextMenu.appendSeparator(); |
-} |
-contextMenu.appendItem(WebInspector.UIString("New"), this._handleCreateSnippet.bind(this)); |
-contextMenu.show(); |
-}, |
- |
- |
-_handleEvaluateSnippet: function(uiSourceCode) |
-{ |
-if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
-return; |
-WebInspector.scriptSnippetModel.evaluateScriptSnippet(uiSourceCode); |
-}, |
- |
- |
-handleRename: function(uiSourceCode) |
-{ |
-this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested, uiSourceCode); |
-}, |
- |
- |
-_handleRemoveSnippet: function(uiSourceCode) |
-{ |
-if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
-return; |
-WebInspector.scriptSnippetModel.deleteScriptSnippet(uiSourceCode); |
-}, |
- |
-_handleCreateSnippet: function() |
-{ |
-this._snippetCreationRequested(); |
-}, |
- |
-_snippetCreationRequested: function() |
-{ |
-this.dispatchEventToListeners(WebInspector.SnippetsNavigatorView.Events.SnippetCreationRequested, null); |
-}, |
- |
-__proto__: WebInspector.NavigatorView.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.ScriptsSearchScope = function(workspace) |
-{ |
- |
-WebInspector.SearchScope.call(this) |
-this._searchId = 0; |
-this._workspace = workspace; |
-} |
- |
-WebInspector.ScriptsSearchScope.prototype = { |
- |
-performSearch: function(searchConfig, searchResultCallback, searchFinishedCallback) |
-{ |
-this.stopSearch(); |
- |
-var uiSourceCodes = this._sortedUISourceCodes(); |
-var uiSourceCodeIndex = 0; |
- |
-function filterOutContentScripts(uiSourceCode) |
-{ |
-return !uiSourceCode.isContentScript; |
-} |
- |
-if (!WebInspector.settings.searchInContentScripts.get()) |
-uiSourceCodes = uiSourceCodes.filter(filterOutContentScripts); |
- |
-function continueSearch() |
-{ |
- |
- |
-if (uiSourceCodeIndex < uiSourceCodes.length) { |
-var uiSourceCode = uiSourceCodes[uiSourceCodeIndex++]; |
-uiSourceCode.searchInContent(searchConfig.query, !searchConfig.ignoreCase, searchConfig.isRegex, searchCallbackWrapper.bind(this, this._searchId, uiSourceCode)); |
-} else |
-searchFinishedCallback(true); |
-} |
- |
-function searchCallbackWrapper(searchId, uiSourceCode, searchMatches) |
-{ |
-if (searchId !== this._searchId) { |
-searchFinishedCallback(false); |
-return; |
-} |
-var searchResult = new WebInspector.FileBasedSearchResultsPane.SearchResult(uiSourceCode, searchMatches); |
-searchResultCallback(searchResult); |
-if (searchId !== this._searchId) { |
-searchFinishedCallback(false); |
-return; |
-} |
-continueSearch.call(this); |
-} |
- |
-continueSearch.call(this); |
-return uiSourceCodes.length; |
-}, |
- |
-stopSearch: function() |
-{ |
-++this._searchId; |
-}, |
- |
- |
-createSearchResultsPane: function(searchConfig) |
-{ |
-return new WebInspector.FileBasedSearchResultsPane(searchConfig); |
-}, |
- |
- |
-_sortedUISourceCodes: function() |
-{ |
-function filterOutAnonymous(uiSourceCode) |
-{ |
-return !!uiSourceCode.originURL(); |
-} |
- |
-function comparator(a, b) |
-{ |
-return a.originURL().compareTo(b.originURL()); |
-} |
- |
-var projects = this._workspace.projects(); |
-var uiSourceCodes = []; |
-for (var i = 0; i < projects.length; ++i) { |
-if (projects[i].isServiceProject()) |
-continue; |
-uiSourceCodes = uiSourceCodes.concat(projects[i].uiSourceCodes()); |
-} |
- |
-uiSourceCodes = uiSourceCodes.filter(filterOutAnonymous); |
-uiSourceCodes.sort(comparator); |
- |
-return uiSourceCodes; |
-}, |
- |
-__proto__: WebInspector.SearchScope.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.StyleSheetOutlineDialog = function(view, uiSourceCode) |
-{ |
-WebInspector.SelectionDialogContentProvider.call(this); |
- |
-this._rules = []; |
-this._view = view; |
-this._uiSourceCode = uiSourceCode; |
-} |
- |
- |
-WebInspector.StyleSheetOutlineDialog.show = function(view, uiSourceCode) |
-{ |
-if (WebInspector.Dialog.currentInstance()) |
-return null; |
-var delegate = new WebInspector.StyleSheetOutlineDialog(view, uiSourceCode); |
-var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(delegate); |
-WebInspector.Dialog.show(view.element, filteredItemSelectionDialog); |
-} |
- |
-WebInspector.StyleSheetOutlineDialog.prototype = { |
- |
-itemTitleAt: function(itemIndex) |
-{ |
-return this._rules[itemIndex].selectorText; |
-}, |
- |
- |
-itemSuffixAt: function(itemIndex) |
-{ |
-return ""; |
-}, |
- |
- |
-itemSubtitleAt: function(itemIndex) |
-{ |
-return ":" + (this._rules[itemIndex].sourceLine + 1); |
-}, |
- |
- |
-itemKeyAt: function(itemIndex) |
-{ |
-return this._rules[itemIndex].selectorText; |
-}, |
- |
- |
-itemsCount: function() |
-{ |
-return this._rules.length; |
-}, |
- |
- |
-requestItems: function(callback) |
-{ |
-function didGetAllStyleSheets(error, infos) |
-{ |
-if (error) { |
-callback(0, 0); |
-return; |
-} |
- |
-for (var i = 0; i < infos.length; ++i) { |
-var info = infos[i]; |
-if (info.sourceURL === this._uiSourceCode.url) { |
-WebInspector.CSSStyleSheet.createForId(info.styleSheetId, didGetStyleSheet.bind(this)); |
-return; |
-} |
-} |
-callback(0, 0); |
-} |
- |
-CSSAgent.getAllStyleSheets(didGetAllStyleSheets.bind(this)); |
- |
- |
-function didGetStyleSheet(styleSheet) |
-{ |
-if (!styleSheet) { |
-callback(0, 0); |
-return; |
-} |
- |
-this._rules = styleSheet.rules; |
-callback(0, 1); |
-} |
-}, |
- |
- |
-selectItem: function(itemIndex, promptValue) |
-{ |
-var lineNumber = this._rules[itemIndex].sourceLine; |
-if (!isNaN(lineNumber) && lineNumber >= 0) |
-this._view.highlightLine(lineNumber); |
-this._view.focus(); |
-}, |
- |
- |
-rewriteQuery: function(query) |
-{ |
-return query; |
-}, |
- |
-dispose: function() |
-{ |
-} |
-} |
-; |
- |
- |
- |
-WebInspector.TabbedEditorContainerDelegate = function() { } |
- |
-WebInspector.TabbedEditorContainerDelegate.prototype = { |
- |
-viewForFile: function(uiSourceCode) { } |
-} |
- |
- |
-WebInspector.TabbedEditorContainer = function(delegate, settingName) |
-{ |
-WebInspector.Object.call(this); |
-this._delegate = delegate; |
- |
-this._tabbedPane = new WebInspector.TabbedPane(); |
-this._tabbedPane.setTabDelegate(new WebInspector.EditorContainerTabDelegate(this)); |
- |
-this._tabbedPane.closeableTabs = true; |
-this._tabbedPane.element.id = "scripts-editor-container-tabbed-pane"; |
- |
-this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabClosed, this._tabClosed, this); |
-this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this); |
- |
-this._tabIds = new Map(); |
-this._files = {}; |
-this._loadedURIs = {}; |
- |
-this._previouslyViewedFilesSetting = WebInspector.settings.createSetting(settingName, []); |
-this._history = WebInspector.TabbedEditorContainer.History.fromObject(this._previouslyViewedFilesSetting.get()); |
-} |
- |
- |
-WebInspector.TabbedEditorContainer.Events = { |
-EditorSelected: "EditorSelected", |
-EditorClosed: "EditorClosed" |
-} |
- |
-WebInspector.TabbedEditorContainer._tabId = 0; |
- |
-WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount = 30; |
- |
-WebInspector.TabbedEditorContainer.prototype = { |
- |
-get view() |
-{ |
-return this._tabbedPane; |
-}, |
- |
- |
-get visibleView() |
-{ |
-return this._tabbedPane.visibleView; |
-}, |
- |
- |
-show: function(parentElement) |
-{ |
-this._tabbedPane.show(parentElement); |
-}, |
- |
- |
-showFile: function(uiSourceCode) |
-{ |
-this._innerShowFile(uiSourceCode, true); |
-}, |
- |
-_addScrollAndSelectionListeners: function() |
-{ |
-if (!this._currentView) |
-return; |
-this._currentView.addEventListener(WebInspector.SourceFrame.Events.ScrollChanged, this._scrollChanged, this); |
-this._currentView.addEventListener(WebInspector.SourceFrame.Events.SelectionChanged, this._selectionChanged, this); |
-}, |
- |
-_removeScrollAndSelectionListeners: function() |
-{ |
-if (!this._currentView) |
-return; |
-this._currentView.removeEventListener(WebInspector.SourceFrame.Events.ScrollChanged, this._scrollChanged, this); |
-this._currentView.removeEventListener(WebInspector.SourceFrame.Events.SelectionChanged, this._selectionChanged, this); |
-}, |
- |
-_scrollChanged: function(event) |
-{ |
-var lineNumber = (event.data); |
-this._history.updateScrollLineNumber(this._currentFile.uri(), lineNumber); |
-this._history.save(this._previouslyViewedFilesSetting); |
-}, |
- |
-_selectionChanged: function(event) |
-{ |
-var range = (event.data); |
-this._history.updateSelectionRange(this._currentFile.uri(), range); |
-this._history.save(this._previouslyViewedFilesSetting); |
-}, |
- |
- |
-_innerShowFile: function(uiSourceCode, userGesture) |
-{ |
-if (this._currentFile === uiSourceCode) |
-return; |
-this._removeScrollAndSelectionListeners(); |
-this._currentFile = uiSourceCode; |
- |
-var tabId = this._tabIds.get(uiSourceCode) || this._appendFileTab(uiSourceCode, userGesture); |
- |
-this._tabbedPane.selectTab(tabId, userGesture); |
-if (userGesture) |
-this._editorSelectedByUserAction(); |
- |
-this._currentView = this.visibleView; |
-this._addScrollAndSelectionListeners(); |
- |
-this.dispatchEventToListeners(WebInspector.TabbedEditorContainer.Events.EditorSelected, this._currentFile); |
-}, |
- |
- |
-_titleForFile: function(uiSourceCode) |
-{ |
-const maxDisplayNameLength = 30; |
-const minDisplayQueryParamLength = 5; |
- |
-var title = uiSourceCode.name(); |
-title = title ? title.trimMiddle(maxDisplayNameLength) : WebInspector.UIString("(program)"); |
-if (uiSourceCode.isDirty()) |
-title += "*"; |
-return title; |
-}, |
- |
- |
-_maybeCloseTab: function(id, nextTabId) |
-{ |
-var uiSourceCode = this._files[id]; |
-var shouldPrompt = uiSourceCode.isDirty() && uiSourceCode.project().canSetFileContent(); |
- |
-if (!shouldPrompt || confirm(WebInspector.UIString("Are you sure you want to close unsaved file: %s?", uiSourceCode.name()))) { |
-uiSourceCode.resetWorkingCopy(); |
-if (nextTabId) |
-this._tabbedPane.selectTab(nextTabId, true); |
-this._tabbedPane.closeTab(id, true); |
-return true; |
-} |
-return false; |
-}, |
- |
- |
-_closeTabs: function(ids) |
-{ |
-var dirtyTabs = []; |
-var cleanTabs = []; |
-for (var i = 0; i < ids.length; ++i) { |
-var id = ids[i]; |
-var uiSourceCode = this._files[id]; |
-if (uiSourceCode.isDirty()) |
-dirtyTabs.push(id); |
-else |
-cleanTabs.push(id); |
-} |
-if (dirtyTabs.length) |
-this._tabbedPane.selectTab(dirtyTabs[0], true); |
-this._tabbedPane.closeTabs(cleanTabs, true); |
-for (var i = 0; i < dirtyTabs.length; ++i) { |
-var nextTabId = i + 1 < dirtyTabs.length ? dirtyTabs[i + 1] : null; |
-if (!this._maybeCloseTab(dirtyTabs[i], nextTabId)) |
-break; |
-} |
-}, |
- |
- |
-addUISourceCode: function(uiSourceCode) |
-{ |
-if (this._userSelectedFiles || this._loadedURIs[uiSourceCode.uri()]) |
-return; |
-this._loadedURIs[uiSourceCode.uri()] = true; |
- |
-var index = this._history.index(uiSourceCode.uri()) |
-if (index === -1) |
-return; |
- |
-var tabId = this._tabIds.get(uiSourceCode) || this._appendFileTab(uiSourceCode, false); |
- |
-if (!this._currentFile) |
-return; |
- |
- |
-if (!index) { |
-this._innerShowFile(uiSourceCode, false); |
-return; |
-} |
- |
-var currentProjectType = this._currentFile.project().type(); |
-var addedProjectType = uiSourceCode.project().type(); |
-var snippetsProjectType = WebInspector.projectTypes.Snippets; |
-if (this._history.index(this._currentFile.uri()) && currentProjectType === snippetsProjectType && addedProjectType !== snippetsProjectType) |
-this._innerShowFile(uiSourceCode, false); |
-}, |
- |
- |
-removeUISourceCode: function(uiSourceCode) |
-{ |
-this.removeUISourceCodes([uiSourceCode]); |
-}, |
- |
- |
-removeUISourceCodes: function(uiSourceCodes) |
-{ |
-var tabIds = []; |
-for (var i = 0; i < uiSourceCodes.length; ++i) { |
-var uiSourceCode = uiSourceCodes[i]; |
-delete this._loadedURIs[uiSourceCode.uri()]; |
-var tabId = this._tabIds.get(uiSourceCode); |
-if (tabId) |
-tabIds.push(tabId); |
-} |
-this._tabbedPane.closeTabs(tabIds); |
-}, |
- |
- |
-_editorClosedByUserAction: function(uiSourceCode) |
-{ |
-this._userSelectedFiles = true; |
-this._history.remove(uiSourceCode.uri()); |
-this._updateHistory(); |
-}, |
- |
-_editorSelectedByUserAction: function() |
-{ |
-this._userSelectedFiles = true; |
-this._updateHistory(); |
-}, |
- |
-_updateHistory: function() |
-{ |
-var tabIds = this._tabbedPane.lastOpenedTabIds(WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount); |
- |
-function tabIdToURI(tabId) |
-{ |
-return this._files[tabId].uri(); |
-} |
- |
-this._history.update(tabIds.map(tabIdToURI.bind(this))); |
-this._history.save(this._previouslyViewedFilesSetting); |
-}, |
- |
- |
-_tooltipForFile: function(uiSourceCode) |
-{ |
-return uiSourceCode.originURL(); |
-}, |
- |
- |
-_appendFileTab: function(uiSourceCode, userGesture) |
-{ |
-var view = this._delegate.viewForFile(uiSourceCode); |
-var title = this._titleForFile(uiSourceCode); |
-var tooltip = this._tooltipForFile(uiSourceCode); |
- |
-var tabId = this._generateTabId(); |
-this._tabIds.put(uiSourceCode, tabId); |
-this._files[tabId] = uiSourceCode; |
- |
-var savedScrollLineNumber = this._history.scrollLineNumber(uiSourceCode.uri()); |
-if (savedScrollLineNumber) |
-view.scrollToLine(savedScrollLineNumber); |
-var savedSelectionRange = this._history.selectionRange(uiSourceCode.uri()); |
-if (savedSelectionRange) |
-view.setSelection(savedSelectionRange); |
- |
-this._tabbedPane.appendTab(tabId, title, view, tooltip, userGesture); |
- |
-this._addUISourceCodeListeners(uiSourceCode); |
-return tabId; |
-}, |
- |
- |
-_tabClosed: function(event) |
-{ |
-var tabId = (event.data.tabId); |
-var userGesture = (event.data.isUserGesture); |
- |
-var uiSourceCode = this._files[tabId]; |
-if (this._currentFile === uiSourceCode) { |
-this._removeScrollAndSelectionListeners(); |
-delete this._currentView; |
-delete this._currentFile; |
-} |
-this._tabIds.remove(uiSourceCode); |
-delete this._files[tabId]; |
- |
-this._removeUISourceCodeListeners(uiSourceCode); |
- |
-this.dispatchEventToListeners(WebInspector.TabbedEditorContainer.Events.EditorClosed, uiSourceCode); |
- |
-if (userGesture) |
-this._editorClosedByUserAction(uiSourceCode); |
-}, |
- |
- |
-_tabSelected: function(event) |
-{ |
-var tabId = (event.data.tabId); |
-var userGesture = (event.data.isUserGesture); |
- |
-var uiSourceCode = this._files[tabId]; |
-this._innerShowFile(uiSourceCode, userGesture); |
-}, |
- |
- |
-_addUISourceCodeListeners: function(uiSourceCode) |
-{ |
-uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.TitleChanged, this._uiSourceCodeTitleChanged, this); |
-uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._uiSourceCodeWorkingCopyChanged, this); |
-uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._uiSourceCodeWorkingCopyCommitted, this); |
-uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.FormattedChanged, this._uiSourceCodeFormattedChanged, this); |
-}, |
- |
- |
-_removeUISourceCodeListeners: function(uiSourceCode) |
-{ |
-uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.TitleChanged, this._uiSourceCodeTitleChanged, this); |
-uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._uiSourceCodeWorkingCopyChanged, this); |
-uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._uiSourceCodeWorkingCopyCommitted, this); |
-uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.FormattedChanged, this._uiSourceCodeFormattedChanged, this); |
-}, |
- |
- |
-_updateFileTitle: function(uiSourceCode) |
-{ |
-var tabId = this._tabIds.get(uiSourceCode); |
-if (tabId) { |
-var title = this._titleForFile(uiSourceCode); |
-this._tabbedPane.changeTabTitle(tabId, title); |
-} |
-}, |
- |
-_uiSourceCodeTitleChanged: function(event) |
-{ |
-var uiSourceCode = (event.target); |
-this._updateFileTitle(uiSourceCode); |
-}, |
- |
-_uiSourceCodeWorkingCopyChanged: function(event) |
-{ |
-var uiSourceCode = (event.target); |
-this._updateFileTitle(uiSourceCode); |
-}, |
- |
-_uiSourceCodeWorkingCopyCommitted: function(event) |
-{ |
-var uiSourceCode = (event.target); |
-this._updateFileTitle(uiSourceCode); |
-}, |
- |
-_uiSourceCodeFormattedChanged: function(event) |
-{ |
-var uiSourceCode = (event.target); |
-this._updateFileTitle(uiSourceCode); |
-}, |
- |
-reset: function() |
-{ |
-delete this._userSelectedFiles; |
-}, |
- |
- |
-_generateTabId: function() |
-{ |
-return "tab_" + (WebInspector.TabbedEditorContainer._tabId++); |
-}, |
- |
- |
-currentFile: function() |
-{ |
-return this._currentFile; |
-}, |
- |
-__proto__: WebInspector.Object.prototype |
-} |
- |
- |
-WebInspector.TabbedEditorContainer.HistoryItem = function(url, selectionRange, scrollLineNumber) |
-{ |
-this.url = url; |
-this._isSerializable = url.length < WebInspector.TabbedEditorContainer.HistoryItem.serializableUrlLengthLimit; |
-this.selectionRange = selectionRange; |
-this.scrollLineNumber = scrollLineNumber; |
-} |
- |
-WebInspector.TabbedEditorContainer.HistoryItem.serializableUrlLengthLimit = 4096; |
- |
- |
-WebInspector.TabbedEditorContainer.HistoryItem.fromObject = function (serializedHistoryItem) |
-{ |
-var selectionRange = serializedHistoryItem.selectionRange ? WebInspector.TextRange.fromObject(serializedHistoryItem.selectionRange) : null; |
-return new WebInspector.TabbedEditorContainer.HistoryItem(serializedHistoryItem.url, selectionRange, serializedHistoryItem.scrollLineNumber); |
-} |
- |
-WebInspector.TabbedEditorContainer.HistoryItem.prototype = { |
- |
-serializeToObject: function() |
-{ |
-if (!this._isSerializable) |
-return null; |
-var serializedHistoryItem = {}; |
-serializedHistoryItem.url = this.url; |
-serializedHistoryItem.selectionRange = this.selectionRange; |
-serializedHistoryItem.scrollLineNumber = this.scrollLineNumber; |
-return serializedHistoryItem; |
-}, |
- |
-__proto__: WebInspector.Object.prototype |
-} |
- |
- |
-WebInspector.TabbedEditorContainer.History = function(items) |
-{ |
-this._items = items; |
-this._rebuildItemIndex(); |
-} |
- |
- |
-WebInspector.TabbedEditorContainer.History.fromObject = function(serializedHistory) |
-{ |
-var items = []; |
-for (var i = 0; i < serializedHistory.length; ++i) |
-items.push(WebInspector.TabbedEditorContainer.HistoryItem.fromObject(serializedHistory[i])); |
-return new WebInspector.TabbedEditorContainer.History(items); |
-} |
- |
-WebInspector.TabbedEditorContainer.History.prototype = { |
- |
-index: function(url) |
-{ |
-var index = this._itemsIndex[url]; |
-if (typeof index === "number") |
-return index; |
-return -1; |
-}, |
- |
-_rebuildItemIndex: function() |
-{ |
-this._itemsIndex = {}; |
-for (var i = 0; i < this._items.length; ++i) { |
-console.assert(!this._itemsIndex.hasOwnProperty(this._items[i].url)); |
-this._itemsIndex[this._items[i].url] = i; |
-} |
-}, |
- |
- |
-selectionRange: function(url) |
-{ |
-var index = this.index(url); |
-return index !== -1 ? this._items[index].selectionRange : undefined; |
-}, |
- |
- |
-updateSelectionRange: function(url, selectionRange) |
-{ |
-if (!selectionRange) |
-return; |
-var index = this.index(url); |
-if (index === -1) |
-return; |
-this._items[index].selectionRange = selectionRange; |
-}, |
- |
- |
-scrollLineNumber: function(url) |
-{ |
-var index = this.index(url); |
-return index !== -1 ? this._items[index].scrollLineNumber : undefined; |
-}, |
- |
- |
-updateScrollLineNumber: function(url, scrollLineNumber) |
-{ |
-var index = this.index(url); |
-if (index === -1) |
-return; |
-this._items[index].scrollLineNumber = scrollLineNumber; |
-}, |
- |
- |
-update: function(urls) |
-{ |
-for (var i = urls.length - 1; i >= 0; --i) { |
-var index = this.index(urls[i]); |
-var item; |
-if (index !== -1) { |
-item = this._items[index]; |
-this._items.splice(index, 1); |
-} else |
-item = new WebInspector.TabbedEditorContainer.HistoryItem(urls[i]); |
-this._items.unshift(item); |
-this._rebuildItemIndex(); |
-} |
-}, |
- |
- |
-remove: function(url) |
-{ |
-var index = this.index(url); |
-if (index !== -1) { |
-this._items.splice(index, 1); |
-this._rebuildItemIndex(); |
-} |
-}, |
- |
- |
-save: function(setting) |
-{ |
-setting.set(this._serializeToObject()); |
-}, |
- |
- |
-_serializeToObject: function() |
-{ |
-var serializedHistory = []; |
-for (var i = 0; i < this._items.length; ++i) { |
-var serializedItem = this._items[i].serializeToObject(); |
-if (serializedItem) |
-serializedHistory.push(serializedItem); |
-if (serializedHistory.length === WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount) |
-break; |
-} |
-return serializedHistory; |
-}, |
- |
-__proto__: WebInspector.Object.prototype |
-} |
- |
- |
-WebInspector.EditorContainerTabDelegate = function(editorContainer) |
-{ |
-this._editorContainer = editorContainer; |
-} |
- |
-WebInspector.EditorContainerTabDelegate.prototype = { |
- |
-closeTabs: function(tabbedPane, ids) |
-{ |
-this._editorContainer._closeTabs(ids); |
-} |
-} |
-; |
- |
- |
- |
-WebInspector.WatchExpressionsSidebarPane = function() |
-{ |
-WebInspector.SidebarPane.call(this, WebInspector.UIString("Watch Expressions")); |
- |
-this.section = new WebInspector.WatchExpressionsSection(); |
-this.bodyElement.appendChild(this.section.element); |
- |
-var refreshButton = document.createElement("button"); |
-refreshButton.className = "pane-title-button refresh"; |
-refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this), false); |
-refreshButton.title = WebInspector.UIString("Refresh"); |
-this.titleElement.appendChild(refreshButton); |
- |
-var addButton = document.createElement("button"); |
-addButton.className = "pane-title-button add"; |
-addButton.addEventListener("click", this._addButtonClicked.bind(this), false); |
-this.titleElement.appendChild(addButton); |
-addButton.title = WebInspector.UIString("Add watch expression"); |
- |
-this._requiresUpdate = true; |
-} |
- |
-WebInspector.WatchExpressionsSidebarPane.prototype = { |
-wasShown: function() |
-{ |
-this._refreshExpressionsIfNeeded(); |
-}, |
- |
-reset: function() |
-{ |
-this.refreshExpressions(); |
-}, |
- |
-refreshExpressions: function() |
-{ |
-this._requiresUpdate = true; |
-this._refreshExpressionsIfNeeded(); |
-}, |
- |
-addExpression: function(expression) |
-{ |
-this.section.addExpression(expression); |
-this.expand(); |
-}, |
- |
-_refreshExpressionsIfNeeded: function() |
-{ |
-if (this._requiresUpdate && this.isShowing()) { |
-this.section.update(); |
-delete this._requiresUpdate; |
-} else |
-this._requiresUpdate = true; |
-}, |
- |
-_addButtonClicked: function(event) |
-{ |
-event.consume(); |
-this.expand(); |
-this.section.addNewExpressionAndEdit(); |
-}, |
- |
-_refreshButtonClicked: function(event) |
-{ |
-event.consume(); |
-this.refreshExpressions(); |
-}, |
- |
-__proto__: WebInspector.SidebarPane.prototype |
-} |
- |
- |
-WebInspector.WatchExpressionsSection = function() |
-{ |
-this._watchObjectGroupId = "watch-group"; |
- |
-WebInspector.ObjectPropertiesSection.call(this, WebInspector.RemoteObject.fromPrimitiveValue("")); |
- |
-this.treeElementConstructor = WebInspector.WatchedPropertyTreeElement; |
-this._expandedExpressions = {}; |
-this._expandedProperties = {}; |
- |
-this.emptyElement = document.createElement("div"); |
-this.emptyElement.className = "info"; |
-this.emptyElement.textContent = WebInspector.UIString("No Watch Expressions"); |
- |
-this.watchExpressions = WebInspector.settings.watchExpressions.get(); |
- |
-this.headerElement.className = "hidden"; |
-this.editable = true; |
-this.expanded = true; |
-this.propertiesElement.addStyleClass("watch-expressions"); |
- |
-this.element.addEventListener("mousemove", this._mouseMove.bind(this), true); |
-this.element.addEventListener("mouseout", this._mouseOut.bind(this), true); |
-this.element.addEventListener("dblclick", this._sectionDoubleClick.bind(this), false); |
-this.emptyElement.addEventListener("contextmenu", this._emptyElementContextMenu.bind(this), false); |
-} |
- |
-WebInspector.WatchExpressionsSection.NewWatchExpression = "\xA0"; |
- |
-WebInspector.WatchExpressionsSection.prototype = { |
-update: function(e) |
-{ |
-if (e) |
-e.consume(); |
- |
-function appendResult(expression, watchIndex, result, wasThrown) |
-{ |
-if (!result) |
-return; |
- |
-var property = new WebInspector.RemoteObjectProperty(expression, result); |
-property.watchIndex = watchIndex; |
-property.wasThrown = wasThrown; |
- |
- |
- |
- |
- |
- |
- |
- |
-properties.push(property); |
- |
-if (properties.length == propertyCount) { |
-this.updateProperties(properties, [], WebInspector.WatchExpressionTreeElement, WebInspector.WatchExpressionsSection.CompareProperties); |
- |
- |
- |
-if (this._newExpressionAdded) { |
-delete this._newExpressionAdded; |
- |
-var treeElement = this.findAddedTreeElement(); |
-if (treeElement) |
-treeElement.startEditing(); |
-} |
- |
- |
-if (this._lastMouseMovePageY) |
-this._updateHoveredElement(this._lastMouseMovePageY); |
-} |
-} |
- |
- |
+{WebInspector.markBeingEdited(treeOutlineElement,false);this.updateTitle();this._treeElement.treeOutline.childrenListElement.focus();if(callback) |
+callback(committed);} |
+var editingConfig=new WebInspector.EditingConfig(commitHandler.bind(this),cancelHandler.bind(this));this.updateTitle(true);WebInspector.startEditing(this._treeElement.titleElement,editingConfig);window.getSelection().setBaseAndExtent(this._treeElement.titleElement,0,this._treeElement.titleElement,1);},__proto__:WebInspector.NavigatorTreeNode.prototype} |
+WebInspector.NavigatorFolderTreeNode=function(navigatorView,project,id,type,folderPath,title) |
+{WebInspector.NavigatorTreeNode.call(this,id);this._navigatorView=navigatorView;this._project=project;this._type=type;this._folderPath=folderPath;this._title=title;} |
+WebInspector.NavigatorFolderTreeNode.prototype={treeElement:function() |
+{if(this._treeElement) |
+return this._treeElement;this._treeElement=this._createTreeElement(this._title,this);return this._treeElement;},_createTreeElement:function(title,node) |
+{var treeElement=new WebInspector.NavigatorFolderTreeElement(this._navigatorView,this._type,title);treeElement.setNode(node);return treeElement;},wasPopulated:function() |
+{if(!this._treeElement||this._treeElement._node!==this) |
+return;this._addChildrenRecursive();},_addChildrenRecursive:function() |
+{var children=this.children();for(var i=0;i<children.length;++i){var child=children[i];this.didAddChild(child);if(child instanceof WebInspector.NavigatorFolderTreeNode) |
+child._addChildrenRecursive();}},_shouldMerge:function(node) |
+{return this._type!==WebInspector.NavigatorTreeOutline.Types.Domain&&node instanceof WebInspector.NavigatorFolderTreeNode;},didAddChild:function(node) |
+{function titleForNode(node) |
+{return node._title;} |
+if(!this._treeElement) |
+return;var children=this.children();if(children.length===1&&this._shouldMerge(node)){node._isMerged=true;this._treeElement.titleText=this._treeElement.titleText+"/"+node._title;node._treeElement=this._treeElement;this._treeElement.setNode(node);return;} |
+var oldNode;if(children.length===2) |
+oldNode=children[0]!==node?children[0]:children[1];if(oldNode&&oldNode._isMerged){delete oldNode._isMerged;var mergedToNodes=[];mergedToNodes.push(this);var treeNode=this;while(treeNode._isMerged){treeNode=treeNode.parent;mergedToNodes.push(treeNode);} |
+mergedToNodes.reverse();var titleText=mergedToNodes.map(titleForNode).join("/");var nodes=[];treeNode=oldNode;do{nodes.push(treeNode);children=treeNode.children();treeNode=children.length===1?children[0]:null;}while(treeNode&&treeNode._isMerged);if(!this.isPopulated()){this._treeElement.titleText=titleText;this._treeElement.setNode(this);for(var i=0;i<nodes.length;++i){delete nodes[i]._treeElement;delete nodes[i]._isMerged;} |
+return;} |
+var oldTreeElement=this._treeElement;var treeElement=this._createTreeElement(titleText,this);for(var i=0;i<mergedToNodes.length;++i) |
+mergedToNodes[i]._treeElement=treeElement;oldTreeElement.parent.appendChild(treeElement);oldTreeElement.setNode(nodes[nodes.length-1]);oldTreeElement.titleText=nodes.map(titleForNode).join("/");oldTreeElement.parent.removeChild(oldTreeElement);this._treeElement.appendChild(oldTreeElement);if(oldTreeElement.expanded) |
+treeElement.expand();} |
+if(this.isPopulated()) |
+this._treeElement.appendChild(node.treeElement());},willRemoveChild:function(node) |
+{if(node._isMerged||!this.isPopulated()) |
+return;this._treeElement.removeChild(node._treeElement);},__proto__:WebInspector.NavigatorTreeNode.prototype};WebInspector.RevisionHistoryView=function() |
+{WebInspector.View.call(this);this.registerRequiredCSS("revisionHistory.css");this.element.addStyleClass("revision-history-drawer");this.element.addStyleClass("fill");this.element.addStyleClass("outline-disclosure");this._uiSourceCodeItems=new Map();var olElement=this.element.createChild("ol");this._treeOutline=new TreeOutline(olElement);function populateRevisions(uiSourceCode) |
+{if(uiSourceCode.history.length) |
+this._createUISourceCodeItem(uiSourceCode);} |
+WebInspector.workspace.uiSourceCodes().forEach(populateRevisions.bind(this));WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeContentCommitted,this._revisionAdded,this);WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved,this._uiSourceCodeRemoved,this);WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset,this._projectWillReset,this);this._statusElement=document.createElement("span");this._statusElement.textContent=WebInspector.UIString("Local modifications");} |
+WebInspector.RevisionHistoryView.showHistory=function(uiSourceCode) |
+{if(!WebInspector.RevisionHistoryView._view) |
+WebInspector.RevisionHistoryView._view=new WebInspector.RevisionHistoryView();var view=WebInspector.RevisionHistoryView._view;WebInspector.showViewInDrawer(view._statusElement,view);view._revealUISourceCode(uiSourceCode);} |
+WebInspector.RevisionHistoryView.prototype={_createUISourceCodeItem:function(uiSourceCode) |
+{var uiSourceCodeItem=new TreeElement(uiSourceCode.displayName(),null,true);uiSourceCodeItem.selectable=false;for(var i=0;i<this._treeOutline.children.length;++i){if(this._treeOutline.children[i].title.localeCompare(uiSourceCode.displayName())>0){this._treeOutline.insertChild(uiSourceCodeItem,i);break;}} |
+if(i===this._treeOutline.children.length) |
+this._treeOutline.appendChild(uiSourceCodeItem);this._uiSourceCodeItems.put(uiSourceCode,uiSourceCodeItem);var revisionCount=uiSourceCode.history.length;for(var i=revisionCount-1;i>=0;--i){var revision=uiSourceCode.history[i];var historyItem=new WebInspector.RevisionHistoryTreeElement(revision,uiSourceCode.history[i-1],i!==revisionCount-1);uiSourceCodeItem.appendChild(historyItem);} |
+var linkItem=new TreeElement("",null,false);linkItem.selectable=false;uiSourceCodeItem.appendChild(linkItem);var revertToOriginal=linkItem.listItemElement.createChild("span","revision-history-link revision-history-link-row");revertToOriginal.textContent=WebInspector.UIString("apply original content");revertToOriginal.addEventListener("click",uiSourceCode.revertToOriginal.bind(uiSourceCode));var clearHistoryElement=uiSourceCodeItem.listItemElement.createChild("span","revision-history-link");clearHistoryElement.textContent=WebInspector.UIString("revert");clearHistoryElement.addEventListener("click",this._clearHistory.bind(this,uiSourceCode));return uiSourceCodeItem;},_clearHistory:function(uiSourceCode) |
+{uiSourceCode.revertAndClearHistory(this._removeUISourceCode.bind(this));},_revisionAdded:function(event) |
+{var uiSourceCode=(event.data.uiSourceCode);var uiSourceCodeItem=this._uiSourceCodeItems.get(uiSourceCode);if(!uiSourceCodeItem){uiSourceCodeItem=this._createUISourceCodeItem(uiSourceCode);return;} |
+var historyLength=uiSourceCode.history.length;var historyItem=new WebInspector.RevisionHistoryTreeElement(uiSourceCode.history[historyLength-1],uiSourceCode.history[historyLength-2],false);if(uiSourceCodeItem.children.length) |
+uiSourceCodeItem.children[0].allowRevert();uiSourceCodeItem.insertChild(historyItem,0);},_revealUISourceCode:function(uiSourceCode) |
+{var uiSourceCodeItem=this._uiSourceCodeItems.get(uiSourceCode);if(uiSourceCodeItem){uiSourceCodeItem.reveal();uiSourceCodeItem.expand();}},_uiSourceCodeRemoved:function(event) |
+{var uiSourceCode=(event.data);this._removeUISourceCode(uiSourceCode);},_removeUISourceCode:function(uiSourceCode) |
+{var uiSourceCodeItem=this._uiSourceCodeItems.get(uiSourceCode);if(!uiSourceCodeItem) |
+return;this._treeOutline.removeChild(uiSourceCodeItem);this._uiSourceCodeItems.remove(uiSourceCode);},_projectWillReset:function(event) |
+{var project=event.data;project.uiSourceCodes().forEach(this._removeUISourceCode.bind(this));},__proto__:WebInspector.View.prototype} |
+WebInspector.RevisionHistoryTreeElement=function(revision,baseRevision,allowRevert) |
+{TreeElement.call(this,revision.timestamp.toLocaleTimeString(),null,true);this.selectable=false;this._revision=revision;this._baseRevision=baseRevision;this._revertElement=document.createElement("span");this._revertElement.className="revision-history-link";this._revertElement.textContent=WebInspector.UIString("apply revision content");this._revertElement.addEventListener("click",this._revision.revertToThis.bind(this._revision),false);if(!allowRevert) |
+this._revertElement.addStyleClass("hidden");} |
+WebInspector.RevisionHistoryTreeElement.prototype={onattach:function() |
+{this.listItemElement.addStyleClass("revision-history-revision");},onexpand:function() |
+{this.listItemElement.appendChild(this._revertElement);if(this._wasExpandedOnce) |
+return;this._wasExpandedOnce=true;this.childrenListElement.addStyleClass("source-code");if(this._baseRevision) |
+this._baseRevision.requestContent(step1.bind(this));else |
+this._revision.uiSourceCode.requestOriginalContent(step1.bind(this));function step1(baseContent) |
+{this._revision.requestContent(step2.bind(this,baseContent));} |
+function step2(baseContent,newContent) |
+{var baseLines=difflib.stringAsLines(baseContent);var newLines=difflib.stringAsLines(newContent);var sm=new difflib.SequenceMatcher(baseLines,newLines);var opcodes=sm.get_opcodes();var lastWasSeparator=false;for(var idx=0;idx<opcodes.length;idx++){var code=opcodes[idx];var change=code[0];var b=code[1];var be=code[2];var n=code[3];var ne=code[4];var rowCount=Math.max(be-b,ne-n);var topRows=[];var bottomRows=[];for(var i=0;i<rowCount;i++){if(change==="delete"||(change==="replace"&&b<be)){var lineNumber=b++;this._createLine(lineNumber,null,baseLines[lineNumber],"removed");lastWasSeparator=false;} |
+if(change==="insert"||(change==="replace"&&n<ne)){var lineNumber=n++;this._createLine(null,lineNumber,newLines[lineNumber],"added");lastWasSeparator=false;} |
+if(change==="equal"){b++;n++;if(!lastWasSeparator) |
+this._createLine(null,null," \u2026","separator");lastWasSeparator=true;}}}}},oncollapse:function() |
+{this._revertElement.remove();},_createLine:function(baseLineNumber,newLineNumber,lineContent,changeType) |
+{var child=new TreeElement("",null,false);child.selectable=false;this.appendChild(child);var lineElement=document.createElement("span");function appendLineNumber(lineNumber) |
+{var numberString=lineNumber!==null?numberToStringWithSpacesPadding(lineNumber+1,4):" ";var lineNumberSpan=document.createElement("span");lineNumberSpan.addStyleClass("webkit-line-number");lineNumberSpan.textContent=numberString;child.listItemElement.appendChild(lineNumberSpan);} |
+appendLineNumber(baseLineNumber);appendLineNumber(newLineNumber);var contentSpan=document.createElement("span");contentSpan.textContent=lineContent;child.listItemElement.appendChild(contentSpan);child.listItemElement.addStyleClass("revision-history-line");child.listItemElement.addStyleClass("revision-history-line-"+changeType);},allowRevert:function() |
+{this._revertElement.removeStyleClass("hidden");},__proto__:TreeElement.prototype};WebInspector.ScopeChainSidebarPane=function() |
+{WebInspector.SidebarPane.call(this,WebInspector.UIString("Scope Variables"));this._sections=[];this._expandedSections={};this._expandedProperties=[];} |
+WebInspector.ScopeChainSidebarPane.prototype={update:function(callFrame) |
+{this.bodyElement.removeChildren();if(!callFrame){var infoElement=document.createElement("div");infoElement.className="info";infoElement.textContent=WebInspector.UIString("Not Paused");this.bodyElement.appendChild(infoElement);return;} |
+for(var i=0;i<this._sections.length;++i){var section=this._sections[i];if(!section.title) |
+continue;if(section.expanded) |
+this._expandedSections[section.title]=true;else |
+delete this._expandedSections[section.title];} |
+this._sections=[];var foundLocalScope=false;var scopeChain=callFrame.scopeChain;for(var i=0;i<scopeChain.length;++i){var scope=scopeChain[i];var title=null;var subtitle=scope.object.description;var emptyPlaceholder=null;var extraProperties=null;var declarativeScope;switch(scope.type){case"local":foundLocalScope=true;title=WebInspector.UIString("Local");emptyPlaceholder=WebInspector.UIString("No Variables");subtitle=null;if(callFrame.this) |
+extraProperties=[new WebInspector.RemoteObjectProperty("this",WebInspector.RemoteObject.fromPayload(callFrame.this))];if(i==0){var details=WebInspector.debuggerModel.debuggerPausedDetails();var exception=details.reason===WebInspector.DebuggerModel.BreakReason.Exception?details.auxData:0;if(exception){extraProperties=extraProperties||[];var exceptionObject=(exception);extraProperties.push(new WebInspector.RemoteObjectProperty("<exception>",WebInspector.RemoteObject.fromPayload(exceptionObject)));}} |
+declarativeScope=true;break;case"closure":title=WebInspector.UIString("Closure");emptyPlaceholder=WebInspector.UIString("No Variables");subtitle=null;declarativeScope=true;break;case"catch":title=WebInspector.UIString("Catch");subtitle=null;declarativeScope=true;break;case"with":title=WebInspector.UIString("With Block");declarativeScope=false;break;case"global":title=WebInspector.UIString("Global");declarativeScope=false;break;} |
+if(!title||title===subtitle) |
+subtitle=null;var scopeRef;if(declarativeScope) |
+scopeRef=new WebInspector.ScopeRef(i,callFrame.id,undefined);else |
+scopeRef=undefined;var section=new WebInspector.ObjectPropertiesSection(WebInspector.ScopeRemoteObject.fromPayload(scope.object,scopeRef),title,subtitle,emptyPlaceholder,true,extraProperties,WebInspector.ScopeVariableTreeElement);section.editInSelectedCallFrameWhenPaused=true;section.pane=this;if(scope.type==="global") |
+section.expanded=false;else if(!foundLocalScope||scope.type==="local"||title in this._expandedSections) |
+section.expanded=true;this._sections.push(section);this.bodyElement.appendChild(section.element);}},__proto__:WebInspector.SidebarPane.prototype} |
+WebInspector.ScopeVariableTreeElement=function(property) |
+{WebInspector.ObjectPropertyTreeElement.call(this,property);} |
+WebInspector.ScopeVariableTreeElement.prototype={onattach:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.onattach.call(this);if(this.hasChildren&&this.propertyIdentifier in this.treeOutline.section.pane._expandedProperties) |
+this.expand();},onexpand:function() |
+{this.treeOutline.section.pane._expandedProperties[this.propertyIdentifier]=true;},oncollapse:function() |
+{delete this.treeOutline.section.pane._expandedProperties[this.propertyIdentifier];},get propertyIdentifier() |
+{if("_propertyIdentifier"in this) |
+return this._propertyIdentifier;var section=this.treeOutline.section;this._propertyIdentifier=section.title+":"+(section.subtitle?section.subtitle+":":"")+this.propertyPath();return this._propertyIdentifier;},__proto__:WebInspector.ObjectPropertyTreeElement.prototype};WebInspector.ScriptsNavigator=function() |
+{WebInspector.Object.call(this);this._tabbedPane=new WebInspector.TabbedPane();this._tabbedPane.shrinkableTabs=true;this._tabbedPane.element.addStyleClass("navigator-tabbed-pane");this._scriptsView=new WebInspector.NavigatorView();this._scriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSelected,this._scriptSelected,this);this._scriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSearchStarted,this._itemSearchStarted,this);this._scriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemRenamingRequested,this._itemRenamingRequested,this);this._scriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemCreationRequested,this._itemCreationRequested,this);this._contentScriptsView=new WebInspector.NavigatorView();this._contentScriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSelected,this._scriptSelected,this);this._contentScriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemSearchStarted,this._itemSearchStarted,this);this._contentScriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemRenamingRequested,this._itemRenamingRequested,this);this._contentScriptsView.addEventListener(WebInspector.NavigatorView.Events.ItemCreationRequested,this._itemCreationRequested,this);this._snippetsView=new WebInspector.SnippetsNavigatorView();this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.ItemSelected,this._scriptSelected,this);this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.ItemSearchStarted,this._itemSearchStarted,this);this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.ItemRenamingRequested,this._itemRenamingRequested,this);this._snippetsView.addEventListener(WebInspector.NavigatorView.Events.ItemCreationRequested,this._itemCreationRequested,this);this._tabbedPane.appendTab(WebInspector.ScriptsNavigator.ScriptsTab,WebInspector.UIString("Sources"),this._scriptsView);this._tabbedPane.selectTab(WebInspector.ScriptsNavigator.ScriptsTab);this._tabbedPane.appendTab(WebInspector.ScriptsNavigator.ContentScriptsTab,WebInspector.UIString("Content scripts"),this._contentScriptsView);this._tabbedPane.appendTab(WebInspector.ScriptsNavigator.SnippetsTab,WebInspector.UIString("Snippets"),this._snippetsView);} |
+WebInspector.ScriptsNavigator.Events={ScriptSelected:"ScriptSelected",ItemCreationRequested:"ItemCreationRequested",ItemRenamingRequested:"ItemRenamingRequested",ItemSearchStarted:"ItemSearchStarted",} |
+WebInspector.ScriptsNavigator.ScriptsTab="scripts";WebInspector.ScriptsNavigator.ContentScriptsTab="contentScripts";WebInspector.ScriptsNavigator.SnippetsTab="snippets";WebInspector.ScriptsNavigator.prototype={get view() |
+{return this._tabbedPane;},_navigatorViewForUISourceCode:function(uiSourceCode) |
+{if(uiSourceCode.isContentScript) |
+return this._contentScriptsView;else if(uiSourceCode.project().type()===WebInspector.projectTypes.Snippets) |
+return this._snippetsView;else |
+return this._scriptsView;},addUISourceCode:function(uiSourceCode) |
+{this._navigatorViewForUISourceCode(uiSourceCode).addUISourceCode(uiSourceCode);},removeUISourceCode:function(uiSourceCode) |
+{this._navigatorViewForUISourceCode(uiSourceCode).removeUISourceCode(uiSourceCode);},revealUISourceCode:function(uiSourceCode,select) |
+{this._navigatorViewForUISourceCode(uiSourceCode).revealUISourceCode(uiSourceCode,select);if(uiSourceCode.isContentScript) |
+this._tabbedPane.selectTab(WebInspector.ScriptsNavigator.ContentScriptsTab);else if(uiSourceCode.project().type()!==WebInspector.projectTypes.Snippets) |
+this._tabbedPane.selectTab(WebInspector.ScriptsNavigator.ScriptsTab);},rename:function(uiSourceCode,callback) |
+{this._navigatorViewForUISourceCode(uiSourceCode).rename(uiSourceCode,callback);},_scriptSelected:function(event) |
+{this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ScriptSelected,event.data);},_itemSearchStarted:function(event) |
+{this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemSearchStarted,event.data);},_itemRenamingRequested:function(event) |
+{this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested,event.data);},_itemCreationRequested:function(event) |
+{this.dispatchEventToListeners(WebInspector.ScriptsNavigator.Events.ItemCreationRequested,event.data);},__proto__:WebInspector.Object.prototype} |
+WebInspector.SnippetsNavigatorView=function() |
+{WebInspector.NavigatorView.call(this);} |
+WebInspector.SnippetsNavigatorView.prototype={handleContextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);contextMenu.appendItem(WebInspector.UIString("New"),this._handleCreateSnippet.bind(this));contextMenu.show();},handleFileContextMenu:function(event,uiSourceCode) |
+{var contextMenu=new WebInspector.ContextMenu(event);contextMenu.appendItem(WebInspector.UIString("Run"),this._handleEvaluateSnippet.bind(this,uiSourceCode));contextMenu.appendItem(WebInspector.UIString("Rename"),this.requestRename.bind(this,uiSourceCode));contextMenu.appendItem(WebInspector.UIString("Remove"),this._handleRemoveSnippet.bind(this,uiSourceCode));contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("New"),this._handleCreateSnippet.bind(this));contextMenu.show();},_handleEvaluateSnippet:function(uiSourceCode) |
+{if(uiSourceCode.project().type()!==WebInspector.projectTypes.Snippets) |
+return;WebInspector.scriptSnippetModel.evaluateScriptSnippet(uiSourceCode);},_handleRemoveSnippet:function(uiSourceCode) |
+{if(uiSourceCode.project().type()!==WebInspector.projectTypes.Snippets) |
+return;uiSourceCode.project().deleteFile(uiSourceCode);},_handleCreateSnippet:function() |
+{var data={};data.project=WebInspector.scriptSnippetModel.project();data.path="";this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemCreationRequested,data);},__proto__:WebInspector.NavigatorView.prototype};WebInspector.ScriptsSearchScope=function(workspace) |
+{WebInspector.SearchScope.call(this) |
+this._searchId=0;this._workspace=workspace;} |
+WebInspector.ScriptsSearchScope.prototype={performIndexing:function(progress,indexingFinishedCallback) |
+{this.stopSearch();function filterOutServiceProjects(project) |
+{return!project.isServiceProject();} |
+var projects=this._workspace.projects().filter(filterOutServiceProjects);var barrier=new CallbackBarrier();var compositeProgress=new WebInspector.CompositeProgress(progress);progress.addEventListener(WebInspector.Progress.Events.Canceled,indexingCanceled.bind(this));for(var i=0;i<projects.length;++i){var project=projects[i];var projectProgress=compositeProgress.createSubProgress(project.uiSourceCodes().length);project.indexContent(projectProgress,barrier.createCallback());} |
+barrier.callWhenDone(indexingFinishedCallback.bind(this,true));function indexingCanceled() |
+{indexingFinishedCallback(false);progress.done();}},performSearch:function(searchConfig,progress,searchResultCallback,searchFinishedCallback) |
+{this.stopSearch();function filterOutServiceProjects(project) |
+{return!project.isServiceProject();} |
+var projects=this._workspace.projects().filter(filterOutServiceProjects);var barrier=new CallbackBarrier();var compositeProgress=new WebInspector.CompositeProgress(progress);for(var i=0;i<projects.length;++i){var project=projects[i];var projectProgress=compositeProgress.createSubProgress(project.uiSourceCodes().length);var callback=barrier.createCallback(searchCallbackWrapper.bind(this,this._searchId,project));project.searchInContent(searchConfig.query,!searchConfig.ignoreCase,searchConfig.isRegex,projectProgress,callback);} |
+barrier.callWhenDone(searchFinishedCallback.bind(this,true));function searchCallbackWrapper(searchId,project,searchMatches) |
+{if(searchId!==this._searchId){searchFinishedCallback(false);return;} |
+var paths=searchMatches.keys();for(var i=0;i<paths.length;++i){var uiSourceCode=project.uiSourceCode(paths[i]);var searchResult=new WebInspector.FileBasedSearchResultsPane.SearchResult(uiSourceCode,searchMatches.get(paths[i]));searchResultCallback(searchResult);}}},stopSearch:function() |
+{++this._searchId;},createSearchResultsPane:function(searchConfig) |
+{return new WebInspector.FileBasedSearchResultsPane(searchConfig);},__proto__:WebInspector.SearchScope.prototype};WebInspector.StyleSheetOutlineDialog=function(view,uiSourceCode) |
+{WebInspector.SelectionDialogContentProvider.call(this);this._rules=[];this._view=view;this._uiSourceCode=uiSourceCode;this._requestItems();} |
+WebInspector.StyleSheetOutlineDialog.show=function(view,uiSourceCode) |
+{if(WebInspector.Dialog.currentInstance()) |
+return null;var delegate=new WebInspector.StyleSheetOutlineDialog(view,uiSourceCode);var filteredItemSelectionDialog=new WebInspector.FilteredItemSelectionDialog(delegate);WebInspector.Dialog.show(view.element,filteredItemSelectionDialog);} |
+WebInspector.StyleSheetOutlineDialog.prototype={itemCount:function() |
+{return this._rules.length;},itemKeyAt:function(itemIndex) |
+{return this._rules[itemIndex].selectorText;},itemScoreAt:function(itemIndex,query) |
+{var rule=this._rules[itemIndex];return-rule.rawLocation.lineNumber;},renderItem:function(itemIndex,query,titleElement,subtitleElement) |
+{var rule=this._rules[itemIndex];titleElement.textContent=rule.selectorText;this.highlightRanges(titleElement,query);subtitleElement.textContent=":"+(rule.rawLocation.lineNumber+1);},_requestItems:function() |
+{function didGetAllStyleSheets(error,infos) |
+{if(error) |
+return;for(var i=0;i<infos.length;++i){var info=infos[i];if(info.sourceURL===this._uiSourceCode.url){WebInspector.CSSStyleSheet.createForId(info.styleSheetId,didGetStyleSheet.bind(this));return;}}} |
+CSSAgent.getAllStyleSheets(didGetAllStyleSheets.bind(this));function didGetStyleSheet(styleSheet) |
+{if(!styleSheet) |
+return;this._rules=styleSheet.rules;this.refresh();}},selectItem:function(itemIndex,promptValue) |
+{var rule=this._rules[itemIndex];var lineNumber=rule.rawLocation.lineNumber;if(!isNaN(lineNumber)&&lineNumber>=0) |
+this._view.highlightPosition(lineNumber,rule.rawLocation.columnNumber);this._view.focus();},__proto__:WebInspector.SelectionDialogContentProvider.prototype};WebInspector.TabbedEditorContainerDelegate=function(){} |
+WebInspector.TabbedEditorContainerDelegate.prototype={viewForFile:function(uiSourceCode){}} |
+WebInspector.TabbedEditorContainer=function(delegate,settingName,placeholderText) |
+{WebInspector.Object.call(this);this._delegate=delegate;this._tabbedPane=new WebInspector.TabbedPane();this._tabbedPane.setPlaceholderText(placeholderText);this._tabbedPane.setTabDelegate(new WebInspector.EditorContainerTabDelegate(this));this._tabbedPane.closeableTabs=true;this._tabbedPane.element.id="scripts-editor-container-tabbed-pane";this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabClosed,this._tabClosed,this);this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected,this._tabSelected,this);this._tabIds=new Map();this._files={};this._previouslyViewedFilesSetting=WebInspector.settings.createSetting(settingName,[]);this._history=WebInspector.TabbedEditorContainer.History.fromObject(this._previouslyViewedFilesSetting.get());} |
+WebInspector.TabbedEditorContainer.Events={EditorSelected:"EditorSelected",EditorClosed:"EditorClosed"} |
+WebInspector.TabbedEditorContainer._tabId=0;WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount=30;WebInspector.TabbedEditorContainer.prototype={get view() |
+{return this._tabbedPane;},get visibleView() |
+{return this._tabbedPane.visibleView;},show:function(parentElement) |
+{this._tabbedPane.show(parentElement);},showFile:function(uiSourceCode) |
+{this._innerShowFile(uiSourceCode,true);},historyUISourceCodes:function() |
+{var uriToUISourceCode={};for(var id in this._files){var uiSourceCode=this._files[id];uriToUISourceCode[uiSourceCode.uri()]=uiSourceCode;} |
+var result=[];var uris=this._history._urls();for(var i=0;i<uris.length;++i){var uiSourceCode=uriToUISourceCode[uris[i]];if(uiSourceCode) |
+result.push(uiSourceCode);} |
+return result;},_addScrollAndSelectionListeners:function() |
+{if(!this._currentView) |
+return;this._currentView.addEventListener(WebInspector.SourceFrame.Events.ScrollChanged,this._scrollChanged,this);this._currentView.addEventListener(WebInspector.SourceFrame.Events.SelectionChanged,this._selectionChanged,this);},_removeScrollAndSelectionListeners:function() |
+{if(!this._currentView) |
+return;this._currentView.removeEventListener(WebInspector.SourceFrame.Events.ScrollChanged,this._scrollChanged,this);this._currentView.removeEventListener(WebInspector.SourceFrame.Events.SelectionChanged,this._selectionChanged,this);},_scrollChanged:function(event) |
+{var lineNumber=(event.data);this._history.updateScrollLineNumber(this._currentFile.uri(),lineNumber);this._history.save(this._previouslyViewedFilesSetting);},_selectionChanged:function(event) |
+{var range=(event.data);this._history.updateSelectionRange(this._currentFile.uri(),range);this._history.save(this._previouslyViewedFilesSetting);},_innerShowFile:function(uiSourceCode,userGesture) |
+{if(this._currentFile===uiSourceCode) |
+return;this._removeScrollAndSelectionListeners();this._currentFile=uiSourceCode;var tabId=this._tabIds.get(uiSourceCode)||this._appendFileTab(uiSourceCode,userGesture);this._tabbedPane.selectTab(tabId,userGesture);if(userGesture) |
+this._editorSelectedByUserAction();this._currentView=this.visibleView;this._addScrollAndSelectionListeners();this.dispatchEventToListeners(WebInspector.TabbedEditorContainer.Events.EditorSelected,this._currentFile);},_titleForFile:function(uiSourceCode) |
+{var maxDisplayNameLength=30;var title=uiSourceCode.displayName(true).trimMiddle(maxDisplayNameLength);if(uiSourceCode.isDirty()||uiSourceCode.hasUnsavedCommittedChanges()) |
+title+="*";return title;},_maybeCloseTab:function(id,nextTabId) |
+{var uiSourceCode=this._files[id];var shouldPrompt=uiSourceCode.isDirty()&&uiSourceCode.project().canSetFileContent();if(!shouldPrompt||confirm(WebInspector.UIString("Are you sure you want to close unsaved file: %s?",uiSourceCode.name()))){uiSourceCode.resetWorkingCopy();if(nextTabId) |
+this._tabbedPane.selectTab(nextTabId,true);this._tabbedPane.closeTab(id,true);return true;} |
+return false;},_closeTabs:function(ids) |
+{var dirtyTabs=[];var cleanTabs=[];for(var i=0;i<ids.length;++i){var id=ids[i];var uiSourceCode=this._files[id];if(uiSourceCode.isDirty()) |
+dirtyTabs.push(id);else |
+cleanTabs.push(id);} |
+if(dirtyTabs.length) |
+this._tabbedPane.selectTab(dirtyTabs[0],true);this._tabbedPane.closeTabs(cleanTabs,true);for(var i=0;i<dirtyTabs.length;++i){var nextTabId=i+1<dirtyTabs.length?dirtyTabs[i+1]:null;if(!this._maybeCloseTab(dirtyTabs[i],nextTabId)) |
+break;}},addUISourceCode:function(uiSourceCode) |
+{var uri=uiSourceCode.uri();if(this._userSelectedFiles) |
+return;var index=this._history.index(uri) |
+if(index===-1) |
+return;var tabId=this._tabIds.get(uiSourceCode)||this._appendFileTab(uiSourceCode,false);if(!this._currentFile) |
+return;if(!index){this._innerShowFile(uiSourceCode,false);return;} |
+var currentProjectType=this._currentFile.project().type();var addedProjectType=uiSourceCode.project().type();var snippetsProjectType=WebInspector.projectTypes.Snippets;if(this._history.index(this._currentFile.uri())&¤tProjectType===snippetsProjectType&&addedProjectType!==snippetsProjectType) |
+this._innerShowFile(uiSourceCode,false);},removeUISourceCode:function(uiSourceCode) |
+{this.removeUISourceCodes([uiSourceCode]);},removeUISourceCodes:function(uiSourceCodes) |
+{var tabIds=[];for(var i=0;i<uiSourceCodes.length;++i){var uiSourceCode=uiSourceCodes[i];var tabId=this._tabIds.get(uiSourceCode);if(tabId) |
+tabIds.push(tabId);} |
+this._tabbedPane.closeTabs(tabIds);},_editorClosedByUserAction:function(uiSourceCode) |
+{this._userSelectedFiles=true;this._history.remove(uiSourceCode.uri());this._updateHistory();},_editorSelectedByUserAction:function() |
+{this._userSelectedFiles=true;this._updateHistory();},_updateHistory:function() |
+{var tabIds=this._tabbedPane.lastOpenedTabIds(WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount);function tabIdToURI(tabId) |
+{return this._files[tabId].uri();} |
+this._history.update(tabIds.map(tabIdToURI.bind(this)));this._history.save(this._previouslyViewedFilesSetting);},_tooltipForFile:function(uiSourceCode) |
+{return uiSourceCode.originURL();},_appendFileTab:function(uiSourceCode,userGesture) |
+{var view=this._delegate.viewForFile(uiSourceCode);var title=this._titleForFile(uiSourceCode);var tooltip=this._tooltipForFile(uiSourceCode);var tabId=this._generateTabId();this._tabIds.put(uiSourceCode,tabId);this._files[tabId]=uiSourceCode;var savedSelectionRange=this._history.selectionRange(uiSourceCode.uri());if(savedSelectionRange) |
+view.setSelection(savedSelectionRange);var savedScrollLineNumber=this._history.scrollLineNumber(uiSourceCode.uri());if(savedScrollLineNumber) |
+view.scrollToLine(savedScrollLineNumber);this._tabbedPane.appendTab(tabId,title,view,tooltip,userGesture);this._updateFileTitle(uiSourceCode);this._addUISourceCodeListeners(uiSourceCode);return tabId;},_tabClosed:function(event) |
+{var tabId=(event.data.tabId);var userGesture=(event.data.isUserGesture);var uiSourceCode=this._files[tabId];if(this._currentFile===uiSourceCode){this._removeScrollAndSelectionListeners();delete this._currentView;delete this._currentFile;} |
+this._tabIds.remove(uiSourceCode);delete this._files[tabId];this._removeUISourceCodeListeners(uiSourceCode);this.dispatchEventToListeners(WebInspector.TabbedEditorContainer.Events.EditorClosed,uiSourceCode);if(userGesture) |
+this._editorClosedByUserAction(uiSourceCode);},_tabSelected:function(event) |
+{var tabId=(event.data.tabId);var userGesture=(event.data.isUserGesture);var uiSourceCode=this._files[tabId];this._innerShowFile(uiSourceCode,userGesture);},_addUISourceCodeListeners:function(uiSourceCode) |
+{uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.TitleChanged,this._uiSourceCodeTitleChanged,this);uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._uiSourceCodeWorkingCopyChanged,this);uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._uiSourceCodeWorkingCopyCommitted,this);uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.SavedStateUpdated,this._uiSourceCodeSavedStateUpdated,this);uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.FormattedChanged,this._uiSourceCodeFormattedChanged,this);},_removeUISourceCodeListeners:function(uiSourceCode) |
+{uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.TitleChanged,this._uiSourceCodeTitleChanged,this);uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged,this._uiSourceCodeWorkingCopyChanged,this);uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted,this._uiSourceCodeWorkingCopyCommitted,this);uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.SavedStateUpdated,this._uiSourceCodeSavedStateUpdated,this);uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.FormattedChanged,this._uiSourceCodeFormattedChanged,this);},_updateFileTitle:function(uiSourceCode) |
+{var tabId=this._tabIds.get(uiSourceCode);if(tabId){var title=this._titleForFile(uiSourceCode);this._tabbedPane.changeTabTitle(tabId,title);if(uiSourceCode.hasUnsavedCommittedChanges()) |
+this._tabbedPane.setTabIcon(tabId,"editor-container-unsaved-committed-changes-icon",WebInspector.UIString("Changes to this file were not saved to file system."));else |
+this._tabbedPane.setTabIcon(tabId,"");}},_uiSourceCodeTitleChanged:function(event) |
+{var uiSourceCode=(event.target);this._updateFileTitle(uiSourceCode);this._updateHistory();},_uiSourceCodeWorkingCopyChanged:function(event) |
+{var uiSourceCode=(event.target);this._updateFileTitle(uiSourceCode);},_uiSourceCodeWorkingCopyCommitted:function(event) |
+{var uiSourceCode=(event.target);this._updateFileTitle(uiSourceCode);},_uiSourceCodeSavedStateUpdated:function(event) |
+{var uiSourceCode=(event.target);this._updateFileTitle(uiSourceCode);},_uiSourceCodeFormattedChanged:function(event) |
+{var uiSourceCode=(event.target);this._updateFileTitle(uiSourceCode);},reset:function() |
+{delete this._userSelectedFiles;},_generateTabId:function() |
+{return"tab_"+(WebInspector.TabbedEditorContainer._tabId++);},currentFile:function() |
+{return this._currentFile;},__proto__:WebInspector.Object.prototype} |
+WebInspector.TabbedEditorContainer.HistoryItem=function(url,selectionRange,scrollLineNumber) |
+{this.url=url;this._isSerializable=url.length<WebInspector.TabbedEditorContainer.HistoryItem.serializableUrlLengthLimit;this.selectionRange=selectionRange;this.scrollLineNumber=scrollLineNumber;} |
+WebInspector.TabbedEditorContainer.HistoryItem.serializableUrlLengthLimit=4096;WebInspector.TabbedEditorContainer.HistoryItem.fromObject=function(serializedHistoryItem) |
+{var selectionRange=serializedHistoryItem.selectionRange?WebInspector.TextRange.fromObject(serializedHistoryItem.selectionRange):null;return new WebInspector.TabbedEditorContainer.HistoryItem(serializedHistoryItem.url,selectionRange,serializedHistoryItem.scrollLineNumber);} |
+WebInspector.TabbedEditorContainer.HistoryItem.prototype={serializeToObject:function() |
+{if(!this._isSerializable) |
+return null;var serializedHistoryItem={};serializedHistoryItem.url=this.url;serializedHistoryItem.selectionRange=this.selectionRange;serializedHistoryItem.scrollLineNumber=this.scrollLineNumber;return serializedHistoryItem;},__proto__:WebInspector.Object.prototype} |
+WebInspector.TabbedEditorContainer.History=function(items) |
+{this._items=items;this._rebuildItemIndex();} |
+WebInspector.TabbedEditorContainer.History.fromObject=function(serializedHistory) |
+{var items=[];for(var i=0;i<serializedHistory.length;++i) |
+items.push(WebInspector.TabbedEditorContainer.HistoryItem.fromObject(serializedHistory[i]));return new WebInspector.TabbedEditorContainer.History(items);} |
+WebInspector.TabbedEditorContainer.History.prototype={index:function(url) |
+{var index=this._itemsIndex[url];if(typeof index==="number") |
+return index;return-1;},_rebuildItemIndex:function() |
+{this._itemsIndex={};for(var i=0;i<this._items.length;++i){console.assert(!this._itemsIndex.hasOwnProperty(this._items[i].url));this._itemsIndex[this._items[i].url]=i;}},selectionRange:function(url) |
+{var index=this.index(url);return index!==-1?this._items[index].selectionRange:undefined;},updateSelectionRange:function(url,selectionRange) |
+{if(!selectionRange) |
+return;var index=this.index(url);if(index===-1) |
+return;this._items[index].selectionRange=selectionRange;},scrollLineNumber:function(url) |
+{var index=this.index(url);return index!==-1?this._items[index].scrollLineNumber:undefined;},updateScrollLineNumber:function(url,scrollLineNumber) |
+{var index=this.index(url);if(index===-1) |
+return;this._items[index].scrollLineNumber=scrollLineNumber;},update:function(urls) |
+{for(var i=urls.length-1;i>=0;--i){var index=this.index(urls[i]);var item;if(index!==-1){item=this._items[index];this._items.splice(index,1);}else |
+item=new WebInspector.TabbedEditorContainer.HistoryItem(urls[i]);this._items.unshift(item);this._rebuildItemIndex();}},remove:function(url) |
+{var index=this.index(url);if(index!==-1){this._items.splice(index,1);this._rebuildItemIndex();}},save:function(setting) |
+{setting.set(this._serializeToObject());},_serializeToObject:function() |
+{var serializedHistory=[];for(var i=0;i<this._items.length;++i){var serializedItem=this._items[i].serializeToObject();if(serializedItem) |
+serializedHistory.push(serializedItem);if(serializedHistory.length===WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount) |
+break;} |
+return serializedHistory;},_urls:function() |
+{var result=[];for(var i=0;i<this._items.length;++i) |
+result.push(this._items[i].url);return result;},__proto__:WebInspector.Object.prototype} |
+WebInspector.EditorContainerTabDelegate=function(editorContainer) |
+{this._editorContainer=editorContainer;} |
+WebInspector.EditorContainerTabDelegate.prototype={closeTabs:function(tabbedPane,ids) |
+{this._editorContainer._closeTabs(ids);}};WebInspector.WatchExpressionsSidebarPane=function() |
+{WebInspector.SidebarPane.call(this,WebInspector.UIString("Watch Expressions"));this.section=new WebInspector.WatchExpressionsSection();this.bodyElement.appendChild(this.section.element);var refreshButton=document.createElement("button");refreshButton.className="pane-title-button refresh";refreshButton.addEventListener("click",this._refreshButtonClicked.bind(this),false);refreshButton.title=WebInspector.UIString("Refresh");this.titleElement.appendChild(refreshButton);var addButton=document.createElement("button");addButton.className="pane-title-button add";addButton.addEventListener("click",this._addButtonClicked.bind(this),false);this.titleElement.appendChild(addButton);addButton.title=WebInspector.UIString("Add watch expression");this._requiresUpdate=true;} |
+WebInspector.WatchExpressionsSidebarPane.prototype={wasShown:function() |
+{this._refreshExpressionsIfNeeded();},reset:function() |
+{this.refreshExpressions();},refreshExpressions:function() |
+{this._requiresUpdate=true;this._refreshExpressionsIfNeeded();},addExpression:function(expression) |
+{this.section.addExpression(expression);this.expand();},_refreshExpressionsIfNeeded:function() |
+{if(this._requiresUpdate&&this.isShowing()){this.section.update();delete this._requiresUpdate;}else |
+this._requiresUpdate=true;},_addButtonClicked:function(event) |
+{event.consume();this.expand();this.section.addNewExpressionAndEdit();},_refreshButtonClicked:function(event) |
+{event.consume();this.refreshExpressions();},__proto__:WebInspector.SidebarPane.prototype} |
+WebInspector.WatchExpressionsSection=function() |
+{this._watchObjectGroupId="watch-group";WebInspector.ObjectPropertiesSection.call(this,WebInspector.RemoteObject.fromPrimitiveValue(""));this.treeElementConstructor=WebInspector.WatchedPropertyTreeElement;this._expandedExpressions={};this._expandedProperties={};this.emptyElement=document.createElement("div");this.emptyElement.className="info";this.emptyElement.textContent=WebInspector.UIString("No Watch Expressions");this.watchExpressions=WebInspector.settings.watchExpressions.get();this.headerElement.className="hidden";this.editable=true;this.expanded=true;this.propertiesElement.addStyleClass("watch-expressions");this.element.addEventListener("mousemove",this._mouseMove.bind(this),true);this.element.addEventListener("mouseout",this._mouseOut.bind(this),true);this.element.addEventListener("dblclick",this._sectionDoubleClick.bind(this),false);this.emptyElement.addEventListener("contextmenu",this._emptyElementContextMenu.bind(this),false);} |
+WebInspector.WatchExpressionsSection.NewWatchExpression="\xA0";WebInspector.WatchExpressionsSection.prototype={update:function(e) |
+{if(e) |
+e.consume();function appendResult(expression,watchIndex,result,wasThrown) |
+{if(!result) |
+return;var property=new WebInspector.RemoteObjectProperty(expression,result);property.watchIndex=watchIndex;property.wasThrown=wasThrown;properties.push(property);if(properties.length==propertyCount){this.updateProperties(properties,[],WebInspector.WatchExpressionTreeElement,WebInspector.WatchExpressionsSection.CompareProperties);if(this._newExpressionAdded){delete this._newExpressionAdded;var treeElement=this.findAddedTreeElement();if(treeElement) |
+treeElement.startEditing();} |
+if(this._lastMouseMovePageY) |
+this._updateHoveredElement(this._lastMouseMovePageY);}} |
RuntimeAgent.releaseObjectGroup(this._watchObjectGroupId) |
-var properties = []; |
- |
- |
- |
-var propertyCount = 0; |
-for (var i = 0; i < this.watchExpressions.length; ++i) { |
-if (!this.watchExpressions[i]) |
-continue; |
-++propertyCount; |
-} |
- |
- |
- |
-for (var i = 0; i < this.watchExpressions.length; ++i) { |
-var expression = this.watchExpressions[i]; |
-if (!expression) |
-continue; |
- |
-WebInspector.runtimeModel.evaluate(expression, this._watchObjectGroupId, false, true, false, false, appendResult.bind(this, expression, i)); |
-} |
- |
-if (!propertyCount) { |
-if (!this.emptyElement.parentNode) |
-this.element.appendChild(this.emptyElement); |
-} else { |
-if (this.emptyElement.parentNode) |
-this.element.removeChild(this.emptyElement); |
-} |
- |
- |
- |
- |
-this.expanded = (propertyCount != 0); |
-}, |
- |
-addExpression: function(expression) |
-{ |
-this.watchExpressions.push(expression); |
-this.saveExpressions(); |
-this.update(); |
-}, |
- |
-addNewExpressionAndEdit: function() |
-{ |
-this._newExpressionAdded = true; |
-this.watchExpressions.push(WebInspector.WatchExpressionsSection.NewWatchExpression); |
-this.update(); |
-}, |
- |
-_sectionDoubleClick: function(event) |
-{ |
-if (event.target !== this.element && event.target !== this.propertiesElement && event.target !== this.emptyElement) |
-return; |
-event.consume(); |
-this.addNewExpressionAndEdit(); |
-}, |
- |
-updateExpression: function(element, value) |
-{ |
-if (value === null) { |
-var index = element.property.watchIndex; |
-this.watchExpressions.splice(index, 1); |
-} |
+var properties=[];var propertyCount=0;for(var i=0;i<this.watchExpressions.length;++i){if(!this.watchExpressions[i]) |
+continue;++propertyCount;} |
+for(var i=0;i<this.watchExpressions.length;++i){var expression=this.watchExpressions[i];if(!expression) |
+continue;WebInspector.runtimeModel.evaluate(expression,this._watchObjectGroupId,false,true,false,false,appendResult.bind(this,expression,i));} |
+if(!propertyCount){if(!this.emptyElement.parentNode) |
+this.element.appendChild(this.emptyElement);}else{if(this.emptyElement.parentNode) |
+this.element.removeChild(this.emptyElement);} |
+this.expanded=(propertyCount!=0);},addExpression:function(expression) |
+{this.watchExpressions.push(expression);this.saveExpressions();this.update();},addNewExpressionAndEdit:function() |
+{this._newExpressionAdded=true;this.watchExpressions.push(WebInspector.WatchExpressionsSection.NewWatchExpression);this.update();},_sectionDoubleClick:function(event) |
+{if(event.target!==this.element&&event.target!==this.propertiesElement&&event.target!==this.emptyElement) |
+return;event.consume();this.addNewExpressionAndEdit();},updateExpression:function(element,value) |
+{if(value===null){var index=element.property.watchIndex;this.watchExpressions.splice(index,1);} |
else |
-this.watchExpressions[element.property.watchIndex] = value; |
-this.saveExpressions(); |
-this.update(); |
-}, |
- |
-_deleteAllExpressions: function() |
-{ |
-this.watchExpressions = []; |
-this.saveExpressions(); |
-this.update(); |
-}, |
- |
-findAddedTreeElement: function() |
-{ |
-var children = this.propertiesTreeOutline.children; |
-for (var i = 0; i < children.length; ++i) { |
-if (children[i].property.name === WebInspector.WatchExpressionsSection.NewWatchExpression) |
-return children[i]; |
-} |
-}, |
- |
-saveExpressions: function() |
-{ |
-var toSave = []; |
-for (var i = 0; i < this.watchExpressions.length; i++) |
-if (this.watchExpressions[i]) |
-toSave.push(this.watchExpressions[i]); |
- |
-WebInspector.settings.watchExpressions.set(toSave); |
-return toSave.length; |
-}, |
- |
-_mouseMove: function(e) |
-{ |
-if (this.propertiesElement.firstChild) |
-this._updateHoveredElement(e.pageY); |
-}, |
- |
-_mouseOut: function() |
-{ |
-if (this._hoveredElement) { |
-this._hoveredElement.removeStyleClass("hovered"); |
-delete this._hoveredElement; |
-} |
-delete this._lastMouseMovePageY; |
-}, |
- |
-_updateHoveredElement: function(pageY) |
-{ |
-var candidateElement = this.propertiesElement.firstChild; |
-while (true) { |
-var next = candidateElement.nextSibling; |
-while (next && !next.clientHeight) |
-next = next.nextSibling; |
-if (!next || next.totalOffsetTop() > pageY) |
-break; |
-candidateElement = next; |
-} |
- |
-if (this._hoveredElement !== candidateElement) { |
-if (this._hoveredElement) |
-this._hoveredElement.removeStyleClass("hovered"); |
-if (candidateElement) |
-candidateElement.addStyleClass("hovered"); |
-this._hoveredElement = candidateElement; |
-} |
- |
-this._lastMouseMovePageY = pageY; |
-}, |
- |
-_emptyElementContextMenu: function(event) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add watch expression" : "Add Watch Expression"), this.addNewExpressionAndEdit.bind(this)); |
-contextMenu.show(); |
-}, |
- |
-__proto__: WebInspector.ObjectPropertiesSection.prototype |
-} |
- |
-WebInspector.WatchExpressionsSection.CompareProperties = function(propertyA, propertyB) |
-{ |
-if (propertyA.watchIndex == propertyB.watchIndex) |
-return 0; |
-else if (propertyA.watchIndex < propertyB.watchIndex) |
-return -1; |
-else |
-return 1; |
-} |
- |
- |
-WebInspector.WatchExpressionTreeElement = function(property) |
-{ |
-WebInspector.ObjectPropertyTreeElement.call(this, property); |
-} |
- |
-WebInspector.WatchExpressionTreeElement.prototype = { |
-onexpand: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.onexpand.call(this); |
-this.treeOutline.section._expandedExpressions[this._expression()] = true; |
-}, |
- |
-oncollapse: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.oncollapse.call(this); |
-delete this.treeOutline.section._expandedExpressions[this._expression()]; |
-}, |
- |
-onattach: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.onattach.call(this); |
-if (this.treeOutline.section._expandedExpressions[this._expression()]) |
-this.expanded = true; |
-}, |
- |
-_expression: function() |
-{ |
-return this.property.name; |
-}, |
- |
-update: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.update.call(this); |
- |
-if (this.property.wasThrown) { |
-this.valueElement.textContent = WebInspector.UIString("<not available>"); |
-this.listItemElement.addStyleClass("dimmed"); |
-} else |
-this.listItemElement.removeStyleClass("dimmed"); |
- |
-var deleteButton = document.createElement("input"); |
-deleteButton.type = "button"; |
-deleteButton.title = WebInspector.UIString("Delete watch expression."); |
-deleteButton.addStyleClass("enabled-button"); |
-deleteButton.addStyleClass("delete-button"); |
-deleteButton.addEventListener("click", this._deleteButtonClicked.bind(this), false); |
-this.listItemElement.addEventListener("contextmenu", this._contextMenu.bind(this), false); |
-this.listItemElement.insertBefore(deleteButton, this.listItemElement.firstChild); |
-}, |
- |
- |
-populateContextMenu: function(contextMenu) |
-{ |
-if (!this.isEditing()) { |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add watch expression" : "Add Watch Expression"), this.treeOutline.section.addNewExpressionAndEdit.bind(this.treeOutline.section)); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Delete watch expression" : "Delete Watch Expression"), this._deleteButtonClicked.bind(this)); |
-} |
-if (this.treeOutline.section.watchExpressions.length > 1) |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Delete all watch expressions" : "Delete All Watch Expressions"), this._deleteAllButtonClicked.bind(this)); |
-}, |
- |
-_contextMenu: function(event) |
-{ |
-var contextMenu = new WebInspector.ContextMenu(event); |
-this.populateContextMenu(contextMenu); |
-contextMenu.show(); |
-}, |
- |
-_deleteAllButtonClicked: function() |
-{ |
-this.treeOutline.section._deleteAllExpressions(); |
-}, |
- |
-_deleteButtonClicked: function() |
-{ |
-this.treeOutline.section.updateExpression(this, null); |
-}, |
- |
-renderPromptAsBlock: function() |
-{ |
-return true; |
-}, |
- |
- |
-elementAndValueToEdit: function(event) |
-{ |
-return [this.nameElement, this.property.name.trim()]; |
-}, |
- |
-editingCancelled: function(element, context) |
-{ |
-if (!context.elementToEdit.textContent) |
-this.treeOutline.section.updateExpression(this, null); |
- |
-WebInspector.ObjectPropertyTreeElement.prototype.editingCancelled.call(this, element, context); |
-}, |
- |
-applyExpression: function(expression, updateInterface) |
-{ |
-expression = expression.trim(); |
- |
-if (!expression) |
-expression = null; |
- |
-this.property.name = expression; |
-this.treeOutline.section.updateExpression(this, expression); |
-}, |
- |
-__proto__: WebInspector.ObjectPropertyTreeElement.prototype |
-} |
- |
- |
- |
-WebInspector.WatchedPropertyTreeElement = function(property) |
-{ |
-WebInspector.ObjectPropertyTreeElement.call(this, property); |
-} |
- |
-WebInspector.WatchedPropertyTreeElement.prototype = { |
-onattach: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.onattach.call(this); |
-if (this.hasChildren && this.propertyPath() in this.treeOutline.section._expandedProperties) |
-this.expand(); |
-}, |
- |
-onexpand: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.onexpand.call(this); |
-this.treeOutline.section._expandedProperties[this.propertyPath()] = true; |
-}, |
- |
-oncollapse: function() |
-{ |
-WebInspector.ObjectPropertyTreeElement.prototype.oncollapse.call(this); |
-delete this.treeOutline.section._expandedProperties[this.propertyPath()]; |
-}, |
- |
-__proto__: WebInspector.ObjectPropertyTreeElement.prototype |
-} |
-; |
- |
- |
- |
-WebInspector.Worker = function(id, url, shared) |
-{ |
-this.id = id; |
-this.url = url; |
-this.shared = shared; |
-} |
- |
- |
-WebInspector.WorkersSidebarPane = function(workerManager) |
-{ |
-WebInspector.SidebarPane.call(this, WebInspector.UIString("Workers")); |
- |
-this._enableWorkersCheckbox = new WebInspector.Checkbox( |
-WebInspector.UIString("Pause on start"), |
-"sidebar-label", |
-WebInspector.UIString("Automatically attach to new workers and pause them. Enabling this option will force opening inspector for all new workers.")); |
-this._enableWorkersCheckbox.element.id = "pause-workers-checkbox"; |
-this.bodyElement.appendChild(this._enableWorkersCheckbox.element); |
-this._enableWorkersCheckbox.addEventListener(this._autoattachToWorkersClicked.bind(this)); |
-this._enableWorkersCheckbox.checked = false; |
- |
-var note = this.bodyElement.createChild("div"); |
-note.id = "shared-workers-list"; |
-note.addStyleClass("sidebar-label") |
-note.textContent = WebInspector.UIString("Shared workers can be inspected in the Task Manager"); |
- |
-var separator = this.bodyElement.createChild("div", "sidebar-separator"); |
-separator.textContent = WebInspector.UIString("Dedicated worker inspectors"); |
- |
-this._workerListElement = document.createElement("ol"); |
-this._workerListElement.tabIndex = 0; |
-this._workerListElement.addStyleClass("properties-tree"); |
-this._workerListElement.addStyleClass("sidebar-label"); |
-this.bodyElement.appendChild(this._workerListElement); |
- |
-this._idToWorkerItem = {}; |
-this._workerManager = workerManager; |
- |
-workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerAdded, this._workerAdded, this); |
-workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerRemoved, this._workerRemoved, this); |
-workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkersCleared, this._workersCleared, this); |
-} |
- |
-WebInspector.WorkersSidebarPane.prototype = { |
-_workerAdded: function(event) |
-{ |
-this._addWorker(event.data.workerId, event.data.url, event.data.inspectorConnected); |
-}, |
- |
-_workerRemoved: function(event) |
-{ |
-var workerItem = this._idToWorkerItem[event.data]; |
-delete this._idToWorkerItem[event.data]; |
-workerItem.parentElement.removeChild(workerItem); |
-}, |
- |
-_workersCleared: function(event) |
-{ |
-this._idToWorkerItem = {}; |
-this._workerListElement.removeChildren(); |
-}, |
- |
-_addWorker: function(workerId, url, inspectorConnected) |
-{ |
-var item = this._workerListElement.createChild("div", "dedicated-worker-item"); |
-var link = item.createChild("a"); |
-link.textContent = url; |
-link.href = "#"; |
-link.target = "_blank"; |
-link.addEventListener("click", this._workerItemClicked.bind(this, workerId), true); |
-this._idToWorkerItem[workerId] = item; |
-}, |
- |
-_workerItemClicked: function(workerId, event) |
-{ |
-event.preventDefault(); |
-this._workerManager.openWorkerInspector(workerId); |
-}, |
- |
-_autoattachToWorkersClicked: function(event) |
-{ |
-WorkerAgent.setAutoconnectToWorkers(this._enableWorkersCheckbox.checked); |
-}, |
- |
-__proto__: WebInspector.SidebarPane.prototype |
-} |
-; |
- |
- |
-WebInspector.ScriptsPanel = function(workspaceForTest) |
-{ |
-WebInspector.Panel.call(this, "scripts"); |
-this.registerRequiredCSS("scriptsPanel.css"); |
- |
-WebInspector.settings.navigatorWasOnceHidden = WebInspector.settings.createSetting("navigatorWasOnceHidden", false); |
-WebInspector.settings.debuggerSidebarHidden = WebInspector.settings.createSetting("debuggerSidebarHidden", false); |
- |
-this._workspace = workspaceForTest || WebInspector.workspace; |
- |
-function viewGetter() |
-{ |
-return this.visibleView; |
-} |
-WebInspector.GoToLineDialog.install(this, viewGetter.bind(this)); |
- |
-var helpSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Sources Panel")); |
-this.debugToolbar = this._createDebugToolbar(); |
- |
-const initialDebugSidebarWidth = 225; |
-const minimumDebugSidebarWidthPercent = 50; |
-this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.End, initialDebugSidebarWidth); |
-this.splitView.element.id = "scripts-split-view"; |
-this.splitView.setMinimumSidebarWidth(Preferences.minScriptsSidebarWidth); |
-this.splitView.setMinimumMainWidthPercent(minimumDebugSidebarWidthPercent); |
- |
-this.debugSidebarResizeWidgetElement = document.createElement("div"); |
-this.debugSidebarResizeWidgetElement.id = "scripts-debug-sidebar-resizer-widget"; |
-this.splitView.installResizer(this.debugSidebarResizeWidgetElement); |
- |
- |
-const initialNavigatorWidth = 225; |
-const minimumViewsContainerWidthPercent = 50; |
-this.editorView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth); |
-this.editorView.element.tabIndex = 0; |
- |
-this.editorView.setMinimumSidebarWidth(Preferences.minScriptsSidebarWidth); |
-this.editorView.setMinimumMainWidthPercent(minimumViewsContainerWidthPercent); |
-this.editorView.show(this.splitView.mainElement); |
- |
-this._navigator = new WebInspector.ScriptsNavigator(); |
-this._navigator.view.show(this.editorView.sidebarElement); |
- |
-this._editorContainer = new WebInspector.TabbedEditorContainer(this, "previouslyViewedFiles"); |
-this._editorContainer.show(this.editorView.mainElement); |
- |
-this._navigatorController = new WebInspector.NavigatorOverlayController(this.editorView, this._navigator.view, this._editorContainer.view); |
- |
-this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ScriptSelected, this._scriptSelected, this); |
-this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemSearchStarted, this._itemSearchStarted, this); |
-this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.SnippetCreationRequested, this._snippetCreationRequested, this); |
-this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested, this._itemRenamingRequested, this); |
-this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.FileRenamed, this._fileRenamed, this); |
- |
-this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorSelected, this._editorSelected, this); |
-this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorClosed, this._editorClosed, this); |
- |
-this.splitView.mainElement.appendChild(this.debugSidebarResizeWidgetElement); |
- |
-this.sidebarPanes = {}; |
-this.sidebarPanes.watchExpressions = new WebInspector.WatchExpressionsSidebarPane(); |
-this.sidebarPanes.callstack = new WebInspector.CallStackSidebarPane(); |
-this.sidebarPanes.scopechain = new WebInspector.ScopeChainSidebarPane(); |
-this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.breakpointManager, this._showSourceLine.bind(this)); |
-this.sidebarPanes.domBreakpoints = WebInspector.domBreakpointsSidebarPane.createProxy(this); |
-this.sidebarPanes.xhrBreakpoints = new WebInspector.XHRBreakpointsSidebarPane(); |
-this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane(); |
- |
-if (Capabilities.canInspectWorkers && !WebInspector.WorkerManager.isWorkerFrontend()) { |
-WorkerAgent.enable(); |
-this.sidebarPanes.workerList = new WebInspector.WorkersSidebarPane(WebInspector.workerManager); |
-} |
- |
-this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this)); |
-this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.EvaluateSelectionInConsole, this._evaluateSelectionInConsole.bind(this)); |
-this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.GoToMember, this._showOutlineDialog.bind(this)); |
-this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.ToggleBreakpoint, this._toggleBreakpoint.bind(this)); |
- |
-this._pauseOnExceptionButton = new WebInspector.StatusBarButton("", "scripts-pause-on-exceptions-status-bar-item", 3); |
-this._pauseOnExceptionButton.addEventListener("click", this._togglePauseOnExceptions, this); |
- |
-this._toggleFormatSourceButton = new WebInspector.StatusBarButton(WebInspector.UIString("Pretty print"), "scripts-toggle-pretty-print-status-bar-item"); |
-this._toggleFormatSourceButton.toggled = false; |
-this._toggleFormatSourceButton.addEventListener("click", this._toggleFormatSource, this); |
- |
-this._scriptViewStatusBarItemsContainer = document.createElement("div"); |
-this._scriptViewStatusBarItemsContainer.className = "inline-block"; |
- |
-this._scriptViewStatusBarTextContainer = document.createElement("div"); |
-this._scriptViewStatusBarTextContainer.className = "inline-block"; |
- |
-this._installDebuggerSidebarController(); |
- |
-WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged, this._dockSideChanged.bind(this)); |
-WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this)); |
-this._dockSideChanged(); |
- |
-this._sourceFramesByUISourceCode = new Map(); |
-this._updateDebuggerButtons(); |
-this._pauseOnExceptionStateChanged(); |
-if (WebInspector.debuggerModel.isPaused()) |
-this._debuggerPaused(); |
- |
-WebInspector.settings.pauseOnExceptionStateString.addChangeListener(this._pauseOnExceptionStateChanged, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasDisabled, this._debuggerWasDisabled, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.CallFrameSelected, this._callFrameSelected, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame, this._consoleCommandEvaluatedInSelectedCallFrame, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ExecutionLineChanged, this._executionLineChanged, this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this); |
- |
-WebInspector.startBatchUpdate(); |
-var uiSourceCodes = this._workspace.uiSourceCodes(); |
-for (var i = 0; i < uiSourceCodes.length; ++i) |
-this._addUISourceCode(uiSourceCodes[i]); |
-WebInspector.endBatchUpdate(); |
- |
-this._workspace.addEventListener(WebInspector.UISourceCodeProvider.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
-this._workspace.addEventListener(WebInspector.UISourceCodeProvider.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this); |
-this._workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset, this._projectWillReset.bind(this), this); |
-WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this); |
- |
-WebInspector.advancedSearchController.registerSearchScope(new WebInspector.ScriptsSearchScope(this._workspace)); |
-} |
- |
-WebInspector.ScriptsPanel.prototype = { |
-get statusBarItems() |
-{ |
-return [this._pauseOnExceptionButton.element, this._toggleFormatSourceButton.element, this._scriptViewStatusBarItemsContainer]; |
-}, |
- |
- |
-statusBarText: function() |
-{ |
-return this._scriptViewStatusBarTextContainer; |
-}, |
- |
-defaultFocusedElement: function() |
-{ |
-return this._editorContainer.view.defaultFocusedElement() || this._navigator.view.defaultFocusedElement(); |
-}, |
- |
-get paused() |
-{ |
-return this._paused; |
-}, |
- |
-wasShown: function() |
-{ |
-WebInspector.Panel.prototype.wasShown.call(this); |
-this._navigatorController.wasShown(); |
-}, |
- |
-willHide: function() |
-{ |
-WebInspector.Panel.prototype.willHide.call(this); |
-WebInspector.closeViewInDrawer(); |
-}, |
- |
- |
-_uiSourceCodeAdded: function(event) |
-{ |
-var uiSourceCode = (event.data); |
-this._addUISourceCode(uiSourceCode); |
-}, |
- |
- |
-_addUISourceCode: function(uiSourceCode) |
-{ |
-if (this._toggleFormatSourceButton.toggled) |
-uiSourceCode.setFormatted(true); |
-if (uiSourceCode.project().isServiceProject()) |
-return; |
-this._navigator.addUISourceCode(uiSourceCode); |
-this._editorContainer.addUISourceCode(uiSourceCode); |
- |
-var currentUISourceCode = this._currentUISourceCode; |
-if (currentUISourceCode && currentUISourceCode.project().isServiceProject() && currentUISourceCode !== uiSourceCode && currentUISourceCode.url === uiSourceCode.url) { |
-this._showFile(uiSourceCode); |
-this._editorContainer.removeUISourceCode(currentUISourceCode); |
-} |
-}, |
- |
-_uiSourceCodeRemoved: function(event) |
-{ |
-var uiSourceCode = (event.data); |
-this._removeUISourceCodes([uiSourceCode]); |
-}, |
- |
- |
-_removeUISourceCodes: function(uiSourceCodes) |
-{ |
-for (var i = 0; i < uiSourceCodes.length; ++i) { |
-this._navigator.removeUISourceCode(uiSourceCodes[i]); |
-this._removeSourceFrame(uiSourceCodes[i]); |
-} |
-this._editorContainer.removeUISourceCodes(uiSourceCodes); |
-}, |
- |
-_consoleCommandEvaluatedInSelectedCallFrame: function(event) |
-{ |
-this.sidebarPanes.scopechain.update(WebInspector.debuggerModel.selectedCallFrame()); |
-}, |
- |
-_debuggerPaused: function() |
-{ |
-var details = WebInspector.debuggerModel.debuggerPausedDetails(); |
- |
-this._paused = true; |
-this._waitingToPause = false; |
-this._stepping = false; |
- |
-this._updateDebuggerButtons(); |
- |
-WebInspector.inspectorView.setCurrentPanel(this); |
-this.sidebarPanes.callstack.update(details.callFrames); |
- |
-if (details.reason === WebInspector.DebuggerModel.BreakReason.DOM) { |
-WebInspector.domBreakpointsSidebarPane.highlightBreakpoint(details.auxData); |
-function didCreateBreakpointHitStatusMessage(element) |
-{ |
-this.sidebarPanes.callstack.setStatus(element); |
-} |
-WebInspector.domBreakpointsSidebarPane.createBreakpointHitStatusMessage(details.auxData, didCreateBreakpointHitStatusMessage.bind(this)); |
-} else if (details.reason === WebInspector.DebuggerModel.BreakReason.EventListener) { |
-var eventName = details.auxData.eventName; |
-this.sidebarPanes.eventListenerBreakpoints.highlightBreakpoint(details.auxData.eventName); |
-var eventNameForUI = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName); |
-this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a \"%s\" Event Listener.", eventNameForUI)); |
-} else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) { |
-this.sidebarPanes.xhrBreakpoints.highlightBreakpoint(details.auxData["breakpointURL"]); |
-this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a XMLHttpRequest.")); |
-} else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception) |
-this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on exception: '%s'.", details.auxData.description)); |
-else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert) |
-this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on assertion.")); |
-else if (details.reason === WebInspector.DebuggerModel.BreakReason.CSPViolation) |
-this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a script blocked due to Content Security Policy directive: \"%s\".", details.auxData["directiveText"])); |
-else { |
-function didGetUILocation(uiLocation) |
-{ |
-var breakpoint = WebInspector.breakpointManager.findBreakpoint(uiLocation.uiSourceCode, uiLocation.lineNumber); |
-if (!breakpoint) |
-return; |
-this.sidebarPanes.jsBreakpoints.highlightBreakpoint(breakpoint); |
-this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a JavaScript breakpoint.")); |
-} |
-if (details.callFrames.length) |
-details.callFrames[0].createLiveLocation(didGetUILocation.bind(this)); |
-else |
-console.warn("ScriptsPanel paused, but callFrames.length is zero."); |
-} |
- |
-this._showDebuggerSidebar(); |
-this._toggleDebuggerSidebarButton.setEnabled(false); |
-window.focus(); |
-InspectorFrontendHost.bringToFront(); |
-}, |
- |
-_debuggerResumed: function() |
-{ |
-this._paused = false; |
-this._waitingToPause = false; |
-this._stepping = false; |
- |
-this._clearInterface(); |
-this._toggleDebuggerSidebarButton.setEnabled(true); |
-}, |
- |
-_debuggerWasEnabled: function() |
-{ |
-this._updateDebuggerButtons(); |
-}, |
- |
-_debuggerWasDisabled: function() |
-{ |
-this._debuggerReset(); |
-}, |
- |
-_debuggerReset: function() |
-{ |
-this._debuggerResumed(); |
-this.sidebarPanes.watchExpressions.reset(); |
-}, |
- |
-_projectWillReset: function(event) |
-{ |
-var project = event.data; |
-var uiSourceCodes = project.uiSourceCodes(); |
-this._removeUISourceCodes(uiSourceCodes); |
-if (project.type() === WebInspector.projectTypes.Network) |
-this._editorContainer.reset(); |
-}, |
- |
-get visibleView() |
-{ |
-return this._editorContainer.visibleView; |
-}, |
- |
-_updateScriptViewStatusBarItems: function() |
-{ |
-this._scriptViewStatusBarItemsContainer.removeChildren(); |
-this._scriptViewStatusBarTextContainer.removeChildren(); |
- |
-var sourceFrame = this.visibleView; |
-if (sourceFrame) { |
-var statusBarItems = sourceFrame.statusBarItems() || []; |
-for (var i = 0; i < statusBarItems.length; ++i) |
-this._scriptViewStatusBarItemsContainer.appendChild(statusBarItems[i]); |
-var statusBarText = sourceFrame.statusBarText(); |
-if (statusBarText) |
-this._scriptViewStatusBarTextContainer.appendChild(statusBarText); |
-} |
-}, |
- |
-canShowAnchorLocation: function(anchor) |
-{ |
-if (WebInspector.debuggerModel.debuggerEnabled() && anchor.uiSourceCode) |
-return true; |
-var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(anchor.href); |
-if (uiSourceCode) { |
-anchor.uiSourceCode = uiSourceCode; |
-return true; |
-} |
-return false; |
-}, |
- |
-showAnchorLocation: function(anchor) |
-{ |
-this._showSourceLine(anchor.uiSourceCode, anchor.lineNumber); |
-}, |
- |
- |
-showUISourceCode: function(uiSourceCode, lineNumber) |
-{ |
-this._showSourceLine(uiSourceCode, lineNumber); |
-}, |
- |
- |
-_showSourceLine: function(uiSourceCode, lineNumber) |
-{ |
-var sourceFrame = this._showFile(uiSourceCode); |
-if (typeof lineNumber === "number") |
-sourceFrame.highlightLine(lineNumber); |
-sourceFrame.focus(); |
- |
-WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { |
-action: WebInspector.UserMetrics.UserActionNames.OpenSourceLink, |
-url: uiSourceCode.originURL(), |
-lineNumber: lineNumber |
-}); |
-}, |
- |
- |
-_showFile: function(uiSourceCode) |
-{ |
-var sourceFrame = this._getOrCreateSourceFrame(uiSourceCode); |
-if (this._currentUISourceCode === uiSourceCode) |
-return sourceFrame; |
-this._currentUISourceCode = uiSourceCode; |
-if (!uiSourceCode.project().isServiceProject()) |
-this._navigator.revealUISourceCode(uiSourceCode, true); |
-this._editorContainer.showFile(uiSourceCode); |
-this._updateScriptViewStatusBarItems(); |
- |
-if (this._currentUISourceCode.project().type() === WebInspector.projectTypes.Snippets) |
-this._runSnippetButton.element.removeStyleClass("hidden"); |
-else |
-this._runSnippetButton.element.addStyleClass("hidden"); |
- |
-return sourceFrame; |
-}, |
- |
- |
-_createSourceFrame: function(uiSourceCode) |
-{ |
-var sourceFrame; |
-switch (uiSourceCode.contentType()) { |
-case WebInspector.resourceTypes.Script: |
-sourceFrame = new WebInspector.JavaScriptSourceFrame(this, uiSourceCode); |
-break; |
-case WebInspector.resourceTypes.Document: |
-sourceFrame = new WebInspector.JavaScriptSourceFrame(this, uiSourceCode); |
-break; |
-case WebInspector.resourceTypes.Stylesheet: |
-default: |
-sourceFrame = new WebInspector.UISourceCodeFrame(uiSourceCode); |
-break; |
-} |
-this._sourceFramesByUISourceCode.put(uiSourceCode, sourceFrame); |
-return sourceFrame; |
-}, |
- |
- |
-_getOrCreateSourceFrame: function(uiSourceCode) |
-{ |
-return this._sourceFramesByUISourceCode.get(uiSourceCode) || this._createSourceFrame(uiSourceCode); |
-}, |
- |
- |
-viewForFile: function(uiSourceCode) |
-{ |
-return this._getOrCreateSourceFrame(uiSourceCode); |
-}, |
- |
- |
-_removeSourceFrame: function(uiSourceCode) |
-{ |
-var sourceFrame = this._sourceFramesByUISourceCode.get(uiSourceCode); |
-if (!sourceFrame) |
-return; |
-this._sourceFramesByUISourceCode.remove(uiSourceCode); |
-sourceFrame.dispose(); |
-}, |
- |
-_clearCurrentExecutionLine: function() |
-{ |
-if (this._executionSourceFrame) |
-this._executionSourceFrame.clearExecutionLine(); |
-delete this._executionSourceFrame; |
-}, |
- |
-_executionLineChanged: function(event) |
-{ |
-var uiLocation = event.data; |
- |
-this._clearCurrentExecutionLine(); |
-if (!uiLocation) |
-return; |
-var sourceFrame = this._getOrCreateSourceFrame(uiLocation.uiSourceCode); |
-sourceFrame.setExecutionLine(uiLocation.lineNumber); |
-this._executionSourceFrame = sourceFrame; |
-}, |
- |
-_revealExecutionLine: function(uiLocation) |
-{ |
-var uiSourceCode = uiLocation.uiSourceCode; |
- |
-if (this._currentUISourceCode && this._currentUISourceCode.scriptFile() && this._currentUISourceCode.scriptFile().isDivergingFromVM()) |
-return; |
-if (this._toggleFormatSourceButton.toggled && !uiSourceCode.formatted()) |
-uiSourceCode.setFormatted(true); |
-var sourceFrame = this._showFile(uiSourceCode); |
-sourceFrame.revealLine(uiLocation.lineNumber); |
-sourceFrame.focus(); |
-}, |
- |
-_callFrameSelected: function(event) |
-{ |
-var callFrame = event.data; |
- |
-if (!callFrame) |
-return; |
- |
-this.sidebarPanes.scopechain.update(callFrame); |
-this.sidebarPanes.watchExpressions.refreshExpressions(); |
-this.sidebarPanes.callstack.setSelectedCallFrame(callFrame); |
-callFrame.createLiveLocation(this._revealExecutionLine.bind(this)); |
-}, |
- |
-_editorClosed: function(event) |
-{ |
-this._navigatorController.hideNavigatorOverlay(); |
-var uiSourceCode = (event.data); |
- |
-if (this._currentUISourceCode === uiSourceCode) |
-delete this._currentUISourceCode; |
- |
- |
-this._updateScriptViewStatusBarItems(); |
-WebInspector.searchController.resetSearch(); |
-}, |
- |
-_editorSelected: function(event) |
-{ |
-var uiSourceCode = (event.data); |
-var sourceFrame = this._showFile(uiSourceCode); |
-this._navigatorController.hideNavigatorOverlay(); |
-if (!this._navigatorController.isNavigatorPinned()) |
-sourceFrame.focus(); |
-WebInspector.searchController.resetSearch(); |
-}, |
- |
-_scriptSelected: function(event) |
-{ |
-var uiSourceCode = (event.data.uiSourceCode); |
-var sourceFrame = this._showFile(uiSourceCode); |
-this._navigatorController.hideNavigatorOverlay(); |
-if (sourceFrame && (!this._navigatorController.isNavigatorPinned() || event.data.focusSource)) |
-sourceFrame.focus(); |
-}, |
- |
-_itemSearchStarted: function(event) |
-{ |
-var searchText = (event.data); |
-WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement, searchText); |
-}, |
- |
-_pauseOnExceptionStateChanged: function() |
-{ |
-var pauseOnExceptionsState = WebInspector.settings.pauseOnExceptionStateString.get(); |
-switch (pauseOnExceptionsState) { |
-case WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions: |
-this._pauseOnExceptionButton.title = WebInspector.UIString("Don't pause on exceptions.\nClick to Pause on all exceptions."); |
-break; |
-case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnAllExceptions: |
-this._pauseOnExceptionButton.title = WebInspector.UIString("Pause on all exceptions.\nClick to Pause on uncaught exceptions."); |
-break; |
-case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions: |
-this._pauseOnExceptionButton.title = WebInspector.UIString("Pause on uncaught exceptions.\nClick to Not pause on exceptions."); |
-break; |
-} |
-this._pauseOnExceptionButton.state = pauseOnExceptionsState; |
-}, |
- |
-_updateDebuggerButtons: function() |
-{ |
-if (WebInspector.debuggerModel.debuggerEnabled()) { |
-this._pauseOnExceptionButton.visible = true; |
-} else { |
-this._pauseOnExceptionButton.visible = false; |
-} |
- |
-if (this._paused) { |
-this._updateButtonTitle(this._pauseButton, WebInspector.UIString("Resume script execution (%s).")) |
-this._pauseButton.state = true; |
- |
-this._pauseButton.setEnabled(true); |
-this._stepOverButton.setEnabled(true); |
-this._stepIntoButton.setEnabled(true); |
-this._stepOutButton.setEnabled(true); |
- |
-this.debuggerStatusElement.textContent = WebInspector.UIString("Paused"); |
-} else { |
-this._updateButtonTitle(this._pauseButton, WebInspector.UIString("Pause script execution (%s).")) |
-this._pauseButton.state = false; |
- |
-this._pauseButton.setEnabled(!this._waitingToPause); |
-this._stepOverButton.setEnabled(false); |
-this._stepIntoButton.setEnabled(false); |
-this._stepOutButton.setEnabled(false); |
- |
-if (this._waitingToPause) |
-this.debuggerStatusElement.textContent = WebInspector.UIString("Pausing"); |
-else if (this._stepping) |
-this.debuggerStatusElement.textContent = WebInspector.UIString("Stepping"); |
-else |
-this.debuggerStatusElement.textContent = ""; |
-} |
-}, |
- |
-_clearInterface: function() |
-{ |
-this.sidebarPanes.callstack.update(null); |
-this.sidebarPanes.scopechain.update(null); |
-this.sidebarPanes.jsBreakpoints.clearBreakpointHighlight(); |
-WebInspector.domBreakpointsSidebarPane.clearBreakpointHighlight(); |
-this.sidebarPanes.eventListenerBreakpoints.clearBreakpointHighlight(); |
-this.sidebarPanes.xhrBreakpoints.clearBreakpointHighlight(); |
- |
-this._clearCurrentExecutionLine(); |
-this._updateDebuggerButtons(); |
-}, |
- |
-_togglePauseOnExceptions: function() |
-{ |
-var nextStateMap = {}; |
-var stateEnum = WebInspector.DebuggerModel.PauseOnExceptionsState; |
-nextStateMap[stateEnum.DontPauseOnExceptions] = stateEnum.PauseOnAllExceptions; |
-nextStateMap[stateEnum.PauseOnAllExceptions] = stateEnum.PauseOnUncaughtExceptions; |
-nextStateMap[stateEnum.PauseOnUncaughtExceptions] = stateEnum.DontPauseOnExceptions; |
-WebInspector.settings.pauseOnExceptionStateString.set(nextStateMap[this._pauseOnExceptionButton.state]); |
-}, |
- |
- |
-_runSnippet: function(event) |
-{ |
-if (this._currentUISourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
-return false; |
-WebInspector.scriptSnippetModel.evaluateScriptSnippet(this._currentUISourceCode); |
-return true; |
-}, |
- |
- |
-_togglePause: function(event) |
-{ |
-if (this._paused) { |
-this._paused = false; |
-this._waitingToPause = false; |
-DebuggerAgent.resume(); |
-} else { |
-this._stepping = false; |
-this._waitingToPause = true; |
-DebuggerAgent.pause(); |
-} |
- |
-this._clearInterface(); |
-return true; |
-}, |
- |
- |
-_stepOverClicked: function(event) |
-{ |
-if (!this._paused) |
-return true; |
- |
-this._paused = false; |
-this._stepping = true; |
- |
-this._clearInterface(); |
- |
-DebuggerAgent.stepOver(); |
-return true; |
-}, |
- |
- |
-_stepIntoClicked: function(event) |
-{ |
-if (!this._paused) |
-return true; |
- |
-this._paused = false; |
-this._stepping = true; |
- |
-this._clearInterface(); |
- |
-DebuggerAgent.stepInto(); |
-return true; |
-}, |
- |
- |
-_stepOutClicked: function(event) |
-{ |
-if (!this._paused) |
-return true; |
- |
-this._paused = false; |
-this._stepping = true; |
- |
-this._clearInterface(); |
- |
-DebuggerAgent.stepOut(); |
-return true; |
-}, |
- |
-_toggleBreakpointsClicked: function(event) |
-{ |
-WebInspector.debuggerModel.setBreakpointsActive(!WebInspector.debuggerModel.breakpointsActive()); |
-}, |
- |
-_breakpointsActiveStateChanged: function(event) |
-{ |
-var active = event.data; |
-this._toggleBreakpointsButton.toggled = !active; |
-if (active) { |
-this._toggleBreakpointsButton.title = WebInspector.UIString("Deactivate breakpoints."); |
-WebInspector.inspectorView.element.removeStyleClass("breakpoints-deactivated"); |
-this.sidebarPanes.jsBreakpoints.listElement.removeStyleClass("breakpoints-list-deactivated"); |
-} else { |
-this._toggleBreakpointsButton.title = WebInspector.UIString("Activate breakpoints."); |
-WebInspector.inspectorView.element.addStyleClass("breakpoints-deactivated"); |
-this.sidebarPanes.jsBreakpoints.listElement.addStyleClass("breakpoints-list-deactivated"); |
-} |
-}, |
- |
- |
-_evaluateSelectionInConsole: function(event) |
-{ |
-var selection = window.getSelection(); |
-if (selection.type !== "Range" || selection.isCollapsed) |
-return false; |
-WebInspector.evaluateInConsole(selection.toString()); |
-return true; |
-}, |
- |
-_createDebugToolbar: function() |
-{ |
-var debugToolbar = document.createElement("div"); |
-debugToolbar.className = "status-bar"; |
-debugToolbar.id = "scripts-debug-toolbar"; |
- |
-var title, handler; |
-var platformSpecificModifier = WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta; |
- |
- |
-handler = this._runSnippet.bind(this); |
-this._runSnippetButton = this._createButtonAndRegisterShortcuts("scripts-run-snippet", "", handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.RunSnippet); |
-debugToolbar.appendChild(this._runSnippetButton.element); |
-this._runSnippetButton.element.addStyleClass("hidden"); |
- |
- |
-handler = this._togglePause.bind(this); |
-this._pauseButton = this._createButtonAndRegisterShortcuts("scripts-pause", "", handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.PauseContinue); |
-debugToolbar.appendChild(this._pauseButton.element); |
- |
- |
-title = WebInspector.UIString("Step over next function call (%s)."); |
-handler = this._stepOverClicked.bind(this); |
-this._stepOverButton = this._createButtonAndRegisterShortcuts("scripts-step-over", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepOver); |
-debugToolbar.appendChild(this._stepOverButton.element); |
- |
- |
-title = WebInspector.UIString("Step into next function call (%s)."); |
-handler = this._stepIntoClicked.bind(this); |
-this._stepIntoButton = this._createButtonAndRegisterShortcuts("scripts-step-into", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepInto); |
-debugToolbar.appendChild(this._stepIntoButton.element); |
- |
- |
-title = WebInspector.UIString("Step out of current function (%s)."); |
-handler = this._stepOutClicked.bind(this); |
-this._stepOutButton = this._createButtonAndRegisterShortcuts("scripts-step-out", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepOut); |
-debugToolbar.appendChild(this._stepOutButton.element); |
- |
-this._toggleBreakpointsButton = new WebInspector.StatusBarButton(WebInspector.UIString("Deactivate breakpoints."), "scripts-toggle-breakpoints"); |
-this._toggleBreakpointsButton.toggled = false; |
-this._toggleBreakpointsButton.addEventListener("click", this._toggleBreakpointsClicked, this); |
-debugToolbar.appendChild(this._toggleBreakpointsButton.element); |
- |
-this.debuggerStatusElement = document.createElement("div"); |
-this.debuggerStatusElement.id = "scripts-debugger-status"; |
-debugToolbar.appendChild(this.debuggerStatusElement); |
- |
-return debugToolbar; |
-}, |
- |
- |
-_updateButtonTitle: function(button, buttonTitle) |
-{ |
-var hasShortcuts = button.shortcuts && button.shortcuts.length; |
-if (hasShortcuts) |
-button.title = String.vsprintf(buttonTitle, [button.shortcuts[0].name]); |
-else |
-button.title = buttonTitle; |
-}, |
- |
- |
-_createButtonAndRegisterShortcuts: function(buttonId, buttonTitle, handler, shortcuts) |
-{ |
-var button = new WebInspector.StatusBarButton(buttonTitle, buttonId); |
-button.element.addEventListener("click", handler, false); |
-button.shortcuts = shortcuts; |
-this._updateButtonTitle(button, buttonTitle); |
-this.registerShortcuts(shortcuts, handler); |
-return button; |
-}, |
- |
-searchCanceled: function() |
-{ |
-if (this._searchView) |
-this._searchView.searchCanceled(); |
- |
-delete this._searchView; |
-delete this._searchQuery; |
-}, |
- |
- |
-performSearch: function(query) |
-{ |
-WebInspector.searchController.updateSearchMatchesCount(0, this); |
- |
-if (!this.visibleView) |
-return; |
- |
- |
-this.searchCanceled(); |
- |
-this._searchView = this.visibleView; |
-this._searchQuery = query; |
- |
-function finishedCallback(view, searchMatches) |
-{ |
-if (!searchMatches) |
-return; |
- |
-WebInspector.searchController.updateSearchMatchesCount(searchMatches, this); |
-view.jumpToNextSearchResult(); |
-WebInspector.searchController.updateCurrentMatchIndex(view.currentSearchResultIndex, this); |
-} |
- |
-this._searchView.performSearch(query, finishedCallback.bind(this)); |
-}, |
- |
-jumpToNextSearchResult: function() |
-{ |
-if (!this._searchView) |
-return; |
- |
-if (this._searchView !== this.visibleView) { |
-this.performSearch(this._searchQuery); |
-return; |
-} |
- |
-if (this._searchView.showingLastSearchResult()) |
-this._searchView.jumpToFirstSearchResult(); |
-else |
-this._searchView.jumpToNextSearchResult(); |
-WebInspector.searchController.updateCurrentMatchIndex(this._searchView.currentSearchResultIndex, this); |
-return true; |
-}, |
- |
-jumpToPreviousSearchResult: function() |
-{ |
-if (!this._searchView) |
-return; |
- |
-if (this._searchView !== this.visibleView) { |
-this.performSearch(this._searchQuery); |
-if (this._searchView) |
-this._searchView.jumpToLastSearchResult(); |
-return; |
-} |
- |
-if (this._searchView.showingFirstSearchResult()) |
-this._searchView.jumpToLastSearchResult(); |
-else |
-this._searchView.jumpToPreviousSearchResult(); |
-WebInspector.searchController.updateCurrentMatchIndex(this._searchView.currentSearchResultIndex, this); |
-}, |
- |
- |
-canSearchAndReplace: function() |
-{ |
-var view = (this.visibleView); |
-return !!view && view.canEditSource(); |
-}, |
- |
- |
-replaceSelectionWith: function(text) |
-{ |
-var view = (this.visibleView); |
-view.replaceSearchMatchWith(text); |
-}, |
- |
- |
-replaceAllWith: function(query, text) |
-{ |
-var view = (this.visibleView); |
-view.replaceAllWith(query, text); |
-}, |
- |
-_toggleFormatSource: function() |
-{ |
-this._toggleFormatSourceButton.toggled = !this._toggleFormatSourceButton.toggled; |
-var uiSourceCodes = this._workspace.uiSourceCodes(); |
-for (var i = 0; i < uiSourceCodes.length; ++i) |
-uiSourceCodes[i].setFormatted(this._toggleFormatSourceButton.toggled); |
- |
-var currentFile = this._editorContainer.currentFile(); |
- |
-WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, { |
-action: WebInspector.UserMetrics.UserActionNames.TogglePrettyPrint, |
-enabled: this._toggleFormatSourceButton.toggled, |
-url: currentFile ? currentFile.originURL() : null |
-}); |
-}, |
- |
-addToWatch: function(expression) |
-{ |
-this.sidebarPanes.watchExpressions.addExpression(expression); |
-}, |
- |
- |
-_toggleBreakpoint: function() |
-{ |
-var sourceFrame = this.visibleView; |
-if (!sourceFrame) |
-return false; |
- |
-if (sourceFrame instanceof WebInspector.JavaScriptSourceFrame) { |
-var javaScriptSourceFrame = (sourceFrame); |
-javaScriptSourceFrame.toggleBreakpointOnCurrentLine(); |
-return true; |
-} |
-return false; |
-}, |
- |
- |
-_showOutlineDialog: function(event) |
-{ |
-var uiSourceCode = this._editorContainer.currentFile(); |
-if (!uiSourceCode) |
-return false; |
- |
-switch (uiSourceCode.contentType()) { |
-case WebInspector.resourceTypes.Document: |
-case WebInspector.resourceTypes.Script: |
-WebInspector.JavaScriptOutlineDialog.show(this.visibleView, uiSourceCode); |
-return true; |
-case WebInspector.resourceTypes.Stylesheet: |
-WebInspector.StyleSheetOutlineDialog.show(this.visibleView, uiSourceCode); |
-return true; |
-} |
-return false; |
-}, |
- |
-_installDebuggerSidebarController: function() |
-{ |
-this._toggleDebuggerSidebarButton = new WebInspector.StatusBarButton(WebInspector.UIString("Hide debugger"), "scripts-debugger-show-hide-button", 3); |
-this._toggleDebuggerSidebarButton.state = "shown"; |
-this._toggleDebuggerSidebarButton.addEventListener("click", clickHandler, this); |
- |
-function clickHandler() |
-{ |
-if (this._toggleDebuggerSidebarButton.state === "shown") |
-this._hideDebuggerSidebar(); |
-else |
-this._showDebuggerSidebar(); |
-} |
-this.editorView.element.appendChild(this._toggleDebuggerSidebarButton.element); |
- |
-if (WebInspector.settings.debuggerSidebarHidden.get()) |
-this._hideDebuggerSidebar(); |
- |
-}, |
- |
-_showDebuggerSidebar: function() |
-{ |
-if (this._toggleDebuggerSidebarButton.state === "shown") |
-return; |
-this._toggleDebuggerSidebarButton.state = "shown"; |
-this._toggleDebuggerSidebarButton.title = WebInspector.UIString("Hide debugger"); |
-this.splitView.showSidebarElement(); |
-this.debugSidebarResizeWidgetElement.removeStyleClass("hidden"); |
-WebInspector.settings.debuggerSidebarHidden.set(false); |
-}, |
- |
-_hideDebuggerSidebar: function() |
-{ |
-if (this._toggleDebuggerSidebarButton.state === "hidden") |
-return; |
-this._toggleDebuggerSidebarButton.state = "hidden"; |
-this._toggleDebuggerSidebarButton.title = WebInspector.UIString("Show debugger"); |
-this.splitView.hideSidebarElement(); |
-this.debugSidebarResizeWidgetElement.addStyleClass("hidden"); |
-WebInspector.settings.debuggerSidebarHidden.set(true); |
-}, |
- |
-_fileRenamed: function(event) |
-{ |
-var uiSourceCode = (event.data.uiSourceCode); |
-var name = (event.data.name); |
-if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
-return; |
-WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode, name); |
-uiSourceCode.rename(name); |
-}, |
- |
- |
-_snippetCreationRequested: function(event) |
-{ |
-var uiSourceCode = WebInspector.scriptSnippetModel.createScriptSnippet(); |
-this._showSourceLine(uiSourceCode); |
- |
-var shouldHideNavigator = !this._navigatorController.isNavigatorPinned(); |
-if (this._navigatorController.isNavigatorHidden()) |
-this._navigatorController.showNavigatorOverlay(); |
-this._navigator.rename(uiSourceCode, callback.bind(this)); |
- |
- |
+this.watchExpressions[element.property.watchIndex]=value;this.saveExpressions();this.update();},_deleteAllExpressions:function() |
+{this.watchExpressions=[];this.saveExpressions();this.update();},findAddedTreeElement:function() |
+{var children=this.propertiesTreeOutline.children;for(var i=0;i<children.length;++i){if(children[i].property.name===WebInspector.WatchExpressionsSection.NewWatchExpression) |
+return children[i];}},saveExpressions:function() |
+{var toSave=[];for(var i=0;i<this.watchExpressions.length;i++) |
+if(this.watchExpressions[i]) |
+toSave.push(this.watchExpressions[i]);WebInspector.settings.watchExpressions.set(toSave);return toSave.length;},_mouseMove:function(e) |
+{if(this.propertiesElement.firstChild) |
+this._updateHoveredElement(e.pageY);},_mouseOut:function() |
+{if(this._hoveredElement){this._hoveredElement.removeStyleClass("hovered");delete this._hoveredElement;} |
+delete this._lastMouseMovePageY;},_updateHoveredElement:function(pageY) |
+{var candidateElement=this.propertiesElement.firstChild;while(true){var next=candidateElement.nextSibling;while(next&&!next.clientHeight) |
+next=next.nextSibling;if(!next||next.totalOffsetTop()>pageY) |
+break;candidateElement=next;} |
+if(this._hoveredElement!==candidateElement){if(this._hoveredElement) |
+this._hoveredElement.removeStyleClass("hovered");if(candidateElement) |
+candidateElement.addStyleClass("hovered");this._hoveredElement=candidateElement;} |
+this._lastMouseMovePageY=pageY;},_emptyElementContextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add watch expression":"Add Watch Expression"),this.addNewExpressionAndEdit.bind(this));contextMenu.show();},__proto__:WebInspector.ObjectPropertiesSection.prototype} |
+WebInspector.WatchExpressionsSection.CompareProperties=function(propertyA,propertyB) |
+{if(propertyA.watchIndex==propertyB.watchIndex) |
+return 0;else if(propertyA.watchIndex<propertyB.watchIndex) |
+return-1;else |
+return 1;} |
+WebInspector.WatchExpressionTreeElement=function(property) |
+{WebInspector.ObjectPropertyTreeElement.call(this,property);} |
+WebInspector.WatchExpressionTreeElement.prototype={onexpand:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.onexpand.call(this);this.treeOutline.section._expandedExpressions[this._expression()]=true;},oncollapse:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.oncollapse.call(this);delete this.treeOutline.section._expandedExpressions[this._expression()];},onattach:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.onattach.call(this);if(this.treeOutline.section._expandedExpressions[this._expression()]) |
+this.expanded=true;},_expression:function() |
+{return this.property.name;},update:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.update.call(this);if(this.property.wasThrown){this.valueElement.textContent=WebInspector.UIString("<not available>");this.listItemElement.addStyleClass("dimmed");}else |
+this.listItemElement.removeStyleClass("dimmed");var deleteButton=document.createElement("input");deleteButton.type="button";deleteButton.title=WebInspector.UIString("Delete watch expression.");deleteButton.addStyleClass("enabled-button");deleteButton.addStyleClass("delete-button");deleteButton.addEventListener("click",this._deleteButtonClicked.bind(this),false);this.listItemElement.addEventListener("contextmenu",this._contextMenu.bind(this),false);this.listItemElement.insertBefore(deleteButton,this.listItemElement.firstChild);},populateContextMenu:function(contextMenu) |
+{if(!this.isEditing()){contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Add watch expression":"Add Watch Expression"),this.treeOutline.section.addNewExpressionAndEdit.bind(this.treeOutline.section));contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Delete watch expression":"Delete Watch Expression"),this._deleteButtonClicked.bind(this));} |
+if(this.treeOutline.section.watchExpressions.length>1) |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Delete all watch expressions":"Delete All Watch Expressions"),this._deleteAllButtonClicked.bind(this));},_contextMenu:function(event) |
+{var contextMenu=new WebInspector.ContextMenu(event);this.populateContextMenu(contextMenu);contextMenu.show();},_deleteAllButtonClicked:function() |
+{this.treeOutline.section._deleteAllExpressions();},_deleteButtonClicked:function() |
+{this.treeOutline.section.updateExpression(this,null);},renderPromptAsBlock:function() |
+{return true;},elementAndValueToEdit:function(event) |
+{return[this.nameElement,this.property.name.trim()];},editingCancelled:function(element,context) |
+{if(!context.elementToEdit.textContent) |
+this.treeOutline.section.updateExpression(this,null);WebInspector.ObjectPropertyTreeElement.prototype.editingCancelled.call(this,element,context);},applyExpression:function(expression,updateInterface) |
+{expression=expression.trim();if(!expression) |
+expression=null;this.property.name=expression;this.treeOutline.section.updateExpression(this,expression);},__proto__:WebInspector.ObjectPropertyTreeElement.prototype} |
+WebInspector.WatchedPropertyTreeElement=function(property) |
+{WebInspector.ObjectPropertyTreeElement.call(this,property);} |
+WebInspector.WatchedPropertyTreeElement.prototype={onattach:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.onattach.call(this);if(this.hasChildren&&this.propertyPath()in this.treeOutline.section._expandedProperties) |
+this.expand();},onexpand:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.onexpand.call(this);this.treeOutline.section._expandedProperties[this.propertyPath()]=true;},oncollapse:function() |
+{WebInspector.ObjectPropertyTreeElement.prototype.oncollapse.call(this);delete this.treeOutline.section._expandedProperties[this.propertyPath()];},__proto__:WebInspector.ObjectPropertyTreeElement.prototype};WebInspector.Worker=function(id,url,shared) |
+{this.id=id;this.url=url;this.shared=shared;} |
+WebInspector.WorkersSidebarPane=function(workerManager) |
+{WebInspector.SidebarPane.call(this,WebInspector.UIString("Workers"));this._enableWorkersCheckbox=new WebInspector.Checkbox(WebInspector.UIString("Pause on start"),"sidebar-label",WebInspector.UIString("Automatically attach to new workers and pause them. Enabling this option will force opening inspector for all new workers."));this._enableWorkersCheckbox.element.id="pause-workers-checkbox";this.bodyElement.appendChild(this._enableWorkersCheckbox.element);this._enableWorkersCheckbox.addEventListener(this._autoattachToWorkersClicked.bind(this));this._enableWorkersCheckbox.checked=false;var note=this.bodyElement.createChild("div");note.id="shared-workers-list";note.addStyleClass("sidebar-label") |
+note.textContent=WebInspector.UIString("Shared workers can be inspected in the Task Manager");var separator=this.bodyElement.createChild("div","sidebar-separator");separator.textContent=WebInspector.UIString("Dedicated worker inspectors");this._workerListElement=document.createElement("ol");this._workerListElement.tabIndex=0;this._workerListElement.addStyleClass("properties-tree");this._workerListElement.addStyleClass("sidebar-label");this.bodyElement.appendChild(this._workerListElement);this._idToWorkerItem={};this._workerManager=workerManager;workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerAdded,this._workerAdded,this);workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerRemoved,this._workerRemoved,this);workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkersCleared,this._workersCleared,this);} |
+WebInspector.WorkersSidebarPane.prototype={_workerAdded:function(event) |
+{this._addWorker(event.data.workerId,event.data.url,event.data.inspectorConnected);},_workerRemoved:function(event) |
+{this._idToWorkerItem[event.data].remove();delete this._idToWorkerItem[event.data];},_workersCleared:function(event) |
+{this._idToWorkerItem={};this._workerListElement.removeChildren();},_addWorker:function(workerId,url,inspectorConnected) |
+{var item=this._workerListElement.createChild("div","dedicated-worker-item");var link=item.createChild("a");link.textContent=url;link.href="#";link.target="_blank";link.addEventListener("click",this._workerItemClicked.bind(this,workerId),true);this._idToWorkerItem[workerId]=item;},_workerItemClicked:function(workerId,event) |
+{event.preventDefault();this._workerManager.openWorkerInspector(workerId);},_autoattachToWorkersClicked:function(event) |
+{WorkerAgent.setAutoconnectToWorkers(this._enableWorkersCheckbox.checked);},__proto__:WebInspector.SidebarPane.prototype};WebInspector.ScriptsPanel=function(workspaceForTest) |
+{WebInspector.Panel.call(this,"scripts");this.registerRequiredCSS("scriptsPanel.css");this.registerRequiredCSS("textPrompt.css");WebInspector.settings.navigatorWasOnceHidden=WebInspector.settings.createSetting("navigatorWasOnceHidden",false);WebInspector.settings.debuggerSidebarHidden=WebInspector.settings.createSetting("debuggerSidebarHidden",false);this._workspace=workspaceForTest||WebInspector.workspace;function viewGetter() |
+{return this.visibleView;} |
+WebInspector.GoToLineDialog.install(this,viewGetter.bind(this));var helpSection=WebInspector.shortcutsScreen.section(WebInspector.UIString("Sources Panel"));this.debugToolbar=this._createDebugToolbar();const initialDebugSidebarWidth=225;const minimumDebugSidebarWidthPercent=0.5;this.createSidebarView(this.element,WebInspector.SidebarView.SidebarPosition.End,initialDebugSidebarWidth);this.splitView.element.id="scripts-split-view";this.splitView.setSidebarElementConstraints(Preferences.minScriptsSidebarWidth);this.splitView.setMainElementConstraints(minimumDebugSidebarWidthPercent);const initialNavigatorWidth=225;const minimumViewsContainerWidthPercent=0.5;this.editorView=new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start,"scriptsPanelNavigatorSidebarWidth",initialNavigatorWidth);this.editorView.element.tabIndex=0;this.editorView.setSidebarElementConstraints(Preferences.minScriptsSidebarWidth);this.editorView.setMainElementConstraints(minimumViewsContainerWidthPercent);this.editorView.show(this.splitView.mainElement);this._navigator=new WebInspector.ScriptsNavigator();this._navigator.view.show(this.editorView.sidebarElement);var tabbedEditorPlaceholderText=WebInspector.isMac()?WebInspector.UIString("Hit Cmd+O to open a file"):WebInspector.UIString("Hit Ctrl+O to open a file");this._editorContentsElement=this.editorView.mainElement.createChild("div","fill");this._editorFooterElement=this.editorView.mainElement.createChild("div","inspector-footer status-bar hidden");this._editorContainer=new WebInspector.TabbedEditorContainer(this,"previouslyViewedFiles",tabbedEditorPlaceholderText);this._editorContainer.show(this._editorContentsElement);this._navigatorController=new WebInspector.NavigatorOverlayController(this.editorView,this._navigator.view,this._editorContainer.view);this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ScriptSelected,this._scriptSelected,this);this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemSearchStarted,this._itemSearchStarted,this);this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemCreationRequested,this._itemCreationRequested,this);this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested,this._itemRenamingRequested,this);this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorSelected,this._editorSelected,this);this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorClosed,this._editorClosed,this);this._debugSidebarResizeWidgetElement=this.splitView.mainElement.createChild("div","resizer-widget");this._debugSidebarResizeWidgetElement.id="scripts-debug-sidebar-resizer-widget";this.splitView.installResizer(this._debugSidebarResizeWidgetElement);this.sidebarPanes={};this.sidebarPanes.watchExpressions=new WebInspector.WatchExpressionsSidebarPane();this.sidebarPanes.callstack=new WebInspector.CallStackSidebarPane();this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.CallFrameSelected,this._callFrameSelectedInSidebar.bind(this));this.sidebarPanes.scopechain=new WebInspector.ScopeChainSidebarPane();this.sidebarPanes.jsBreakpoints=new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.breakpointManager,this._showSourceLocation.bind(this));this.sidebarPanes.domBreakpoints=WebInspector.domBreakpointsSidebarPane.createProxy(this);this.sidebarPanes.xhrBreakpoints=new WebInspector.XHRBreakpointsSidebarPane();this.sidebarPanes.eventListenerBreakpoints=new WebInspector.EventListenerBreakpointsSidebarPane();if(Capabilities.canInspectWorkers&&!WebInspector.WorkerManager.isWorkerFrontend()){WorkerAgent.enable();this.sidebarPanes.workerList=new WebInspector.WorkersSidebarPane(WebInspector.workerManager);} |
+this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this));this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.GoToMember,this._showOutlineDialog.bind(this));this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.ToggleBreakpoint,this._toggleBreakpoint.bind(this));this._pauseOnExceptionButton=new WebInspector.StatusBarButton("","scripts-pause-on-exceptions-status-bar-item",3);this._pauseOnExceptionButton.addEventListener("click",this._togglePauseOnExceptions,this);this._toggleFormatSourceButton=new WebInspector.StatusBarButton(WebInspector.UIString("Pretty print"),"scripts-toggle-pretty-print-status-bar-item");this._toggleFormatSourceButton.toggled=false;this._toggleFormatSourceButton.addEventListener("click",this._toggleFormatSource,this);this._scriptViewStatusBarItemsContainer=document.createElement("div");this._scriptViewStatusBarItemsContainer.className="inline-block";this._scriptViewStatusBarTextContainer=document.createElement("div");this._scriptViewStatusBarTextContainer.className="inline-block";this._installDebuggerSidebarController();WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged,this._dockSideChanged.bind(this));WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this));this._dockSideChanged();this._sourceFramesByUISourceCode=new Map();this._updateDebuggerButtons();this._pauseOnExceptionStateChanged();if(WebInspector.debuggerModel.isPaused()) |
+this._debuggerPaused();WebInspector.settings.pauseOnExceptionStateString.addChangeListener(this._pauseOnExceptionStateChanged,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasEnabled,this._debuggerWasEnabled,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasDisabled,this._debuggerWasDisabled,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused,this._debuggerPaused,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerResumed,this._debuggerResumed,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.CallFrameSelected,this._callFrameSelected,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame,this._consoleCommandEvaluatedInSelectedCallFrame,this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.BreakpointsActiveStateChanged,this._breakpointsActiveStateChanged,this);WebInspector.startBatchUpdate();this._workspace.uiSourceCodes().forEach(this._addUISourceCode.bind(this));WebInspector.endBatchUpdate();this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded,this._uiSourceCodeAdded,this);this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved,this._uiSourceCodeRemoved,this);this._workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset,this._projectWillReset.bind(this),this);WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared,this._debuggerReset,this);WebInspector.advancedSearchController.registerSearchScope(new WebInspector.ScriptsSearchScope(this._workspace));this._boundOnKeyUp=this._onKeyUp.bind(this);this._boundOnKeyDown=this._onKeyDown.bind(this);} |
+WebInspector.ScriptsPanel.prototype={get statusBarItems() |
+{return[this._pauseOnExceptionButton.element,this._toggleFormatSourceButton.element,this._scriptViewStatusBarItemsContainer];},statusBarText:function() |
+{return this._scriptViewStatusBarTextContainer;},defaultFocusedElement:function() |
+{return this._editorContainer.view.defaultFocusedElement()||this._navigator.view.defaultFocusedElement();},get paused() |
+{return this._paused;},wasShown:function() |
+{WebInspector.Panel.prototype.wasShown.call(this);this._navigatorController.wasShown();this.element.addEventListener("keydown",this._boundOnKeyDown,false);this.element.addEventListener("keyup",this._boundOnKeyUp,false);},willHide:function() |
+{this.element.removeEventListener("keydown",this._boundOnKeyDown,false);this.element.removeEventListener("keyup",this._boundOnKeyUp,false);WebInspector.Panel.prototype.willHide.call(this);WebInspector.closeViewInDrawer();},_uiSourceCodeAdded:function(event) |
+{var uiSourceCode=(event.data);this._addUISourceCode(uiSourceCode);},_addUISourceCode:function(uiSourceCode) |
+{if(this._toggleFormatSourceButton.toggled) |
+uiSourceCode.setFormatted(true);if(uiSourceCode.project().isServiceProject()) |
+return;this._navigator.addUISourceCode(uiSourceCode);this._editorContainer.addUISourceCode(uiSourceCode);var currentUISourceCode=this._currentUISourceCode;if(currentUISourceCode&¤tUISourceCode.project().isServiceProject()&¤tUISourceCode!==uiSourceCode&¤tUISourceCode.url===uiSourceCode.url){this._showFile(uiSourceCode);this._editorContainer.removeUISourceCode(currentUISourceCode);}},_uiSourceCodeRemoved:function(event) |
+{var uiSourceCode=(event.data);this._removeUISourceCodes([uiSourceCode]);},_removeUISourceCodes:function(uiSourceCodes) |
+{for(var i=0;i<uiSourceCodes.length;++i){this._navigator.removeUISourceCode(uiSourceCodes[i]);this._removeSourceFrame(uiSourceCodes[i]);} |
+this._editorContainer.removeUISourceCodes(uiSourceCodes);},_consoleCommandEvaluatedInSelectedCallFrame:function(event) |
+{this.sidebarPanes.scopechain.update(WebInspector.debuggerModel.selectedCallFrame());},_debuggerPaused:function() |
+{var details=WebInspector.debuggerModel.debuggerPausedDetails();this._paused=true;this._waitingToPause=false;this._stepping=false;this._updateDebuggerButtons();WebInspector.inspectorView.setCurrentPanel(this);this.sidebarPanes.callstack.update(details.callFrames);if(details.reason===WebInspector.DebuggerModel.BreakReason.DOM){WebInspector.domBreakpointsSidebarPane.highlightBreakpoint(details.auxData);function didCreateBreakpointHitStatusMessage(element) |
+{this.sidebarPanes.callstack.setStatus(element);} |
+WebInspector.domBreakpointsSidebarPane.createBreakpointHitStatusMessage(details.auxData,didCreateBreakpointHitStatusMessage.bind(this));}else if(details.reason===WebInspector.DebuggerModel.BreakReason.EventListener){var eventName=details.auxData.eventName;this.sidebarPanes.eventListenerBreakpoints.highlightBreakpoint(details.auxData.eventName);var eventNameForUI=WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName,details.auxData);this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a \"%s\" Event Listener.",eventNameForUI));}else if(details.reason===WebInspector.DebuggerModel.BreakReason.XHR){this.sidebarPanes.xhrBreakpoints.highlightBreakpoint(details.auxData["breakpointURL"]);this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a XMLHttpRequest."));}else if(details.reason===WebInspector.DebuggerModel.BreakReason.Exception) |
+this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on exception: '%s'.",details.auxData.description));else if(details.reason===WebInspector.DebuggerModel.BreakReason.Assert) |
+this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on assertion."));else if(details.reason===WebInspector.DebuggerModel.BreakReason.CSPViolation) |
+this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a script blocked due to Content Security Policy directive: \"%s\".",details.auxData["directiveText"]));else if(details.reason===WebInspector.DebuggerModel.BreakReason.DebugCommand) |
+this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a debugged function"));else{function didGetUILocation(uiLocation) |
+{var breakpoint=WebInspector.breakpointManager.findBreakpoint(uiLocation.uiSourceCode,uiLocation.lineNumber);if(!breakpoint) |
+return;this.sidebarPanes.jsBreakpoints.highlightBreakpoint(breakpoint);this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a JavaScript breakpoint."));} |
+if(details.callFrames.length) |
+details.callFrames[0].createLiveLocation(didGetUILocation.bind(this));else |
+console.warn("ScriptsPanel paused, but callFrames.length is zero.");} |
+this._enableDebuggerSidebar(true);this._toggleDebuggerSidebarButton.setEnabled(false);window.focus();InspectorFrontendHost.bringToFront();},_debuggerResumed:function() |
+{this._paused=false;this._waitingToPause=false;this._stepping=false;this._clearInterface();this._toggleDebuggerSidebarButton.setEnabled(true);},_debuggerWasEnabled:function() |
+{this._updateDebuggerButtons();},_debuggerWasDisabled:function() |
+{this._debuggerReset();},_debuggerReset:function() |
+{this._debuggerResumed();this.sidebarPanes.watchExpressions.reset();delete this._skipExecutionLineRevealing;},_projectWillReset:function(event) |
+{var project=event.data;var uiSourceCodes=project.uiSourceCodes();this._removeUISourceCodes(uiSourceCodes);if(project.type()===WebInspector.projectTypes.Network) |
+this._editorContainer.reset();},get visibleView() |
+{return this._editorContainer.visibleView;},_updateScriptViewStatusBarItems:function() |
+{this._scriptViewStatusBarItemsContainer.removeChildren();this._scriptViewStatusBarTextContainer.removeChildren();var sourceFrame=this.visibleView;if(sourceFrame){var statusBarItems=sourceFrame.statusBarItems()||[];for(var i=0;i<statusBarItems.length;++i) |
+this._scriptViewStatusBarItemsContainer.appendChild(statusBarItems[i]);var statusBarText=sourceFrame.statusBarText();if(statusBarText) |
+this._scriptViewStatusBarTextContainer.appendChild(statusBarText);}},canShowAnchorLocation:function(anchor) |
+{if(WebInspector.debuggerModel.debuggerEnabled()&&anchor.uiSourceCode) |
+return true;var uiSourceCode=WebInspector.workspace.uiSourceCodeForURL(anchor.href);if(uiSourceCode){anchor.uiSourceCode=uiSourceCode;return true;} |
+return false;},showAnchorLocation:function(anchor) |
+{this._showSourceLocation(anchor.uiSourceCode,anchor.lineNumber,anchor.columnNumber);},showUISourceCode:function(uiSourceCode,lineNumber,columnNumber) |
+{this._showSourceLocation(uiSourceCode,lineNumber,columnNumber);},currentUISourceCode:function() |
+{return this._currentUISourceCode;},showUILocation:function(uiLocation) |
+{this._showSourceLocation(uiLocation.uiSourceCode,uiLocation.lineNumber,uiLocation.columnNumber);},_showSourceLocation:function(uiSourceCode,lineNumber,columnNumber) |
+{var sourceFrame=this._showFile(uiSourceCode);if(typeof lineNumber==="number") |
+sourceFrame.highlightPosition(lineNumber,columnNumber);sourceFrame.focus();WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction,{action:WebInspector.UserMetrics.UserActionNames.OpenSourceLink,url:uiSourceCode.originURL(),lineNumber:lineNumber});},_showFile:function(uiSourceCode) |
+{var sourceFrame=this._getOrCreateSourceFrame(uiSourceCode);if(this._currentUISourceCode===uiSourceCode) |
+return sourceFrame;this._currentUISourceCode=uiSourceCode;if(!uiSourceCode.project().isServiceProject()) |
+this._navigator.revealUISourceCode(uiSourceCode,true);this._editorContainer.showFile(uiSourceCode);this._updateScriptViewStatusBarItems();if(this._currentUISourceCode.project().type()===WebInspector.projectTypes.Snippets) |
+this._runSnippetButton.element.removeStyleClass("hidden");else |
+this._runSnippetButton.element.addStyleClass("hidden");return sourceFrame;},_createSourceFrame:function(uiSourceCode) |
+{var sourceFrame;switch(uiSourceCode.contentType()){case WebInspector.resourceTypes.Script:sourceFrame=new WebInspector.JavaScriptSourceFrame(this,uiSourceCode);break;case WebInspector.resourceTypes.Document:sourceFrame=new WebInspector.JavaScriptSourceFrame(this,uiSourceCode);break;case WebInspector.resourceTypes.Stylesheet:default:sourceFrame=new WebInspector.UISourceCodeFrame(uiSourceCode);break;} |
+this._sourceFramesByUISourceCode.put(uiSourceCode,sourceFrame);return sourceFrame;},_getOrCreateSourceFrame:function(uiSourceCode) |
+{return this._sourceFramesByUISourceCode.get(uiSourceCode)||this._createSourceFrame(uiSourceCode);},viewForFile:function(uiSourceCode) |
+{return this._getOrCreateSourceFrame(uiSourceCode);},_removeSourceFrame:function(uiSourceCode) |
+{var sourceFrame=this._sourceFramesByUISourceCode.get(uiSourceCode);if(!sourceFrame) |
+return;this._sourceFramesByUISourceCode.remove(uiSourceCode);sourceFrame.dispose();},_clearCurrentExecutionLine:function() |
+{if(this._executionSourceFrame) |
+this._executionSourceFrame.clearExecutionLine();delete this._executionSourceFrame;},_setExecutionLine:function(uiLocation) |
+{var callFrame=WebInspector.debuggerModel.selectedCallFrame() |
+var sourceFrame=this._getOrCreateSourceFrame(uiLocation.uiSourceCode);sourceFrame.setExecutionLine(uiLocation.lineNumber,callFrame);this._executionSourceFrame=sourceFrame;},_executionLineChanged:function(uiLocation) |
+{this._clearCurrentExecutionLine();this._setExecutionLine(uiLocation);var uiSourceCode=uiLocation.uiSourceCode;var scriptFile=this._currentUISourceCode?this._currentUISourceCode.scriptFile():null;if(this._skipExecutionLineRevealing) |
+return;this._skipExecutionLineRevealing=true;var sourceFrame=this._showFile(uiSourceCode);sourceFrame.revealLine(uiLocation.lineNumber);if(sourceFrame.canEditSource()) |
+sourceFrame.setSelection(WebInspector.TextRange.createFromLocation(uiLocation.lineNumber,0));sourceFrame.focus();},_callFrameSelected:function(event) |
+{var callFrame=event.data;if(!callFrame) |
+return;this.sidebarPanes.scopechain.update(callFrame);this.sidebarPanes.watchExpressions.refreshExpressions();this.sidebarPanes.callstack.setSelectedCallFrame(callFrame);callFrame.createLiveLocation(this._executionLineChanged.bind(this));},_editorClosed:function(event) |
+{this._navigatorController.hideNavigatorOverlay();var uiSourceCode=(event.data);if(this._currentUISourceCode===uiSourceCode) |
+delete this._currentUISourceCode;this._updateScriptViewStatusBarItems();WebInspector.searchController.resetSearch();},_editorSelected:function(event) |
+{var uiSourceCode=(event.data);var sourceFrame=this._showFile(uiSourceCode);this._navigatorController.hideNavigatorOverlay();if(!this._navigatorController.isNavigatorPinned()) |
+sourceFrame.focus();WebInspector.searchController.resetSearch();},_scriptSelected:function(event) |
+{var uiSourceCode=(event.data.uiSourceCode);var sourceFrame=this._showFile(uiSourceCode);this._navigatorController.hideNavigatorOverlay();if(sourceFrame&&(!this._navigatorController.isNavigatorPinned()||event.data.focusSource)) |
+sourceFrame.focus();},_itemSearchStarted:function(event) |
+{var searchText=(event.data);WebInspector.OpenResourceDialog.show(this,this.editorView.mainElement,searchText);},_pauseOnExceptionStateChanged:function() |
+{var pauseOnExceptionsState=WebInspector.settings.pauseOnExceptionStateString.get();switch(pauseOnExceptionsState){case WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions:this._pauseOnExceptionButton.title=WebInspector.UIString("Don't pause on exceptions.\nClick to Pause on all exceptions.");break;case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnAllExceptions:this._pauseOnExceptionButton.title=WebInspector.UIString("Pause on all exceptions.\nClick to Pause on uncaught exceptions.");break;case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions:this._pauseOnExceptionButton.title=WebInspector.UIString("Pause on uncaught exceptions.\nClick to Not pause on exceptions.");break;} |
+this._pauseOnExceptionButton.state=pauseOnExceptionsState;},_updateDebuggerButtons:function() |
+{if(WebInspector.debuggerModel.debuggerEnabled()){this._pauseOnExceptionButton.visible=true;}else{this._pauseOnExceptionButton.visible=false;} |
+if(this._paused){this._updateButtonTitle(this._pauseButton,WebInspector.UIString("Resume script execution (%s).")) |
+this._pauseButton.state=true;this._pauseButton.setLongClickOptionsEnabled((function(){return[this._longResumeButton]}).bind(this));this._pauseButton.setEnabled(true);this._stepOverButton.setEnabled(true);this._stepIntoButton.setEnabled(true);this._stepOutButton.setEnabled(true);this.debuggerStatusElement.textContent=WebInspector.UIString("Paused");}else{this._updateButtonTitle(this._pauseButton,WebInspector.UIString("Pause script execution (%s).")) |
+this._pauseButton.state=false;this._pauseButton.setLongClickOptionsEnabled(null);this._pauseButton.setEnabled(!this._waitingToPause);this._stepOverButton.setEnabled(false);this._stepIntoButton.setEnabled(false);this._stepOutButton.setEnabled(false);if(this._waitingToPause) |
+this.debuggerStatusElement.textContent=WebInspector.UIString("Pausing");else if(this._stepping) |
+this.debuggerStatusElement.textContent=WebInspector.UIString("Stepping");else |
+this.debuggerStatusElement.textContent="";}},_clearInterface:function() |
+{this.sidebarPanes.callstack.update(null);this.sidebarPanes.scopechain.update(null);this.sidebarPanes.jsBreakpoints.clearBreakpointHighlight();WebInspector.domBreakpointsSidebarPane.clearBreakpointHighlight();this.sidebarPanes.eventListenerBreakpoints.clearBreakpointHighlight();this.sidebarPanes.xhrBreakpoints.clearBreakpointHighlight();this._clearCurrentExecutionLine();this._updateDebuggerButtons();},_togglePauseOnExceptions:function() |
+{var nextStateMap={};var stateEnum=WebInspector.DebuggerModel.PauseOnExceptionsState;nextStateMap[stateEnum.DontPauseOnExceptions]=stateEnum.PauseOnAllExceptions;nextStateMap[stateEnum.PauseOnAllExceptions]=stateEnum.PauseOnUncaughtExceptions;nextStateMap[stateEnum.PauseOnUncaughtExceptions]=stateEnum.DontPauseOnExceptions;WebInspector.settings.pauseOnExceptionStateString.set(nextStateMap[this._pauseOnExceptionButton.state]);},_runSnippet:function(event) |
+{if(this._currentUISourceCode.project().type()!==WebInspector.projectTypes.Snippets) |
+return false;WebInspector.scriptSnippetModel.evaluateScriptSnippet(this._currentUISourceCode);return true;},_togglePause:function(event) |
+{if(this._paused){delete this._skipExecutionLineRevealing;this._paused=false;this._waitingToPause=false;DebuggerAgent.resume();}else{this._stepping=false;this._waitingToPause=true;DebuggerAgent.setSkipAllPauses(false);DebuggerAgent.pause();} |
+this._clearInterface();return true;},_longResume:function(event) |
+{if(!this._paused) |
+return true;this._paused=false;this._waitingToPause=false;DebuggerAgent.setSkipAllPauses(true,true);setTimeout(DebuggerAgent.setSkipAllPauses.bind(DebuggerAgent,false),500);DebuggerAgent.resume();this._clearInterface();return true;},_stepOverClicked:function(event) |
+{if(!this._paused) |
+return true;delete this._skipExecutionLineRevealing;this._paused=false;this._stepping=true;this._clearInterface();DebuggerAgent.stepOver();return true;},_stepIntoClicked:function(event) |
+{if(!this._paused) |
+return true;delete this._skipExecutionLineRevealing;this._paused=false;this._stepping=true;this._clearInterface();DebuggerAgent.stepInto();return true;},_stepIntoSelectionClicked:function(event) |
+{if(!this._paused) |
+return true;if(this._executionSourceFrame){var stepIntoMarkup=this._executionSourceFrame.stepIntoMarkup();if(stepIntoMarkup) |
+stepIntoMarkup.iterateSelection(event.shiftKey);} |
+return true;},doStepIntoSelection:function(rawLocation) |
+{if(!this._paused) |
+return;delete this._skipExecutionLineRevealing;this._paused=false;this._stepping=true;this._clearInterface();WebInspector.debuggerModel.stepIntoSelection(rawLocation);},_stepOutClicked:function(event) |
+{if(!this._paused) |
+return true;delete this._skipExecutionLineRevealing;this._paused=false;this._stepping=true;this._clearInterface();DebuggerAgent.stepOut();return true;},_callFrameSelectedInSidebar:function(event) |
+{var callFrame=(event.data);delete this._skipExecutionLineRevealing;WebInspector.debuggerModel.setSelectedCallFrame(callFrame);},continueToLocation:function(rawLocation) |
+{if(!this._paused) |
+return;delete this._skipExecutionLineRevealing;this._paused=false;this._stepping=true;this._clearInterface();WebInspector.debuggerModel.continueToLocation(rawLocation);},_toggleBreakpointsClicked:function(event) |
+{WebInspector.debuggerModel.setBreakpointsActive(!WebInspector.debuggerModel.breakpointsActive());},_breakpointsActiveStateChanged:function(event) |
+{var active=event.data;this._toggleBreakpointsButton.toggled=!active;if(active){this._toggleBreakpointsButton.title=WebInspector.UIString("Deactivate breakpoints.");WebInspector.inspectorView.element.removeStyleClass("breakpoints-deactivated");this.sidebarPanes.jsBreakpoints.listElement.removeStyleClass("breakpoints-list-deactivated");}else{this._toggleBreakpointsButton.title=WebInspector.UIString("Activate breakpoints.");WebInspector.inspectorView.element.addStyleClass("breakpoints-deactivated");this.sidebarPanes.jsBreakpoints.listElement.addStyleClass("breakpoints-list-deactivated");}},_createDebugToolbar:function() |
+{var debugToolbar=document.createElement("div");debugToolbar.className="status-bar";debugToolbar.id="scripts-debug-toolbar";var title,handler;var platformSpecificModifier=WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta;title=WebInspector.UIString("Run snippet (%s).");handler=this._runSnippet.bind(this);this._runSnippetButton=this._createButtonAndRegisterShortcuts("scripts-run-snippet",title,handler,WebInspector.ScriptsPanelDescriptor.ShortcutKeys.RunSnippet);debugToolbar.appendChild(this._runSnippetButton.element);this._runSnippetButton.element.addStyleClass("hidden");handler=this._togglePause.bind(this);this._pauseButton=this._createButtonAndRegisterShortcuts("scripts-pause","",handler,WebInspector.ScriptsPanelDescriptor.ShortcutKeys.PauseContinue);debugToolbar.appendChild(this._pauseButton.element);title=WebInspector.UIString("Resume with all pauses blocked for 500 ms");this._longResumeButton=new WebInspector.StatusBarButton(title,"scripts-long-resume");this._longResumeButton.addEventListener("click",this._longResume.bind(this),this);title=WebInspector.UIString("Step over next function call (%s).");handler=this._stepOverClicked.bind(this);this._stepOverButton=this._createButtonAndRegisterShortcuts("scripts-step-over",title,handler,WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepOver);debugToolbar.appendChild(this._stepOverButton.element);title=WebInspector.UIString("Step into next function call (%s).");handler=this._stepIntoClicked.bind(this);this._stepIntoButton=this._createButtonAndRegisterShortcuts("scripts-step-into",title,handler,WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepInto);debugToolbar.appendChild(this._stepIntoButton.element);this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepIntoSelection,this._stepIntoSelectionClicked.bind(this)) |
+title=WebInspector.UIString("Step out of current function (%s).");handler=this._stepOutClicked.bind(this);this._stepOutButton=this._createButtonAndRegisterShortcuts("scripts-step-out",title,handler,WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepOut);debugToolbar.appendChild(this._stepOutButton.element);this._toggleBreakpointsButton=new WebInspector.StatusBarButton(WebInspector.UIString("Deactivate breakpoints."),"scripts-toggle-breakpoints");this._toggleBreakpointsButton.toggled=false;this._toggleBreakpointsButton.addEventListener("click",this._toggleBreakpointsClicked,this);debugToolbar.appendChild(this._toggleBreakpointsButton.element);this.debuggerStatusElement=document.createElement("div");this.debuggerStatusElement.id="scripts-debugger-status";debugToolbar.appendChild(this.debuggerStatusElement);return debugToolbar;},_updateButtonTitle:function(button,buttonTitle) |
+{var hasShortcuts=button.shortcuts&&button.shortcuts.length;if(hasShortcuts) |
+button.title=String.vsprintf(buttonTitle,[button.shortcuts[0].name]);else |
+button.title=buttonTitle;},_createButtonAndRegisterShortcuts:function(buttonId,buttonTitle,handler,shortcuts) |
+{var button=new WebInspector.StatusBarButton(buttonTitle,buttonId);button.element.addEventListener("click",handler,false);button.shortcuts=shortcuts;this._updateButtonTitle(button,buttonTitle);this.registerShortcuts(shortcuts,handler);return button;},searchCanceled:function() |
+{if(this._searchView) |
+this._searchView.searchCanceled();delete this._searchView;delete this._searchQuery;},performSearch:function(query,shouldJump) |
+{WebInspector.searchController.updateSearchMatchesCount(0,this);if(!this.visibleView) |
+return;this._searchView=this.visibleView;this._searchQuery=query;function finishedCallback(view,searchMatches) |
+{if(!searchMatches) |
+return;WebInspector.searchController.updateSearchMatchesCount(searchMatches,this);} |
+function currentMatchChanged(currentMatchIndex) |
+{WebInspector.searchController.updateCurrentMatchIndex(currentMatchIndex,this);} |
+this._searchView.performSearch(query,shouldJump,finishedCallback.bind(this),currentMatchChanged.bind(this));},minimalSearchQuerySize:function() |
+{return 0;},jumpToNextSearchResult:function() |
+{if(!this._searchView) |
+return;if(this._searchView!==this.visibleView){this.performSearch(this._searchQuery,true);return;} |
+this._searchView.jumpToNextSearchResult();return true;},jumpToPreviousSearchResult:function() |
+{if(!this._searchView) |
+return;if(this._searchView!==this.visibleView){this.performSearch(this._searchQuery,true);if(this._searchView) |
+this._searchView.jumpToLastSearchResult();return;} |
+this._searchView.jumpToPreviousSearchResult();},canSearchAndReplace:function() |
+{var view=(this.visibleView);return!!view&&view.canEditSource();},replaceSelectionWith:function(text) |
+{var view=(this.visibleView);view.replaceSearchMatchWith(text);},replaceAllWith:function(query,text) |
+{var view=(this.visibleView);view.replaceAllWith(query,text);},_onKeyDown:function(event) |
+{if(event.keyCode!==WebInspector.KeyboardShortcut.Keys.CtrlOrMeta.code) |
+return;if(!this._paused||!this._executionSourceFrame) |
+return;var stepIntoMarkup=this._executionSourceFrame.stepIntoMarkup();if(stepIntoMarkup) |
+stepIntoMarkup.startIteratingSelection();},_onKeyUp:function(event) |
+{if(event.keyCode!==WebInspector.KeyboardShortcut.Keys.CtrlOrMeta.code) |
+return;if(!this._paused||!this._executionSourceFrame) |
+return;var stepIntoMarkup=this._executionSourceFrame.stepIntoMarkup();if(!stepIntoMarkup) |
+return;var currentPosition=stepIntoMarkup.getSelectedItemIndex();if(typeof currentPosition==="undefined"){stepIntoMarkup.stopIteratingSelection();}else{var rawLocation=stepIntoMarkup.getRawPosition(currentPosition);this.doStepIntoSelection(rawLocation);}},_toggleFormatSource:function() |
+{delete this._skipExecutionLineRevealing;this._toggleFormatSourceButton.toggled=!this._toggleFormatSourceButton.toggled;var uiSourceCodes=this._workspace.uiSourceCodes();for(var i=0;i<uiSourceCodes.length;++i) |
+uiSourceCodes[i].setFormatted(this._toggleFormatSourceButton.toggled);var currentFile=this._editorContainer.currentFile();WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction,{action:WebInspector.UserMetrics.UserActionNames.TogglePrettyPrint,enabled:this._toggleFormatSourceButton.toggled,url:currentFile?currentFile.originURL():null});},addToWatch:function(expression) |
+{this.sidebarPanes.watchExpressions.addExpression(expression);},_toggleBreakpoint:function() |
+{var sourceFrame=this.visibleView;if(!sourceFrame) |
+return false;if(sourceFrame instanceof WebInspector.JavaScriptSourceFrame){var javaScriptSourceFrame=(sourceFrame);javaScriptSourceFrame.toggleBreakpointOnCurrentLine();return true;} |
+return false;},_showOutlineDialog:function(event) |
+{var uiSourceCode=this._editorContainer.currentFile();if(!uiSourceCode) |
+return false;switch(uiSourceCode.contentType()){case WebInspector.resourceTypes.Document:case WebInspector.resourceTypes.Script:WebInspector.JavaScriptOutlineDialog.show(this.visibleView,uiSourceCode);return true;case WebInspector.resourceTypes.Stylesheet:WebInspector.StyleSheetOutlineDialog.show(this.visibleView,uiSourceCode);return true;} |
+return false;},_installDebuggerSidebarController:function() |
+{this._toggleDebuggerSidebarButton=new WebInspector.StatusBarButton("","right-sidebar-show-hide-button scripts-debugger-show-hide-button",3);this._toggleDebuggerSidebarButton.addEventListener("click",clickHandler,this);this.editorView.element.appendChild(this._toggleDebuggerSidebarButton.element);this._enableDebuggerSidebar(!WebInspector.settings.debuggerSidebarHidden.get());function clickHandler() |
+{this._enableDebuggerSidebar(this._toggleDebuggerSidebarButton.state==="left");}},_enableDebuggerSidebar:function(show) |
+{this._toggleDebuggerSidebarButton.state=show?"right":"left";this._toggleDebuggerSidebarButton.title=show?WebInspector.UIString("Hide debugger"):WebInspector.UIString("Show debugger");if(show) |
+this.splitView.showSidebarElement();else |
+this.splitView.hideSidebarElement();this._debugSidebarResizeWidgetElement.enableStyleClass("hidden",!show);WebInspector.settings.debuggerSidebarHidden.set(!show);},_itemCreationRequested:function(event) |
+{var project=event.data.project;var path=event.data.path;var filePath;var shouldHideNavigator;var uiSourceCode;project.createFile(path,null,fileCreated.bind(this));function fileCreated(path) |
+{if(!path) |
+return;filePath=path;uiSourceCode=project.uiSourceCode(filePath);this._showSourceLocation(uiSourceCode);shouldHideNavigator=!this._navigatorController.isNavigatorPinned();if(this._navigatorController.isNavigatorHidden()) |
+this._navigatorController.showNavigatorOverlay();this._navigator.rename(uiSourceCode,callback.bind(this));} |
function callback(committed) |
-{ |
-if (shouldHideNavigator) |
-this._navigatorController.hideNavigatorOverlay(); |
- |
-if (!committed) { |
-WebInspector.scriptSnippetModel.deleteScriptSnippet(uiSourceCode); |
-return; |
-} |
- |
-this._showSourceLine(uiSourceCode); |
-} |
-}, |
- |
- |
-_itemRenamingRequested: function(event) |
-{ |
-var uiSourceCode = (event.data); |
- |
-var shouldHideNavigator = !this._navigatorController.isNavigatorPinned(); |
-if (this._navigatorController.isNavigatorHidden()) |
-this._navigatorController.showNavigatorOverlay(); |
-this._navigator.rename(uiSourceCode, callback.bind(this)); |
- |
- |
-function callback(committed) |
-{ |
-if (shouldHideNavigator && committed) { |
-this._navigatorController.hideNavigatorOverlay(); |
-this._showSourceLine(uiSourceCode); |
-} |
-} |
-}, |
- |
- |
-_showLocalHistory: function(uiSourceCode) |
-{ |
-WebInspector.RevisionHistoryView.showHistory(uiSourceCode); |
-}, |
- |
- |
-appendApplicableItems: function(event, contextMenu, target) |
-{ |
-this._appendUISourceCodeItems(contextMenu, target); |
-this._appendFunctionItems(contextMenu, target); |
-}, |
- |
- |
-_mapFileSystemToNetwork: function(uiSourceCode) |
-{ |
-WebInspector.SelectUISourceCodeForProjectTypeDialog.show(uiSourceCode.name(), WebInspector.projectTypes.Network, mapFileSystemToNetwork.bind(this), this.editorView.mainElement) |
- |
- |
+{if(shouldHideNavigator) |
+this._navigatorController.hideNavigatorOverlay();if(!committed){project.deleteFile(uiSourceCode);return;} |
+this._showSourceLocation(uiSourceCode);}},_itemRenamingRequested:function(event) |
+{var uiSourceCode=(event.data);var shouldHideNavigator=!this._navigatorController.isNavigatorPinned();if(this._navigatorController.isNavigatorHidden()) |
+this._navigatorController.showNavigatorOverlay();this._navigator.rename(uiSourceCode,callback.bind(this));function callback(committed) |
+{if(shouldHideNavigator&&committed){this._navigatorController.hideNavigatorOverlay();this._showSourceLocation(uiSourceCode);}}},_showLocalHistory:function(uiSourceCode) |
+{WebInspector.RevisionHistoryView.showHistory(uiSourceCode);},appendApplicableItems:function(event,contextMenu,target) |
+{this._appendUISourceCodeItems(contextMenu,target);this._appendFunctionItems(contextMenu,target);},_mapFileSystemToNetwork:function(uiSourceCode) |
+{WebInspector.SelectUISourceCodeForProjectTypeDialog.show(uiSourceCode.name(),WebInspector.projectTypes.Network,mapFileSystemToNetwork.bind(this),this.editorView.mainElement) |
function mapFileSystemToNetwork(networkUISourceCode) |
-{ |
-this._workspace.addMapping(networkUISourceCode, uiSourceCode, WebInspector.fileSystemWorkspaceProvider); |
-} |
-}, |
- |
- |
-_removeNetworkMapping: function(uiSourceCode) |
-{ |
-if (confirm(WebInspector.UIString("Are you sure you want to remove network mapping?"))) |
-this._workspace.removeMapping(uiSourceCode); |
-}, |
- |
- |
-_mapNetworkToFileSystem: function(networkUISourceCode) |
-{ |
-WebInspector.SelectUISourceCodeForProjectTypeDialog.show(networkUISourceCode.name(), WebInspector.projectTypes.FileSystem, mapNetworkToFileSystem.bind(this), this.editorView.mainElement) |
- |
- |
+{this._workspace.addMapping(networkUISourceCode,uiSourceCode,WebInspector.fileSystemWorkspaceProvider);}},_removeNetworkMapping:function(uiSourceCode) |
+{if(confirm(WebInspector.UIString("Are you sure you want to remove network mapping?"))) |
+this._workspace.removeMapping(uiSourceCode);},_mapNetworkToFileSystem:function(networkUISourceCode) |
+{WebInspector.SelectUISourceCodeForProjectTypeDialog.show(networkUISourceCode.name(),WebInspector.projectTypes.FileSystem,mapNetworkToFileSystem.bind(this),this.editorView.mainElement) |
function mapNetworkToFileSystem(uiSourceCode) |
-{ |
-this._workspace.addMapping(networkUISourceCode, uiSourceCode, WebInspector.fileSystemWorkspaceProvider); |
-} |
-}, |
- |
- |
-_appendUISourceCodeMappingItems: function(contextMenu, uiSourceCode) |
-{ |
-if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) { |
-var hasMappings = !!uiSourceCode.url; |
-if (!hasMappings) |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to network resource\u2026" : "Map to Network Resource\u2026"), this._mapFileSystemToNetwork.bind(this, uiSourceCode)); |
-else |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove network mapping" : "Remove Network Mapping"), this._removeNetworkMapping.bind(this, uiSourceCode)); |
-} |
- |
-if (uiSourceCode.project().type() === WebInspector.projectTypes.Network) { |
- |
-function filterProject(project) |
-{ |
-return project.type() === WebInspector.projectTypes.FileSystem; |
-} |
- |
-if (!this._workspace.projects().filter(filterProject).length) |
-return; |
-if (this._workspace.uiSourceCodeForURL(uiSourceCode.url) === uiSourceCode) |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to file system resource\u2026" : "Map to File System Resource\u2026"), this._mapNetworkToFileSystem.bind(this, uiSourceCode)); |
-} |
-}, |
- |
- |
-_appendUISourceCodeItems: function(contextMenu, target) |
-{ |
-if (!(target instanceof WebInspector.UISourceCode)) |
-return; |
- |
-var uiSourceCode = (target); |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Local modifications\u2026" : "Local Modifications\u2026"), this._showLocalHistory.bind(this, uiSourceCode)); |
- |
-if (WebInspector.isolatedFileSystemManager.supportsFileSystems() && WebInspector.experimentsSettings.fileSystemProject.isEnabled()) |
-this._appendUISourceCodeMappingItems(contextMenu, uiSourceCode); |
- |
-var resource = WebInspector.resourceForURL(uiSourceCode.url); |
-if (resource && resource.request) |
-contextMenu.appendApplicableItems(resource.request); |
-}, |
- |
- |
-_appendFunctionItems: function(contextMenu, target) |
-{ |
-if (!(target instanceof WebInspector.RemoteObject)) |
-return; |
-var remoteObject = (target); |
-if (remoteObject.type !== "function") |
-return; |
- |
-function didGetDetails(error, response) |
-{ |
-if (error) { |
-console.error(error); |
-return; |
-} |
-WebInspector.inspectorView.showPanelForAnchorNavigation(this); |
-var uiLocation = WebInspector.debuggerModel.rawLocationToUILocation(response.location); |
-this._showSourceLine(uiLocation.uiSourceCode, uiLocation.lineNumber); |
-} |
- |
+{this._workspace.addMapping(networkUISourceCode,uiSourceCode,WebInspector.fileSystemWorkspaceProvider);}},_appendUISourceCodeMappingItems:function(contextMenu,uiSourceCode) |
+{if(uiSourceCode.project().type()===WebInspector.projectTypes.FileSystem){var hasMappings=!!uiSourceCode.url;if(!hasMappings) |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Map to network resource\u2026":"Map to Network Resource\u2026"),this._mapFileSystemToNetwork.bind(this,uiSourceCode));else |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Remove network mapping":"Remove Network Mapping"),this._removeNetworkMapping.bind(this,uiSourceCode));} |
+if(uiSourceCode.project().type()===WebInspector.projectTypes.Network){function filterProject(project) |
+{return project.type()===WebInspector.projectTypes.FileSystem;} |
+if(!this._workspace.projects().filter(filterProject).length) |
+return;if(this._workspace.uiSourceCodeForURL(uiSourceCode.url)===uiSourceCode) |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Map to file system resource\u2026":"Map to File System Resource\u2026"),this._mapNetworkToFileSystem.bind(this,uiSourceCode));}},_appendUISourceCodeItems:function(contextMenu,target) |
+{if(!(target instanceof WebInspector.UISourceCode)) |
+return;var uiSourceCode=(target);contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Local modifications\u2026":"Local Modifications\u2026"),this._showLocalHistory.bind(this,uiSourceCode));if(WebInspector.isolatedFileSystemManager.supportsFileSystems()) |
+this._appendUISourceCodeMappingItems(contextMenu,uiSourceCode);},_appendFunctionItems:function(contextMenu,target) |
+{if(!(target instanceof WebInspector.RemoteObject)) |
+return;var remoteObject=(target);if(remoteObject.type!=="function") |
+return;function didGetDetails(error,response) |
+{if(error){console.error(error);return;} |
+WebInspector.inspectorView.setCurrentPanel(this);var uiLocation=WebInspector.debuggerModel.rawLocationToUILocation(response.location);this._showSourceLocation(uiLocation.uiSourceCode,uiLocation.lineNumber,uiLocation.columnNumber);} |
function revealFunction() |
-{ |
-DebuggerAgent.getFunctionDetails(remoteObject.objectId, didGetDetails.bind(this)); |
-} |
- |
-contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Show function definition" : "Show Function Definition"), revealFunction.bind(this)); |
-}, |
- |
-showGoToSourceDialog: function() |
-{ |
-WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement); |
-}, |
- |
-_dockSideChanged: function() |
-{ |
-var dockSide = WebInspector.dockController.dockSide(); |
-var vertically = dockSide === WebInspector.DockController.State.DockedToRight && WebInspector.settings.splitVerticallyWhenDockedToRight.get(); |
-this._splitVertically(vertically); |
-}, |
- |
- |
-_splitVertically: function(vertically) |
-{ |
-if (this.sidebarPaneView && vertically === !this.splitView.isVertical()) |
-return; |
- |
-if (this.sidebarPaneView) |
-this.sidebarPaneView.detach(); |
- |
-this.splitView.setVertical(!vertically); |
- |
-if (!vertically) { |
-this.sidebarPaneView = new WebInspector.SidebarPaneStack(); |
-for (var pane in this.sidebarPanes) |
-this.sidebarPaneView.addPane(this.sidebarPanes[pane]); |
- |
-this.sidebarElement.appendChild(this.debugToolbar); |
-} else { |
-this._showDebuggerSidebar(); |
- |
-this.sidebarPaneView = new WebInspector.SplitView(true, this.name + "PanelSplitSidebarRatio", 0.5); |
- |
-var group1 = new WebInspector.SidebarPaneStack(); |
-group1.show(this.sidebarPaneView.firstElement()); |
-group1.element.id = "scripts-sidebar-stack-pane"; |
-group1.addPane(this.sidebarPanes.callstack); |
-group1.addPane(this.sidebarPanes.jsBreakpoints); |
-group1.addPane(this.sidebarPanes.domBreakpoints); |
-group1.addPane(this.sidebarPanes.xhrBreakpoints); |
-group1.addPane(this.sidebarPanes.eventListenerBreakpoints); |
-group1.addPane(this.sidebarPanes.workerList); |
- |
-var group2 = new WebInspector.SidebarTabbedPane(); |
-group2.show(this.sidebarPaneView.secondElement()); |
-group2.addPane(this.sidebarPanes.scopechain); |
-group2.addPane(this.sidebarPanes.watchExpressions); |
- |
-this.sidebarPaneView.firstElement().appendChild(this.debugToolbar); |
-} |
- |
-this.sidebarPaneView.element.id = "scripts-debug-sidebar-contents"; |
-this.sidebarPaneView.show(this.splitView.sidebarElement); |
- |
-this.sidebarPanes.scopechain.expand(); |
-this.sidebarPanes.jsBreakpoints.expand(); |
-this.sidebarPanes.callstack.expand(); |
- |
-if (WebInspector.settings.watchExpressions.get().length > 0) |
-this.sidebarPanes.watchExpressions.expand(); |
-}, |
- |
-__proto__: WebInspector.Panel.prototype |
-} |
+{DebuggerAgent.getFunctionDetails(remoteObject.objectId,didGetDetails.bind(this));} |
+contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles()?"Show function definition":"Show Function Definition"),revealFunction.bind(this));},showGoToSourceDialog:function() |
+{var uiSourceCodes=this._editorContainer.historyUISourceCodes();var defaultScores=new Map();for(var i=1;i<uiSourceCodes.length;++i) |
+defaultScores.put(uiSourceCodes[i],uiSourceCodes.length-i);WebInspector.OpenResourceDialog.show(this,this.editorView.mainElement,undefined,defaultScores);},_dockSideChanged:function() |
+{var dockSide=WebInspector.dockController.dockSide();var vertically=dockSide===WebInspector.DockController.State.DockedToRight&&WebInspector.settings.splitVerticallyWhenDockedToRight.get();this._splitVertically(vertically);},_splitVertically:function(vertically) |
+{if(this.sidebarPaneView&&vertically===!this.splitView.isVertical()) |
+return;if(this.sidebarPaneView) |
+this.sidebarPaneView.detach();this.splitView.setVertical(!vertically);if(!vertically){this.sidebarPaneView=new WebInspector.SidebarPaneStack();for(var pane in this.sidebarPanes) |
+this.sidebarPaneView.addPane(this.sidebarPanes[pane]);this.sidebarElement.appendChild(this.debugToolbar);}else{this._enableDebuggerSidebar(true);this.sidebarPaneView=new WebInspector.SplitView(true,this.name+"PanelSplitSidebarRatio",0.5);var group1=new WebInspector.SidebarPaneStack();group1.show(this.sidebarPaneView.firstElement());group1.element.id="scripts-sidebar-stack-pane";group1.addPane(this.sidebarPanes.callstack);group1.addPane(this.sidebarPanes.jsBreakpoints);group1.addPane(this.sidebarPanes.domBreakpoints);group1.addPane(this.sidebarPanes.xhrBreakpoints);group1.addPane(this.sidebarPanes.eventListenerBreakpoints);if(this.sidebarPanes.workerList) |
+group1.addPane(this.sidebarPanes.workerList);var group2=new WebInspector.SidebarTabbedPane();group2.show(this.sidebarPaneView.secondElement());group2.addPane(this.sidebarPanes.scopechain);group2.addPane(this.sidebarPanes.watchExpressions);this.sidebarPaneView.firstElement().appendChild(this.debugToolbar);} |
+this.sidebarPaneView.element.id="scripts-debug-sidebar-contents";this.sidebarPaneView.show(this.splitView.sidebarElement);this.sidebarPanes.scopechain.expand();this.sidebarPanes.jsBreakpoints.expand();this.sidebarPanes.callstack.expand();if(WebInspector.settings.watchExpressions.get().length>0) |
+this.sidebarPanes.watchExpressions.expand();},canSetFooterElement:function() |
+{return true;},setFooterElement:function(element) |
+{if(element){this._editorFooterElement.removeStyleClass("hidden");this._editorFooterElement.appendChild(element);this._editorContentsElement.style.bottom=this._editorFooterElement.offsetHeight+"px";}else{this._editorFooterElement.addStyleClass("hidden");this._editorFooterElement.removeChildren();this._editorContentsElement.style.bottom=0;} |
+this.doResize();},__proto__:WebInspector.Panel.prototype} |