blob: 4ddf53809711873a211e2b638b1d972ed144c542 (
plain)
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
|
// 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 information on the proxy setup:
*
* - Shows the current proxy settings.
* - Has a button to reload these settings.
* - Shows the list of proxy hostnames that are cached as "bad".
* - Has a button to clear the cached bad proxies.
*/
var ProxyView = (function() {
'use strict';
// We inherit from DivView.
var superClass = DivView;
/**
* @constructor
*/
function ProxyView() {
assertFirstConstructorCall(ProxyView);
// Call superclass's constructor.
superClass.call(this, ProxyView.MAIN_BOX_ID);
// Hook up the UI components.
$(ProxyView.RELOAD_SETTINGS_BUTTON_ID).onclick =
g_browser.sendReloadProxySettings.bind(g_browser);
$(ProxyView.CLEAR_BAD_PROXIES_BUTTON_ID).onclick =
g_browser.sendClearBadProxies.bind(g_browser);
// Register to receive proxy information as it changes.
g_browser.addProxySettingsObserver(this, true);
g_browser.addBadProxiesObserver(this, true);
}
// ID for special HTML element in category_tabs.html
ProxyView.TAB_HANDLE_ID = 'tab-handle-proxy';
// IDs for special HTML elements in proxy_view.html
ProxyView.MAIN_BOX_ID = 'proxy-view-tab-content';
ProxyView.ORIGINAL_SETTINGS_DIV_ID = 'proxy-view-original-settings';
ProxyView.EFFECTIVE_SETTINGS_DIV_ID = 'proxy-view-effective-settings';
ProxyView.RELOAD_SETTINGS_BUTTON_ID = 'proxy-view-reload-settings';
ProxyView.BAD_PROXIES_TBODY_ID = 'proxy-view-bad-proxies-tbody';
ProxyView.CLEAR_BAD_PROXIES_BUTTON_ID = 'proxy-view-clear-bad-proxies';
cr.addSingletonGetter(ProxyView);
ProxyView.prototype = {
// Inherit the superclass's methods.
__proto__: superClass.prototype,
onLoadLogFinish: function(data) {
return this.onProxySettingsChanged(data.proxySettings) &&
this.onBadProxiesChanged(data.badProxies);
},
onProxySettingsChanged: function(proxySettings) {
// Both |original| and |effective| are dictionaries describing the
// settings.
$(ProxyView.ORIGINAL_SETTINGS_DIV_ID).innerHTML = '';
$(ProxyView.EFFECTIVE_SETTINGS_DIV_ID).innerHTML = '';
if (!proxySettings)
return false;
var original = proxySettings.original;
var effective = proxySettings.effective;
$(ProxyView.ORIGINAL_SETTINGS_DIV_ID).innerText =
proxySettingsToString(original);
$(ProxyView.EFFECTIVE_SETTINGS_DIV_ID).innerText =
proxySettingsToString(effective);
return true;
},
onBadProxiesChanged: function(badProxies) {
$(ProxyView.BAD_PROXIES_TBODY_ID).innerHTML = '';
if (!badProxies)
return false;
// Add a table row for each bad proxy entry.
for (var i = 0; i < badProxies.length; ++i) {
var entry = badProxies[i];
var badUntilDate = timeutil.convertTimeTicksToDate(entry.bad_until);
var tr = addNode($(ProxyView.BAD_PROXIES_TBODY_ID), 'tr');
var nameCell = addNode(tr, 'td');
var badUntilCell = addNode(tr, 'td');
addTextNode(nameCell, entry.proxy_uri);
timeutil.addNodeWithDate(badUntilCell, badUntilDate);
}
return true;
}
};
return ProxyView;
})();
|