Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' of https://github.com/firebug/firebug into issu…

…e4979
  • Loading branch information...
commit 95871de32bf2e411da1bd5e46ac940e8af267973 2 parents f00b7e2 + 0ebb7ea
@SebastianZ SebastianZ authored
View
2  extension/content/firebug/console/performanceTiming.js
@@ -229,7 +229,7 @@ var PerfInfoTip = domplate(Firebug.Rep,
render: function(timing, parentNode)
{
- var infoTip = Firebug.NetMonitor.TimeInfoTip.tableTag.replace({}, parentNode);
+ var infoTip = PerfInfoTip.tableTag.replace({}, parentNode);
// Insert top description.
this.separatorTag.insertRows({label: Locale.$STR("perftiming.bars.label")},
View
19 extension/content/firebug/net/netPanel.js
@@ -23,6 +23,7 @@ define([
"firebug/net/netUtils",
"firebug/net/netProgress",
"firebug/css/cssReps",
+ "firebug/net/timeInfoTip",
"firebug/js/breakpoint",
"firebug/net/xmlViewer",
"firebug/net/svgViewer",
@@ -37,7 +38,7 @@ define([
],
function(Obj, Firebug, Firefox, Domplate, Xpcom, Locale,
Events, Options, Url, SourceLink, Http, Css, Dom, Win, Search, Str,
- Arr, System, Menu, NetUtils, NetProgress, CSSInfoTip) {
+ Arr, System, Menu, NetUtils, NetProgress, CSSInfoTip, TimeInfoTip) {
with (Domplate) {
@@ -55,7 +56,7 @@ var NetRequestEntry = Firebug.NetMonitor.NetRequestEntry;
// ********************************************************************************************* //
/**
- * @panel Represents a Firebug panel that displayes info about HTTP activity associated with
+ * @panel Represents a Firebug panel that displays info about HTTP activity associated with
* the current page. This class is derived from <code>Firebug.ActivablePanel</code> in order
* to support activation (enable/disable). This allows to avoid (performance) expensive
* features if the functionality is not necessary for the user.
@@ -71,6 +72,9 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
enableA11y: true,
order: 60,
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
initialize: function(context, doc)
{
if (FBTrace.DBG_NET)
@@ -212,7 +216,8 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
if (FBTrace.DBG_NET)
FBTrace.sysout("net.netPanel.hide; " + this.context.getName());
- delete this.infoTipURL; // clear the state that is tracking the infotip so it is reset after next show()
+ // clear the state that is tracking the infotip so it is reset after next show()
+ delete this.infoTipURL;
this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
clearInterval(this.layoutInterval);
@@ -317,6 +322,9 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
};
},
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu
+
getContextMenuItems: function(nada, target)
{
var items = [];
@@ -473,7 +481,7 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
},
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context menu commands
+ // Context Menu Commands
copyURLParams: function(file)
{
@@ -696,8 +704,7 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
populateTimeInfoTip: function(infoTip, file)
{
- Firebug.NetMonitor.TimeInfoTip.render(this.context, file, infoTip);
- return true;
+ return TimeInfoTip.render(this.context, file, infoTip);
},
populateSizeInfoTip: function(infoTip, file)
View
199 extension/content/firebug/net/netReps.js
@@ -448,7 +448,7 @@ Firebug.NetMonitor.NetRequestEntry = domplate(Firebug.Rep, new Firebug.Listener(
DIV({"class": "netAddressLabel netLabel"}, "$file.file|getRemoteAddress")
),
TD({"class": "netTimeCol netCol a11yFocus", "role": "gridcell",
- "aria-describedby": "fbNetTimeInfoTip" },
+ "aria-describedby": "fbNetTimeInfoTip" },
DIV({"class": "netLoadingIcon"}),
DIV({"class": "netBar"},
"&nbsp;",
@@ -1715,203 +1715,6 @@ Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, new Firebug.Listener()
// ********************************************************************************************* //
/**
- * @domplate Represents a template for popup tip that displays detailed timing info about
- * a network request.
- */
-Firebug.NetMonitor.TimeInfoTip = domplate(Firebug.Rep,
-{
- tableTag:
- TABLE({"class": "timeInfoTip", "id": "fbNetTimeInfoTip"},
- TBODY()
- ),
-
- timingsTag:
- FOR("time", "$timings",
- TR({"class": "timeInfoTipRow", $collapsed: "$time|hideBar"},
- TD({"class": "$time|getBarClass timeInfoTipBar",
- $loaded: "$time.loaded",
- $fromCache: "$time.fromCache",
- }),
- TD({"class": "timeInfoTipCell startTime"},
- "$time.start|formatStartTime"
- ),
- TD({"class": "timeInfoTipCell elapsedTime"},
- "$time.elapsed|formatTime"
- ),
- TD("$time|getLabel")
- )
- ),
-
- startTimeTag:
- TR(
- TD(),
- TD("$startTime.time|formatStartTime"),
- TD({"class": "timeInfoTipStartLabel", "colspan": 2},
- "$startTime|getLabel"
- )
- ),
-
- separatorTag:
- TR(
- TD({"class": "timeInfoTipSeparator", "colspan": 4, "height": "10px"},
- SPAN("$label")
- )
- ),
-
- eventsTag:
- FOR("event", "$events",
- TR({"class": "timeInfoTipEventRow"},
- TD({"class": "timeInfoTipBar", align: "center"},
- DIV({"class": "$event|getTimeStampClass timeInfoTipEventBar"})
- ),
- TD("$event.start|formatStartTime"),
- TD({"class": "timeInfotTipEventName", "colspan": 2},
- "$event|getTimeStampLabel"
- )
- )
- ),
-
- hideBar: function(obj)
- {
- return !obj.elapsed && obj.bar == "Blocking";
- },
-
- getBarClass: function(obj)
- {
- return "net" + obj.bar + "Bar";
- },
-
- getTimeStampClass: function(obj)
- {
- return obj.classes;
- },
-
- formatTime: function(time)
- {
- return Str.formatTime(time);
- },
-
- formatStartTime: function(time)
- {
- var label = Str.formatTime(time);
- if (!time)
- return label;
-
- return (time > 0 ? "+" : "") + label;
- },
-
- getLabel: function(obj)
- {
- return Locale.$STR("requestinfo." + obj.bar);
- },
-
- getTimeStampLabel: function(obj)
- {
- return obj.name;
- },
-
- render: function(context, file, parentNode)
- {
- var infoTip = Firebug.NetMonitor.TimeInfoTip.tableTag.replace({}, parentNode);
-
- var elapsed = file.loaded ? file.endTime - file.startTime :
- file.phase.phaseEndTime - file.startTime;
- var blockingEnd = NetUtils.getBlockingEndTime(file);
-
- //Helper log for debugging timing problems.
- //NetUtils.traceRequestTiming("net.timeInfoTip.render;", file);
-
- var startTime = 0;
-
- var timings = [];
- timings.push({bar: "Blocking",
- elapsed: blockingEnd - file.startTime,
- start: startTime});
-
- timings.push({bar: "Resolving",
- elapsed: file.connectingTime - file.resolvingTime,
- start: startTime += timings[0].elapsed});
-
- // Connecting time is measured till the sending time in order to include
- // also SSL negotiation.
- // xxxHonza: time between "connected" and "sending" is SSL negotiation?
- timings.push({bar: "Connecting",
- elapsed: file.connectStarted ? file.sendingTime - file.connectingTime : 0,
- start: startTime += timings[1].elapsed});
-
- // In Fx3.6 the STATUS_SENDING_TO is always fired (nsIHttpActivityDistributor)
- // In Fx3.5 the STATUS_SENDING_TO (nsIWebProgressListener) doesn't have to come
- // This workaround is for 3.5
- var sendElapsed = file.sendStarted ? file.waitingForTime - file.sendingTime : 0;
- var sendStarted = timings[0].elapsed + timings[1].elapsed + timings[2].elapsed;
-
- timings.push({bar: "Sending",
- elapsed: sendElapsed,
- start: file.sendStarted ? file.sendingTime - file.startTime : sendStarted});
-
- timings.push({bar: "Waiting",
- elapsed: file.respondedTime - file.waitingForTime,
- start: file.waitingForTime - file.startTime});
-
- timings.push({bar: "Receiving",
- elapsed: file.endTime - file.respondedTime,
- start: file.respondedTime - file.startTime,
- loaded: file.loaded, fromCache: file.fromCache});
-
- var events = [];
- var timeStamps = file.phase.timeStamps;
- for (var i=0; i<timeStamps.length; i++)
- {
- var timeStamp = timeStamps[i];
- events.push({
- name: timeStamp.label,
- classes: timeStamp.classes,
- start: timeStamp.time - file.startTime
- });
- }
-
- events.sort(function(a, b) {
- return a.start < b.start ? -1 : 1;
- });
-
- var phases = context.netProgress.phases;
-
- if (FBTrace.DBG_ERROR && phases.length == 0)
- FBTrace.sysout("net.render; ERROR no phases");
-
- // Insert start request time. It's computed since the beginning (page load start time)
- // i.e. from the first phase start.
- var firstPhaseStartTime = (phases.length > 0) ? phases[0].startTime : file.startTime;
-
- var startTime = {};
- startTime.time = file.startTime - firstPhaseStartTime;
- startTime.bar = "started.label";
- this.startTimeTag.insertRows({startTime: startTime}, infoTip.firstChild);
-
- // Insert separator.
- this.separatorTag.insertRows({label: Locale.$STR("requestinfo.phases.label")},
- infoTip.firstChild);
-
- // Insert request timing info.
- this.timingsTag.insertRows({timings: timings}, infoTip.firstChild);
-
- // Insert events timing info.
- if (events.length)
- {
- // Insert separator.
- this.separatorTag.insertRows({label: Locale.$STR("requestinfo.timings.label")},
- infoTip.firstChild);
-
- this.eventsTag.insertRows({events: events}, infoTip.firstChild);
- }
-
- return true;
- }
-});
-
-// ********************************************************************************************* //
-
-/**
* @domplate Represents a template for a pupup tip with detailed size info.
*/
Firebug.NetMonitor.SizeInfoTip = domplate(Firebug.Rep,
View
260 extension/content/firebug/net/timeInfoTip.js
@@ -0,0 +1,260 @@
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/string",
+ "firebug/net/netUtils",
+ "firebug/lib/dom",
+],
+function(Firebug, Domplate, Locale, Str, NetUtils, Dom) {
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+// ********************************************************************************************* //
+// Implementation
+
+/**
+ * @domplate This template is used to render an info tip with detailed timing for network
+ * requests. The info tip is used on the Net panel.
+ */
+var TimeInfoTip = domplate(Firebug.Rep,
+{
+ startTimeTag:
+ TABLE({"class": "timeInfoTip"},
+ TBODY(
+ TR(
+ TD("$startTime.time|formatStartTime"),
+ TD({"class": "timeInfoTipStartLabel"},
+ "$startTime|getLabel"
+ )
+ )
+ )
+ ),
+
+ timingsTag:
+ TABLE({"class": "timeInfoTip", "id": "fbNetTimeInfoTip", cellpadding: 0, cellspacing: 0},
+ TBODY(
+ TR(
+ TD({width: "5%"}),
+ TD({width: "5%"}),
+ TD({width: "90%"})
+ ),
+ FOR("time", "$timings",
+ TR({"class": "timeInfoTipRow", $collapsed: "$time|hideBar"},
+ TD("$time|getLabel"),
+ TD({"class": "timeInfoTipCell startTime"},
+ "$time.start|formatStartTime"
+ ),
+ TD({"class": "timeInfoTipCell bars"},
+ DIV({"class": "timeInfoTipBox"},
+ DIV({"class": "timeInfoTipBar $time|getBarClass",
+ style: "left: $time.left%; width: $time.width%"},
+ SPAN({"class": "perfTimingBarLabel"}, "$time.elapsed|formatTime")
+ )
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ descriptionTag:
+ DIV({"class": "timeInfoTipDesc"},
+ "$label"
+ ),
+
+ eventsTag:
+ TABLE({"class": "timeInfoTip"},
+ TBODY(
+ FOR("event", "$events",
+ TR({"class": "timeInfoTipEventRow"},
+ TD({"class": "timeInfoTipBar", align: "center"},
+ DIV({"class": "$event|getTimeStampClass timeInfoTipEventBar"})
+ ),
+ TD("$event.start|formatStartTime"),
+ TD({"class": "timeInfotTipEventName"},
+ "$event|getTimeStampLabel"
+ )
+ )
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Template Getters
+
+ hideBar: function(obj)
+ {
+ return !obj.elapsed && obj.bar == "Blocking";
+ },
+
+ getBarClass: function(obj)
+ {
+ return "net" + obj.bar + "Bar";
+ },
+
+ getTimeStampClass: function(obj)
+ {
+ return obj.classes;
+ },
+
+ formatTime: function(time)
+ {
+ return Str.formatTime(time);
+ },
+
+ formatStartTime: function(time)
+ {
+ var label = Str.formatTime(time);
+ if (!time)
+ return label;
+
+ return (time > 0 ? "+" : "") + label;
+ },
+
+ getLabel: function(obj)
+ {
+ return Locale.$STR("requestinfo." + obj.bar);
+ },
+
+ getTimeStampLabel: function(obj)
+ {
+ return obj.name;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Render
+
+ render: function(context, file, parentNode)
+ {
+ Dom.clearNode(parentNode);
+
+ var elapsed = file.loaded ? file.endTime - file.startTime :
+ file.phase.phaseEndTime - file.startTime;
+ var blockingEnd = NetUtils.getBlockingEndTime(file);
+
+ //Helper log for debugging timing problems.
+ //NetUtils.traceRequestTiming("net.timeInfoTip.render;", file);
+
+ var startTime = 0;
+
+ var timings = [];
+ timings.push({bar: "Blocking",
+ elapsed: blockingEnd - file.startTime,
+ start: startTime});
+
+ timings.push({bar: "Resolving",
+ elapsed: file.connectingTime - file.resolvingTime,
+ start: startTime += timings[0].elapsed});
+
+ // Connecting time is measured till the sending time in order to include
+ // also SSL negotiation.
+ // xxxHonza: time between "connected" and "sending" is SSL negotiation?
+ timings.push({bar: "Connecting",
+ elapsed: file.connectStarted ? file.sendingTime - file.connectingTime : 0,
+ start: startTime += timings[1].elapsed});
+
+ // In Fx3.6 the STATUS_SENDING_TO is always fired (nsIHttpActivityDistributor)
+ // In Fx3.5 the STATUS_SENDING_TO (nsIWebProgressListener) doesn't have to come
+ // This workaround is for 3.5
+ var sendElapsed = file.sendStarted ? file.waitingForTime - file.sendingTime : 0;
+ var sendStarted = timings[0].elapsed + timings[1].elapsed + timings[2].elapsed;
+
+ timings.push({bar: "Sending",
+ elapsed: sendElapsed,
+ start: file.sendStarted ? file.sendingTime - file.startTime : sendStarted});
+
+ timings.push({bar: "Waiting",
+ elapsed: file.respondedTime - file.waitingForTime,
+ start: file.waitingForTime - file.startTime});
+
+ timings.push({bar: "Receiving",
+ elapsed: file.endTime - file.respondedTime,
+ start: file.respondedTime - file.startTime,
+ loaded: file.loaded, fromCache: file.fromCache});
+
+ // Calculate position of waterfall bars.
+ for (var i=0; i<timings.length; i++)
+ {
+ var time = timings[i];
+ time.left = calculatePos(time.start, elapsed);
+ time.width = calculatePos(time.elapsed, elapsed);
+ }
+
+ // Include custom time stamps
+ var events = [];
+ var timeStamps = file.phase.timeStamps;
+ for (var i=0; i<timeStamps.length; i++)
+ {
+ var timeStamp = timeStamps[i];
+ events.push({
+ name: timeStamp.label,
+ classes: timeStamp.classes,
+ start: timeStamp.time - file.startTime
+ });
+ }
+
+ events.sort(function(a, b) {
+ return a.start < b.start ? -1 : 1;
+ });
+
+ var phases = context.netProgress.phases;
+
+ if (FBTrace.DBG_ERROR && phases.length == 0)
+ FBTrace.sysout("net.render; ERROR no phases");
+
+ // Insert start request time. It's computed since the beginning (page load start time)
+ // i.e. from the first phase start.
+ var firstPhaseStartTime = (phases.length > 0) ? phases[0].startTime : file.startTime;
+
+ var startTime = {};
+ startTime.time = file.startTime - firstPhaseStartTime;
+ startTime.bar = "started.label";
+ this.startTimeTag.append({startTime: startTime}, parentNode);
+
+ // Insert separator.
+ this.descriptionTag.append(
+ {label: Locale.$STR("requestinfo.phases.label")},
+ parentNode);
+
+ // Insert request timing info.
+ this.timingsTag.append({timings: timings}, parentNode);
+
+ // Insert events timing info.
+ if (events.length)
+ {
+ // Insert separator.
+ this.descriptionTag.append(
+ {label: Locale.$STR("requestinfo.timings.label")},
+ parentNode);
+
+ this.eventsTag.append({events: events}, parentNode);
+ }
+
+ return true;
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function calculatePos(time, elapsed)
+{
+ return Math.round((time / elapsed) * 100);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return TimeInfoTip;
+
+// ********************************************************************************************* //
+}});
View
2  extension/skin/classic/debugger.css
@@ -217,7 +217,7 @@
font-size: 12px;
color: #000000;
width: 100%;
- box-shadow: gray 2px 2px 3px;
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
border-radius: 0 0 3px 3px;
padding: 2px 0;
pointer-events: auto;
View
2  extension/skin/classic/mac/debugger.css
@@ -314,7 +314,7 @@
font-size: 12px;
color: #000000;
width: 100%;
- box-shadow: gray 2px 2px 3px;
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
border-radius: 0 0 3px 3px;
padding: 2px 0;
pointer-events: auto;
View
79 extension/skin/classic/net.css
@@ -8,7 +8,7 @@
width: 100%;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.hideCategory-undefined .category-undefined,
.hideCategory-html .category-html,
@@ -24,7 +24,7 @@
display: none!important;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* Header for Net panel table */
.netHeaderRow {
@@ -73,7 +73,7 @@
background-color: #6E87AA;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* Breakpoints */
.panelNode-net .netRowHeader {
@@ -143,7 +143,7 @@
border-right: none;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* Column visibility */
.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
@@ -165,7 +165,7 @@
display: none;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netRow {
background: LightYellow;
@@ -290,7 +290,7 @@
text-decoration: underline;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netLoadingIcon {
position: absolute;
@@ -307,7 +307,7 @@
display: none;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* Timeline */
.netBar {
@@ -419,7 +419,7 @@
background: transparent;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* If coming from BF cache (no network activity) */
.netTable .netRow.fromBFCache {
@@ -451,52 +451,7 @@
color: gray;
}
-/************************************************************************************************/
-/* Time Info tip */
-
-.timeInfoTip {
- width: 200px;
- height: 40px
-}
-
-.timeInfoTipStartLabel {
- padding-left: 5px;
- color: gray;
-}
-
-.timeInfoTipSeparator {
- padding-top: 10px;
- color: gray;
-}
-
-.timeInfoTipSeparator span {
- white-space:pre-wrap;
-}
-
-.timeInfoTipBar,
-.timeInfoTipEventBar {
- position: relative;
- display: block;
- margin: 0;
- opacity: 1;
- height: 15px;
- width: 4px;
-}
-
-.timeInfoTipEventBar {
- width: 1px !important;
-}
-
-.timeInfoTipCell.startTime {
- padding-right: 8px;
-}
-
-.timeInfoTipCell.elapsedTime {
- text-align: right;
- padding-right: 8px;
-}
-
-/************************************************************************************************/
+/*************************************************************************************************/
/* Size Info tip */
.sizeInfoLabelCol {
@@ -515,7 +470,7 @@
color: gray;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* Summary */
.netSummaryLabel {
@@ -567,7 +522,7 @@
padding-right: 6px;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netLimitRow {
background: rgb(255, 255, 225) !important;
@@ -594,7 +549,7 @@
padding-bottom: 1px;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netInfoCol {
border-top: 1px solid #EEEEEE;
@@ -717,7 +672,7 @@
font-weight: normal;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* HTML Preview & Resizer */
.netInfoHtmlPreview {
@@ -750,7 +705,7 @@ body[resizingHtmlPreview="true"] .netInfoHtmlPreview {
pointer-events: none !important;
}
-/************************************************************************************************/
+/*************************************************************************************************/
/* Request & Response Headers */
.netHeadersViewSource {
@@ -764,7 +719,7 @@ body[resizingHtmlPreview="true"] .netInfoHtmlPreview {
cursor: pointer;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netActivationRow {
background: rgb(229, 229, 229) !important;
@@ -777,7 +732,7 @@ body[resizingHtmlPreview="true"] .netInfoHtmlPreview {
padding-left: 22px;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netPageCol {
cursor: pointer;
@@ -806,7 +761,7 @@ body[resizingHtmlPreview="true"] .netInfoHtmlPreview {
font-weight: bold;
}
-/************************************************************************************************/
+/*************************************************************************************************/
.netActivationRow > .netCol {
border-bottom: 2px solid;
View
1  extension/skin/classic/panel.css
@@ -16,3 +16,4 @@
@import "chrome://firebug/skin/performanceTiming.css";
@import "chrome://firebug/skin/tableRep.css";
@import "chrome://firebug-os/skin/panel.css";
+@import "chrome://firebug/skin/timeInfoTip.css";
View
2  extension/skin/classic/panelbase.css
@@ -218,7 +218,7 @@ code {
white-space: nowrap;
pointer-events: none;
border-radius: 3px;
- box-shadow: gray 2px 2px 3px;
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
}
.infoTip[active="true"] {
View
58 extension/skin/classic/timeInfoTip.css
@@ -0,0 +1,58 @@
+/* See license.txt for terms of usage */
+
+/*************************************************************************************************/
+/* Time Info tip */
+
+.timeInfoTip {
+ width: 100%;
+ padding: 5px;
+}
+
+.timeInfoTipStartLabel {
+ padding-left: 5px;
+ color: gray;
+}
+
+.timeInfoTipDesc {
+ padding: 5px 10px 0px 5px;
+ color: gray;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ width: 200px;
+}
+
+.timeInfoTipBox {
+ position: relative;
+ height: 17px;
+ border-right: 6ch solid transparent;
+}
+
+.timeInfoTipBar,
+.timeInfoTipEventBar {
+ position: relative;
+ display: block;
+ margin: 0;
+ opacity: 1;
+ height: 15px;
+ min-width: 2px;
+}
+
+.timeInfoTipEventBar {
+ width: 1px !important;
+}
+
+.timeInfoTipCell.startTime {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+
+.timeInfoTipCell.elapsedTime {
+ text-align: right;
+ padding-right: 8px;
+}
+
+.perfTimingBarLabel {
+ color: black;
+}
+
+/*************************************************************************************************/
Please sign in to comment.
Something went wrong with that request. Please try again.