mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-14 15:37:55 +00:00
110 lines
3.2 KiB
JavaScript
110 lines
3.2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
|
|
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
|
|
const NETWORKLISTSERVICE_CONTRACTID =
|
|
"@mozilla.org/network/interface-list-service;1";
|
|
const NETWORKLISTSERVICE_CID =
|
|
Components.ID("{3780be6e-7012-4e53-ade6-15212fb88a0d}");
|
|
|
|
XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
|
|
"@mozilla.org/childprocessmessagemanager;1",
|
|
"nsISyncMessageSender");
|
|
|
|
function NetworkInterfaceListService () {
|
|
}
|
|
|
|
NetworkInterfaceListService.prototype = {
|
|
classID: NETWORKLISTSERVICE_CID,
|
|
|
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsINetworkInterfaceListService]),
|
|
|
|
getDataInterfaceList: function(aConditions) {
|
|
return new NetworkInterfaceList(
|
|
cpmm.sendSyncMessage(
|
|
'NetworkInterfaceList:ListInterface',
|
|
{
|
|
excludeSupl: (aConditions &
|
|
Ci.nsINetworkInterfaceListService.
|
|
LIST_NOT_INCLUDE_SUPL_INTERFACES) != 0,
|
|
excludeMms: (aConditions &
|
|
Ci.nsINetworkInterfaceListService.
|
|
LIST_NOT_INCLUDE_MMS_INTERFACES) != 0,
|
|
excludeIms: (aConditions &
|
|
Ci.nsINetworkInterfaceListService.
|
|
LIST_NOT_INCLUDE_IMS_INTERFACES) != 0,
|
|
excludeDun: (aConditions &
|
|
Ci.nsINetworkInterfaceListService.
|
|
LIST_NOT_INCLUDE_DUN_INTERFACES) != 0
|
|
}
|
|
)[0]);
|
|
}
|
|
};
|
|
|
|
function FakeNetworkInterface(aAttributes) {
|
|
this.state = aAttributes.state;
|
|
this.type = aAttributes.type;
|
|
this.name = aAttributes.name;
|
|
this.ips = aAttributes.ips;
|
|
this.prefixLengths = aAttributes.prefixLengths;
|
|
this.gateways = aAttributes.gateways;
|
|
this.dnses = aAttributes.dnses;
|
|
this.httpProxyHost = aAttributes.httpProxyHost;
|
|
this.httpProxyPort = aAttributes.httpProxyPort;
|
|
}
|
|
FakeNetworkInterface.prototype = {
|
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsINetworkInterface]),
|
|
|
|
getAddresses: function (ips, prefixLengths) {
|
|
ips.value = this.ips.slice();
|
|
prefixLengths.value = this.prefixLengths.slice();
|
|
|
|
return this.ips.length;
|
|
},
|
|
|
|
getGateways: function (count) {
|
|
if (count) {
|
|
count.value = this.gateways.length;
|
|
}
|
|
return this.gateways.slice();
|
|
},
|
|
|
|
getDnses: function (count) {
|
|
if (count) {
|
|
count.value = this.dnses.length;
|
|
}
|
|
return this.dnses.slice();
|
|
}
|
|
};
|
|
|
|
function NetworkInterfaceList (aInterfaceLiterals) {
|
|
this._interfaces = [];
|
|
for (let entry of aInterfaceLiterals) {
|
|
this._interfaces.push(new FakeNetworkInterface(entry));
|
|
}
|
|
}
|
|
|
|
NetworkInterfaceList.prototype = {
|
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsINetworkInterfaceList]),
|
|
|
|
getNumberOfInterface: function() {
|
|
return this._interfaces.length;
|
|
},
|
|
|
|
getInterface: function(index) {
|
|
if (!this._interfaces) {
|
|
return null;
|
|
}
|
|
return this._interfaces[index];
|
|
}
|
|
};
|
|
|
|
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([NetworkInterfaceListService]);
|
|
|