blob: a040681b69ab1aafe44b35a46f989ee520c665c7 [file] [log] [blame]
// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* Namespace for any networking (WiFi or VPN) dialog. Think of this like
* a base class of wiFiDialog and vpnDialog.
*/
var networkDialog = {};
/**
* Initializes the parts of Wi-Fi/VPN dialogs that are shared.
* @param {Object} derived
*/
networkDialog.init = function(dialogDom) {
networkDialog.dialogDom = dialogDom;
var proxyPoint = $('#proxy-insertion-point', dialogDom);
// Copy in the proxy template if it's not yet there.
if ($('#proxy-settings-section', proxyPoint).length == 0) {
proxyPoint.append($('#proxy-settings-section'));
$('#proxy-settings-section', proxyPoint).show();
}
ui.setSelectedI18n($('#proxy-type', proxyPoint), 'proxyDirect');
networkDialog.manualProxySettings = [
{ selectorPrefix: '#http',
oncName: 'HTTPProxy' },
{ selectorPrefix: '#secure-http',
oncName: 'SecureHTTPProxy' },
{ selectorPrefix: '#ftp',
oncName: 'FTPProxy' },
{ selectorPrefix: '#socks',
oncName: 'SOCKS' }
];
for (var i = 0; i < networkDialog.manualProxySettings.length; ++i) {
var setting = networkDialog.manualProxySettings[i];
$(setting.selectorPrefix + '-proxy-host').val('');
$(setting.selectorPrefix + '-proxy-port').val('');
}
$('#auto-configuration-url', proxyPoint).val('');
$('#proxy-type', proxyPoint).change(function(event) {
networkDialog.setUiVisibility();
});
};
/**
* Sets visibility of common network dialog elements.
*/
networkDialog.setUiVisibility = function() {
var type = $('#proxy-type', networkDialog.dialogDom);
if (type.val() == 'Manual')
$('#proxy-manual-div', networkDialog.dialogDom).show();
else
$('#proxy-manual-div', networkDialog.dialogDom).hide();
if (type.val() == 'PAC')
$('#proxy-automatic-div', networkDialog.dialogDom).show();
else
$('#proxy-automatic-div', networkDialog.dialogDom).hide();
};
/**
* Sets up common network UI based on oncNetwork.
*/
networkDialog.setToUi = function(oncNetwork) {
if ('ProxySettings' in oncNetwork && 'Type' in oncNetwork.ProxySettings) {
var oncProxy = oncNetwork.ProxySettings;
$('#proxy-type', networkDialog.dialogDom).val(oncProxy.Type);
if (oncProxy.Type == 'Direct') {
} else if (oncProxy.Type == 'Manual') {
for (var i = 0; i < networkDialog.manualProxySettings.length; ++i) {
var setting = networkDialog.manualProxySettings[i];
$(setting.selectorPrefix + '-proxy-host').val(
oncProxy.Manual[setting.oncName].Host)
$(setting.selectorPrefix + '-proxy-port').val(
oncProxy.Manual[setting.oncName].Port);
}
} else if (oncProxy.Type == 'PAC') {
$('#auto-configuration-url', networkDialog.dialogDom).val(
oncProxy.PAC);
} else if (oncProxy.Type == 'WPAD') {
// WPAD is separately called out in the ONC format, but displayed
// here as in Chrome, multiplexed into the Automatic PAC setting
// when the PAC URL is empty.
$('#proxy-type', networkDialog.dialogDom).val('PAC');
}
}
};
/**
* Reads from the common network UI and stores into oncNetwork.
* @param {Object} oncNetwork Network to store into.
*/
networkDialog.getFromUi = function(oncNetwork) {
var dialogDom = networkDialog.dialogDom;
var type = $('#proxy-type', dialogDom);
var oncProxy = {
'Type': type.val()
};
if (type.val() == 'Manual') {
oncProxy.Manual = {};
for (var i = 0; i < networkDialog.manualProxySettings.length; ++i) {
var setting = networkDialog.manualProxySettings[i];
var hostString = $(setting.selectorPrefix + '-proxy-host',
dialogDom).val();
var portString = $(setting.selectorPrefix + '-proxy-port',
dialogDom).val();
// Skip any empty settings.
if (hostString == '' && portString == '')
continue;
var portVal = portString;
// If we cannot preserve value as int, keep it as a string and
// get a validation error later.
if (parseInt(portVal) == portVal)
portVal = parseInt(portVal);
oncProxy.Manual[setting.oncName] = { 'Host': hostString,
'Port': portVal };
}
} else if (type.val() == 'PAC') {
var pacValue = $('#auto-configuration-url', dialogDom).val();
if (pacValue == '') {
oncProxy.Type = 'WPAD';
} else {
oncProxy.PAC = pacValue;
}
}
oncNetwork.ProxySettings = oncProxy;
};