You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2017/05/30 18:50:02 UTC

git commit: [flex-asjs] [refs/heads/release0.8.0] - Update mobile Cordova Camera package so that it works again on Android and Air. Note that PhotoLibrary (for Cordova) is not available in this release.

Repository: flex-asjs
Updated Branches:
  refs/heads/release0.8.0 ff24a87c6 -> 4c2928367


Update mobile Cordova Camera package so that it works again on Android and Air. Note that PhotoLibrary (for Cordova) is not available in this release.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/4c292836
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/4c292836
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/4c292836

Branch: refs/heads/release0.8.0
Commit: 4c292836760365cd78b2b0a295751de3b6362022
Parents: ff24a87
Author: Peter Ent <pe...@apache.org>
Authored: Tue May 30 14:49:59 2017 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Tue May 30 14:49:59 2017 -0400

----------------------------------------------------------------------
 .../Mobile/src/main/flex/CordovaClasses.as      |   8 +-
 .../main/flex/org/apache/cordova/Application.as |  86 ---------
 .../src/main/flex/org/apache/cordova/Weinre.as  |  88 ---------
 .../flex/org/apache/cordova/camera/Camera.as    | 192 -------------------
 .../apache/cordova/geolocation/Geolocation.as   |  61 ------
 .../flex/org/apache/flex/cordova/Application.as |  86 +++++++++
 .../main/flex/org/apache/flex/cordova/Camera.as | 173 +++++++++++++++++
 .../main/flex/org/apache/flex/cordova/Weinre.as |  88 +++++++++
 .../flex/cordova/geolocation/Geolocation.as     |  61 ++++++
 .../src/main/resources/cordova-manifest.xml     |   8 +-
 10 files changed, 416 insertions(+), 435 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/CordovaClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/CordovaClasses.as b/frameworks/projects/Mobile/src/main/flex/CordovaClasses.as
index 1c0b98e..73a73a8 100644
--- a/frameworks/projects/Mobile/src/main/flex/CordovaClasses.as
+++ b/frameworks/projects/Mobile/src/main/flex/CordovaClasses.as
@@ -27,10 +27,10 @@ package
  */
 internal class CordovaClasses
 {
-	import org.apache.cordova.camera.Camera; Camera;
-	import org.apache.cordova.Application; Application;
-	import org.apache.cordova.Weinre; Weinre;
-	import org.apache.cordova.geolocation.Geolocation; Geolocation;
+	import org.apache.flex.cordova.Camera; Camera;
+	import org.apache.flex.cordova.Application; Application;
+	import org.apache.flex.cordova.Weinre; Weinre;
+	import org.apache.flex.cordova.geolocation.Geolocation; Geolocation;
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Application.as b/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Application.as
deleted file mode 100644
index 2564637..0000000
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Application.as
+++ /dev/null
@@ -1,86 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.cordova
-{
-	import org.apache.flex.events.Event;
-	import org.apache.flex.core.Application;
-	import org.apache.flex.core.IFlexInfo;
-
-	/**
-	 *  A customized Application that dispatches the Cordova deviceReady event
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10.2
-	 *  @playerversion AIR 2.6
-	 *  @productversion FlexJS 0.0
-	 */
-	public class Application extends org.apache.flex.core.Application implements IFlexInfo
-	{
-		/**
-		 * FalconJX will inject html into the index.html file.  Surround with
-		 * "inject_html" tag as follows:
-		 *
-		 * <inject_html>
-		 * <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
-		 * <script type="text/javascript" src="cordova.js"></script>
-		 * </inject_html>
-		 */
-		public function Application()
-		{
-			super();
-		}
-		
-		public var isDeviceReady:Boolean = false
-		
-		/**
-		 * @private
-		 */
-		COMPILE::JS
-		override public function start():void
-		{
-			// listen for Cordova's deviceReady event
-			document.addEventListener("deviceReady", startOnReady, false);
-			
-			// listen for preinitialize event which will be cancelled until
-			// the Cordova 'deviceReady' event is received.
-			addEventListener("preinitialize", handlePreInit);
-			
-			super.start();
-		}
-		
-		/**
-		 * @private
-		 */
-		private function handlePreInit(event:Event):void
-		{
-			if (!isDeviceReady) {
-				event.preventDefault(); // basically, cancel the event until the device is ready
-			}
-		}
-		
-		/**
-		 * @private
-		 */
-		private function startOnReady(event:*):void
-		{
-			isDeviceReady = true;
-			removeEventListener("preinitialize", handlePreInit);
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Weinre.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Weinre.as b/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Weinre.as
deleted file mode 100644
index ae32d47..0000000
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/Weinre.as
+++ /dev/null
@@ -1,88 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.cordova
-{
-    COMPILE::SWF
-    {
-        import flash.net.URLRequest;
-        import flash.net.navigateToURL;            
-    }
-	
-	import org.apache.flex.core.IBead;
-	import org.apache.flex.core.IStrand;
-	
-	/**
-	 *  A class that helps set up to use Weinre for debugging
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10.2
-	 *  @playerversion AIR 2.6
-	 *  @productversion FlexJS 0.0
-	 */
-	public class Weinre implements IBead
-	{
-		public function Weinre()
-		{
-		}
-
-		private var _strand:IStrand;
-		
-		/**
-		 *  @copy org.apache.flex.core.IBead#strand
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function set strand(value:IStrand):void
-		{
-			_strand = value;
-		}
-		
-		/**
-		 *  The guid to use at the Weinre server
-		 *  http://debug.phonegap.com
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-         *  @flexjsignorecoercion HTMLScriptElement
-         *  @flexjsignorecoercion HTMLHeadElement
-		 */
-		public function set guid(value:String):void
-		{
-            COMPILE::SWF
-            {
-                navigateToURL(new URLRequest("http://debug.phonegap.com/client/#" + value), "_blank");                    
-            }
-            COMPILE::JS
-            {
-                var scriptNode:HTMLScriptElement = document.createElement('SCRIPT') as HTMLScriptElement;
-                scriptNode.type = 'text/javascript';
-                scriptNode.src = 'http://debug.phonegap.com/target/target-script-min.js#' + value;
-                
-                var headNode:HTMLHeadElement = document.getElementsByTagName('HEAD') as HTMLHeadElement;
-                if (headNode[0] != null)
-                    headNode[0].appendChild(scriptNode);
-            }
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/camera/Camera.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/camera/Camera.as b/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/camera/Camera.as
deleted file mode 100644
index 8adf787..0000000
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/camera/Camera.as
+++ /dev/null
@@ -1,192 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.cordova.camera
-{
-    COMPILE::SWF
-    {
-        import flash.display.BitmapData;
-        import flash.display.DisplayObject;
-        import flash.display.DisplayObjectContainer;
-        import flash.display.Sprite;
-        import flash.events.ActivityEvent;
-        import flash.events.KeyboardEvent;
-        import flash.events.MouseEvent;
-        import flash.filesystem.File;
-        import flash.filesystem.FileMode;
-        import flash.filesystem.FileStream;
-        import flash.geom.Rectangle;
-        import flash.media.Camera;
-        import flash.media.Video;
-        import flash.ui.Keyboard;
-        import flash.utils.ByteArray;
-        
-        import org.apache.flex.utils.PNGEncoder;
-    }
-    
-	[Mixin]
-	/**
-	 * The Camera class implements the Cordova Camera
-	 * 
-	 * @langversion 3.0
-	 * @playerversion Flash 10.2
-	 * @playerversion AIR 2.6
-	 * @productversion FlexJS 0.0
-	 * @flexjscordovaplugin cordova-plugin-camera
-	 * @flexjsignorecoercion FileEntry
-	 * @flexjsignorecoercion FileWriter
-	 * @flexjsignorecoercion window
-     * @flexjsignorecoercion Blob
-	 */
-	public class Camera
-	{
-		public static var DestinationType:Object = {
-			DATA_URL : 0,      // Return image as base64-encoded string
-			FILE_URI : 1,      // Return image file URI
-			NATIVE_URI : 2     // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
-		};
-		
-		public static var PictureSourceType:Object = {
-			PHOTOLIBRARY : 0,
-			CAMERA : 1,
-			SAVEDPHOTOALBUM : 2
-		};
-		
-		public static var EncodingType:Object = {
-			JPEG : 0,               // Return JPEG encoded image
-			PNG : 1                 // Return PNG encoded image
-		};
-		
-		public static var MediaType:Object = {
-			PICTURE: 0,    // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
-			VIDEO: 1,      // allow selection of video only, WILL ALWAYS RETURN FILE_URI
-			ALLMEDIA : 2   // allow selection from all media types
-		};
-		
-		public static var Direction:Object = {
-			BACK : 0,      // Use the back-facing camera
-			FRONT : 1      // Use the front-facing camera
-		};
-
-        COMPILE::SWF
-		private static var root:DisplayObjectContainer;
-		
-        COMPILE::SWF
-		public static function init(r:DisplayObjectContainer):void
-		{
-			root = r;		
-		}
-		
-		public function Camera()
-		{
-			pictureSourceType = org.apache.cordova.camera.Camera.PictureSourceType.PHOTOLIBRARY;
-			destinationType = org.apache.cordova.camera.Camera.DestinationType.DATA_URL;
-			mediaType = org.apache.cordova.camera.Camera.MediaType.PICTURE;
-			encodingType = org.apache.cordova.camera.Camera.EncodingType.JPEG;
-			direction = org.apache.cordova.camera.Camera.Direction.BACK;
-		}
-		
-		public var pictureSourceType:int;
-		public var destinationType:int;
-		public var mediaType:int;
-		public var encodingType:int;
-		public var direction:int;
-		
-		private var cameraSuccess:Function;
-		private var cameraError:Function;
-        COMPILE::SWF
-		private var ui:Sprite;
-        COMPILE::SWF
-		private var camera:flash.media.Camera;
-		
-		public function getPicture( cameraSuccess:Function, cameraError:Function, cameraOptions:Object ) : void
-		{
-            COMPILE::SWF
-            {
-                this.cameraSuccess = cameraSuccess;
-                this.cameraError = cameraError;
-                
-                camera = flash.media.Camera.getCamera();
-                
-                if (camera != null) {
-                    ui = new Sprite();
-                    var video:Video = new Video(camera.width * 2, camera.height * 2);
-                    video.attachCamera(camera);
-                    ui.addChild(video);
-                    root.addChild(ui);
-                    ui.addEventListener(MouseEvent.CLICK, mouseClickHandler);
-                    ui.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
-                } else {
-                    trace("You need a camera.");
-                }                    
-            }
-            COMPILE::JS
-            {
-                // TODO: (aharui) Cordova externs
-                navigator["camera"].getPicture(cameraSuccess, cameraError, cameraOptions);
-            }
-		}
-		
-        COMPILE::SWF
-		private function mouseClickHandler(event:MouseEvent):void
-		{
-			savePicture();
-			root.removeChild(ui);
-		}
-		
-        COMPILE::SWF
-		private function keyDownHandler(event:KeyboardEvent):void
-		{
-			if (event.keyCode == Keyboard.ESCAPE)
-				root.removeChild(ui);
-			else if (event.keyCode == Keyboard.ENTER || event.keyCode == Keyboard.SPACE)
-			{
-				savePicture();
-				root.removeChild(ui);
-			}
-		}
-
-        COMPILE::SWF
-		private function savePicture():void
-		{
-			var f:File = File.createTempFile();
-			var bd:BitmapData = new BitmapData(camera.width, camera.height, false);
-			var pix:ByteArray = new ByteArray();
-			var rect:Rectangle = new Rectangle(0, 0, camera.width, camera.height);
-			camera.copyToByteArray(rect, pix);
-			pix.position = 0;
-			bd.setPixels(rect, pix);
-			var png:PNGEncoder = new PNGEncoder();
-			var ba:ByteArray = png.encode(bd);
-			var fs:FileStream = new FileStream();
-			fs.open(f, FileMode.WRITE);
-			fs.writeBytes(ba);
-			fs.close();
-			cameraSuccess(f.url);
-		}
-		
-		public function cleanup( cameraSuccess:Function, cameraError:Function ) : void
-		{
-            // no cleanup required in Flash
-            COMPILE::JS
-            {
-                navigator["camera"].cleanup();                
-            }
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/geolocation/Geolocation.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/geolocation/Geolocation.as b/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/geolocation/Geolocation.as
deleted file mode 100644
index 97e99eb..0000000
--- a/frameworks/projects/Mobile/src/main/flex/org/apache/cordova/geolocation/Geolocation.as
+++ /dev/null
@@ -1,61 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.cordova.geolocation
-{
-	/**
-	 * Geolocation provides the interface to the Cordova Geolocation plugin.
-	 */
-
-	[Mixin]
-	/**
-	 * The Geolocation class implements Cordova geolocation plugin
-	 * 
-	 * @langversion 3.0
-	 * @playerversion Flash 10.2
-	 * @playerversion AIR 2.6
-	 * @productversion FlexJS 0.0
-	 * @flexjscordovaplugin cordova-plugin-geolocation
-	 * @flexjsignorecoercion FileEntry
-	 * @flexjsignorecoercion FileWriter
-	 * @flexjsignorecoercion window
-     * @flexjsignorecoercion Blob
-	 */
-	public class Geolocation
-	{
-		/**
-		 * Constructor
-		 */
-		public function Geolocation()
-		{
-		}
-
-		/**
-		 * Gets the device current location. If successful, the onSuccess function is
-		 * called with position parameter (see Cordova documentation). If failure, the
-		 * onError function is called with an error parameter (.code and .message members).
-		 */
-		public function getCurrentPosition(onSuccess:Function, onError:Function):void
-		{
-			COMPILE::JS {
-				// TODO: (pent) Cordova externs
-				navigator["geolocation"].getCurrentPosition(onSuccess, onError);
-			}
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Application.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Application.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Application.as
new file mode 100644
index 0000000..52de8d6
--- /dev/null
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Application.as
@@ -0,0 +1,86 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.cordova
+{
+	import org.apache.flex.events.Event;
+	import org.apache.flex.core.Application;
+	import org.apache.flex.core.IFlexInfo;
+
+	/**
+	 *  A customized Application that dispatches the Cordova deviceReady event
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class Application extends org.apache.flex.core.Application implements IFlexInfo
+	{
+		/**
+		 * FalconJX will inject html into the index.html file.  Surround with
+		 * "inject_html" tag as follows:
+		 *
+		 * <inject_html>
+		 * <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
+		 * <script type="text/javascript" src="cordova.js"></script>
+		 * </inject_html>
+		 */
+		public function Application()
+		{
+			super();
+		}
+		
+		public var isDeviceReady:Boolean = false
+		
+		/**
+		 * @private
+		 */
+		COMPILE::JS
+		override public function start():void
+		{
+			// listen for Cordova's deviceReady event
+			document.addEventListener("deviceReady", startOnReady, false);
+			
+			// listen for preinitialize event which will be cancelled until
+			// the Cordova 'deviceReady' event is received.
+			addEventListener("preinitialize", handlePreInit);
+			
+			super.start();
+		}
+		
+		/**
+		 * @private
+		 */
+		private function handlePreInit(event:Event):void
+		{
+			if (!isDeviceReady) {
+				event.preventDefault(); // basically, cancel the event until the device is ready
+			}
+		}
+		
+		/**
+		 * @private
+		 */
+		private function startOnReady(event:*):void
+		{
+			isDeviceReady = true;
+			removeEventListener("preinitialize", handlePreInit);
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Camera.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Camera.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Camera.as
new file mode 100644
index 0000000..8333fb2
--- /dev/null
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Camera.as
@@ -0,0 +1,173 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.cordova
+{
+	COMPILE::SWF
+	{
+		import flash.display.BitmapData;
+		import flash.display.DisplayObject;
+		import flash.display.DisplayObjectContainer;
+		import flash.display.Sprite;
+		import flash.events.ActivityEvent;
+		import flash.events.KeyboardEvent;
+		import flash.events.MouseEvent;
+		import flash.filesystem.File;
+		import flash.filesystem.FileMode;
+		import flash.filesystem.FileStream;
+		import flash.geom.Rectangle;
+		import flash.media.Camera;
+		import flash.media.Video;
+		import flash.ui.Keyboard;
+		import flash.utils.ByteArray;
+		
+		import org.apache.flex.utils.PNGEncoder;
+	}
+		
+	/**
+	 * The Camera class implements the Cordova Camera
+	 * 
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 * @flexjscordovaplugin cordova-plugin-camera
+	 * @flexjsignorecoercion FileEntry
+	 * @flexjsignorecoercion FileWriter
+	 * @flexjsignorecoercion window
+     * @flexjsignorecoercion Blob
+	 */
+	COMPILE::JS
+	public class Camera
+	{
+		private var pictureSource:*;   // picture source
+		private var destinationType:*; // sets the format of returned value
+		
+		public function Camera()
+		{
+			pictureSource=navigator['camera'].PictureSourceType;
+			destinationType=navigator['camera'].DestinationType;
+		}
+		
+		public function capturePhoto(onPhotoDataSuccess:Function, onFail:Function):void
+		{
+			// Take picture using device camera and retrieve image as base64-encoded string
+			navigator['camera'].getPicture(onPhotoDataSuccess, onFail, { quality: 50,
+				destinationType: destinationType.FILE_URI }); //DATA_URL
+		}
+		
+		public function getPhotoFromLibrary(onPhotoURISuccess:Function, onFail:Function):void
+		{
+			// Retrieve image file location from specified source
+			navigator['camera'].getPicture(onPhotoURISuccess, onFail, { quality: 50,
+				destinationType: destinationType.FILE_URI,
+				sourceType: navigator['camera'].PictureSourceType.PHOTOLIBRARY });
+		}
+		
+		public function cleanup( cameraSuccess:Function, cameraError:Function ) : void
+		{
+			navigator["camera"].cleanup();
+		}
+	}
+	
+	[Mixin]
+	COMPILE::SWF
+	public class Camera
+	{
+		private var cameraSuccess:Function;
+		private var cameraError:Function;
+		private var ui:Sprite;
+		private var camera:flash.media.Camera;
+		
+		private static var root:DisplayObjectContainer;
+		
+		public static function init(r:DisplayObjectContainer):void
+		{
+			root = r;		
+		}
+		
+		public function Camera()
+		{
+		}
+		
+		public function capturePhoto(onPhotoDataSuccess:Function, onFail:Function):void
+		{
+			this.cameraSuccess = onPhotoDataSuccess;
+			this.cameraError = onFail;
+			
+			camera = flash.media.Camera.getCamera();
+			
+			if (camera != null) {
+				ui = new Sprite();
+				var video:Video = new Video(camera.width * 2, camera.height * 2);
+				video.attachCamera(camera);
+				ui.addChild(video);
+				root.addChild(ui);
+				ui.addEventListener(MouseEvent.CLICK, mouseClickHandler);
+				ui.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
+			} else {
+				trace("You need a camera.");
+			}
+		}
+		
+		public function getPhotoFromLibrary(onPhotoURISuccess:Function, onFail:Function):void
+		{
+			// TBD
+		}
+		
+		private function mouseClickHandler(event:MouseEvent):void
+		{
+			savePicture();
+			root.removeChild(ui);
+		}
+		
+		private function keyDownHandler(event:KeyboardEvent):void
+		{
+			if (event.keyCode == Keyboard.ESCAPE)
+				root.removeChild(ui);
+			else if (event.keyCode == Keyboard.ENTER || event.keyCode == Keyboard.SPACE)
+			{
+				savePicture();
+				root.removeChild(ui);
+			}
+		}
+		
+		private function savePicture():void
+		{
+			var f:File = File.createTempFile();
+			var bd:BitmapData = new BitmapData(camera.width, camera.height, false);
+			var pix:ByteArray = new ByteArray();
+			var rect:Rectangle = new Rectangle(0, 0, camera.width, camera.height);
+			camera.copyToByteArray(rect, pix);
+			pix.position = 0;
+			bd.setPixels(rect, pix);
+			var png:PNGEncoder = new PNGEncoder();
+			var ba:ByteArray = png.encode(bd);
+			var fs:FileStream = new FileStream();
+			fs.open(f, FileMode.WRITE);
+			fs.writeBytes(ba);
+			fs.close();
+			cameraSuccess(f.url);
+		}
+		
+		public function cleanup( cameraSuccess:Function, cameraError:Function ) : void
+		{
+			// not required for SWF version
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Weinre.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Weinre.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Weinre.as
new file mode 100644
index 0000000..2daf982
--- /dev/null
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/Weinre.as
@@ -0,0 +1,88 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.cordova
+{
+    COMPILE::SWF
+    {
+        import flash.net.URLRequest;
+        import flash.net.navigateToURL;            
+    }
+	
+	import org.apache.flex.core.IBead;
+	import org.apache.flex.core.IStrand;
+	
+	/**
+	 *  A class that helps set up to use Weinre for debugging
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class Weinre implements IBead
+	{
+		public function Weinre()
+		{
+		}
+
+		private var _strand:IStrand;
+		
+		/**
+		 *  @copy org.apache.flex.core.IBead#strand
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+		}
+		
+		/**
+		 *  The guid to use at the Weinre server
+		 *  http://debug.phonegap.com
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion HTMLScriptElement
+         *  @flexjsignorecoercion HTMLHeadElement
+		 */
+		public function set guid(value:String):void
+		{
+            COMPILE::SWF
+            {
+                navigateToURL(new URLRequest("http://debug.phonegap.com/client/#" + value), "_blank");                    
+            }
+            COMPILE::JS
+            {
+                var scriptNode:HTMLScriptElement = document.createElement('SCRIPT') as HTMLScriptElement;
+                scriptNode.type = 'text/javascript';
+                scriptNode.src = 'http://debug.phonegap.com/target/target-script-min.js#' + value;
+                
+                var headNode:HTMLHeadElement = document.getElementsByTagName('HEAD') as HTMLHeadElement;
+                if (headNode[0] != null)
+                    headNode[0].appendChild(scriptNode);
+            }
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/geolocation/Geolocation.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/geolocation/Geolocation.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/geolocation/Geolocation.as
new file mode 100644
index 0000000..830d2cc
--- /dev/null
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/cordova/geolocation/Geolocation.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.cordova.geolocation
+{
+	/**
+	 * Geolocation provides the interface to the Cordova Geolocation plugin.
+	 */
+
+	[Mixin]
+	/**
+	 * The Geolocation class implements Cordova geolocation plugin
+	 * 
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 * @flexjscordovaplugin cordova-plugin-geolocation
+	 * @flexjsignorecoercion FileEntry
+	 * @flexjsignorecoercion FileWriter
+	 * @flexjsignorecoercion window
+     * @flexjsignorecoercion Blob
+	 */
+	public class Geolocation
+	{
+		/**
+		 * Constructor
+		 */
+		public function Geolocation()
+		{
+		}
+
+		/**
+		 * Gets the device current location. If successful, the onSuccess function is
+		 * called with position parameter (see Cordova documentation). If failure, the
+		 * onError function is called with an error parameter (.code and .message members).
+		 */
+		public function getCurrentPosition(onSuccess:Function, onError:Function):void
+		{
+			COMPILE::JS {
+				// TODO: (pent) Cordova externs
+				navigator["geolocation"].getCurrentPosition(onSuccess, onError);
+			}
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/4c292836/frameworks/projects/Mobile/src/main/resources/cordova-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/resources/cordova-manifest.xml b/frameworks/projects/Mobile/src/main/resources/cordova-manifest.xml
index d20b9ff..274b7fb 100644
--- a/frameworks/projects/Mobile/src/main/resources/cordova-manifest.xml
+++ b/frameworks/projects/Mobile/src/main/resources/cordova-manifest.xml
@@ -21,9 +21,9 @@
 
 <componentPackage>
 
-    <component id="Application" class="org.apache.cordova.Application"/>
-    <component id="Camera" class="org.apache.cordova.camera.Camera"/>
-    <component id="Weinre" class="org.apache.cordova.Weinre"/>
-    <component id="Geolocation" class="org.apache.cordova.geolocation.Geolocation" />
+    <component id="Application" class="org.apache.flex.cordova.Application"/>
+    <component id="Camera" class="org.apache.flex.cordova.Camera"/>
+    <component id="Weinre" class="org.apache.flex.cordova.Weinre"/>
+    <component id="Geolocation" class="org.apache.flex.cordova.geolocation.Geolocation" />
 
 </componentPackage>