summaryrefslogtreecommitdiff
path: root/Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js')
-rw-r--r--Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js b/Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js
new file mode 100644
index 000000000..ceb16ecbc
--- /dev/null
+++ b/Source/WebInspectorUI/UserInterface/Views/ProbeDetailsSidebarPanel.js
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2013 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.ProbeDetailsSidebarPanel = class ProbeDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
+{
+ constructor()
+ {
+ super("probe", WebInspector.UIString("Probes"), WebInspector.UIString("Probes"));
+
+ WebInspector.probeManager.addEventListener(WebInspector.ProbeManager.Event.ProbeSetAdded, this._probeSetAdded, this);
+ WebInspector.probeManager.addEventListener(WebInspector.ProbeManager.Event.ProbeSetRemoved, this._probeSetRemoved, this);
+
+ this._probeSetSections = new Map;
+ this._inspectedProbeSets = [];
+
+ // Initialize sidebar sections for probe sets that already exist.
+ for (var probeSet of WebInspector.probeManager.probeSets)
+ this._probeSetAdded(probeSet);
+ }
+
+ // Public
+
+ get inspectedProbeSets()
+ {
+ return this._inspectedProbeSets.slice();
+ }
+
+ set inspectedProbeSets(newProbeSets)
+ {
+ for (let probeSet of this._inspectedProbeSets) {
+ let removedSection = this._probeSetSections.get(probeSet);
+ removedSection.element.remove();
+ }
+
+ this._inspectedProbeSets = newProbeSets;
+
+ for (let probeSet of newProbeSets) {
+ let shownSection = this._probeSetSections.get(probeSet);
+ this.contentView.element.appendChild(shownSection.element);
+ }
+ }
+
+ inspect(objects)
+ {
+ if (!(objects instanceof Array))
+ objects = [objects];
+
+ var inspectedProbeSets = objects.filter(function(object) {
+ return object instanceof WebInspector.ProbeSet;
+ });
+
+ inspectedProbeSets.sort(function sortBySourceLocation(aProbeSet, bProbeSet) {
+ var aLocation = aProbeSet.breakpoint.sourceCodeLocation;
+ var bLocation = bProbeSet.breakpoint.sourceCodeLocation;
+ var comparisonResult = aLocation.sourceCode.displayName.localeCompare(bLocation.sourceCode.displayName);
+ if (comparisonResult !== 0)
+ return comparisonResult;
+
+ comparisonResult = aLocation.displayLineNumber - bLocation.displayLineNumber;
+ if (comparisonResult !== 0)
+ return comparisonResult;
+
+ return aLocation.displayColumnNumber - bLocation.displayColumnNumber;
+ });
+
+ this.inspectedProbeSets = inspectedProbeSets;
+
+ return !!this._inspectedProbeSets.length;
+ }
+
+ // Private
+
+ _probeSetAdded(probeSetOrEvent)
+ {
+ var probeSet;
+ if (probeSetOrEvent instanceof WebInspector.ProbeSet)
+ probeSet = probeSetOrEvent;
+ else
+ probeSet = probeSetOrEvent.data.probeSet;
+ console.assert(!this._probeSetSections.has(probeSet), "New probe group ", probeSet, " already has its own sidebar.");
+
+ var newSection = new WebInspector.ProbeSetDetailsSection(probeSet);
+ this._probeSetSections.set(probeSet, newSection);
+ }
+
+
+ _probeSetRemoved(event)
+ {
+ var probeSet = event.data.probeSet;
+ console.assert(this._probeSetSections.has(probeSet), "Removed probe group ", probeSet, " doesn't have a sidebar.");
+
+ // First remove probe set from inspected list, then from mapping.
+ var inspectedProbeSets = this.inspectedProbeSets;
+ var index = inspectedProbeSets.indexOf(probeSet);
+ if (index !== -1) {
+ inspectedProbeSets.splice(index, 1);
+ this.inspectedProbeSets = inspectedProbeSets;
+ }
+ var removedSection = this._probeSetSections.get(probeSet);
+ this._probeSetSections.delete(probeSet);
+ removedSection.closed();
+ }
+};