mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 960426 - Part 4: Support Network Information API in Fifrefox OS. r=vchang
This commit is contained in:
parent
1165b217c9
commit
04d698a1a5
@ -107,6 +107,13 @@ const MOBILE_DUN_CONNECT_TIMEOUT = 30000;
|
||||
const MOBILE_DUN_RETRY_INTERVAL = 5000;
|
||||
const MOBILE_DUN_MAX_RETRIES = 5;
|
||||
|
||||
// Connection Type for Network Information API
|
||||
const CONNECTION_TYPE_CULLULAR = 0;
|
||||
const CONNECTION_TYPE_BLUETOOTH = 1;
|
||||
const CONNECTION_TYPE_ETHERNET = 2;
|
||||
const CONNECTION_TYPE_WIFI = 3;
|
||||
const CONNECTION_TYPE_OTHER = 4;
|
||||
const CONNECTION_TYPE_NONE = 5;
|
||||
|
||||
const DEBUG = false;
|
||||
|
||||
@ -280,7 +287,8 @@ NetworkManager.prototype = {
|
||||
#ifdef MOZ_B2G_RIL
|
||||
// Notify outer modules like MmsService to start the transaction after
|
||||
// the configuration of the network interface is done.
|
||||
Services.obs.notifyObservers(network, TOPIC_CONNECTION_STATE_CHANGED, null);
|
||||
Services.obs.notifyObservers(network, TOPIC_CONNECTION_STATE_CHANGED,
|
||||
this.convertConnectionType(network));
|
||||
#endif
|
||||
break;
|
||||
#ifdef MOZ_B2G_RIL
|
||||
@ -652,6 +660,27 @@ NetworkManager.prototype = {
|
||||
},
|
||||
#endif
|
||||
|
||||
convertConnectionType: function(network) {
|
||||
// If there is internal interface change (e.g., MOBILE_MMS, MOBILE_SUPL),
|
||||
// the function will return null so that it won't trigger type change event
|
||||
// in NetworkInformation API.
|
||||
if (network.type != Ci.nsINetworkInterface.NETWORK_TYPE_WIFI &&
|
||||
network.type != Ci.nsINetworkInterface.NETWORK_TYPE_MOBILE) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (network.state == Ci.nsINetworkInterface.NETWORK_STATE_DISCONNECTED) {
|
||||
return CONNECTION_TYPE_NONE;
|
||||
}
|
||||
|
||||
switch (network.type) {
|
||||
case Ci.nsINetworkInterface.NETWORK_TYPE_WIFI:
|
||||
return CONNECTION_TYPE_WIFI;
|
||||
case Ci.nsINetworkInterface.NETWORK_TYPE_MOBILE:
|
||||
return CONNECTION_TYPE_CULLULAR;
|
||||
}
|
||||
},
|
||||
|
||||
// nsISettingsServiceCallback
|
||||
|
||||
tetheringSettings: {},
|
||||
|
@ -956,6 +956,7 @@ nsAppShell::Init()
|
||||
nsCOMPtr<nsIObserverService> obsServ = GetObserverService();
|
||||
if (obsServ) {
|
||||
obsServ->AddObserver(this, "browser-ui-startup-complete", false);
|
||||
obsServ->AddObserver(this, "network-connection-state-changed", false);
|
||||
}
|
||||
|
||||
#ifdef MOZ_NUWA_PROCESS
|
||||
@ -973,19 +974,24 @@ nsAppShell::Observe(nsISupports* aSubject,
|
||||
const char* aTopic,
|
||||
const char16_t* aData)
|
||||
{
|
||||
if (strcmp(aTopic, "browser-ui-startup-complete")) {
|
||||
return nsBaseAppShell::Observe(aSubject, aTopic, aData);
|
||||
if (!strcmp(aTopic, "network-connection-state-changed")) {
|
||||
NS_ConvertUTF16toUTF8 type(aData);
|
||||
if (!type.IsEmpty()) {
|
||||
hal::NotifyNetworkChange(hal::NetworkInformation(atoi(type.get()), 0, 0));
|
||||
}
|
||||
return NS_OK;
|
||||
} else if (!strcmp(aTopic, "browser-ui-startup-complete")) {
|
||||
if (sDevInputAudioJack) {
|
||||
sHeadphoneState = mReader->getSwitchState(-1, AINPUT_SOURCE_SWITCH, SW_HEADPHONE_INSERT);
|
||||
sMicrophoneState = mReader->getSwitchState(-1, AINPUT_SOURCE_SWITCH, SW_MICROPHONE_INSERT);
|
||||
updateHeadphoneSwitch();
|
||||
}
|
||||
mEnableDraw = true;
|
||||
NotifyEvent();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (sDevInputAudioJack) {
|
||||
sHeadphoneState = mReader->getSwitchState(-1, AINPUT_SOURCE_SWITCH, SW_HEADPHONE_INSERT);
|
||||
sMicrophoneState = mReader->getSwitchState(-1, AINPUT_SOURCE_SWITCH, SW_MICROPHONE_INSERT);
|
||||
updateHeadphoneSwitch();
|
||||
}
|
||||
|
||||
mEnableDraw = true;
|
||||
NotifyEvent();
|
||||
return NS_OK;
|
||||
return nsBaseAppShell::Observe(aSubject, aTopic, aData);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -995,6 +1001,7 @@ nsAppShell::Exit()
|
||||
nsCOMPtr<nsIObserverService> obsServ = GetObserverService();
|
||||
if (obsServ) {
|
||||
obsServ->RemoveObserver(this, "browser-ui-startup-complete");
|
||||
obsServ->RemoveObserver(this, "network-connection-state-changed");
|
||||
}
|
||||
return nsBaseAppShell::Exit();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user