/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ /*global Windows:true */ var Connection = require('./Connection'); var winNetConn = Windows.Networking.Connectivity; var networkInfo = winNetConn.NetworkInformation; function getCurrrentConnectionType() { var profile = networkInfo.getInternetConnectionProfile(); if (!profile) { return Connection.NONE; } var conLevel = profile.getNetworkConnectivityLevel(); var interfaceType = profile.networkAdapter.ianaInterfaceType; // since we use this to detect whether we are online or offline we do check agains InternetAccess // localAccess (airplane mode as an example) or constrainedInternetAccess mean there is no access to the internet available // https://msdn.microsoft.com/library/windows/apps/windows.networking.connectivity.networkconnectivitylevel.aspx if (conLevel != Windows.Networking.Connectivity.NetworkConnectivityLevel.internetAccess) { return Connection.NONE; } var connectionType; switch (interfaceType) { case 71: connectionType = Connection.WIFI; break; case 6: connectionType = Connection.ETHERNET; break; case 243: // (3GPP WWAN) // Fallthrough is intentional case 244: // (3GPP2 WWAN) connectionType = Connection.CELL_3G; break; default: connectionType = Connection.UNKNOWN; break; } return connectionType; } module.exports = { getConnectionInfo:function(win,fail,args) { var reportConnectionInfoOnce = function () { win(getCurrrentConnectionType(), { keepCallback: true }); }; // report current connection type setTimeout(reportConnectionInfoOnce, 0); // start traking future changes networkInfo.addEventListener("networkstatuschanged", reportConnectionInfoOnce); } }; require("cordova/exec/proxy").add("NetworkStatus",module.exports);