summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-network-information/www
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-09-10 14:58:03 -0400
committerJules Laplace <jules@okfoc.us>2015-09-10 14:58:03 -0400
commitd73a4b1c5a2540077607dcc4001acbae85980ae4 (patch)
treec30089f1742f9430bb18679dc6664157a5dc66f4 /StoneIsland/plugins/cordova-plugin-network-information/www
parent124e6c0a8d9577b4a30e0b265f5c23d637c41966 (diff)
app skeleton
Diffstat (limited to 'StoneIsland/plugins/cordova-plugin-network-information/www')
-rw-r--r--StoneIsland/plugins/cordova-plugin-network-information/www/Connection.js34
-rw-r--r--StoneIsland/plugins/cordova-plugin-network-information/www/browser/network.js92
-rw-r--r--StoneIsland/plugins/cordova-plugin-network-information/www/network.js91
3 files changed, 217 insertions, 0 deletions
diff --git a/StoneIsland/plugins/cordova-plugin-network-information/www/Connection.js b/StoneIsland/plugins/cordova-plugin-network-information/www/Connection.js
new file mode 100644
index 00000000..f20a485c
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-network-information/www/Connection.js
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.
+ *
+*/
+
+/**
+ * Network status
+ */
+module.exports = {
+ UNKNOWN: "unknown",
+ ETHERNET: "ethernet",
+ WIFI: "wifi",
+ CELL_2G: "2g",
+ CELL_3G: "3g",
+ CELL_4G: "4g",
+ CELL:"cellular",
+ NONE: "none"
+};
diff --git a/StoneIsland/plugins/cordova-plugin-network-information/www/browser/network.js b/StoneIsland/plugins/cordova-plugin-network-information/www/browser/network.js
new file mode 100644
index 00000000..72ec5139
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-network-information/www/browser/network.js
@@ -0,0 +1,92 @@
+/*
+ * 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 module, require*/
+
+var cordova = require('cordova'),
+ Connection = require('./Connection');
+
+var DOCUMENT_EVENTS_CHECK_INTERVAL = 500; // ms
+// Flag that indicates that ew need to re-fire online/offline events at document level
+// (Workaround for Chrome, since it fires such events only for window object)
+var NEED_FIRE_DOCUMENT_EVENT_MANUALLY = false;
+
+function NetworkConnection() {
+ this.type = Connection.UNKNOWN;
+}
+
+/**
+ * Get connection info
+ *
+ * @param {Function} successCallback The function to call when the Connection data is available
+ */
+NetworkConnection.prototype.getInfo = function(successCallback) {
+ successCallback(this.type);
+};
+
+Object.defineProperty(NetworkConnection.prototype, 'type', {
+ get: function () {
+ // It is not possible to determine real connection type in browser
+ // so we always report Connection.UNKNOWN when online
+ return (window.navigator.onLine === false ? Connection.NONE : Connection.UNKNOWN);
+ },
+ configurable: true,
+ enumerable: true
+});
+
+// This function tries to detect if document online/offline events is being fired
+// after corresponding window events, and if not, then fires them manually
+// This is workaround for Chrome, which fires only window online/offline events
+// and regarding to plugin spec we need these events at document object
+var eventRedirectHandler = function (e) {
+ // NEED_FIRE_DOCUMENT_EVENT_MANUALLY flag is already set,
+ // just fire corresponding document event and return
+ if (NEED_FIRE_DOCUMENT_EVENT_MANUALLY) {
+ cordova.fireDocumentEvent(e.type);
+ return;
+ }
+
+ // Flag that indicates whether corresponding document even is fired
+ var documentStateEventFired = false;
+ var setDocumentStateEventFired = function() {
+ documentStateEventFired = true;
+ };
+ document.addEventListener(e.type, setDocumentStateEventFired);
+ setTimeout(function () {
+ // Remove unnecessary listener
+ document.removeEventListener(e.type, setDocumentStateEventFired);
+ // if document event hasn't been fired in specified interval (500 ms by default),
+ // then we're in chrome and need to fire it manually
+ if (!documentStateEventFired) {
+ NEED_FIRE_DOCUMENT_EVENT_MANUALLY = true;
+ cordova.fireDocumentEvent(e.type);
+ }
+ }, DOCUMENT_EVENTS_CHECK_INTERVAL);
+};
+
+// Subscribe to native online/offline events
+window.addEventListener('online', eventRedirectHandler);
+window.addEventListener('offline', eventRedirectHandler);
+
+var me = new NetworkConnection();
+
+require("cordova/exec/proxy").add("NetworkStatus", { getConnectionInfo: me.getConnectionInfo });
+
+module.exports = me;
diff --git a/StoneIsland/plugins/cordova-plugin-network-information/www/network.js b/StoneIsland/plugins/cordova-plugin-network-information/www/network.js
new file mode 100644
index 00000000..ac792d8c
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-network-information/www/network.js
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ *
+*/
+
+var exec = require('cordova/exec'),
+ cordova = require('cordova'),
+ channel = require('cordova/channel'),
+ utils = require('cordova/utils');
+
+// Link the onLine property with the Cordova-supplied network info.
+// This works because we clobber the navigator object with our own
+// object in bootstrap.js.
+// Browser platform do not need to define this property, because
+// it is already supported by modern browsers
+if (cordova.platformId !== 'browser' && typeof navigator != 'undefined') {
+ utils.defineGetter(navigator, 'onLine', function() {
+ return this.connection.type != 'none';
+ });
+}
+
+function NetworkConnection() {
+ this.type = 'unknown';
+}
+
+/**
+ * Get connection info
+ *
+ * @param {Function} successCallback The function to call when the Connection data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
+ */
+NetworkConnection.prototype.getInfo = function(successCallback, errorCallback) {
+ exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []);
+};
+
+var me = new NetworkConnection();
+var timerId = null;
+var timeout = 500;
+
+channel.createSticky('onCordovaConnectionReady');
+channel.waitForInitialization('onCordovaConnectionReady');
+
+channel.onCordovaReady.subscribe(function() {
+ me.getInfo(function(info) {
+ me.type = info;
+ if (info === "none") {
+ // set a timer if still offline at the end of timer send the offline event
+ timerId = setTimeout(function(){
+ cordova.fireDocumentEvent("offline");
+ timerId = null;
+ }, timeout);
+ } else {
+ // If there is a current offline event pending clear it
+ if (timerId !== null) {
+ clearTimeout(timerId);
+ timerId = null;
+ }
+ cordova.fireDocumentEvent("online");
+ }
+
+ // should only fire this once
+ if (channel.onCordovaConnectionReady.state !== 2) {
+ channel.onCordovaConnectionReady.fire();
+ }
+ },
+ function (e) {
+ // If we can't get the network info we should still tell Cordova
+ // to fire the deviceready event.
+ if (channel.onCordovaConnectionReady.state !== 2) {
+ channel.onCordovaConnectionReady.fire();
+ }
+ console.log("Error initializing Network Connection: " + e);
+ });
+});
+
+module.exports = me;