1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** This view displays summary statistics on bandwidth usage. */
var BandwidthView = (function() {
'use strict';
// We inherit from DivView.
var superClass = DivView;
/**
* @constructor
*/
function BandwidthView() {
assertFirstConstructorCall(BandwidthView);
// Call superclass's constructor.
superClass.call(this, BandwidthView.MAIN_BOX_ID);
g_browser.addSessionNetworkStatsObserver(this, true);
g_browser.addHistoricNetworkStatsObserver(this, true);
this.sessionNetworkStats_ = null;
this.historicNetworkStats_ = null;
}
BandwidthView.TAB_ID = 'tab-handle-bandwidth';
BandwidthView.TAB_NAME = 'Bandwidth';
BandwidthView.TAB_HASH = '#bandwidth';
// IDs for special HTML elements in bandwidth_view.html
BandwidthView.MAIN_BOX_ID = 'bandwidth-view-tab-content';
cr.addSingletonGetter(BandwidthView);
BandwidthView.prototype = {
// Inherit the superclass's methods.
__proto__: superClass.prototype,
onLoadLogFinish: function(data) {
// Even though this information is included in log dumps, there's no real
// reason to display it when debugging a loaded log file.
return false;
},
/**
* Retains information on bandwidth usage this session.
*/
onSessionNetworkStatsChanged: function(sessionNetworkStats) {
this.sessionNetworkStats_ = sessionNetworkStats;
return this.updateBandwidthUsageTable_();
},
/**
* Displays information on bandwidth usage this session and over the
* browser's lifetime.
*/
onHistoricNetworkStatsChanged: function(historicNetworkStats) {
this.historicNetworkStats_ = historicNetworkStats;
return this.updateBandwidthUsageTable_();
},
/**
* Update the bandwidth usage table. Returns false on failure.
*/
updateBandwidthUsageTable_: function() {
var sessionNetworkStats = this.sessionNetworkStats_;
var historicNetworkStats = this.historicNetworkStats_;
if (!sessionNetworkStats || !historicNetworkStats)
return false;
var sessionOriginal = sessionNetworkStats.session_original_content_length;
var sessionReceived = sessionNetworkStats.session_received_content_length;
var historicOriginal =
historicNetworkStats.historic_original_content_length;
var historicReceived =
historicNetworkStats.historic_received_content_length;
var rows = [];
rows.push({
title: 'Original (KB)',
sessionValue: bytesToRoundedKilobytes_(sessionOriginal),
historicValue: bytesToRoundedKilobytes_(historicOriginal)
});
rows.push({
title: 'Received (KB)',
sessionValue: bytesToRoundedKilobytes_(sessionReceived),
historicValue: bytesToRoundedKilobytes_(historicReceived)
});
rows.push({
title: 'Savings (KB)',
sessionValue:
bytesToRoundedKilobytes_(sessionOriginal - sessionReceived),
historicValue:
bytesToRoundedKilobytes_(historicOriginal - historicReceived)
});
rows.push({
title: 'Savings (%)',
sessionValue: getPercentSavings_(sessionOriginal, sessionReceived),
historicValue: getPercentSavings_(historicOriginal,
historicReceived)
});
var input = new JsEvalContext({rows: rows});
jstProcess(input, $(BandwidthView.MAIN_BOX_ID));
return true;
}
};
/**
* Converts bytes to kilobytes rounded to one decimal place.
*/
function bytesToRoundedKilobytes_(val) {
return (val / 1024).toFixed(1);
}
/**
* Returns bandwidth savings as a percent rounded to one decimal place.
*/
function getPercentSavings_(original, received) {
if (original > 0) {
return ((original - received) * 100 / original).toFixed(1);
}
return '0.0';
}
return BandwidthView;
})();
|