Bug 1158029 - Part 2: mDNS XPCOM module using NsdManager. r=mcmanus
This commit is contained in:
@@ -28,8 +28,8 @@ static const mozilla::Module::ContractIDEntry kPresentationDeviceProviderContrac
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const mozilla::Module::CategoryEntry kPresentationDeviceProviderCategories[] = {
|
static const mozilla::Module::CategoryEntry kPresentationDeviceProviderCategories[] = {
|
||||||
#if 0 // defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 16
|
#if defined(MOZ_WIDGET_ANDROID) // || (defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 16)
|
||||||
{ PRESENTATION_DEVICE_PROVIDER_CATEGORY, "MulticastDNSDeviceProvider", MULTICAST_DNS_PROVIDER_CONTRACT_ID},
|
{ PRESENTATION_DEVICE_PROVIDER_CATEGORY, "MulticastDNSDeviceProvider", MULTICAST_DNS_PROVIDER_CONTRACT_ID },
|
||||||
#endif
|
#endif
|
||||||
{ nullptr }
|
{ nullptr }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -321,6 +321,8 @@
|
|||||||
@BINPATH@/components/BrowserComponents.manifest
|
@BINPATH@/components/BrowserComponents.manifest
|
||||||
@BINPATH@/components/nsBrowserContentHandler.js
|
@BINPATH@/components/nsBrowserContentHandler.js
|
||||||
@BINPATH@/components/nsBrowserGlue.js
|
@BINPATH@/components/nsBrowserGlue.js
|
||||||
|
@BINPATH@/components/nsDNSServiceDiscovery.manifest
|
||||||
|
@BINPATH@/components/nsDNSServiceDiscovery.js
|
||||||
@BINPATH@/components/nsSetDefaultBrowser.manifest
|
@BINPATH@/components/nsSetDefaultBrowser.manifest
|
||||||
@BINPATH@/components/nsSetDefaultBrowser.js
|
@BINPATH@/components/nsSetDefaultBrowser.js
|
||||||
@BINPATH@/components/toolkitsearch.manifest
|
@BINPATH@/components/toolkitsearch.manifest
|
||||||
|
|||||||
@@ -4,8 +4,13 @@
|
|||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
|
||||||
|
EXTRA_COMPONENTS += [
|
||||||
|
'nsDNSServiceDiscovery.js',
|
||||||
|
'nsDNSServiceDiscovery.manifest',
|
||||||
|
]
|
||||||
|
|
||||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['ANDROID_VERSION'] >= '16':
|
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['ANDROID_VERSION'] >= '16':
|
||||||
UNIFIED_SOURCES += [
|
UNIFIED_SOURCES += [
|
||||||
'MDNSResponderOperator.cpp',
|
'MDNSResponderOperator.cpp',
|
||||||
'MDNSResponderReply.cpp',
|
'MDNSResponderReply.cpp',
|
||||||
|
|||||||
123
netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js
Normal file
123
netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
/* 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, results: Cr, utils: Cu } = Components;
|
||||||
|
|
||||||
|
Cu.import("resource://gre/modules/MulticastDNS.jsm");
|
||||||
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||||
|
|
||||||
|
const DNSSERVICEDISCOVERY_CID = Components.ID("{f9346d98-f27a-4e89-b744-493843416480}");
|
||||||
|
const DNSSERVICEDISCOVERY_CONTRACT_ID = "@mozilla.org/toolkit/components/mdnsresponder/dns-sd;1";
|
||||||
|
const DNSSERVICEINFO_CONTRACT_ID = "@mozilla.org/toolkit/components/mdnsresponder/dns-info;1";
|
||||||
|
|
||||||
|
function log(aMsg) {
|
||||||
|
dump("-*- nsDNSServiceDiscovery.js : " + aMsg + "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper class to transform return objects to correct type.
|
||||||
|
function ListenerWrapper(aListener) {
|
||||||
|
this.listener = aListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListenerWrapper.prototype = {
|
||||||
|
// Helper function for transforming an Object into nsIDNSServiceInfo.
|
||||||
|
makeServiceInfo: function (aServiceInfo) {
|
||||||
|
let serviceInfo = Cc[DNSSERVICEINFO_CONTRACT_ID].createInstance(Ci.nsIDNSServiceInfo);
|
||||||
|
|
||||||
|
for (let name of ['host', 'port', 'serviceName', 'serviceType']) {
|
||||||
|
try {
|
||||||
|
serviceInfo[name] = aServiceInfo[name];
|
||||||
|
} catch (e) {
|
||||||
|
// ignore exceptions
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return serviceInfo;
|
||||||
|
},
|
||||||
|
|
||||||
|
/* transparent types */
|
||||||
|
onDiscoveryStarted: function(aServiceType) {
|
||||||
|
this.listener.onDiscoveryStarted(aServiceType);
|
||||||
|
},
|
||||||
|
onDiscoveryStopped: function(aServiceType) {
|
||||||
|
this.listener.onDiscoveryStopped(aServiceType);
|
||||||
|
},
|
||||||
|
onStartDiscoveryFailed: function(aServiceType, aErrorCode) {
|
||||||
|
this.listener.onStartDiscoveryFailed(aServiceType);
|
||||||
|
},
|
||||||
|
onStopDiscoveryFailed: function(aServiceType, aErrorCode) {
|
||||||
|
this.listener.onStopDiscoveryFailed(aServiceType);
|
||||||
|
},
|
||||||
|
|
||||||
|
/* transform types */
|
||||||
|
onServiceFound: function(aServiceInfo) {
|
||||||
|
this.listener.onServiceFound(this.makeServiceInfo(aServiceInfo));
|
||||||
|
},
|
||||||
|
onServiceLost: function(aServiceInfo) {
|
||||||
|
this.listener.onServiceLost(this.makeServiceInfo(aServiceInfo));
|
||||||
|
},
|
||||||
|
onServiceRegistered: function(aServiceInfo) {
|
||||||
|
this.listener.onServiceRegistered(this.makeServiceInfo(aServiceInfo));
|
||||||
|
},
|
||||||
|
onServiceUnregistered: function(aServiceInfo) {
|
||||||
|
this.listener.onServiceUnregistered(this.makeServiceInfo(aServiceInfo));
|
||||||
|
},
|
||||||
|
onServiceResolved: function(aServiceInfo) {
|
||||||
|
this.listener.onServiceResolved(this.makeServiceInfo(aServiceInfo));
|
||||||
|
},
|
||||||
|
|
||||||
|
onRegistrationFailed: function(aServiceInfo, aErrorCode) {
|
||||||
|
this.listener.onRegistrationFailed(this.makeServiceInfo(aServiceInfo), aErrorCode);
|
||||||
|
},
|
||||||
|
onUnregistrationFailed: function(aServiceInfo, aErrorCode) {
|
||||||
|
this.listener.onUnregistrationFailed(this.makeServiceInfo(aServiceInfo), aErrorCode);
|
||||||
|
},
|
||||||
|
onResolveFailed: function(aServiceInfo, aErrorCode) {
|
||||||
|
this.listener.onResolveFailed(this.makeServiceInfo(aServiceInfo), aErrorCode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function nsDNSServiceDiscovery() {
|
||||||
|
log("nsDNSServiceDiscovery");
|
||||||
|
this.mdns = new MulticastDNS();
|
||||||
|
}
|
||||||
|
|
||||||
|
nsDNSServiceDiscovery.prototype = {
|
||||||
|
classID: DNSSERVICEDISCOVERY_CID,
|
||||||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIDNSServiceDiscovery]),
|
||||||
|
|
||||||
|
startDiscovery: function(aServiceType, aListener) {
|
||||||
|
log("startDiscovery");
|
||||||
|
let listener = new ListenerWrapper(aListener);
|
||||||
|
this.mdns.startDiscovery(aServiceType, listener);
|
||||||
|
|
||||||
|
return {
|
||||||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsICancelable]),
|
||||||
|
cancel: (function() {
|
||||||
|
this.mdns.stopDiscovery(aServiceType, listener);
|
||||||
|
}).bind(this)
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
registerService: function(aServiceInfo, aListener) {
|
||||||
|
log("registerService");
|
||||||
|
let listener = new ListenerWrapper(aListener);
|
||||||
|
this.mdns.registerService(aServiceInfo, listener);
|
||||||
|
|
||||||
|
return {
|
||||||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsICancelable]),
|
||||||
|
cancel: (function() {
|
||||||
|
this.mdns.unregisterService(aServiceInfo, listener);
|
||||||
|
}).bind(this)
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
resolveService: function(aServiceInfo, aListener) {
|
||||||
|
log("resolveService");
|
||||||
|
this.mdns.resolveService(aServiceInfo, new ListenerWrapper(aListener));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([nsDNSServiceDiscovery]);
|
||||||
3
netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.manifest
Normal file
3
netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.manifest
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# nsDNSServiceDiscovery.js
|
||||||
|
component {f9346d98-f27a-4e89-b744-493843416480} nsDNSServiceDiscovery.js
|
||||||
|
contract @mozilla.org/toolkit/components/mdnsresponder/dns-sd;1 {f9346d98-f27a-4e89-b744-493843416480}
|
||||||
Reference in New Issue
Block a user