You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2014/08/07 22:22:51 UTC
[08/14] git commit: CB-5114 Windows 8.1 - Use a new proxy as old
geolocation methods is deprecated
CB-5114 Windows 8.1 - Use a new proxy as old geolocation methods is deprecated
* Added separate section for Windows Univeral Apps
* Made GeolocationProxy compatible with windows8.0 and 8.1 api versions
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/commit/4137f9dd
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/tree/4137f9dd
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/diff/4137f9dd
Branch: refs/heads/master
Commit: 4137f9dd4c83c118912a582a3bb414c1167ed6cb
Parents: e9eaa78
Author: sgrebnov <v-...@microsoft.com>
Authored: Fri Jul 11 17:52:03 2014 +0400
Committer: sgrebnov <v-...@microsoft.com>
Committed: Fri Jul 11 17:52:03 2014 +0400
----------------------------------------------------------------------
plugin.xml | 53 ++++++++---
src/windows/GeolocationProxy.js | 166 +++++++++++++++++++++++++++++++++
src/windows8/GeolocationProxy.js | 157 -------------------------------
src/windows81/GeolocationProxy.js | 157 -------------------------------
4 files changed, 208 insertions(+), 325 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/4137f9dd/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 5996fbe..d4b3b89 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -191,24 +191,55 @@ xmlns:android="http://schemas.android.com/apk/res/android"
<config-file target="package.appxmanifest" parent="/Package/Capabilities">
<DeviceCapability Name="location" />
</config-file>
+
+ <js-module src="src/windows/GeolocationProxy.js" name="GeolocationProxy">
+ <runs />
+ </js-module>
+
+ <js-module src="www/Coordinates.js" name="Coordinates">
+ <clobbers target="Coordinates" />
+ </js-module>
+
<js-module src="www/PositionError.js" name="PositionError">
<clobbers target="PositionError" />
</js-module>
- <js-module src="src/windows8/GeolocationProxy.js" name="GeolocationProxy">
- <merges target="" />
+
+ <js-module src="www/Position.js" name="Position">
+ <clobbers target="Position" />
+ </js-module>
+
+ <js-module src="www/geolocation.js" name="geolocation">
+ <clobbers target="navigator.geolocation" />
</js-module>
</platform>
- <!-- windows81 -->
- <platform name="windows81">
- <config-file target="package.appxmanifest" parent="/Package/Capabilities">
- <DeviceCapability Name="location" />
- </config-file>
- <js-module src="src/windows81/GeolocationProxy.js" name="GeolocationProxy">
- <merges target="" />
- </js-module>
- </platform>
+ <!-- windows universal apps (Windows 8.1, Windows Phone 8.1, Windows 8.0) -->
+ <platform name="windows">
+ <config-file target="package.appxmanifest" parent="/Package/Capabilities">
+ <DeviceCapability Name="location" />
+ </config-file>
+ <js-module src="src/windows/GeolocationProxy.js" name="GeolocationProxy">
+ <runs />
+ </js-module>
+
+ <js-module src="www/Coordinates.js" name="Coordinates">
+ <clobbers target="Coordinates" />
+ </js-module>
+
+ <js-module src="www/PositionError.js" name="PositionError">
+ <clobbers target="PositionError" />
+ </js-module>
+
+ <js-module src="www/Position.js" name="Position">
+ <clobbers target="Position" />
+ </js-module>
+
+ <js-module src="www/geolocation.js" name="geolocation">
+ <clobbers target="navigator.geolocation" />
+ </js-module>
+ </platform>
+
<!-- firefoxos -->
<platform name="firefoxos">
<config-file target="config.xml" parent="/*">
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/4137f9dd/src/windows/GeolocationProxy.js
----------------------------------------------------------------------
diff --git a/src/windows/GeolocationProxy.js b/src/windows/GeolocationProxy.js
new file mode 100644
index 0000000..bafff6d
--- /dev/null
+++ b/src/windows/GeolocationProxy.js
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2013 Research In Motion Limited.
+ *
+ * Licensed 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 PositionError = require('./PositionError'),
+ ids = {},
+ loc;
+
+function ensureLocator() {
+ if (loc == null)
+ loc = new Windows.Devices.Geolocation.Geolocator();
+
+ return loc;
+}
+
+function createErrorCode() {
+ switch (loc.locationStatus) {
+ case Windows.Devices.Geolocation.PositionStatus.initializing:
+ // This status indicates that a location device is still initializing
+ case Windows.Devices.Geolocation.PositionStatus.noData:
+ // No location data is currently available
+ case Windows.Devices.Geolocation.PositionStatus.notInitialized:
+ // This status indicates that the app has not yet requested
+ // location data by calling GetGeolocationAsync() or
+ // registering an event handler for the positionChanged event.
+ case Windows.Devices.Geolocation.PositionStatus.notAvailable:
+ // Location is not available on this version of Windows
+ return PositionError.POSITION_UNAVAILABLE;
+
+ case Windows.Devices.Geolocation.PositionStatus.disabled:
+ // The app doesn't have permission to access location,
+ // either because location has been turned off.
+ return PositionError.PERMISSION_DENIED;
+
+ default:
+ break;
+ }
+}
+function createResult(pos) {
+ var res = {
+ accuracy: pos.coordinate.accuracy,
+ heading: pos.coordinate.heading,
+ velocity: pos.coordinate.speed,
+ altitudeAccuracy: pos.coordinate.altitudeAccuracy,
+ timestamp: pos.coordinate.timestamp
+ }
+
+ if (pos.coordinate.point) {
+ res.latitude = pos.coordinate.point.position.latitude;
+ res.longitude = pos.coordinate.point.position.longitude;
+ res.altitude = pos.coordinate.point.position.altitude;
+ } else { // compatibility with old windows8.0 api
+ res.latitude = pos.coordinate.latitude;
+ res.longitude = pos.coordinate.longitude;
+ res.altitude = pos.coordinate.altitude;
+ }
+
+ return res;
+}
+
+module.exports = {
+ getLocation: function (success, fail, args, env) {
+ ensureLocator();
+ if (loc != null)
+ {
+ var highAccuracy = args[0],
+ maxAge = args[1];
+
+ loc.desiredAccuracy = highAccuracy ?
+ Windows.Devices.Geolocation.PositionAccuracy.high :
+ Windows.Devices.Geolocation.PositionAccuracy.default;
+
+ loc.reportInterval = maxAge ? maxAge : 0;
+
+ loc.getGeopositionAsync().then(
+ function (pos) {
+ success(createResult(pos));
+ },
+ function (err) {
+ fail({
+ code: createErrorCode(),
+ message: err.message
+ });
+ }
+ );
+ }
+ else
+ {
+ fail({
+ code: PositionError.POSITION_UNAVAILABLE,
+ message: "You do not have the required location services present on your system."
+ });
+ }
+ },
+
+ addWatch: function (success, fail, args, env) {
+ ensureLocator();
+ var clientId = args[0],
+ highAccuracy = args[1],
+
+ onPositionChanged = function (e) {
+ success(createResult(e.position));
+ },
+
+ onStatusChanged = function (e) {
+ switch (e.status) {
+ case Windows.Devices.Geolocation.PositionStatus.noData:
+ case Windows.Devices.Geolocation.PositionStatus.notAvailable:
+ fail({
+ code: PositionError.POSITION_UNAVAILABLE,
+ message: "Data from location services is currently unavailable or you do not have the required location services present on your system."
+ });
+ break;
+
+ case Windows.Devices.Geolocation.PositionStatus.disabled:
+ fail({
+ code: PositionError.PERMISSION_DENIED,
+ message: "Your location is currently turned off."
+ });
+ break;
+
+ case Windows.Devices.Geolocation.PositionStatus.initializing:
+ case Windows.Devices.Geolocation.PositionStatus.ready:
+ default:
+ break;
+ }
+ };
+
+ loc.desiredAccuracy = highAccuracy ?
+ Windows.Devices.Geolocation.PositionAccuracy.high :
+ Windows.Devices.Geolocation.PositionAccuracy.default;
+
+ loc.addEventListener("positionchanged", onPositionChanged);
+ loc.addEventListener("statuschanged", onStatusChanged);
+
+ ids[clientId] = { pos: onPositionChanged, status: onStatusChanged };
+ },
+
+ clearWatch: function (success, fail, args, env) {
+ var clientId = args[0],
+ callbacks = ids[clientId];
+
+ if (callbacks) {
+ loc.removeEventListener("positionchanged", callbacks.pos);
+ loc.removeEventListener("statuschanged", callbacks.status);
+
+ delete ids[clientId];
+ }
+
+ success && success();
+ }
+};
+
+require("cordova/exec/proxy").add("Geolocation", module.exports);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/4137f9dd/src/windows8/GeolocationProxy.js
----------------------------------------------------------------------
diff --git a/src/windows8/GeolocationProxy.js b/src/windows8/GeolocationProxy.js
deleted file mode 100644
index 6fca696..0000000
--- a/src/windows8/GeolocationProxy.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2013 Research In Motion Limited.
- *
- * Licensed 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 PositionError = require('./PositionError'),
- ids = {},
- loc;
-
-function ensureLocator() {
- if (loc == null)
- loc = new Windows.Devices.Geolocation.Geolocator();
-
- return loc;
-}
-
-function createErrorCode() {
- switch (loc.locationStatus) {
- case Windows.Devices.Geolocation.PositionStatus.initializing:
- // This status indicates that a location device is still initializing
- case Windows.Devices.Geolocation.PositionStatus.noData:
- // No location data is currently available
- case Windows.Devices.Geolocation.PositionStatus.notInitialized:
- // This status indicates that the app has not yet requested
- // location data by calling GetGeolocationAsync() or
- // registering an event handler for the positionChanged event.
- case Windows.Devices.Geolocation.PositionStatus.notAvailable:
- // Location is not available on this version of Windows
- return PositionError.POSITION_UNAVAILABLE;
-
- case Windows.Devices.Geolocation.PositionStatus.disabled:
- // The app doesn't have permission to access location,
- // either because location has been turned off.
- return PositionError.PERMISSION_DENIED;
-
- default:
- break;
- }
-}
-function createResult(pos) {
- return {
- latitude: pos.coordinate.latitude,
- longitude: pos.coordinate.longitude,
- altitude: pos.coordinate.altitude,
- accuracy: pos.coordinate.accuracy,
- heading: pos.coordinate.heading,
- velocity: pos.coordinate.speed,
- altitudeAccuracy: pos.coordinate.altitudeAccuracy,
- timestamp: pos.coordinate.timestamp
- };
-}
-
-module.exports = {
- getLocation: function (success, fail, args, env) {
- ensureLocator();
- if (loc != null)
- {
- var highAccuracy = args[0],
- maxAge = args[1];
-
- loc.desiredAccuracy = highAccuracy ?
- Windows.Devices.Geolocation.PositionAccuracy.high :
- Windows.Devices.Geolocation.PositionAccuracy.default;
-
- loc.reportInterval = maxAge ? maxAge : 0;
-
- loc.getGeopositionAsync().then(
- function (pos) {
- success(getResult(pos));
- },
- function (err) {
- fail({
- code: createErrorCode(),
- message: err.message
- });
- }
- );
- }
- else
- {
- fail({
- code: PositionError.POSITION_UNAVAILABLE,
- message: "You do not have the required location services present on your system."
- });
- }
- },
-
- addWatch: function (success, fail, args, env) {
- ensureLocator();
- var clientId = args[0],
- highAccuracy = args[1],
-
- onPositionChanged = function (e) {
- success(getResult(e.position));
- },
-
- onStatusChanged = function (e) {
- switch (e.status) {
- case Windows.Devices.Geolocation.PositionStatus.noData:
- case Windows.Devices.Geolocation.PositionStatus.notAvailable:
- fail({
- code: PositionError.POSITION_UNAVAILABLE,
- message: "Data from location services is currently unavailable or you do not have the required location services present on your system."
- });
- break;
-
- case Windows.Devices.Geolocation.PositionStatus.disabled:
- fail({
- code: PositionError.PERMISSION_DENIED,
- message: "Your location is currently turned off."
- });
- break;
-
- case Windows.Devices.Geolocation.PositionStatus.initializing:
- case Windows.Devices.Geolocation.PositionStatus.ready:
- default:
- break;
- }
- };
-
- loc.desiredAccuracy = highAccuracy ?
- Windows.Devices.Geolocation.PositionAccuracy.high :
- Windows.Devices.Geolocation.PositionAccuracy.default;
-
- loc.addEventListener("positionchanged", onPositionChanged);
- loc.addEventListener("statuschanged", onStatusChanged);
-
- ids[clientId] = { pos: onPositionChanged, status: onStatusChanged };
- },
-
- clearWatch: function (success, fail, args, env) {
- var clientId = args[0],
- callbacks = ids[clientId];
-
- if (callbacks) {
- loc.removeEventListener("positionchanged", callbacks.pos);
- loc.removeEventListener("statuschanged", callbacks.status);
-
- delete ids[clientId];
- }
-
- success && success();
- }
-};
-
-require("cordova/exec/proxy").add("Geolocation", module.exports);
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/4137f9dd/src/windows81/GeolocationProxy.js
----------------------------------------------------------------------
diff --git a/src/windows81/GeolocationProxy.js b/src/windows81/GeolocationProxy.js
deleted file mode 100644
index c954a4b..0000000
--- a/src/windows81/GeolocationProxy.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2013 Research In Motion Limited.
- *
- * Licensed 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 PositionError = require('./PositionError'),
- ids = {},
- loc;
-
-function ensureLocator() {
- if (loc == null)
- loc = new Windows.Devices.Geolocation.Geolocator();
-
- return loc;
-}
-
-function createErrorCode() {
- switch (loc.locationStatus) {
- case Windows.Devices.Geolocation.PositionStatus.initializing:
- // This status indicates that a location device is still initializing
- case Windows.Devices.Geolocation.PositionStatus.noData:
- // No location data is currently available
- case Windows.Devices.Geolocation.PositionStatus.notInitialized:
- // This status indicates that the app has not yet requested
- // location data by calling GetGeolocationAsync() or
- // registering an event handler for the positionChanged event.
- case Windows.Devices.Geolocation.PositionStatus.notAvailable:
- // Location is not available on this version of Windows
- return PositionError.POSITION_UNAVAILABLE;
-
- case Windows.Devices.Geolocation.PositionStatus.disabled:
- // The app doesn't have permission to access location,
- // either because location has been turned off.
- return PositionError.PERMISSION_DENIED;
-
- default:
- break;
- }
-}
-function createResult(pos) {
- return {
- latitude: pos.coordinate.point.position.latitude,
- longitude: pos.coordinate.point.position.longitude,
- altitude: pos.coordinate.point.position.altitude,
- accuracy: pos.coordinate.accuracy,
- heading: pos.coordinate.heading,
- velocity: pos.coordinate.speed,
- altitudeAccuracy: pos.coordinate.altitudeAccuracy,
- timestamp: pos.coordinate.timestamp
- };
-}
-
-module.exports = {
- getLocation: function (success, fail, args, env) {
- ensureLocator();
- if (loc != null)
- {
- var highAccuracy = args[0],
- maxAge = args[1];
-
- loc.desiredAccuracy = highAccuracy ?
- Windows.Devices.Geolocation.PositionAccuracy.high :
- Windows.Devices.Geolocation.PositionAccuracy.default;
-
- loc.reportInterval = maxAge ? maxAge : 0;
-
- loc.getGeopositionAsync().then(
- function (pos) {
- success(createResult(pos));
- },
- function (err) {
- fail({
- code: createErrorCode(),
- message: err.message
- });
- }
- );
- }
- else
- {
- fail({
- code: PositionError.POSITION_UNAVAILABLE,
- message: "You do not have the required location services present on your system."
- });
- }
- },
-
- addWatch: function (success, fail, args, env) {
- ensureLocator();
- var clientId = args[0],
- highAccuracy = args[1],
-
- onPositionChanged = function (e) {
- success(createResult(e.position));
- },
-
- onStatusChanged = function (e) {
- switch (e.status) {
- case Windows.Devices.Geolocation.PositionStatus.noData:
- case Windows.Devices.Geolocation.PositionStatus.notAvailable:
- fail({
- code: PositionError.POSITION_UNAVAILABLE,
- message: "Data from location services is currently unavailable or you do not have the required location services present on your system."
- });
- break;
-
- case Windows.Devices.Geolocation.PositionStatus.disabled:
- fail({
- code: PositionError.PERMISSION_DENIED,
- message: "Your location is currently turned off."
- });
- break;
-
- case Windows.Devices.Geolocation.PositionStatus.initializing:
- case Windows.Devices.Geolocation.PositionStatus.ready:
- default:
- break;
- }
- };
-
- loc.desiredAccuracy = highAccuracy ?
- Windows.Devices.Geolocation.PositionAccuracy.high :
- Windows.Devices.Geolocation.PositionAccuracy.default;
-
- loc.addEventListener("positionchanged", onPositionChanged);
- loc.addEventListener("statuschanged", onStatusChanged);
-
- ids[clientId] = { pos: onPositionChanged, status: onStatusChanged };
- },
-
- clearWatch: function (success, fail, args, env) {
- var clientId = args[0],
- callbacks = ids[clientId];
-
- if (callbacks) {
- loc.removeEventListener("positionchanged", callbacks.pos);
- loc.removeEventListener("statuschanged", callbacks.status);
-
- delete ids[clientId];
- }
-
- success && success();
- }
-};
-
-require("cordova/windows8/commandProxy").add("Geolocation", module.exports);
\ No newline at end of file