Transferred from the Adobe Open Source Subversion Repository

Revision: 14483
Author:   smgilson@adobe.com
Date:     2010-03-01T19:01:18.459430Z

Log Message:
-----------
merge 14456: Adding ASDoc version tags classes

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkRangeAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkRadioButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkPanelAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkButtonBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarAutomationImpl.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/automation/air/AirFunctionsHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkSkinnableContainerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/events/SparkValueChangeAutomationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkButtonBarBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkNavigatorContentAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkDataGroupAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkTrackBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/events/EventDetails.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/events/SparkListItemSelectEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTabBarAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkGroupAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableContainerBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/mediaClasses/SparkMuteButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/automation/air/AirDragManagerAutomationHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/SOAPResult.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkTextBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTitleWindowAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTileGroupAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkToggleButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkSpinnerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccConst.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkLabelAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkBorderContainerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkGroupBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkVideoPlayerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableComponentAutomationImpl.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252064 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarButtonAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarButtonAutomationImpl.as
@@ -11,52 +11,66 @@

 package spark.automation.delegates.components
 {
-	import flash.display.DisplayObject;
-
-	import mx.automation.Automation;
-	import mx.core.mx_internal;
-
-	import spark.components.ButtonBarButton;
-
-	use namespace mx_internal;
-
-	[Mixin]
-	/**
-	 *
-	 *  Defines methods and properties required to perform instrumentation for the
-	 *  ButtonBarButton control.
-	 *
-	 *  @see spark.components.ButtonBarButton
-	 *
-	 */
-	public class SparkButtonBarButtonAutomationImpl extends SparkToggleButtonAutomationImpl
-	{
-
-		include "../../../core/Version.as";
-		//--------------------------------------------------------------------------
-		//
-		//  Class methods
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  Registers the delegate class for a component class with automation manager.
-		 *
-		 *  @param root The SystemManger of the application.
-		 */
-		public static function init(root:DisplayObject):void
-		{
-			Automation.registerDelegateClass(spark.components.ButtonBarButton, SparkButtonBarButtonAutomationImpl);
-		}
-
-		/**
-		 *  Constructor.
-		 * @param obj ButtonBarButton object to be automated.
-		 */
-		public function SparkButtonBarButtonAutomationImpl(obj:spark.components.ButtonBarButton)
-		{
-			super(obj);
-
+    import flash.display.DisplayObject;
+
+    import mx.automation.Automation;
+    import mx.core.mx_internal;
+
+    import spark.components.ButtonBarButton;
+
+    use namespace mx_internal;
+
+    [Mixin]
+    /**
+     *
+     *  Defines methods and properties required to perform instrumentation for the
+     *  ButtonBarButton control.
+     *
+     *  @see spark.components.ButtonBarButton
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 3
+     */
+    public class SparkButtonBarButtonAutomationImpl extends SparkToggleButtonAutomationImpl
+    {
+
+        include "../../../core/Version.as";
+        //--------------------------------------------------------------------------
+        //
+        //  Class methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Registers the delegate class for a component class with automation manager.
+         *
+         *  @param root The SystemManger of the application.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 3
+         */
+        public static function init(root:DisplayObject):void
+        {
+            Automation.registerDelegateClass(spark.components.ButtonBarButton, SparkButtonBarButtonAutomationImpl);
+        }
+
+        /**
+         *  Constructor.
+         * @param obj ButtonBarButton object to be automated.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 3
+         */
+        public function SparkButtonBarButtonAutomationImpl(obj:spark.components.ButtonBarButton)
+        {
+            super(obj);
+
     }


Updated color issue with Canvas.rect().

Updated color issue with Canvas.rect().

--- net/flashpunk/graphics/Canvas.as
+++ net/flashpunk/graphics/Canvas.as
@@ -123,7 +123,7 @@
 				{
 					_rect.x = rect.x - xx;
 					_rect.y = rect.y - yy;
-					buffer.fillRect(_rect, 0xFF000000 & color);
+					buffer.fillRect(_rect, 0xFF000000 | color);
 					xx += _maxWidth;
 					if (xx >= _width)
 					{


Made some methods in View to stay safe when provided child param is null.

--- src/engine/tetragon/view/native/View.as
+++ src/engine/tetragon/view/native/View.as
@@ -657,6 +657,7 @@
 		 */
 		protected final function registerChild(child:View):void
 		{
+			if (!child) return;
 			if (!_children) _children = new Vector.<View>();
 			child.setViewParams(_screen);
 			_children.push(child);
@@ -674,7 +675,7 @@
 		 */
 		protected final function unregisterChild(child:View):Boolean
 		{
-			if (!_children) return false;
+			if (!child || !_children) return false;
 			var i:int = _children.indexOf(child);
 			if (i > -1)
 			{
@@ -722,6 +723,7 @@
 		 */
 		protected function disposeChildView(child:View):void
 		{
+			if (!child) return;
 			unregisterChild(child);
 			if (contains(child)) removeChild(child);
 			child.dispose();


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1250948 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/authoringsupport/src/com/adobe/viewsource/ViewSource.as
+++ frameworks/projects/authoringsupport/src/com/adobe/viewsource/ViewSource.as
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package com.adobe.viewsource
+{
+
+import flash.display.InteractiveObject;
+import flash.events.ContextMenuEvent;
+import flash.events.Event;
+import flash.net.URLRequest;
+import flash.net.navigateToURL;
+import flash.ui.ContextMenu;
+import flash.ui.ContextMenuItem;
+
+public class ViewSource
+{
+	/**
+	 *  Adds a "View Source" context menu item
+	 *  to the context menu of the given object.
+	 *  Creates a context menu if none exists.
+	 *
+	 *  @param obj The object to attach the context menu item to.
+	 *
+	 *  @param url The URL of the source viewer that the "View Source"
+	 *  item should open in the browser.
+	 *
+	 *  @param hideBuiltIns Optional, defaults to true.
+	 *  If true, and no existing context menu is attached
+	 *  to the given item, then when we create the context menu,
+	 *  we hide all the hideable built-in menu items.
+	 */
+	public static function addMenuItem(obj:InteractiveObject, url:String,
+									   hideBuiltIns:Boolean = true):void
+	{
+		if (obj.contextMenu == null)
+		{
+			obj.contextMenu = new ContextMenu();
+			if (hideBuiltIns)
+				obj.contextMenu.hideBuiltInItems();
+		}
+
+		var item:ContextMenuItem = new ContextMenuItem("View Source");
+
+		item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,
+			function(event:ContextMenuEvent):void
+			{
+				if (event.target == item)
+					navigateToURL(new URLRequest(url), "_blank");
+			}
+		);
+
+		obj.contextMenu.customItems.push(item);
+	}
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1261388 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/logging/targets/LineFormattedTarget.as
+++ frameworks/projects/framework/src/mx/logging/targets/LineFormattedTarget.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.logging.targets
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17397
Author:   rfrishbe@adobe.com
Date:     2010-08-19T23:34:48.258731Z

Log Message:
-----------
Fixing some issues with user interaction and Button.  There was one bug about swiping on a button keeping it in the down state.  I needed to add some code to stage_mouseUpHandler since mousing up anywhere should cancel the button mouse down as well.  Also, I fixed Button so that if you rolled off of it, it will now go back to the up state.  If you roll back over it with your mouse still down, it will go back to the down state.

QE notes: None
Doc notes: None
Bugs: SDK-27399
Reviewer: Jason SJ
Tests run: checkintests, mustella Button
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1281986 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
@@ -891,27 +891,17 @@
         if (isDown())
             return "down";

-        if (hovered || mouseCaptured)
+        // if inputMode == "touch", then we have no over state
+        // if inputMode == "mouse", then only go in to the over state if
+        // we are currently hovered or if someone pressed down on us
+        // and then rolled away (and stickyHighlighting is off--otherwise
+        // isDown() would have returned true)
+        if (getStyle("inputMode") == "mouse" && (hovered || mouseCaptured))
             return "over";

         return "up";
     }

-    /**
-     *  @private
-     */
-    override public function styleChanged(styleName:String):void
-    {
-        var allStyles:Boolean = styleName == null || styleName == "styleName";
-
-        super.styleChanged(styleName);
-
-        if (allStyles || styleName == "inputMode")
-        {
-            addHandlers();
-        }
-    }
-
     //--------------------------------------------------------------------------
     //
     //  Methods
@@ -923,7 +913,8 @@
      */
     protected function addHandlers():void
     {
-        addOrRemoveRollOverRollOutHandlers();
+        addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler);
+        addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler);
         addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler);
         addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler);
         addEventListener(MouseEvent.CLICK, mouseEventHandler);
@@ -932,44 +923,6 @@

     /**
      *  @private
-     *  Keeps track of whether rollover/rollout events were added
-     *
-     *  We need to be careful about calling add/remove event listener
-     *  in ItemRenderer because of the reference counting going on in
-     *  GroupBase.  We don't have the same issues here in ButtonBase, but
-     *  it seems safer and more consistent to follow the same pattern.
-     */
-    private var rolloverEventsAdded:Boolean = false;
-
-    /**
-     *  @private
-     *  Adds or removes handlers for rollover/rollout depending on
-     *  if inputMode == mouse or not.
-     */
-    private function addOrRemoveRollOverRollOutHandlers():void
-    {
-        if (getStyle("inputMode") == "mouse")
-        {
-            if (!rolloverEventsAdded)
-            {
-                rolloverEventsAdded = true;
-                addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler);
-                addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler);
-            }
-        }
-        else
-        {
-            if (rolloverEventsAdded)
-            {
-                rolloverEventsAdded = false;
-                removeEventListener(MouseEvent.ROLL_OVER, mouseEventHandler);
-                removeEventListener(MouseEvent.ROLL_OUT, mouseEventHandler);
-            }
-        }
-    }
-
-    /**
-     *  @private
      *  This method adds the systemManager_mouseUpHandler as an event listener to
      *  the stage and the systemManager so that it gets called even if mouse events
      *  are dispatched outside of the button. This is needed for example when the
@@ -1012,12 +965,8 @@
         if (keyboardPressed)
             return true;

-        if (mouseCaptured)
-        {
-            // if in touch mode, we never go in to the hovered state
-            if (getStyle("inputMode") == "touch" || hovered || stickyHighlighting)
-                return true;
-        }
+        if (mouseCaptured && (hovered || stickyHighlighting))
+            return true;

         return false;
     }
@@ -1306,8 +1255,7 @@
                 // was captured before.
                 if (event.target == this)
                 {
-                    // only set hovered if we are in mouse inputMode
-                    hovered = (getStyle("inputMode") == "mouse");
+                    hovered = true;

                     if (mouseCaptured)
                     {
@@ -1379,6 +1327,11 @@
             return;

         mouseCaptured = false;
+
+        // If the mouseDownSelectTimer is still running,
+        // we don't want to ever go in to the down state in this case, so stop it
+        if (mouseDownSelectTimer && mouseDownSelectTimer.running)
+            stopSelectButtonAfterDelayTimer();
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252308 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkTextBaseAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkTextBaseAutomationImpl.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package spark.automation.delegates.components.supportClasses
 {


added checking for null items in pluck()

--- WeaveData/src/weave/utils/VectorUtils.as
+++ WeaveData/src/weave/utils/VectorUtils.as
@@ -559,7 +559,7 @@
 		private static var _pluckProperty:String;
 		private static function _pluck(item:Object, i:int, a:*):*
 		{
-			return item[_pluckProperty];
+			return item != null ? item[_pluckProperty] : undefined;
 		}

 		/**


CSVDataSource now uses LinkablePromise

CSVDataSource now uses LinkablePromise

--- WeaveData/src/weave/data/DataSources/CSVDataSource.as
+++ WeaveData/src/weave/data/DataSources/CSVDataSource.as
@@ -23,6 +23,7 @@
 	import flash.net.URLRequest;
 	import flash.utils.getQualifiedClassName;

+	import mx.rpc.AsyncToken;
 	import mx.rpc.events.FaultEvent;
 	import mx.rpc.events.ResultEvent;
 	import mx.utils.StringUtil;
@@ -36,11 +37,14 @@
 	import weave.api.data.IQualifiedKey;
 	import weave.api.data.IWeaveTreeNode;
 	import weave.api.detectLinkableObjectChange;
+	import weave.api.disposeObject;
 	import weave.api.getCallbackCollection;
 	import weave.api.getLinkableOwner;
+	import weave.api.linkableObjectIsBusy;
 	import weave.api.newLinkableChild;
 	import weave.api.registerLinkableChild;
 	import weave.api.reportError;
+	import weave.core.LinkablePromise;
 	import weave.core.LinkableString;
 	import weave.core.LinkableVariable;
 	import weave.data.AttributeColumns.DateColumn;
@@ -65,17 +69,48 @@

 		public function CSVDataSource()
 		{
-		}
-
-		public const metadata:LinkableVariable = registerLinkableChild(this, new LinkableVariable(null, typeofIsObject));
-		public const url:LinkableString = newLinkableChild(this, LinkableString);
+			registerLinkableChild(rawDataPromise, url);
+		}
+
 		public const csvData:LinkableVariable = registerLinkableChild(this, new LinkableVariable(Array), handleCSVDataChange);
 		public const keyType:LinkableString = newLinkableChild(this, LinkableString, updateKeys);
 		public const keyColName:LinkableString = newLinkableChild(this, LinkableString, updateKeys);

+		public const metadata:LinkableVariable = registerLinkableChild(this, new LinkableVariable(null, typeofIsObject));
 		private function typeofIsObject(value:Object):Boolean { return typeof value == 'object'; }

-		private const asyncParser:CSVParser = registerLinkableChild(this, new CSVParser(true), handleCSVParser);
+		public const url:LinkableString = newLinkableChild(this, LinkableString);
+
+		public const delimiter:LinkableString = registerLinkableChild(this, new LinkableString(',', verifyDelimiter), parseRawData);
+		private function verifyDelimiter(value:String):Boolean { return value && value.length == 1 && value != '"'; }
+
+		private const rawDataPromise:LinkablePromise = registerLinkableChild(this, new LinkablePromise(getRawData, null, "Downloading CSV data"), parseRawData);
+		private function getRawData():AsyncToken
+		{
+			if (!url.value)
+				return null;
+			return WeaveAPI.URLRequestUtils.getURL(rawDataPromise, new URLRequest(url.value));
+		}
+		private function parseRawData():void
+		{
+			if (rawDataPromise.error)
+				reportError(rawDataPromise.error);
+
+			if (detectLinkableObjectChange(parseRawData, delimiter))
+			{
+				if (csvParser)
+					disposeObject(csvParser);
+				csvParser = registerLinkableChild(this, new CSVParser(true, delimiter.value), handleCSVParser);
+			}
+
+			/*if (linkableObjectIsBusy(rawDataPromise))
+				return;*/
+
+			csvParser.parseCSV(String(rawDataPromise.result || ''));
+		}
+
+		private var csvParser:CSVParser;
+
 		/**
 		 * Called when csv parser finishes its task
 		 */
@@ -85,11 +120,11 @@
 			if (url.value)
 			{
 				// when using url, we don't want to set session state of csvData
-				handleParsedRows(asyncParser.parseResult);
+				handleParsedRows(csvParser.parseResult);
 			}
 			else
 			{
-				csvData.setSessionState(asyncParser.parseResult);
+				csvData.setSessionState(csvParser.parseResult);
 			}
 		}

@@ -313,29 +348,13 @@
 		}

 		/**
-		 * Called when url session state changes
-		 */
-		protected function handleURLChange():void
-		{
-			if (detectLinkableObjectChange(handleURLChange, url) && url.value)
-			{
-				// if url is specified, do not use csvDataString
-				csvData.setSessionState(null);
-				addAsyncResponder(
-					WeaveAPI.URLRequestUtils.getURL(this, new URLRequest(url.value), URLLoaderDataFormat.TEXT),
-					handleCSVDownload,
-					handleCSVDownloadError,
-					url.value
-				);
-			}
-		}
-
-		/**
 		 * This gets called as a grouped callback.
 		 */
 		override protected function initialize():void
 		{
-			handleURLChange();
+			// if url is specified, do not use csvDataString
+			if (url.value)
+				csvData.setSessionState(null);

 			// recalculate all columns previously requested because CSV data may have changed.
 			refreshAllProxyColumns();
@@ -408,27 +427,6 @@
 			_attributeHierarchy.detectChanges();
 		}

-		/**
-		 * Called when the CSV data is downloaded from a URL.
-		 */
-		protected function handleCSVDownload(event:ResultEvent, token:Object = null):void
-		{
-			//debugTrace(this, "handleCSVDownload", url.value);
-			// Only handle this download if it is for current url.
-			if (token == url.value)
-			{
-				asyncParser.parseCSV(String(event.result));
-			}
-		}
-
-		/**
-		 * Called when the CSV data fails to download from a URL.
-		 */
-		protected function handleCSVDownloadError(event:FaultEvent, token:Object = null):void
-		{
-			reportError(event);
-		}
-
 		/**
 		 * This function must be implemented by classes by extend AbstractDataSource.
 		 * This function should make a request to the source to fill in the hierarchy.
@@ -564,7 +562,7 @@
 		 */
 		private function getColumnValues(rows:Array, columnIndex:int, outputArrayOrVector:*):*
 		{
-			outputArrayOrVector.length = rows.length - 1;
+			outputArrayOrVector.length = Math.max(0, rows.length - 1);
 			var i:int;
 			if (columnIndex < 0)
 			{


Added missing underscore, possibly from line ending update

--- src/flash/htmlelements/VideoElement.as
+++ src/flash/htmlelements/VideoElement.as
@@ -1,540 +1,540 @@
-package htmlelements
-{
-import flash.display.Sprite;
-import flash.events.*;
-import flash.net.NetConnection;
-import flash.net.NetStream;
-import flash.media.Video;
-import flash.media.SoundTransform;
-import flash.utils.Timer;
-
-import FlashMediaElement;
-import HtmlMediaEvent;
-
-public class VideoElement extends Sprite implements IMediaElement
-{
-  private var _currentUrl:String = "";
-  private var _autoplay:Boolean = true;
-  private var _preload:String = "";
-  private var _isPreloading:Boolean = false;
-
-  private var _connection:NetConnection;
-  private var _stream:NetStream;
-  private var _video:Video;
-  private var _element:FlashMediaElement;
-  private var _soundTransform;
-  private var _oldVolume:Number = 1;
-
-  // event values
-  private var _duration:Number = 0;
-  private var _framerate:Number;
-  private var _isPaused:Boolean = true;
-  private var _isEnded:Boolean = false;
-  private var _volume:Number = 1;
-  private var _isMuted:Boolean = false;
-
-  private var _bytesLoaded:Number = 0;
-  private var _bytesTotal:Number = 0;
-  private var _bufferedTime:Number = 0;
-  private var _bufferEmpty:Boolean = false;
-  private var _bufferingChanged:Boolean = false;
-  private var _seekOffset:Number = 0;
-
-
-  private var _videoWidth:Number = -1;
-  private var _videoHeight:Number = -1;
-
-  private var _timer:Timer;
-
-  private var _isRTMP:Boolean = false;
-  private var _streamer:String = "";
-  private var _isConnected:Boolean = false;
-  private var _playWhenConnected:Boolean = false;
-  private var _hasStartedPlaying:Boolean = false;
-
-  private var _parentReference:Object;
-  private var _pseudoStreamingEnabled:Boolean = false;
-  private var _pseudoStreamingStartQueryParam:String = "start";
-
-  public function setReference(arg:Object):void {
-    _parentReference = arg;
-  }
-
-  public function setSize(width:Number, height:Number):void {
-    _video.width = width;
-    _video.height = height;
-  }
-
-  public function setPseudoStreaming(enablePseudoStreaming:Boolean):void {
-    _pseudoStreamingEnabled = enablePseudoStreaming;
-  }
-
-  public function setPseudoStreamingStartParam(pseudoStreamingStartQueryParam:String):void {
-    _pseudoStreamingStartQueryParam = pseudoStreamingStartQueryParam;
-  }
-
-  public function get video():Video {
-    return _video;
-  }
-
-  public function get videoHeight():Number {
-    return _videoHeight;
-  }
-
-  public function get videoWidth():Number {
-    return _videoWidth;
-  }
-
-
-  public function duration():Number {
-    return _duration;
-  }
-
-  public function currentProgress():Number {
-    if(_stream != null) {
-      return Math.round(_stream.bytesLoaded/_stream.bytesTotal*100);
-    } else {
-      return 0;
-    }
-  }
-
-  public function currentTime():Number {
-    var currentTime:Number = 0;
-    if (_stream != null) {
-      currentTime = _stream.time;
-      if (_pseudoStreamingEnabled) {
-        currentTime += _seekOffset;
-      }
-    }
-    return currentTime;
-  }
-
-
-  // (1) load()
-  // calls _connection.connect();
-  // waits for NetConnection.Connect.Success
-  // _stream gets created
-
-
-  public function VideoElement(element:FlashMediaElement, autoplay:Boolean, preload:String, timerRate:Number, startVolume:Number, streamer:String)
-  {
-    _element = element;
-    _autoplay = autoplay;
-    _volume = startVolume;
-    _preload = preload;
-    _streamer = streamer;
-
-    _video = new Video();
-    addChild(_video);
-
-    _connection = new NetConnection();
-    _connection.client = { onBWDone: function():void{} };
-    _connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
-    _connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
-    //_connection.connect(null);
-
-    _timer = new Timer(timerRate);
-    _timer.addEventListener("timer", timerHandler);
-
-  }
-
-  private function timerHandler(e:TimerEvent) {
-
-    _bytesLoaded = _stream.bytesLoaded;
-    _bytesTotal = _stream.bytesTotal;
-
-    if (!_isPaused) {
-      sendEvent(HtmlMediaEvent.TIMEUPDATE);
-    }
-
-    //trace("bytes", _bytesLoaded, _bytesTotal);
-
-    if (_bytesLoaded < _bytesTotal)
-      sendEvent(HtmlMediaEvent.PROGRESS);
-
-  }
-
-  // internal events
-  private function netStatusHandler(event:NetStatusEvent):void {
-    trace("netStatus", event.info.code);
-
-    switch (event.info.code) {
-
-      case "NetStream.Buffer.Empty":
-        _bufferEmpty = true;
-        _isEnded ? sendEvent(HtmlMediaEvent.ENDED) : null;
-        break;
-
-      case "NetStream.Buffer.Full":
-        _bytesLoaded = _stream.bytesLoaded;
-        _bytesTotal = _stream.bytesTotal;
-        _bufferEmpty = false;
-
-        sendEvent(HtmlMediaEvent.PROGRESS);
-        break;
-
-      case "NetConnection.Connect.Success":
-        connectStream();
-        break;
-      case "NetStream.Play.StreamNotFound":
-        trace("Unable to locate video");
-        break;
-
-      // STREAM
-      case "NetStream.Play.Start":
-
-        _isPaused = false;
-        sendEvent(HtmlMediaEvent.LOADEDDATA);
-        sendEvent(HtmlMediaEvent.CANPLAY);
-
-        if (!_isPreloading) {
-
-          sendEvent(HtmlMediaEvent.PLAY);
-          sendEvent(HtmlMediaEvent.PLAYING);
-
-        }
-
-        _timer.start();
-
-        break;
-
-      case "NetStream.Seek.Notify":
-        sendEvent(HtmlMediaEvent.SEEKED);
-        break;
-
-      case "NetStream.Pause.Notify":
-        _isPaused = true;
-        sendEvent(HtmlMediaEvent.PAUSE);
-        break;
-
-      case "NetStream.Play.Stop":
-        _isEnded = true;
-        _isPaused = false;
-        _timer.stop();
-        _bufferEmpty ? sendEvent(HtmlMediaEvent.ENDED) : null;
-        break;
-
-    }
-  }
-
-
-  private function securityErrorHandler(event:SecurityErrorEvent):void {
-    trace("securityErrorHandler: " + event);
-  }
-
-  private function asyncErrorHandler(event:AsyncErrorEvent):void {
-    // ignore AsyncErrorEvent events.
-  }
-
-
-  private function onMetaDataHandler(info:Object):void {
-    // Only set the duration when we first load the video
-    if (_duration == 0) {
-      _duration = info.duration;
-    }
-    _framerate = info.framerate;
-    _videoWidth = info.width;
-    _videoHeight = info.height;
-
-
-    // set size?
-
-    sendEvent(HtmlMediaEvent.LOADEDMETADATA);
-
-
-
-    if (_isPreloading) {
-
-      _stream.pause();
-      _isPaused = true;
-      _isPreloading = false;
-
-      sendEvent(HtmlMediaEvent.PROGRESS);
-      sendEvent(HtmlMediaEvent.TIMEUPDATE);
-
-    }
-  }
-
-
-
-
-  // interface members
-  public function setSrc(url:String):void {
-    if (_isConnected && _stream) {
-      // stop and restart
-      _stream.pause();
-    }
-
-    _currentUrl = url;
-    _isRTMP = !!_currentUrl.match(/^rtmp(s|t|e|te)?\:\/\//) || _streamer != "";
-    _isConnected = false;
-    _hasStartedPlaying = false;
-  }
-
-  public function load():void {
-    // disconnect existing stream and connection
-    if (_isConnected && _stream) {
-      _stream.pause();
-      _stream.close();
-      _connection.close();
-    }
-    _isConnected = false;
-    _isPreloading = false;
-
-
-    _isEnded = false;
-    _bufferEmpty = false;
-
-    // start new connection
-    if (_isRTMP) {
-      var rtmpInfo:Object = parseRTMP(_currentUrl);
-      if (_streamer != "") {
-        rtmpInfo.server = _streamer;
-        rtmpInfo.stream = _currentUrl;
-
-      }
-      _connection.connect(rtmpInfo.server);
-    } else {
-      _connection.connect(null);
-    }
-
-    // in a few moments the "NetConnection.Connect.Success" event will fire
-    // and call createConnection which finishes the "load" sequence
-    sendEvent(HtmlMediaEvent.LOADSTART);
-  }
-
-
-  private function connectStream():void {
-    trace("connectStream");
-    _stream = new NetStream(_connection);
-
-    // explicitly set the sound since it could have come before the connection was made
-    _soundTransform = new SoundTransform(_volume);
-    stream.soundTransform = _soundTransform;
-
-    // set the buffer to ensure nice playback
-    _stream.bufferTime = 1;
-    _stream.bufferTimeMax = 3;
-
-    _stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // same event as connection
-    _stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
-
-    var customClient:Object = new Object();
-    customClient.onMetaData = onMetaDataHandler;
-    _stream.client = customClient;
-
-    _video.attachNetStream(_stream);
-
-    // start downloading without playing )based on preload and play() hasn't been called)
-    // I wish flash had a load() command to make this less awkward
-    if (_preload != "none" && !_playWhenConnected) {
-      _isPaused = true;
-      //stream.bufferTime = 20;
-      _stream.play(getCurrentUrl(0), 0, 0);
-      _stream.pause();
-
-      _isPreloading = true;
-
-      //_stream.pause();
-      //
-      //sendEvent(HtmlMediaEvent.PAUSE); // have to send this because the "playing" event gets sent via event handlers
-    }
-
-    _isConnected = true;
-
-    if (_playWhenConnected && !_hasStartedPlaying) {
-      play();
-      _playWhenConnected = false;
-    }
-
-  }
-
-  public function play():void {
-
-    if (!_hasStartedPlaying && !_isConnected) {
-      _playWhenConnected = true;
-      load();
-      return;
-    }
-
-    if (_hasStartedPlaying) {
-      if (_isPaused) {
-        _stream.resume();
-        _timer.start();
-        _isPaused = false;
-        sendEvent(HtmlMediaEvent.PLAY);
-        sendEvent(HtmlMediaEvent.PLAYING);
-      }
-    } else {
-
-      if (_isRTMP) {
-        var rtmpInfo:Object = parseRTMP(_currentUrl);
-        _stream.play(rtmpInfo.stream);
-      } else {
-        _stream.play(getCurrentUrl(0));
-      }
-      _timer.start();
-      _isPaused = false;
-      _hasStartedPlaying = true;
-
-      // don't toss play/playing events here, because we haven't sent a
-      // canplay / loadeddata event yet. that'll be handled in the net
-      // event listener
-    }
-
-  }
-
-  public function pause():void {
-    if (_stream == null)
-      return;
-
-    _stream.pause();
-    _isPaused = true;
-
-    if (_bytesLoaded == _bytesTotal) {
-      _timer.stop();
-    }
-
-    _isPaused = true;
-    sendEvent(HtmlMediaEvent.PAUSE);
-  }
-
-  public function stop():void {
-    if (_stream == null)
-      return;
-
-    _stream.close();
-    _isPaused = false;
-    _timer.stop();
-    sendEvent(HtmlMediaEvent.STOP);
-  }
-
-
-  public function setCurrentTime(pos:Number):void {
-    if (_stream == null) {
-      return;
-    }
-
-    // Calculate the position of the buffered video
-    var bufferPosition:Number = _bytesLoaded / _bytesTotal * _duration;
-
-    if (_pseudoStreamingEnabled) {
-      sendEvent(HtmlMediaEvent.SEEKING);
-      // Normal seek if it is in buffer and this is the first seek
-      if (pos < bufferPosition && _seekOffset == 0) {
-        _stream.seek(pos);
-      }
-      else {
-        // Uses server-side pseudo-streaming to seek
-        _stream.play(getCurrentUrl(pos));
-        _seekOffset = pos;
-      }
-    }
-    else {
-      sendEvent(HtmlMediaEvent.SEEKING);
-      _stream.seek(pos);
-    }
-
-    if (!_isEnded) {
-      sendEvent(HtmlMediaEvent.TIMEUPDATE);
-    }
-  }
-
-  public function setVolume(volume:Number):void {
-    if (_stream != null) {
-      _soundTransform = new SoundTransform(volume);
-      _stream.soundTransform = _soundTransform;
-    }
-
-    _volume = volume;
-
-    _isMuted = (_volume == 0);
-
-    sendEvent(HtmlMediaEvent.VOLUMECHANGE);
-  }
-
-  public function getVolume():Number {
-    if(_isMuted) {
-      return 0;
-    } else {
-      return _volume;
-    }
-  }
-
-  public function setMuted(muted:Boolean):void {
-
-    if (_isMuted == muted)
-      return;
-
-    if (muted) {
-      _oldVolume = (_stream == null) ? _oldVolume : _stream.soundTransform.volume;
-      setVolume(0);
-    } else {
-      setVolume(_oldVolume);
-    }
-
-    _isMuted = muted;
-  }
-
-
-  private function sendEvent(eventName:String) {
-
-    // calculate this to mimic HTML5
-    _bufferedTime = _bytesLoaded / _bytesTotal * _duration;
-
-    // build JSON
-    var values:String =
-      "duration:" + _duration +
-        ",framerate:" + _framerate +
-        ",currentTime:" + currentTime() +
-        ",muted:" + _isMuted +
-        ",paused:" + _isPaused +
-        ",ended:" + _isEnded +
-        ",volume:" + _volume +
-        ",src:\"" + _currentUrl + "\"" +
-        ",bytesTotal:" + _bytesTotal +
-        ",bufferedBytes:" + _bytesLoaded +
-        ",bufferedTime:" + _bufferedTime +
-        ",videoWidth:" + _videoWidth +
-        ",videoHeight:" + _videoHeight +
-        "";
-
-    _element.sendEvent(eventName, values);
-  }
-
-  private function parseRTMP(url:String) {
-    var match:Array = url.match(/(.*)\/((flv|mp4|mp3):.*)/);
-    var rtmpInfo:Object = {
-      server: null,
-      stream: null
-    };
-
-    if (match) {
-      rtmpInfo.server = match[1];
-      rtmpInfo.stream = match[2];
-    }
-    else {
-      rtmpInfo.server = url.replace(/\/[^\/]+$/,"/");
-      rtmpInfo.stream = url.split("/").pop();
-    }
-
-    trace("parseRTMP - server: " + rtmpInfo.server + " stream: " + rtmpInfo.stream);
-
-    return rtmpInfo;
-  }
-
-  private function getCurrentUrl(pos:Number):String {
-    var url:String = _currentUrl;
-    if (_pseudoStreamingEnabled) {
-      if (url.indexOf('?') > -1) {
-        url = url + '&' + _pseudoStreamingStartQueryParam + '=' + pos;
-      }
-      else {
-        url = url + '?' + _pseudoStreamingStartQueryParam + '=' + pos;
-      }
-    }
-    return url;
-  }
-}
-}
-
+package htmlelements
+{
+import flash.display.Sprite;
+import flash.events.*;
+import flash.net.NetConnection;
+import flash.net.NetStream;
+import flash.media.Video;
+import flash.media.SoundTransform;
+import flash.utils.Timer;
+
+import FlashMediaElement;
+import HtmlMediaEvent;
+
+public class VideoElement extends Sprite implements IMediaElement
+{
+  private var _currentUrl:String = "";
+  private var _autoplay:Boolean = true;
+  private var _preload:String = "";
+  private var _isPreloading:Boolean = false;
+
+  private var _connection:NetConnection;
+  private var _stream:NetStream;
+  private var _video:Video;
+  private var _element:FlashMediaElement;
+  private var _soundTransform;
+  private var _oldVolume:Number = 1;
+
+  // event values
+  private var _duration:Number = 0;
+  private var _framerate:Number;
+  private var _isPaused:Boolean = true;
+  private var _isEnded:Boolean = false;
+  private var _volume:Number = 1;
+  private var _isMuted:Boolean = false;
+
+  private var _bytesLoaded:Number = 0;
+  private var _bytesTotal:Number = 0;
+  private var _bufferedTime:Number = 0;
+  private var _bufferEmpty:Boolean = false;
+  private var _bufferingChanged:Boolean = false;
+  private var _seekOffset:Number = 0;
+
+
+  private var _videoWidth:Number = -1;
+  private var _videoHeight:Number = -1;
+
+  private var _timer:Timer;
+
+  private var _isRTMP:Boolean = false;
+  private var _streamer:String = "";
+  private var _isConnected:Boolean = false;
+  private var _playWhenConnected:Boolean = false;
+  private var _hasStartedPlaying:Boolean = false;
+
+  private var _parentReference:Object;
+  private var _pseudoStreamingEnabled:Boolean = false;
+  private var _pseudoStreamingStartQueryParam:String = "start";
+
+  public function setReference(arg:Object):void {
+    _parentReference = arg;
+  }
+
+  public function setSize(width:Number, height:Number):void {
+    _video.width = width;
+    _video.height = height;
+  }
+
+  public function setPseudoStreaming(enablePseudoStreaming:Boolean):void {
+    _pseudoStreamingEnabled = enablePseudoStreaming;
+  }
+
+  public function setPseudoStreamingStartParam(pseudoStreamingStartQueryParam:String):void {
+    _pseudoStreamingStartQueryParam = pseudoStreamingStartQueryParam;
+  }
+
+  public function get video():Video {
+    return _video;
+  }
+
+  public function get videoHeight():Number {
+    return _videoHeight;
+  }
+
+  public function get videoWidth():Number {
+    return _videoWidth;
+  }
+
+
+  public function duration():Number {
+    return _duration;
+  }
+
+  public function currentProgress():Number {
+    if(_stream != null) {
+      return Math.round(_stream.bytesLoaded/_stream.bytesTotal*100);
+    } else {
+      return 0;
+    }
+  }
+
+  public function currentTime():Number {
+    var currentTime:Number = 0;
+    if (_stream != null) {
+      currentTime = _stream.time;
+      if (_pseudoStreamingEnabled) {
+        currentTime += _seekOffset;
+      }
+    }
+    return currentTime;
+  }
+
+
+  // (1) load()
+  // calls _connection.connect();
+  // waits for NetConnection.Connect.Success
+  // _stream gets created
+
+
+  public function VideoElement(element:FlashMediaElement, autoplay:Boolean, preload:String, timerRate:Number, startVolume:Number, streamer:String)
+  {
+    _element = element;
+    _autoplay = autoplay;
+    _volume = startVolume;
+    _preload = preload;
+    _streamer = streamer;
+
+    _video = new Video();
+    addChild(_video);
+
+    _connection = new NetConnection();
+    _connection.client = { onBWDone: function():void{} };
+    _connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
+    _connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
+    //_connection.connect(null);
+
+    _timer = new Timer(timerRate);
+    _timer.addEventListener("timer", timerHandler);
+
+  }
+
+  private function timerHandler(e:TimerEvent) {
+
+    _bytesLoaded = _stream.bytesLoaded;
+    _bytesTotal = _stream.bytesTotal;
+
+    if (!_isPaused) {
+      sendEvent(HtmlMediaEvent.TIMEUPDATE);
+    }
+
+    //trace("bytes", _bytesLoaded, _bytesTotal);
+
+    if (_bytesLoaded < _bytesTotal)
+      sendEvent(HtmlMediaEvent.PROGRESS);
+
+  }
+
+  // internal events
+  private function netStatusHandler(event:NetStatusEvent):void {
+    trace("netStatus", event.info.code);
+
+    switch (event.info.code) {
+
+      case "NetStream.Buffer.Empty":
+        _bufferEmpty = true;
+        _isEnded ? sendEvent(HtmlMediaEvent.ENDED) : null;
+        break;
+
+      case "NetStream.Buffer.Full":
+        _bytesLoaded = _stream.bytesLoaded;
+        _bytesTotal = _stream.bytesTotal;
+        _bufferEmpty = false;
+
+        sendEvent(HtmlMediaEvent.PROGRESS);
+        break;
+
+      case "NetConnection.Connect.Success":
+        connectStream();
+        break;
+      case "NetStream.Play.StreamNotFound":
+        trace("Unable to locate video");
+        break;
+
+      // STREAM
+      case "NetStream.Play.Start":
+
+        _isPaused = false;
+        sendEvent(HtmlMediaEvent.LOADEDDATA);
+        sendEvent(HtmlMediaEvent.CANPLAY);
+
+        if (!_isPreloading) {
+
+          sendEvent(HtmlMediaEvent.PLAY);
+          sendEvent(HtmlMediaEvent.PLAYING);
+
+        }
+
+        _timer.start();
+
+        break;
+
+      case "NetStream.Seek.Notify":
+        sendEvent(HtmlMediaEvent.SEEKED);
+        break;
+
+      case "NetStream.Pause.Notify":
+        _isPaused = true;
+        sendEvent(HtmlMediaEvent.PAUSE);
+        break;
+
+      case "NetStream.Play.Stop":
+        _isEnded = true;
+        _isPaused = false;
+        _timer.stop();
+        _bufferEmpty ? sendEvent(HtmlMediaEvent.ENDED) : null;
+        break;
+
+    }
+  }
+
+
+  private function securityErrorHandler(event:SecurityErrorEvent):void {
+    trace("securityErrorHandler: " + event);
+  }
+
+  private function asyncErrorHandler(event:AsyncErrorEvent):void {
+    // ignore AsyncErrorEvent events.
+  }
+
+
+  private function onMetaDataHandler(info:Object):void {
+    // Only set the duration when we first load the video
+    if (_duration == 0) {
+      _duration = info.duration;
+    }
+    _framerate = info.framerate;
+    _videoWidth = info.width;
+    _videoHeight = info.height;
+
+
+    // set size?
+
+    sendEvent(HtmlMediaEvent.LOADEDMETADATA);
+
+
+
+    if (_isPreloading) {
+
+      _stream.pause();
+      _isPaused = true;
+      _isPreloading = false;
+
+      sendEvent(HtmlMediaEvent.PROGRESS);
+      sendEvent(HtmlMediaEvent.TIMEUPDATE);
+
+    }
+  }
+
+
+
+
+  // interface members
+  public function setSrc(url:String):void {
+    if (_isConnected && _stream) {
+      // stop and restart
+      _stream.pause();
+    }
+
+    _currentUrl = url;
+    _isRTMP = !!_currentUrl.match(/^rtmp(s|t|e|te)?\:\/\//) || _streamer != "";
+    _isConnected = false;
+    _hasStartedPlaying = false;
+  }
+
+  public function load():void {
+    // disconnect existing stream and connection
+    if (_isConnected && _stream) {
+      _stream.pause();
+      _stream.close();
+      _connection.close();
+    }
+    _isConnected = false;
+    _isPreloading = false;
+
+
+    _isEnded = false;
+    _bufferEmpty = false;
+
+    // start new connection
+    if (_isRTMP) {
+      var rtmpInfo:Object = parseRTMP(_currentUrl);
+      if (_streamer != "") {
+        rtmpInfo.server = _streamer;
+        rtmpInfo.stream = _currentUrl;
+
+      }
+      _connection.connect(rtmpInfo.server);
+    } else {
+      _connection.connect(null);
+    }
+
+    // in a few moments the "NetConnection.Connect.Success" event will fire
+    // and call createConnection which finishes the "load" sequence
+    sendEvent(HtmlMediaEvent.LOADSTART);
+  }
+
+
+  private function connectStream():void {
+    trace("connectStream");
+    _stream = new NetStream(_connection);
+
+    // explicitly set the sound since it could have come before the connection was made
+    _soundTransform = new SoundTransform(_volume);
+    _stream.soundTransform = _soundTransform;
+
+    // set the buffer to ensure nice playback
+    _stream.bufferTime = 1;
+    _stream.bufferTimeMax = 3;
+
+    _stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // same event as connection
+    _stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
+
+    var customClient:Object = new Object();
+    customClient.onMetaData = onMetaDataHandler;
+    _stream.client = customClient;
+
+    _video.attachNetStream(_stream);
+
+    // start downloading without playing )based on preload and play() hasn't been called)
+    // I wish flash had a load() command to make this less awkward
+    if (_preload != "none" && !_playWhenConnected) {
+      _isPaused = true;
+      //stream.bufferTime = 20;
+      _stream.play(getCurrentUrl(0), 0, 0);
+      _stream.pause();
+
+      _isPreloading = true;
+
+      //_stream.pause();
+      //
+      //sendEvent(HtmlMediaEvent.PAUSE); // have to send this because the "playing" event gets sent via event handlers
+    }
+
+    _isConnected = true;
+
+    if (_playWhenConnected && !_hasStartedPlaying) {
+      play();
+      _playWhenConnected = false;
+    }
+
+  }
+
+  public function play():void {
+
+    if (!_hasStartedPlaying && !_isConnected) {
+      _playWhenConnected = true;
+      load();
+      return;
+    }
+
+    if (_hasStartedPlaying) {
+      if (_isPaused) {
+        _stream.resume();
+        _timer.start();
+        _isPaused = false;
+        sendEvent(HtmlMediaEvent.PLAY);
+        sendEvent(HtmlMediaEvent.PLAYING);
+      }
+    } else {
+
+      if (_isRTMP) {
+        var rtmpInfo:Object = parseRTMP(_currentUrl);
+        _stream.play(rtmpInfo.stream);
+      } else {
+        _stream.play(getCurrentUrl(0));
+      }
+      _timer.start();
+      _isPaused = false;
+      _hasStartedPlaying = true;
+
+      // don't toss play/playing events here, because we haven't sent a
+      // canplay / loadeddata event yet. that'll be handled in the net
+      // event listener
+    }
+
+  }
+
+  public function pause():void {
+    if (_stream == null)
+      return;
+
+    _stream.pause();
+    _isPaused = true;
+
+    if (_bytesLoaded == _bytesTotal) {
+      _timer.stop();
+    }
+
+    _isPaused = true;
+    sendEvent(HtmlMediaEvent.PAUSE);
+  }
+
+  public function stop():void {
+    if (_stream == null)
+      return;
+
+    _stream.close();
+    _isPaused = false;
+    _timer.stop();
+    sendEvent(HtmlMediaEvent.STOP);
+  }
+
+
+  public function setCurrentTime(pos:Number):void {
+    if (_stream == null) {
+      return;
+    }
+
+    // Calculate the position of the buffered video
+    var bufferPosition:Number = _bytesLoaded / _bytesTotal * _duration;
+
+    if (_pseudoStreamingEnabled) {
+      sendEvent(HtmlMediaEvent.SEEKING);
+      // Normal seek if it is in buffer and this is the first seek
+      if (pos < bufferPosition && _seekOffset == 0) {
+        _stream.seek(pos);
+      }
+      else {
+        // Uses server-side pseudo-streaming to seek
+        _stream.play(getCurrentUrl(pos));
+        _seekOffset = pos;
+      }
+    }
+    else {
+      sendEvent(HtmlMediaEvent.SEEKING);
+      _stream.seek(pos);
+    }
+
+    if (!_isEnded) {
+      sendEvent(HtmlMediaEvent.TIMEUPDATE);
+    }
+  }
+
+  public function setVolume(volume:Number):void {
+    if (_stream != null) {
+      _soundTransform = new SoundTransform(volume);
+      _stream.soundTransform = _soundTransform;
+    }
+
+    _volume = volume;
+
+    _isMuted = (_volume == 0);
+
+    sendEvent(HtmlMediaEvent.VOLUMECHANGE);
+  }
+
+  public function getVolume():Number {
+    if(_isMuted) {
+      return 0;
+    } else {
+      return _volume;
+    }
+  }
+
+  public function setMuted(muted:Boolean):void {
+
+    if (_isMuted == muted)
+      return;
+
+    if (muted) {
+      _oldVolume = (_stream == null) ? _oldVolume : _stream.soundTransform.volume;
+      setVolume(0);
+    } else {
+      setVolume(_oldVolume);
+    }
+
+    _isMuted = muted;
+  }
+
+
+  private function sendEvent(eventName:String) {
+
+    // calculate this to mimic HTML5
+    _bufferedTime = _bytesLoaded / _bytesTotal * _duration;
+
+    // build JSON
+    var values:String =
+      "duration:" + _duration +
+        ",framerate:" + _framerate +
+        ",currentTime:" + currentTime() +
+        ",muted:" + _isMuted +
+        ",paused:" + _isPaused +
+        ",ended:" + _isEnded +
+        ",volume:" + _volume +
+        ",src:\"" + _currentUrl + "\"" +
+        ",bytesTotal:" + _bytesTotal +
+        ",bufferedBytes:" + _bytesLoaded +
+        ",bufferedTime:" + _bufferedTime +
+        ",videoWidth:" + _videoWidth +
+        ",videoHeight:" + _videoHeight +
+        "";
+
+    _element.sendEvent(eventName, values);
+  }
+
+  private function parseRTMP(url:String) {
+    var match:Array = url.match(/(.*)\/((flv|mp4|mp3):.*)/);
+    var rtmpInfo:Object = {
+      server: null,
+      stream: null
+    };
+
+    if (match) {
+      rtmpInfo.server = match[1];
+      rtmpInfo.stream = match[2];
+    }
+    else {
+      rtmpInfo.server = url.replace(/\/[^\/]+$/,"/");
+      rtmpInfo.stream = url.split("/").pop();
+    }
+
+    trace("parseRTMP - server: " + rtmpInfo.server + " stream: " + rtmpInfo.stream);
+
+    return rtmpInfo;
+  }
+
+  private function getCurrentUrl(pos:Number):String {
+    var url:String = _currentUrl;
+    if (_pseudoStreamingEnabled) {
+      if (url.indexOf('?') > -1) {
+        url = url + '&' + _pseudoStreamingStartQueryParam + '=' + pos;
+      }
+      else {
+        url = url + '?' + _pseudoStreamingStartQueryParam + '=' + pos;
+      }
+    }
+    return url;
+  }
+}
+}
+


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252910 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/charts/src/mx/charts/LineChart.as
+++ frameworks/projects/charts/src/mx/charts/LineChart.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.charts
 {


Add AndroidPlatformVersionOverride to FrameworkClasses

--- frameworks/projects/framework/src/FrameworkClasses.as
+++ frameworks/projects/framework/src/FrameworkClasses.as
@@ -155,6 +155,7 @@
 	import mx.styles.IStyleModule; IStyleModule;
 	import mx.styles.AdvancedStyleClient; AdvancedStyleClient;
 	import mx.utils.ArrayUtil; ArrayUtil;
+	import mx.utils.AndroidPlatformVersionOverride; AndroidPlatformVersionOverride;
 	import mx.utils.Base64Decoder; Base64Decoder;
 	import mx.utils.Base64Encoder; Base64Encoder;
 	import mx.utils.BitFlagUtil; BitFlagUtil;


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259312 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/IFactory.as
+++ frameworks/projects/framework/src/mx/core/IFactory.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19153
Author:   dloverin@adobe.com
Date:     2010-12-08T18:39:40.007050Z

Log Message:
-----------
ModuleLoader now unloads a module when the url property is set to an empty string.

Modify ModuleLoader to unload a module when the url property is set to an empty string. SWFLoader has this behavior when the source property is set to an empty string. The current behavior tries to load an module at the empty string and generates an error.

QE notes: None.
Doc notes: None.
Bugs: SDK-28274
Reviewer: Alex
Tests run: cyclone server
Is noteworthy for integration: No.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/modules/ModuleLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/modules/ModuleLoader.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269687 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/modules/ModuleLoader.as
+++ frameworks/projects/mx/src/mx/modules/ModuleLoader.as
@@ -289,7 +289,7 @@

         dispatchEvent(new FlexEvent(FlexEvent.URL_CHANGED));

-        if (_url != null && loadRequested)
+        if (_url != null && _url != "" && loadRequested)
             loadModule();
     }

@@ -350,9 +350,9 @@
         if (url != null)
             _url = url;

-        if (_url == null)
-        {
-            //trace("loadModule() - null url");
+        if (_url == null || _url == "")
+        {
+            //trace("loadModule() - null url or empty string url");
             return;
         }


Added default text for unknown errors

Added default text for unknown errors

--- src/com/axis/ErrorManager.as
+++ src/com/axis/ErrorManager.as
@@ -98,6 +98,9 @@
     public static function dispatchError(errorCode:Number, errorData:Array = null):void {
       var functionName:String = "Locomote('" + Player.locomoteID + "').__playerEvent";
       var errorMessage:String = (errorData) ? ErrorManager.resolveErrorString(STREAM_ERRORS[errorCode], errorData) : STREAM_ERRORS[errorCode];
+      if (null === errorMessage) {
+        errorMessage = "An unknown error has occurred.";
+      }
       var errorInfo:Object = {
         'code': errorCode,
         'message': errorMessage


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259488 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as
+++ frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as
@@ -21,6 +21,11 @@
  *  This application can not share memory with, or can not have access to,
  *  the other applications in the group, but uses the bridge
  *  to communicate with these applications.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public interface ISWFBridgeGroup
 {
@@ -37,6 +42,11 @@
     /**
      *  The bridge that is used to communicate
      *  with this group's parent application.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function get parentBridge():IEventDispatcher;

@@ -58,6 +68,11 @@
      *
      *  @param bridgeProvider The DisplayObject that loaded the content
      *  represented by the bridge. Usually this is will be an instance of the SWFLoader class.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function addChildBridge(bridge:IEventDispatcher, bridgeProvider:ISWFBridgeProvider):void;

@@ -65,6 +80,11 @@
      *  Removes the child bridge.
      *
      *  @param bridge The bridge to remove.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function removeChildBridge(bridge:IEventDispatcher):void;

@@ -78,6 +98,11 @@
      *  @param bridge The target bridge.
      *
      *  @return The object that loaded the child.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function getChildBridgeProvider(bridge:IEventDispatcher):ISWFBridgeProvider;

@@ -86,6 +111,11 @@
      *
      *  @return An array of all the child bridges in this group.
      *  Each object in the array is of type IEventDispatcher.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function getChildBridges():Array /* of IEventDispatcher */;

@@ -95,6 +125,11 @@
      *  @param bridge The bridge to test.
      *
      *  @return true if the handle is found; otherwise false.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function containsBridge(bridge:IEventDispatcher):Boolean;
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252872 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/charts/src/mx/charts/GridLines.as
+++ frameworks/projects/charts/src/mx/charts/GridLines.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.charts
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 16304
Author:   dloverin@adobe.com
Date:     2010-05-24T20:02:24.057208Z

Log Message:
-----------
Move a couple of classes from mx back to framework

Moved some classes from mx.swc back to framework.swc so that spark.swc does not have any inheritance dependencies on mx.swc. Otherwise the spark RSL would always require the mx RSL. Moved IDropInListItemRenderer, BaseListData, and ITextInput.

Checkintests:
Add a checkintests for the removing unused RSLs feature and the mx split. Verify the Spark-based HelloWord.swf application does not have a definition of “mx.controls.Label” in its ApplicationDomain (verifies the mx RSL was not loaded).

Also fixed compiler “contains an application or module” warnings in:
AnimateConstraintsTests
EasingTests

QE notes: None
Doc notes: None
Bugs:
Reviewer: Alex
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/build.xml</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/listClasses/BaseListData.as" copyfrom-rev="16298" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/BaseListData.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/mx/src/mx/core/ITextInput.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/spark/scripts/RemoveUnusedRSLsTestScript.mxml</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/listClasses/IDropInListItemRenderer.as" copyfrom-rev="16298" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/IDropInListItemRenderer.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/listClasses/BaseListData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/spark/views/RemoveUnusedRSLsTests.mxml</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/mx/src/mx/core/ITextInput.as" copyfrom-rev="16298" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ITextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/spark/views/AnimateConstraintsTests.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/spark/views/EasingTests.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/spark/views/HelloWorld.mxml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/mx/src/mx/controls/listClasses/IDropInListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests-config.xml</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1258398 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/FrameworkClasses.as
+++ frameworks/projects/framework/src/FrameworkClasses.as
@@ -44,6 +44,7 @@
 	import mx.containers.utilityClasses.FlexChildInfo; FlexChildInfo;
 	import mx.containers.utilityClasses.IConstraintLayout; IConstraintLayout;
 	import mx.controls.colorPickerClasses.WebSafePalette; WebSafePalette;
+	import mx.controls.listClasses.IDropInListItemRenderer; IDropInListItemRenderer;
 	import mx.controls.listClasses.IListItemRenderer; IListItemRenderer;
 	import mx.core.BitmapAsset; BitmapAsset;
 	import mx.core.ButtonAsset; ButtonAsset;
@@ -62,6 +63,7 @@
 	import mx.core.INavigatorContent; INavigatorContent;
 	import mx.core.ISelectableList; ISelectableList;
 	import mx.core.ISystemCursorClient; ISystemCursorClient;
+	import mx.core.ITextInput; ITextInput;
 	import mx.core.IUID; IUID;
 	import mx.core.MovieClipAsset; MovieClipAsset;
 	import mx.core.MovieClipLoaderAsset; MovieClipLoaderAsset;


Transferred from the Adobe Open Source Subversion Repository

Revision: 10755
Author:   clucier@adobe.com
Date:     2009-09-30T19:32:20.239118Z

Log Message:
-----------
Cleanup. Removing all 2.x APIs that have been deprecated since 3.0.

QE notes:  None
Doc notes: None
Bugs: SDK-23265
Reviewer: Ryan, Gordon
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/HistoryManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceBundle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IHistoryManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/Locale.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267963 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/ColorPicker.as
+++ frameworks/projects/mx/src/mx/controls/ColorPicker.as
@@ -139,17 +139,6 @@
 include "../styles/metadata/TextStyles.as"

 /**
- *  Color of the SwatchPanel object's background.
- *  The default value is 0xE5E6E7.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="backgroundColor", type="uint", format="Color", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
  *  Color of the outer border on the SwatchPanel object.
  *  The default value is 0xA5A9AE.
  *
@@ -181,17 +170,6 @@
  *  @productversion Flex 3
  */
 [Style(name="closeEasingFunction", type="Function", inherit="no")]
-
-/**
- *  Number of columns in the swatch grid.
- *  The default value is 20.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="columnCount", type="int", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]

 /**
  *  Alphas used for the background fill of controls.
@@ -228,17 +206,6 @@
 [Style(name="highlightAlphas", type="Array", arrayType="Number", inherit="no", theme="halo")]

 /**
- *  Horizontal gap between swatches in the swatch grid.
- *  The default value is 0.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="horizontalGap", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
  *  Length of an open transition, in milliseconds.
  *  The default value is 250.
  *
@@ -305,29 +272,6 @@
 [Style(name="paddingTop", type="Number", format="Length", inherit="no")]

 /**
- *  Height of the larger preview swatch that appears above the swatch grid on
- *  the upper left of the SwatchPanel object.
- *  The default value is 22.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="previewHeight", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Width of the larger preview swatch.
- *  The default value is 45.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="previewWidth", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
  *  Color of the swatches' borders.
  *  The default value is 0x000000.
  *
@@ -348,63 +292,6 @@
  *  @productversion Flex 3
  */
 [Style(name="swatchBorderSize", type="Number", format="Length", inherit="no")]
-
-/**
- *  Color of the background rectangle behind the swatch grid.
- *  The default value is 0x000000.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="swatchGridBackgroundColor", type="uint", format="Color", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Size of the single border around the grid of swatches.
- *  The default value is 0.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="swatchGridBorderSize", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Height of each swatch.
- *  The default value is 12.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="swatchHeight", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Color of the highlight that appears around the swatch when the user
- *  rolls over a swatch.
- *  The default value is 0xFFFFFF.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="swatchHighlightColor", type="uint", format="Color", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Size of the highlight that appears around the swatch when the user
- *  rolls over a swatch.
- *  The default value is 1.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="swatchHighlightSize", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]

 /**
  *  Name of the class selector that defines style properties for the swatch panel.
@@ -439,60 +326,13 @@
  */
 [Style(name="swatchPanelStyleName", type="String", inherit="no")]

-/**
- *  Width of each swatch.
- *  The default value is 12.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="swatchWidth", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Name of the style sheet definition to configure the text input control.
- *  The default value is "swatchPanelTextField"
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="textFieldStyleName", type="String", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Width of the text box that appears above the swatch grid.
- *  The default value is 72.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="textFieldWidth", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
-/**
- *  Vertical gap between swatches in the grid.
- *  The default value is 0.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
-[Style(name="verticalGap", type="Number", format="Length", inherit="no", deprecatedReplacement="swatchPanelStyleName", deprecatedSince="3.0")]
-
 //--------------------------------------
 //  Excluded APIs
 //--------------------------------------
-
 [Exclude(name="text", kind="property")]

 [Exclude(name="fillAlphas", kind="style")]
-
 [Exclude(name="fillColors", kind="style")]
-
 [Exclude(name="highlightAlphas", kind="style")]

 //--------------------------------------


Transferred from the Adobe Open Source Subversion Repository

Revision: 5908
Author:   smgilson@adobe.com
Date:     2009-04-03T14:45:19.262491Z

Log Message:
-----------
Some ASDoc clean up post merge

QE Notes: None
Doc Notes: None
Bugs: -
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpMenuButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/com/adobe/viewsource/ViewSource.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1268379 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/PopUpButton.as
+++ frameworks/projects/mx/src/mx/controls/PopUpButton.as
@@ -450,13 +450,17 @@
     private var _closeOnActivity:Boolean = true;

     /**
-     *  If true, specifies popUp would close
-     *  on click/enter activity.
-     *  In popUp like Menu/List/TileList etc,
-     *  one need not change this as they should close on activity.
-     *  However for multiple selection, and other popUp,
-     *  this can be set to false, to prevent the
-     *  popUp from closing on activity.
+     *  If true, specifies that the pop-up control closes
+     *  on a click or other user activity.
+     *  The pop-up control is the control opened by a click on the
+     *  pop-up button.
+     *
+     *
For pop-up controls like Menu, List, or TileList,
+     *  you can leave this property with its default value of true
+     *  because those controls should close on activity.
+     *  However, for multiple selection and other types of pop-up controls,
+     *  you can set this property to false to prevent the
+     *  pop-up control from closing on activity.

      *
      *  @default true
      */
@@ -951,21 +955,21 @@

         if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
         {
-        	try
-	        {
-	            bm = currentSkin["borderMetrics"];
-	        }
-	        catch(e:Error)
-	        {
-	            bm = new EdgeMetrics(3, 3, 3, 3);
-	        }
+            try
+            {
+                bm = currentSkin["borderMetrics"];
+            }
+            catch(e:Error)
+            {
+                bm = new EdgeMetrics(3, 3, 3, 3);
+            }
         }
         else
         {
-	        if (currentSkin is IRectangularBorder)
-	        	bm = IRectangularBorder(currentSkin).borderMetrics;
-	        else
-				bm = new EdgeMetrics(3, 3, 3, 3);
+            if (currentSkin is IRectangularBorder)
+                bm = IRectangularBorder(currentSkin).borderMetrics;
+            else
+                bm = new EdgeMetrics(3, 3, 3, 3);
         }

         var popUpIcon:IFlexDisplayObject =


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1274398 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/rpc/src/mx/rpc/soap/SOAPResult.as
+++ frameworks/projects/rpc/src/mx/rpc/soap/SOAPResult.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  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
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Removed runCallbackNow parameter from juggleImmediateCallback().

Change-Id: I53ec871bbd2dcde12caba43e90023182062f04bd

--- WeaveAPI/src/weave/api/juggleImmediateCallback.as
+++ WeaveAPI/src/weave/api/juggleImmediateCallback.as
@@ -24,10 +24,9 @@
 	 * @param newTarget The new target, which may be null.
 	 * @param relevantContext Corresponds to the relevantContext parameter of ICallbackCollection.addImmediateCallback().
 	 * @param callback Corresponds to the callback parameter of ICallbackCollection.addImmediateCallback().
-	 * @param runCallbackNow Corresponds to the runCallbackNow parameter of ICallbackCollection.addImmediateCallback().
 	 * @see weave.api.core.ICallbackCollection#addImmediateCallback
 	 */
-	public function juggleImmediateCallback(oldTarget:ILinkableObject, newTarget:ILinkableObject, relevantContext:Object, callback:Function, runCallbackNow:Boolean = false):void
+	public function juggleImmediateCallback(oldTarget:ILinkableObject, newTarget:ILinkableObject, relevantContext:Object, callback:Function):void
 	{
 		// do nothing if the targets are the same.
 		if (oldTarget == newTarget)
@@ -39,6 +38,6 @@

 		// add callback to new target
 		if (newTarget)
-			WeaveAPI.SessionManager.getCallbackCollection(newTarget).addImmediateCallback(relevantContext, callback, runCallbackNow);
+			WeaveAPI.SessionManager.getCallbackCollection(newTarget).addImmediateCallback(relevantContext, callback);
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1260662 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/events/IndexChangedEvent.as
+++ frameworks/projects/framework/src/mx/events/IndexChangedEvent.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2004-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 8023
Author:   aharui@adobe.com
Date:     2009-06-19T23:37:02.437061Z

Log Message:
-----------
Frame1 cleanup part 2 (final part AFAIK).  MarshallPLan (now MarshallingSupport) is now opt-in.  All SWFs using Marshalling must use -includes=mx.managers.systemClasses.MarshallingSupport on the command line.

QE Notes: None
Doc Notes: None
Bugs: N/A
Reviewer: Joan cyclone
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.as" copyfrom-rev="7988" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallingSupport.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1261467 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/managers/DragManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/DragManagerImpl.as
@@ -35,7 +35,6 @@
 import mx.managers.ISystemManager;
 import mx.managers.dragClasses.DragProxy;
 import mx.managers.SystemManager;
-import mx.managers.marshalClasses.DragManagerMarshalMixin;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.StyleManager;

@@ -79,11 +78,6 @@
 	//
 	//--------------------------------------------------------------------------

-    /**
-     *  @private
-     */
-    private static function weakDependency():void { DragManagerMarshalMixin };
-
 	/**
 	 *  @private
 	 */
@@ -132,7 +126,8 @@
 			sm.addEventListener(MouseEvent.MOUSE_UP, sm_mouseUpHandler, false, 0, true);
 		}

-		dispatchEvent(new Event("initialize"));
+        if (hasEventListener("initialize"))
+		    dispatchEvent(new Event("initialize"));

 	}

@@ -264,7 +259,8 @@

 		bDoingDrag = true;

-		dispatchEvent(new Event("doDrag"));
+        if (hasEventListener("doDrag"))
+    		dispatchEvent(new Event("doDrag"));

 		this.dragInitiator = dragInitiator;

@@ -272,7 +268,10 @@
 		// an instance of the dragImage.
 		dragProxy = new DragProxy(dragInitiator, dragSource);

-		if (dispatchEvent(new DragEvent("popUpChildren", false, true, dragProxy)))
+        var e:Event;
+        if (hasEventListener("popUpChildren"))
+            e = new DragEvent("popUpChildren", false, true, dragProxy);
+        if (!e || dispatchEvent(e))
 			sm.popUpChildren.addChild(dragProxy);

 		if (!dragImage)
@@ -369,7 +368,8 @@
 		if (dragProxy)
 			dragProxy.target = target as DisplayObject;

-		dispatchEvent(new Request("acceptDragDrop", false, false, target));
+        if (hasEventListener("acceptDragDrop"))
+    		dispatchEvent(new Request("acceptDragDrop", false, false, target));

 	}

@@ -396,7 +396,8 @@
 			dragProxy.action = feedback;
 		}

-		dispatchEvent(new Request("showFeedback", false, false, feedback));
+        if (hasEventListener("showFeedback"))
+    		dispatchEvent(new Request("showFeedback", false, false, feedback));

 	}

@@ -414,11 +415,14 @@
 	 */
 	public function getFeedback():String
 	{
-		var request:Request = new Request("getFeedback", false, true);
-		if (!dispatchEvent(request))
-		{
-			return request.value as String;
-		}
+        if (hasEventListener("getFeedback"))
+        {
+		    var request:Request = new Request("getFeedback", false, true);
+		    if (!dispatchEvent(request))
+		    {
+			    return request.value as String;
+		    }
+        }

 		// trace("<--getFeedback for DragManagerImpl", sm);
 		return dragProxy ? dragProxy.action : DragManager.NONE;
@@ -429,7 +433,13 @@
 	 */
 	public function endDrag():void
 	{
-		if (dispatchEvent(new Event("endDrag", false, true)))
+        var e:Event;
+        if (hasEventListener("endDrag"))
+        {
+            e = new Event("endDrag", false, true);
+        }
+
+		if (!e || dispatchEvent(e))
 		{
 			if (dragProxy)
 			{
@@ -439,6 +449,7 @@
 				dragProxy = null;
 			}
 		}
+
 		dragInitiator = null;
 		bDoingDrag = false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 3556
Author:   jvroom@adobe.com
Date:     2008-10-10T02:40:26.102583Z

Log Message:
-----------
http/Operation.as:
http/HTTPMultiService.as:
   - added showBusyCursor for HTTPMultiService

remoting/RemoteObject.as:
remoting/mxml/RemoteObject.as:
   - when I moved concurrency and showBusyCursor to the RemoteObject Operation class I forgot to
     move them on RemoteObject itself.  showBusyCursor might be on even if you did not
     want it on.

events/ResultEvent.as:
events/AbstractEvent.as:
   - need to be able to modify the result/token in the result event to implement
     management of RPC services (mx_internal)

QE: showBusyCursor on HTTPMultiService
Docs: ASDoc updated
Checkintests: pass
Reivewer: Seth

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/ResultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/AbstractEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPMultiService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/Operation.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1274305 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as
+++ frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as
@@ -17,15 +17,10 @@

 import mx.core.mx_internal;
 import mx.core.IMXMLObject;
-import mx.messaging.Channel;
-import mx.messaging.ChannelSet;
-import mx.messaging.channels.AMFChannel;
-import mx.messaging.channels.SecureAMFChannel;
 import mx.resources.IResourceManager;
 import mx.resources.ResourceManager;
 import mx.rpc.AbstractOperation;
 import mx.rpc.events.FaultEvent;
-import mx.rpc.mxml.Concurrency;
 import mx.rpc.mxml.IMXMLSupport;
 import mx.rpc.remoting.mxml.Operation;
 import mx.rpc.remoting.RemoteObject;
@@ -98,8 +93,6 @@
     public function RemoteObject(destination:String = null)
     {
         super(destination);
-        concurrency = Concurrency.MULTIPLE;
-        showBusyCursor = false;
     }

     //--------------------------------------------------------------------------
@@ -119,50 +112,6 @@
     // Properties
     //
     //--------------------------------------------------------------------------
-
-    [Inspectable(enumeration="multiple,single,last", defaultValue="multiple", category="General")]
-   /**
-    * Value that indicates how to handle multiple calls to the same service. The default
-    * value is multiple. The following values are permitted:
-    *

-    *
multiple - Existing requests are not cancelled, and the developer is
-    * responsible for ensuring the consistency of returned data by carefully
-    * managing the event stream. This is the default.

-    *
single - Making only one request at a time is allowed on the method; additional requests made
-    * while a request is outstanding are immediately faulted on the client and are not sent to the server.

-    *
last - Making a request causes the client to ignore a result or fault for any current outstanding request.
-    * Only the result or fault for the most recent request will be dispatched on the client.
-    * This may simplify event handling in the client application, but care should be taken to only use
-    * this mode when results or faults for requests may be safely ignored.

-    *

-    */
-    public function get concurrency():String
-    {
-        return _concurrency;
-    }
-
-    /**
-     *  @private
-     */
-    public function set concurrency(c:String):void
-    {
-        _concurrency = c;
-    }
-
-    [Inspectable(defaultValue="false", category="General")]
-    /**
-    * If true, a busy cursor is displayed while a service is executing. The default
-    * value is false.
-    */
-    public function get showBusyCursor():Boolean
-    {
-        return _showBusyCursor;
-    }
-
-    public function set showBusyCursor(sbc:Boolean):void
-    {
-        _showBusyCursor = sbc;
-    }

     //--------------------------------------------------------------------------
     //
@@ -266,9 +215,6 @@

     mx_internal var id:String;

-    private var _concurrency:String;
-
-    private var _showBusyCursor:Boolean;
 }

 }


We want to ensure we sound out position, so call regular stop()
after we autorewind.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@717 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flash/media/FlvVideoPlayer.as
+++ src/as/com/threerings/flash/media/FlvVideoPlayer.as
@@ -243,8 +243,7 @@
                 handlePositionCheck(); // if we never got metadata, retrieve final position as dur
                 // rewind to the beginning
                 _netStream.seek(0);
-                _netStream.pause();
-                updateState(MediaPlayerCodes.STATE_PAUSED);
+                pause();
             }
             break;


allowLoadBytesCodeExecution is deprecated.

Also handle any security error events.

--- runtime/src/main/as/flump/executor/load/BaseLoader.as
+++ runtime/src/main/as/flump/executor/load/BaseLoader.as
@@ -6,6 +6,7 @@
 import flash.display.Loader;
 import flash.events.Event;
 import flash.events.IOErrorEvent;
+import flash.events.SecurityErrorEvent;
 import flash.net.URLRequest;
 import flash.system.ApplicationDomain;
 import flash.system.LoaderContext;
@@ -40,11 +41,7 @@
     protected function submitLoader (exec :Executor, loadExecer :Function) :Future {
         if (exec == null) exec = new Executor();
         const context :LoaderContext = new LoaderContext();
-        // allowLoadBytesCodeExecution is an AIR-only LoaderContext property that must be true
-        // to avoid 'SecurityError: Error #3015' when loading swfs with executable code
-        try {
-            Object(context)["allowLoadBytesCodeExecution"] = true;
-        } catch (e :Error) {}
+        context.allowCodeImport = true;
         if (_useSubDomain) {
             context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
         } else {
@@ -56,6 +53,7 @@
                 handleSuccess(onSuccess, loader);
             });
             loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onFail);
+            loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onFail);
             loadExecer(loader, context);
         });
     }


refined code

refined code

--- DataTools.as
+++ DataTools.as
@@ -54,6 +54,11 @@

         protected function saveAsUtf8(str:String):ByteArray {
             var bytes:ByteArray = new ByteArray();
+            // add BOM
+            bytes.writeByte(0xEF);
+            bytes.writeByte(0xBB);
+            bytes.writeByte(0xBF);
+
             bytes.writeUTFBytes(str);

             return bytes;
@@ -61,6 +66,8 @@

         protected function saveAsUtf16(str:String):ByteArray {
             var bytes:ByteArray = new ByteArray();
+            bytes.writeByte(0xFF);
+            bytes.writeByte(0xFE);
             for (var i:int = 0; i < str.length; i++) {
                 var code:int = str.charCodeAt(i);
                 if (code < 0XFF) {
@@ -74,7 +81,7 @@
         protected function register():void {
         	ExternalInterface.addCallback('setFileName', setFileName);
         	ExternalInterface.addCallback('setCharset', setCharset);
-        	ExternalInterface.addCallback('setStrData', setData);
+        	ExternalInterface.addCallback('setStrData', setStrData);
         }

         // set file name
@@ -87,7 +94,7 @@
             charset = newCharset;
         }

-        public function setData(newData:String):void {
+        public function setStrData(newData:String):void {
             data = newData;
         }
     }