Transferred from the Adobe Open Source Subversion Repository

Revision: 5019
Author:   smgilson@adobe.com
Date:     2009-02-19T21:17:21.579153Z

Log Message:
-----------
ASDoc updates to indicate that some Halo containers do not work with the Spark equiv (ControlBar does not work with Spark Panel/AppControlBar does not work with Spark Application), and indicate that Canvas, Box, Tile, Panel have Spark equivs

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Box.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Canvas.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Tile.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/VBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/HBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.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/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as</path>

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

--- frameworks/projects/mx/src/mx/containers/Panel.as
+++ frameworks/projects/mx/src/mx/containers/Panel.as
@@ -274,11 +274,14 @@
 [IconFile("Panel.png")]

 /**
- *  A Panel container consists of a title bar, a caption, a border,
+ *  A Halo Panel container consists of a title bar, a caption, a border,
  *  and a  content area for its children.
  *  Typically, you use Panel containers to wrap top-level application modules.
  *  For example, you could include a shopping cart in a Panel container.
- *
+ *
+ *
Note: Adobe recommends that, when possible, you use the
+ *  Spark Panel container instead of the Halo Panel container.

+ *
  *
The Panel container has the following default sizing characteristics:

  *

  *

@@ -352,6 +355,7 @@
  *
  *  @includeExample examples/SimplePanelExample.mxml
  *
+ *  @see mx.components.Panel
  *  @see mx.containers.ControlBar
  *  @see mx.containers.VBox
  */
@@ -1398,7 +1402,7 @@
             g.endFill();

             // Also draw an invisible unfilled rect whose height
-			// is the height of the entire Panel, not just the headerHeight.
+            // is the height of the entire Panel, not just the headerHeight.
             // This is for accessibility; the titlebar of the Panel
             // has an AccessibilityImplementation (see PanelAccImpl)
             // which makes it act like a grouping (ROLE_SYSTEM_GROUPING)
@@ -1906,13 +1910,13 @@
         // changes a lot -- but this listener only exists during a drag.
         event.stopImmediatePropagation();

-    	if (isNaN(regX) || isNaN(regY))
-    	{
-    		// trace("all the mouse moves were not turned off");
-    		return;
-    	}
-
-    	// trace("systemManager_mouseMoveHandler " + event);
+        if (isNaN(regX) || isNaN(regY))
+        {
+            // trace("all the mouse moves were not turned off");
+            return;
+        }
+
+        // trace("systemManager_mouseMoveHandler " + event);
         move(event.stageX - regX, event.stageY - regY);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18635
Author:   aharui@adobe.com
Date:     2010-11-17T00:18:36.469040Z

Log Message:
-----------
Add estimatedSizes to the layout infrastructure to better deal with text reflow.
Add new events to layout infrastructure to deal with caching of size information

QE notes: New APIs and Interfaces
Doc notes: New APIs and interfaces
Bugs: SDK-27226, SDK-26155, SDK-25483, SDK-23621, SDK-27225, SDK-26993, SDK-25535, SDK-25521
Reviewer: Evtim
Tests run: checkintests mustella full run
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/layoutClasses/PriorityQueue.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IContainerInvalidating.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/FormTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ILayoutManagerContainerClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IStyleManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Container.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/mx/src/mx/core/Application.as
+++ frameworks/projects/mx/src/mx/core/Application.as
@@ -986,8 +986,20 @@

     /**
      *  @private
-     */
-    override protected function invalidateParentSizeAndDisplayList():void
+     *  Applications set estimated sizes for their children
+     */
+    override public function setActualSize(w:Number, h:Number):void
+    {
+        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_5)
+            setEstimatedSize(w, h, false);
+
+        super.setActualSize(w, h);
+    }
+
+    /**
+     *  @private
+     */
+    override protected function invalidateParentSizeAndDisplayList(estimatedSizesChanged:Boolean = false):void
     {
         if (!includeInLayout)
             return;
@@ -1001,7 +1013,7 @@
             return;
         }

-        super.invalidateParentSizeAndDisplayList();
+        super.invalidateParentSizeAndDisplayList(estimatedSizesChanged);
     }

     /**
@@ -1812,6 +1824,7 @@
         {
             invalidateProperties();
             invalidateSize();
+            invalidateEstimatedSizesOfChildren();
         }

         setActualSize(w, h);


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@1269607 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/events/ListEvent.as
+++ frameworks/projects/mx/src/mx/events/ListEvent.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


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@1259566 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/IUITextField.as
+++ frameworks/projects/framework/src/mx/core/IUITextField.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 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.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 3509
Author:   jimurphy@adobe.com
Date:     2008-10-07T18:19:17.646255Z

Log Message:
-----------
Rename of flex -> mx.

For compatibility reasons it was decided that the new functionality remain integrated with the old framework, although we will continue to build two separate SWCs, one with primarily existing framework classes, and one with new Flex 4 classes. This change removes duplicate names from the Flex 4 framework to avoid class name overlapping with the old framework code.  The naming overlap consists of two major areas:  New Components, and New Effects

Modified Paths:
--------------
386 paths were modified

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

--- frameworks/projects/spark/src/spark/components/HSlider.as
+++ frameworks/projects/spark/src/spark/components/HSlider.as
@@ -9,18 +9,19 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package flex.component
+package mx.components
 {

 import flash.geom.Point;

-import flex.intf.ILayoutItem;
-import flex.layout.LayoutItemFactory;
+import mx.layout.ILayoutItem;
+import mx.layout.LayoutItemFactory;
+import mx.components.baseClasses.FxSlider;

 /**
  *  HSlider
  */
-public class HSlider extends Slider
+public class FxHSlider extends FxSlider
 {
     include "../core/Version.as";

@@ -33,7 +34,7 @@
     /**
      *  Constructor.
      */
-    public function HSlider()
+    public function FxHSlider()
     {
         super();
     }


add informative trace when sendNotification fails

--- kdp3Lib/src/org/puremvc/as3/patterns/observer/Observer.as
+++ kdp3Lib/src/org/puremvc/as3/patterns/observer/Observer.as
@@ -4,6 +4,8 @@
 */
 package org.puremvc.as3.patterns.observer
 {
+	import com.kaltura.kdpfl.view.controls.KTrace;
+
 	import org.puremvc.as3.interfaces.*;

 	/**
@@ -106,6 +108,7 @@
 			}
 			catch(e : Error)
 			{
+				KTrace.getInstance().log("--Exception while notifying " + notification.getName() + ": " + e.message);
 				return;
 			}
 		}


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@1290619 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/olap/OLAPLevel.as
+++ frameworks/projects/advancedgrids/src/mx/olap/OLAPLevel.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.olap
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 217
Author:   clucier@adobe.com
Date:     2008-01-16T22:36:31.117550Z

Log Message:
-----------
Update per feedback from documentation team to be more consistent with other AIR centric events.

Bugs: N/A
Docs: Yes
QA: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>

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

--- frameworks/projects/airframework/src/mx/events/AIREvent.as
+++ frameworks/projects/airframework/src/mx/events/AIREvent.as
@@ -87,6 +87,58 @@
     public static const APPLICATION_DEACTIVATE:String = "applicationDeactivate";

     /**
+     *  The AIREvent.WINDOW_ACTIVATE constant defines the value of the
+     *  type property of the event object for a
+     *  windowActivate event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
file	The File object associated with this event.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *
type	AIREvent.WINDOW_ACTIVATE

+     *

+     *
+     *  @eventType windowActivate
+     */
+    public static const WINDOW_ACTIVATE:String = "windowActivate";
+
+    /**
+     *  The AIREvent.WINDOW_DEACTIVATE constant defines the value of the
+     *  type property of the event object for a
+     *  windowDeactivate event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
file	The File object associated with this event.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *
type	AIREvent.WINDOW_DEACTIVATE

+     *

+     *
+     *  @eventType windowDeactivate
+     */
+    public static const WINDOW_DEACTIVATE:String = "windowDeactivate";
+
+    /**
      *  The AIREvent.WINDOW_COMPLETE constant defines the value of the
      *  type property of the event object for an
      *  windowComplete event.


Transferred from the Adobe Open Source Subversion Repository

Revision: 1686
Author:   jimurphy@adobe.com
Date:     2008-05-13T19:12:45.745206Z

Log Message:
-----------
Merged 3.0.x revisions [1673,1676] -> trunk

Modified Paths:
--------------
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

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

--- frameworks/projects/framework/src/mx/controls/SWFLoader.as
+++ frameworks/projects/framework/src/mx/controls/SWFLoader.as
@@ -416,7 +416,7 @@

     /**
      *  A flag that indictes whether content starts loading automatically
-     *  or waits for a clal to the load() method.
+     *  or waits for a call to the load() method.
      *  If true, the content loads automatically.
      *  If false, you must call the load() method.
      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 1833
Author:   dloverin@adobe.com
Date:     2008-05-22T20:36:25.012027Z

Log Message:
-----------
Partially complete work on child topology for FocusManager and PopUpManagerImpl. Tested for three levels of children.
Known Issues:
1. 3rd level untrusted children do not display (A.1.3, A.2.3, A.3.3).
2. Tabbing problem after popping up an A.3.2 child.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/events/PopupRequest.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/events/SandboxBridgeEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/IFocusManager2.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/events/ShowAlertRequest.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/events/SizeRequest.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/ISystemManager2.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/utils/SandboxUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>

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

--- frameworks/projects/framework/src/mx/utils/SecurityUtil.as
+++ frameworks/projects/framework/src/mx/utils/SecurityUtil.as
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 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.utils
+{
+
+import mx.sandbox.ISandboxBridgeGroup;
+import mx.managers.ISystemManager2;
+
+
+/**
+ * Utilities for working with sandboxes.
+ */
+public class SandboxUtil
+{
+	public function SandboxUtil()
+	{
+	}
+
+	/**
+	 * Test if there is mutual trust between a SystemManager and its parent.
+	 */
+	public static function mutualTrustWithParent(sm:ISystemManager2):Boolean
+	{
+		var sandboxBridgeGroup:ISandboxBridgeGroup = sm.sandboxBridgeGroup;
+
+		if (sandboxBridgeGroup.parentBridge &&
+			sandboxBridgeGroup.canAccessParentBridge() &&
+		    sandboxBridgeGroup.accessibleFromParentBridge())
+			return true;
+
+		return false;
+	}
+
+}
+}


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@1269393 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/effects/RemoveChildAction.as
+++ frameworks/projects/mx/src/mx/effects/RemoveChildAction.as
@@ -48,6 +48,11 @@
  *  @see mx.states.RemoveChild
  *
  *  @includeExample ../states/examples/TransitionExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class RemoveChildAction extends Effect
 {
@@ -74,6 +79,11 @@
 	 *  Constructor.
 	 *
 	 *  @param target The Object to animate with this effect.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function RemoveChildAction(target:Object = null)
 	{


fix truncated debug2 logs

fix truncated debug2 logs

--- src/org/mangui/hls/demux/Nalu.as
+++ src/org/mangui/hls/demux/Nalu.as
@@ -104,7 +104,7 @@
                         for (var i : int = 0; i < units.length; i++) {
                             txt += NAMES[units[i].type] + ","; //+ ":" + units[i].length
                         }
-                        Log.debug2(txt.substr(0, txt.length - 2) + " slices");
+                        Log.debug2(txt.substr(0,txt.length-1) + " slices");
                     } else {
                         Log.debug2('AVC: no NALU slices found');
                     }


Fix uninitialized bool variable in editor script. Closes #1189.

--- bin/Data/Scripts/Editor/EditorScene.as
+++ bin/Data/Scripts/Editor/EditorScene.as
@@ -269,11 +269,11 @@
     String extension = GetExtension(fileName);
     bool success;
     if (extension == ".xml")
-        editorScene.SaveXML(file);
+        success = editorScene.SaveXML(file);
     else if (extension == ".json")
-        editorScene.SaveJSON(file);
-    else
-        editorScene.Save(file);
+        success = editorScene.SaveJSON(file);
+    else
+        success = editorScene.Save(file);
     RemoveBackup(success, fileName);

     editorScene.updateEnabled = false;


Updated Bounds2D.getGridContainment to use numeric min,max values.

--- WeaveData/src/weave/primitives/Bounds2D.as
+++ WeaveData/src/weave/primitives/Bounds2D.as
@@ -428,53 +428,23 @@
 		{
 			// Note: This function is optimized for speed

-			// this.xMin may not be <= this.xMax
-			var realXMin:Number;
-			var realXMax:Number;
-			var realYMin:Number;
-			var realYMax:Number;
-			if (xMin < xMax)
-			{
-				realXMin = xMin;
-				realXMax = xMax;
-			}
+			var xPositive:Boolean = xMin < xMax;
+			var yPositive:Boolean = yMin < yMax;
+
+			var xGridID:Number = 0;
+			if (x < (xPositive ? xMin : xMax))
+				xGridID = -1;
+			else if (x > (xPositive ? xMax : xMin))
+				xGridID = 1;
+
+			if (y < (yPositive ? yMin : yMax))
+				return 2 + xGridID; // 1 or 3
+			else if (y > (yPositive ? yMax : yMin))
+				return 6 - xGridID; // 5 or 7
+			else if (xGridID == 0)
+				return 0;
 			else
-			{
-				realXMin = xMax;
-				realXMax = xMin;
-			}
-			if (yMin < yMax)
-			{
-				realYMin = yMin;
-				realYMax = yMax;
-			}
-			else
-			{
-				realYMin = yMax;
-				realYMax = yMin;
-			}
-
-			var xGridID:Number = 1;
-			if (x < xMin)
-				xGridID = -1;
-			else if (x <= xMax)
-				xGridID = 0;
-
-			if (y < yMin)
-			{
-				return 2 + xGridID;
-			}
-			else if (y <= yMax)
-			{
-				if (xGridID == 0)
-					return 0;
-				return 6 - 2 * xGridID;
-			}
-			else
-			{
-				// yGridID == 1
-				return 6 - xGridID;
-			}
+				return 6 - 2 * xGridID; // 4 or 8

 //			staticRange_A.setRange(xMin, xMax);
 //			staticRange_B.setRange(yMin, yMax);
@@ -526,14 +496,14 @@

 			var x:Number = toXMin + (point.x - xMin) / (xMax - xMin) * (toXMax - toXMin);

-			if (x <= Infinity) // alternative to !isNaN()
+			if (x < Infinity) // alternative to !isNaN()
 				point.x = x;
 			else
 				point.x = (toXMin + toXMax) / 2;

 			var y:Number = toYMin + (point.y - yMin) / (yMax - yMin) * (toYMax - toYMin);

-			if (y <= Infinity) // alternative to !isNaN()
+			if (y < Infinity) // alternative to !isNaN()
 				point.y = y;
 			else
 				point.y = (toYMin + toYMax) / 2;


- bugfix: Label didn't update its text if no style changes happened as well

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@709 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/controls/Label.as
+++ src/reprise/controls/Label.as
@@ -236,10 +236,13 @@
 			}
 			m_labelDisplay.wordWrap = m_currentStyles.wordWrap == 'wrap';
 			m_labelDisplay.multiline = m_currentStyles.multiline;
-
+		}
+
+		override protected function validateChildren() : void
+		{
 			renderLabel();
 		}
-
+
 		/**
 		 * Don't do anything here: Labels don't have child elements
 		 */


- bugfix: It's now possible to assign a CSS Id to an element that's not currently attached to the display list

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@762 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/ui/UIComponent.as
+++ src/reprise/ui/UIComponent.as
@@ -701,7 +701,7 @@
 			{
 				m_rootElement.removeElementID(m_cssId);
 			}
-			m_rootElement.registerElementID(id, this);
+			m_rootElement && m_rootElement.registerElementID(id, this);
 			m_cssId = id;
 			invalidateStyles();
 		}
@@ -1380,6 +1380,10 @@
 			m_currentStyles = new ComputedStyles();
 			m_weakStyles = new CSSDeclaration();
 			m_stylesInvalidated = true;
+			if (m_cssId)
+			{
+				m_rootElement.registerElementID(m_cssId, this);
+			}
 			super.initialize();
 		}


Add type generics to AS3 test file.

Add type generics to AS3 test file.


Nothing but formatting and adding curly braces.

git-svn-id: c197267f952b24206666de142881703007ca05d5@11262 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/igniterealtime/xiff/collections/ArrayCollection.as
+++ src/org/igniterealtime/xiff/collections/ArrayCollection.as
@@ -1,10 +1,10 @@
 package org.igniterealtime.xiff.collections
 {
 	import flash.events.EventDispatcher;
-
+
 	import org.igniterealtime.xiff.collections.events.CollectionEvent;
 	import org.igniterealtime.xiff.collections.events.CollectionEventKind;
-
+
 	/**
 	 * The ArrayCollection class is a wrapper class that exposes an Array as a
 	 * collection that can be accessed and manipulated using collection methods.
@@ -12,19 +12,22 @@
 	public class ArrayCollection extends EventDispatcher
 	{
 		protected const OUT_OF_BOUNDS_MESSAGE:String = "The supplied index is out of bounds.";
-
-		protected var _source:Array;
-
+
+		protected var _source:Array = [];
+
 		/**
 		 * Constructor.
 		 */
-		public function ArrayCollection( source:Array=null )
+		public function ArrayCollection( source:Array = null )
 		{
 			super();
-
-			this.source = source ? source : [];
-		}
-
+
+			if (source)
+			{
+				this.source = source;
+			}
+		}
+
 		/**
 		 * The source of data in the ArrayCollection.
 		 */
@@ -32,7 +35,7 @@
 		{
 			return _source;
 		}
-
+
 		/**
 		 * @private
 		 */
@@ -41,7 +44,7 @@
 			_source = value ? value : [];
 			internalDispatchEvent( CollectionEventKind.RESET );
 		}
-
+
 		/**
 		 * The number of items in the ArrayCollection.
 		 */
@@ -49,20 +52,20 @@
 		{
 			return _source ? _source.length : 0;
 		}
-
+
 		/**
 		 * Get the item at the specified index.
 		 */
 		public function getItemAt( index:int ):*
 		{
-			if( index < 0 || index >= length )
-			{
-				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
-			}
-
+			if ( index < 0 || index >= length )
+			{
+				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
+			}
+
 			return _source[ index ];
 		}
-
+
 		/**
 		 * Places the item at the specified index.
 		 * If an item was already at that index the new item will replace it
@@ -70,16 +73,16 @@
 		 */
 		public function setItemAt( item:*, index:int ):*
 		{
-			if( index < 0 || index >= length )
-			{
-				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
-			}
-
+			if ( index < 0 || index >= length )
+			{
+				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
+			}
+
 			var replaced:* = _source.splice( index, 1, item )[ 0 ];
 			internalDispatchEvent( CollectionEventKind.REPLACE, item, index );
 			return replaced;
 		}
-
+
 		/**
 		 * Add the specified item to the end of the list.
 		 * Equivalent to addItemAt( item, length );
@@ -88,38 +91,38 @@
 		{
 			addItemAt( item, length );
 		}
-
+
 		/**
 		 * Add the specified item at the specified index.
 		 * Any item that was after this index is moved out by one.
 		 */
 		public function addItemAt( item:*, index:int ):void
 		{
-			if( index < 0 || index > length )
-			{
-				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
-			}
-
+			if ( index < 0 || index > length )
+			{
+				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
+			}
+
 			_source.splice( index, 0, item );
-
+
 			internalDispatchEvent( CollectionEventKind.ADD, item, index );
 		}
-
+
 		/**
 		 * Get the index of the item if it is in the ArrayCollection such that getItemAt( index ) == item.
 		 */
 		public function getItemIndex( item:* ):int
 		{
 			var n:int = _source.length;
-
-			for( var i:int = 0; i < n; i++ )
-			{
-				if( _source[ i ] === item ) return i;
-			}
-
+
+			for ( var i:int = 0; i < n; i++ )
+			{
+				if ( _source[ i ] === item ) return i;
+			}
+
 			return -1;
 		}
-
+
 		/**
 		 * Remove the specified item from this list, should it exist.
 		 */
@@ -127,41 +130,43 @@
 		{
 			var index:int = getItemIndex( item );
 			var result:Boolean = index >= 0;
-
-			if( result )
+
+			if ( result )
+			{
 				removeItemAt( index );
-
+			}
+
 			return result;
 		}
-
+
 		/**
 		 * Removes the item at the specified index and returns it.
 		 * Any items that were after this index are now one index earlier.
 		 */
 		public function removeItemAt( index:int ):*
 		{
-			if( index < 0 || index >= length )
-			{
-				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
-			}
-
+			if ( index < 0 || index >= length )
+			{
+				throw new RangeError( OUT_OF_BOUNDS_MESSAGE );
+			}
+
 			var removed:* = _source.splice( index, 1 )[ 0 ];
 			internalDispatchEvent( CollectionEventKind.REMOVE, removed, index );
 			return removed;
 		}
-
+
 		/**
 		 * Remove all items from the ArrayCollection.
 		 */
 		public function removeAll():void
 		{
-			if( length > 0 )
+			if ( length > 0 )
 			{
 				clearSource();
 				internalDispatchEvent( CollectionEventKind.RESET );
 			}
 		}
-
+
 		/**
 		 * Remove all items from the ArrayCollection without dispatching a RESET event.
 		 */
@@ -169,7 +174,7 @@
 		{
 			_source.splice( 0, length );
 		}
-
+
 		/**
 		 * Returns whether the ArrayCollection contains the specified item.
 		 */
@@ -177,7 +182,7 @@
 		{
 			return getItemIndex( item ) != -1;
 		}
-
+
 		/**
 		 * Notifies the view that an item has been updated.
 		 */
@@ -185,7 +190,7 @@
 		{
 			internalDispatchEvent( CollectionEventKind.UPDATE, item );
 		}
-
+
 		/**
 		 * Return an Array that is populated in the same order as the ArrayCollection.
 		 */
@@ -193,18 +198,22 @@
 		{
 			return _source.concat();
 		}
-
+
 		/**
 		 * Pretty prints the contents of the ArrayCollection to a string and returns it.
 		 */
 		override public function toString():String
 		{
-			if( _source )
+			if ( _source )
+			{
 				return _source.toString();
+			}
 			else
+			{
 				return super.toString();
-		}
-
+			}
+		}
+
 		/**
 		 * Dispatches a collection event with the specified information.
 		 */
@@ -216,6 +225,6 @@
 			event.location = location;
 			dispatchEvent( event );
 		}
-
+
 	}
-}+}


com/gsolo/encryption/SHA1.as: stop compile warnings.

--- flash-src/com/gsolo/encryption/SHA1.as
+++ flash-src/com/gsolo/encryption/SHA1.as
@@ -76,7 +76,7 @@
 			x[len >> 5] |= 0x80 << (24 - len % 32);
 			x[((len + 64 >> 9) << 4) + 15] = len;

-			var w:Array = Array(80);
+			var w:Array = new Array(80);
 			var a:Number =  1732584193;
 			var b:Number = -271733879;
 			var c:Number = -1732584194;
@@ -136,7 +136,7 @@
 		  var bkey:Array = str2binb (key);
 		  if (bkey.length > 16) bkey = core_sha1 (bkey, key.length * chrsz);

-		  var ipad:Array = Array(16), opad:Array = Array(16);
+		  var ipad:Array = new Array(16), opad:Array = new Array(16);
 		  for(var i:Number = 0; i < 16; i++) {
 			ipad[i] = bkey[i] ^ 0x36363636;
 			opad[i] = bkey[i] ^ 0x5C5C5C5C;
@@ -215,4 +215,4 @@
 			return str;
 		}
 	}
-}+}


Close All Windows no longer closes windows with closeable=false

Change-Id: Ie1b8bf13fe28ccca9fb16d04b7e8e16116d8d7ca

--- WeaveUI/src/weave/application/VisApplication.as
+++ WeaveUI/src/weave/application/VisApplication.as
@@ -1257,12 +1257,12 @@

 			_weaveMenu.addSeparatorToMenu(_windowMenu);

-			// Minimize All Windows: Get a list of all panels and call minimizePanel() on each sequentially
 			if (Weave.properties.enableMinimizeAllWindows.value)
 			{
 				click = function():void {
 					for each (panel in WeaveAPI.globalHashMap.getObjects(DraggablePanel))
-						panel.minimizePanel();
+						if (panel.minimizable.value && !panel.minimized.value)
+							panel.minimizePanel();
 				};
 				enable = function():Boolean {
 					for each (panel in WeaveAPI.globalHashMap.getObjects(DraggablePanel))
@@ -1273,12 +1273,12 @@
 				_weaveMenu.addMenuItemToMenu(_windowMenu, new WeaveMenuItem(lang("Minimize all windows"), click, null, enable));
 			}

-			// Restore all minimized windows: Get a list of all panels and call restorePanel() on each sequentially
 			if (Weave.properties.enableRestoreAllMinimizedWindows.value)
 			{
 				click = function():void {
 					for each (panel in WeaveAPI.globalHashMap.getObjects(DraggablePanel))
-						panel.restorePanel();
+						if (panel.minimized.value)
+							panel.restorePanel();
 				};
 				enable = function():Boolean {
 					for each (panel in WeaveAPI.globalHashMap.getObjects(DraggablePanel))
@@ -1289,12 +1289,12 @@
 				_weaveMenu.addMenuItemToMenu(_windowMenu, new WeaveMenuItem(lang("Restore all minimized windows"), click, null, enable));
 			}

-			// Close All Windows: Get a list of all panels and call removePanel() on each sequentially
 			if (Weave.properties.enableCloseAllWindows.value)
 			{
 				click = function():void {
 					for each (panel in WeaveAPI.globalHashMap.getObjects(DraggablePanel))
-						panel.removePanel();
+						if (panel.closeable.value)
+							panel.removePanel();
 				};
 				enable = function():Boolean {
 					for each (panel in WeaveAPI.globalHashMap.getObjects(DraggablePanel))


Transferred from the Adobe Open Source Subversion Repository

Revision: 10606
Author:   egeorgie@adobe.com
Date:     2009-09-25T23:01:50.455888Z

Log Message:
-----------
White space cleanup.

Doc notes: None
Bugs: None
Reviewer: Evtim
Tests run: build
Is noteworthy for integration: Nope

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/TransformOffsets.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/AddItems.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/OnDemandEventDispatcher.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/Block.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/CompoundTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutElementUIComponentUtils.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/BitmapFill.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ArrayList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ListCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/Transform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/DescribeTypeCache.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/sparkTest/src/testWheel.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/SparkSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/framework/src/mx/effects/Effect.as
+++ frameworks/projects/framework/src/mx/effects/Effect.as
@@ -165,7 +165,7 @@
         // Go through and remove any before/after values that are the same.
         for (var i:int = 0; i < propChanges.length; i++)
         {
-            if(propChanges[i].stripUnchangedValues == false)
+            if (propChanges[i].stripUnchangedValues == false)
                 continue;

             for (var prop:Object in propChanges[i].start)


Transferred from the Adobe Open Source Subversion Repository

Revision: 11489
Author:   egeorgie@adobe.com
Date:     2009-11-06T01:31:31.558232Z

Log Message:
-----------
Optimize Path data parsing and tweak display object sharing.
Fix bugs http://bugs.adobe.com/jira/browse/SDK-22567 Performance: Path data parsing trashes the GC
and http://bugs.adobe.com/jira/browse/SDK-24041 Path data containing exponential notation is not properly rendered

Changes: Don't use String.replace and String.split during Path data parsing; use parseFloat() to read the numbers off the string.

QE notes: None.
Doc notes: None
Bugs: None
Reviewer: Glenn
Tests run: checkintests, mustella (spark/primitives, gumbo/components)
Is noteworthy for integration: Yes - bug SDK-24041

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Path.as

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

--- frameworks/projects/spark/src/spark/primitives/Path.as
+++ frameworks/projects/spark/src/spark/primitives/Path.as
@@ -101,8 +101,8 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    private var segments:Array = [];
-
+	private var segments:PathSegmentsCollection;
+
     /**
      *  A GraphicsPath object that contains the drawing
      *  commands to draw this Path.
@@ -119,8 +119,8 @@
     //  Properties
     //
     //--------------------------------------------------------------------------
-
-    //----------------------------------
+
+	//----------------------------------
     //  data
     //----------------------------------

@@ -207,191 +207,18 @@
         if (_data == value)
             return;

-        // Clear out the existing segments
-        segments = [];
-
-        //If there's no processing that needs to
-        //occur, exit early.
-        if (!value)
-        {
-            _data = value;
-            return;
-        }
-
-        // Split letter followed by number (ie "M3" becomes "M 3")
-        var temp:String = value.replace(/([A-Za-z])([0-9\-\.])/g, "$1 $2");
-
-        // Split number followed by letter (ie "3M" becomes "3 M")
-        temp = temp.replace(/([0-9\.])([A-Za-z\-])/g, "$1 $2");
-
-        // Split letter followed by letter (ie "zM" becomes "z M")
-        temp = temp.replace(/([A-Za-z\-])([A-Za-z\-])/g, "$1 $2");
-
-        // Replace commas with spaces
-        temp = temp.replace(/,/g, " ");
-
-        // Trim leading and trailing spaces
-        temp = temp.replace(/^\s+/, "");
-        temp = temp.replace(/\s+$/, "");
-
-        // Finally, split the string into an array
-        var args:Array = temp.split(/\s+/);
-        var newSegments:Array = [];
-
-        var identifier:String;
-        var prevIdentifier:String = "";
-        var prevX:Number = 0;
-        var prevY:Number = 0;
-        var lastMoveX:Number = 0;
-        var lastMoveY:Number = 0;
-        var x:Number;
-        var y:Number;
-        var controlX:Number;
-        var controlY:Number;
-        var control2X:Number;
-        var control2Y:Number;
-
-        var getNumber:Function = function(useRelative:Boolean, index:int, offset:Number):Number
-        {
-            var result:Number = args[index];
-
-            if (useRelative)
-                result += offset;
-
-            return result;
-        }
-
-        for (var i:int = 0; i < args.length; )
-        {
-            if (isNaN(Number(args[i])))
-            {
-                identifier = args[i];
-                i++;
-            }
-            else if (prevIdentifier == "m" || prevIdentifier == "M")
-            {
-                // If a moveto is followed by multiple pairs of coordinates,
-                // the subsequent pairs are treated as implicit lineto commands.
-                identifier = prevIdentifier == "m" ? "l" : "L";
-            }
-
-            // Convert to lowercase to make the following comparison logic simpler
-            prevIdentifier = prevIdentifier.toLowerCase();
-
-            var useRelative:Boolean = (identifier.toLowerCase() == identifier);
-
-            switch (identifier.toLowerCase())
-            {
-                case "m":
-                    x = getNumber(useRelative, i++, prevX);
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new MoveSegment(x, y));
-                    lastMoveX = x;
-                    lastMoveY = y;
-                    break;
-
-                case "l":
-                    x = getNumber(useRelative, i++, prevX);
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new LineSegment(x, y));
-                    break;
-
-                case "h":
-                    x = getNumber(useRelative, i++, prevX);
-                    y = prevY;
-                    newSegments.push(new LineSegment(x, y));
-                    break;
-
-                case "v":
-                    x = prevX;
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new LineSegment(x, y));
-                    break;
-
-                case "q":
-                    controlX = getNumber(useRelative, i++, prevX);
-                    controlY = getNumber(useRelative, i++, prevY);
-                    x = getNumber(useRelative, i++, prevX);
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new QuadraticBezierSegment(controlX, controlY, x, y));
-                    break;
-
-                case "t":
-                    // control is a reflection of the previous control point
-                    if (prevIdentifier == "t" || prevIdentifier == "q")
-                    {
-                        controlX = prevX + (prevX - controlX);
-                        controlY = prevY + (prevY - controlY);
-                    }
-                    else
-                    {
-                        controlX = prevX;
-                        controlY = prevY;
-                    }
-
-                    x = getNumber(useRelative, i++, prevX);
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new QuadraticBezierSegment(controlX, controlY, x, y));
-                    break;
-
-                case "c":
-                    controlX = getNumber(useRelative, i++, prevX);
-                    controlY = getNumber(useRelative, i++, prevY);
-                    control2X = getNumber(useRelative, i++, prevX);
-                    control2Y = getNumber(useRelative, i++, prevY);
-                    x = getNumber(useRelative, i++, prevX);
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new CubicBezierSegment(controlX, controlY,
-                                      control2X, control2Y, x, y));
-                    break;
-
-                case "s":
-                    // Control1 is a reflection of the previous control2 point
-                    if (prevIdentifier == "s" || prevIdentifier == "c")
-                    {
-                        controlX = prevX + (prevX - control2X);
-                        controlY = prevY + (prevY - control2Y);
-                    }
-                    else
-                    {
-                        controlX = prevX;
-                        controlY = prevY;
-                    }
-
-                    control2X = getNumber(useRelative, i++, prevX);
-                    control2Y = getNumber(useRelative, i++, prevY);
-                    x = getNumber(useRelative, i++, prevX);
-                    y = getNumber(useRelative, i++, prevY);
-                    newSegments.push(new CubicBezierSegment(controlX, controlY,
-                                        control2X, control2Y, x, y));
-                    break;
-                case "z":
-                    // For a close segment, we generate a LineSegment to the last move point instead.
-					x = lastMoveX;
-					y = lastMoveY;
-                    newSegments.push(new LineSegment(x, y));
-                    break;
-
-                default:
-                    // unknown identifier, throw error?
-                    return;
-                    break;
-            }
-
-            prevX = x;
-            prevY = y;
-            prevIdentifier = identifier;
-        }
-
-        segments = newSegments;
-        graphicsPathChanged = true;
-        boundsChanged();
-
-        // Set the _data backing var as the last step since notifyElementChanged
-        // clears the value.
+		segments = new PathSegmentsCollection(value);
+
+		graphicsPathChanged = true;
+
+		// Clear our cached measurement and data values
+		clearCachedBoundingBoxWithStroke();
+		invalidateSize();
+		invalidateDisplayList();
+
         _data = value;
     }
-
+
     /**
      *  @private
      */
@@ -440,21 +267,9 @@
     //  bounds
     //----------------------------------

-    private var _bounds:Rectangle;
-
     private function getBounds():Rectangle
     {
-        if (_bounds)
-            return _bounds;
-
-		// First, allocate temporary bounds, as getBoundingBox() requires
-		// natual bounds to calculate a scaling factor
-		_bounds = new Rectangle(0, 0, 1, 1);
-
-		// Pass in the same size to getBoundingBox
-		// so that the scaling factor is (1, 1).
-		_bounds = getBoundingBox(1, 1, null /*Matrix*/);
-		return _bounds;
+		return segments ? segments.getBounds() : new Rectangle();
     }

     //--------------------------------------------------------------------------
@@ -480,37 +295,6 @@
         measuredY = bounds.top;
     }

-    /**
-     *  @private
-     *  @return Returns the axis aligned bounding box of the path resized to width, height and then
-     *  transformed with transformation matrix m.
-     */
-    private function getBoundingBox(width:Number, height:Number, m:Matrix):Rectangle
-    {
-        var naturalBounds:Rectangle = getBounds();
-        var sx:Number = naturalBounds.width == 0 ? 1 : width / naturalBounds.width;
-        var sy:Number = naturalBounds.height == 0 ? 1 : height / naturalBounds.height;
-
-        var prevSegment:PathSegment;
-        var pathBBox:Rectangle;
-
-        for (var i:int = 0; i < segments.length; i++)
-        {
-            var segment:PathSegment = segments[i];
-            pathBBox = segment.getBoundingBox(prevSegment, sx, sy, m, pathBBox);
-            prevSegment = segment;
-        }
-
-		// If path is empty, it's untransformed bounding box is (0,0), so we return transformed point (0,0)
-        if (!pathBBox)
-		{
-			var x:Number = m ? m.tx : 0;
-			var y:Number = m ? m.ty : 0;
-            pathBBox = new Rectangle(x, y);
-		}
-        return pathBBox;
-    }
-
     /**
      *  @private
      *  Storage for the cached bounding box for particular transformation and size.
@@ -613,37 +397,36 @@
      *  @return Returns the axis aligned bounding box of the path when
      *  resized to (width, height) and then transformed by matrix m.
      */
-    mx_internal function computeBoundsWithStroke(width:Number, height:Number,
-                                                 m:Matrix, pathBBox:Rectangle = null):Rectangle
+    mx_internal function computeBoundsWithStroke(width:Number,
+												 height:Number,
+                                                 m:Matrix):Rectangle
     {
         var naturalBounds:Rectangle = getBounds();
         var sx:Number = naturalBounds.width == 0 ? 1 : width / naturalBounds.width;
         var sy:Number = naturalBounds.height == 0 ? 1 : height / naturalBounds.height;

         // First, figure out the bounding box without stroke
-        if (!pathBBox)
+		var pathBBox:Rectangle;
+        // Special case, if there's no transformation or only offset,
+        // then the non-stroked path bounds for the give size can be
+        // scaled from the pre-transform natural bounds:
+        if (!m || MatrixUtil.isDeltaIdentity(m) || !this.segments)
         {
-            // Special case, if there's no transformation or only offset,
-            // then the non-stroked path bounds for the give size can be
-            // scaled from the pre-transform natural bounds:
-            if (!m || MatrixUtil.isDeltaIdentity(m))
-            {
-                pathBBox = new Rectangle(naturalBounds.x * sx,
-                                         naturalBounds.y * sy,
-                                         naturalBounds.width * sx,
-                                         naturalBounds.height * sy);
-                if (m)
-                    pathBBox.offset(m.tx, m.ty);
-            }
-            else
-            {
-                pathBBox = getBoundingBox(width, height, m);
-            }
+            pathBBox = new Rectangle(naturalBounds.x * sx,
+                                     naturalBounds.y * sy,
+                                     naturalBounds.width * sx,
+                                     naturalBounds.height * sy);
+            if (m)
+                pathBBox.offset(m.tx, m.ty);
+        }
+        else
+        {
+            pathBBox = this.segments.getBoundingBox(width, height, m);
         }

         // Do we have stroke?
         var strokeSettings:IStroke = this.stroke;
-        if (!strokeSettings)
+        if (!strokeSettings || !this.segments)
             return pathBBox;

         // Always add half the stroke weight, even for miter limit paths,
@@ -651,8 +434,10 @@
         // an extreme that pushes the bounds.
         var strokeExtents:Rectangle = getStrokeExtents();
         pathBBox.inflate(strokeExtents.right, strokeExtents.bottom);
-
-        if (strokeSettings.joints != "miter" || segments.length < 2)
+
+		var seg:Vector.<PathSegment> = segments.data;
+
+        if (strokeSettings.joints != "miter" || seg.length < 2)
         {
             // TODO (egeorgie): Will overshoot for "bevel"
             // by the assumed roundness of the joints.
@@ -664,7 +449,7 @@

         // Miter limit is always at least 1
         var miterLimit:Number = Math.max(1, strokeSettings.miterLimit);
-        var count:int = segments.length;
+        var count:int = seg.length;
         var start:int = 0;
         var end:int;
         var lastMoveX:Number = 0;
@@ -674,10 +459,10 @@
         while (true)
         {
             // Find a segment with a valid tangent or stop at a MoveSegment
-            while (start < count && !(segments[start] is MoveSegment))
+            while (start < count && !(seg[start] is MoveSegment))
             {
-                var prevSegment:PathSegment = start > 0 ? segments[start - 1] : null;
-                if (tangentIsValid(prevSegment, segments[start], sx, sy, m))
+                var prevSegment:PathSegment = start > 0 ? seg[start - 1] : null;
+                if (tangentIsValid(prevSegment, seg[start], sx, sy, m))
                     break;
                 start++;
             }
@@ -685,7 +470,7 @@
             if (start >= count)
                 break; // No more segments with valid tangents

-            var startSegment:PathSegment = segments[start];
+            var startSegment:PathSegment = seg[start];
             if (startSegment is MoveSegment)
             {
                 // remember the last move segment
@@ -702,7 +487,7 @@
             // Note, even if the segment was originally a close segment, it may not form a joint
             // with the segment it closes to, unless it's followed by a MoveSegment or it's the last
             // segment in the sequence.
-            if ((start == count - 1 || segments[start + 1] is MoveSegment) &&
+            if ((start == count - 1 || seg[start + 1] is MoveSegment) &&
                 startSegment.x == lastMoveX &&
                 startSegment.y == lastMoveY)
             {
@@ -712,9 +497,9 @@
                 end = start + 1;

             // Find a segment with a valid tangent or stop at a MoveSegment
-            while (end < count && !(segments[end] is MoveSegment))
+            while (end < count && !(seg[end] is MoveSegment))
             {
-                if (tangentIsValid(startSegment, segments[end], sx, sy, m))
+                if (tangentIsValid(startSegment, seg[end], sx, sy, m))
                     break;
                 end++;
             }
@@ -722,11 +507,11 @@
             if (end >= count)
                 break; // No more segments with valid tangents

-            var endSegment:PathSegment = segments[end];
+            var endSegment:PathSegment = seg[end];

             if (!(endSegment is MoveSegment))
             {
-                addMiterLimitStrokeToBounds(start > 0 ? segments[start - 1] : null,
+                addMiterLimitStrokeToBounds(start > 0 ? seg[start - 1] : null,
                                             startSegment,
                                             endSegment,
                                             miterLimit,
@@ -743,6 +528,18 @@
         }
         return pathBBox;
     }
+
+	/**
+	 *  @private
+	 */
+	override protected function get needsDisplayObject():Boolean
+	{
+		// Rendering with miter limit into the same DisplayObject will cause the
+		// slow code-path Player execution for all graphics in that DisplayObject.
+		// Make sure that we don't share the DisplayObject with other elements when
+		// we have stroke with miter joints.
+		return super.needsDisplayObject || (stroke && stroke.joints == "miter");
+	}

     /**
      *  @private
@@ -1064,51 +861,14 @@
             var rcBounds:Rectangle = getBounds();
             var sx:Number = rcBounds.width == 0 ? 1 : width / rcBounds.width;
             var sy:Number = rcBounds.height == 0 ? 1 : height / rcBounds.height;
-
-            generateGraphicsPath(drawX, drawY, sx, sy);
+			if (segments)
+            	segments.generateGraphicsPath(graphicsPath, drawX, drawY, sx, sy);
             graphicsPathChanged = false;
         }

         g.drawPath(graphicsPath.commands, graphicsPath.data, winding);
     }

-    /**
-     *  Workhorse method that iterates through the segments
-     *  array and draws each path egment based on its control points.
-     *
-     *  Segments are drawn from the x and y position of the path.
-     *  Additionally, segments are drawn by taking into account the scale
-     *  applied to the path.
-     *
-     *  @param tx A Number representing the x position of where this
-     *  path segment should be drawn
-     *
-     *  @param ty A Number representing the y position of where this
-     *  path segment should be drawn
-     *
-     *  @param sx A Number representing the scaleX at which to draw
-     *  this path segment
-     *
-     *  @param sy A Number representing the scaleY at which to draw this
-     *  path segment
-     */
-    mx_internal function generateGraphicsPath(tx:Number,ty:Number,sx:Number,sy:Number):void
-    {
-        graphicsPath.commands = null;
-        graphicsPath.data = null;
-
-        // Always start by moving to drawX, drawY. Otherwise
-        // the path will begin at the previous pen location
-        // if it does not start with a MoveSegment.
-        graphicsPath.moveTo(tx, ty);
-
-        for (var i:int = 0; i < segments.length; i++)
-        {
-            var segment:PathSegment = segments[i];
-            segment.draw(graphicsPath, tx, ty, sx, sy, (i > 0 ? segments[i - 1] : null));
-        }
-    }
-
     /**
      * @inheritDoc
      *
@@ -1140,27 +900,6 @@
     {
         graphicsPathChanged = true;
         super.invalidateDisplayObjectSharing();
-    }
-
-    /**
-     *  @private
-     */
-    private function boundsChanged(): void
-    {
-        // Clear our cached measurement and data values
-        clearBounds();
-        _data = null;
-        invalidateSize();
-        invalidateDisplayList();
-    }
-
-    /**
-     *  @private
-     */
-    private function clearBounds():void
-    {
-        _bounds = null;
-        clearCachedBoundingBoxWithStroke();
     }

     /**
@@ -1207,13 +946,409 @@

 //--------------------------------------------------------------------------
 //
+//  Internal Helper Class - PathSegmentsCollection
+//
+//--------------------------------------------------------------------------
+
+/**
+ *  Helper class that takes in a string and stores and generates a vector of
+ *  Path segments.
+ *  Provides methods for generating GraphicsPath and calculating bounds.
+ */
+class PathSegmentsCollection
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param value
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @productversion Flex 4
+	 */
+	public function PathSegmentsCollection(value:String)
+	{
+		if (!value)
+		{
+			_segments = new Vector.<PathSegment>();
+			return;
+		}
+
+		var newSegments:Vector.<PathSegment> = new Vector.<PathSegment>();
+		var charCount:int = value.length;
+		var c:Number; // current char code, String.charCodeAt() returns Number.
+		var useRelative:Boolean;
+		var prevIdentifier:Number = 0;
+		var prevX:Number = 0;
+		var prevY:Number = 0;
+		var lastMoveX:Number = 0;
+		var lastMoveY:Number = 0;
+		var x:Number;
+		var y:Number;
+		var controlX:Number;
+		var controlY:Number;
+		var control2X:Number;
+		var control2Y:Number;
+
+		_dataLength = charCount;
+		_charPos = 0;
+		while (true)
+		{
+			// Skip any whitespace or commas first
+			skipWhiteSpace(value);
+
+			// Are we done parsing?
+			if (_charPos >= charCount)
+				break;
+
+			// Get the next character
+			c = value.charCodeAt(_charPos++);
+
+			// Is this a start of a number?
+			// The RegExp for a float is /[+-]?\d*\.?\d+([Ee][+-]?\d+)?/
+			if ((c >= 0x30 && c < 0x3A) ||   // A digit
+				(c == 0x2B || c == 0x2D) ||	 // '+' & '-'
+				(c == 0x2E)) 				 // '.'
+			{
+				c = prevIdentifier;
+				_charPos--;
+			}
+			else if (c >= 0x41 && c <= 0x56) // Between 'C' and 'V'
+				useRelative = false;
+			else if (c >= 0x61 && c <= 0x7A) // Between 'c' and 'v'
+				useRelative = true;
+
+			switch(c)
+			{
+				case 0x63:	// c
+				case 0x43:	// C
+					controlX = getNumber(useRelative, prevX, value);
+					controlY = getNumber(useRelative,  prevY, value);
+					control2X = getNumber(useRelative, prevX, value);
+					control2Y = getNumber(useRelative, prevY, value);
+					x = getNumber(useRelative, prevX, value);
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new CubicBezierSegment(controlX, controlY,
+															control2X, control2Y,
+															x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x63;
+
+					break;
+
+				case 0x6D:	// m
+				case 0x4D:	// M
+					x = getNumber(useRelative, prevX, value);
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new MoveSegment(x, y));
+					lastMoveX = x;
+					lastMoveY = y;
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x6D;
+					break;
+
+				case 0x6C:	// l
+				case 0x4C:	// L
+					x = getNumber(useRelative, prevX, value);
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new LineSegment(x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x6C;
+					break;
+
+				case 0x68:	// h
+				case 0x48:	// H
+					x = getNumber(useRelative, prevX, value);
+					y = prevY;
+					newSegments.push(new LineSegment(x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x68;
+					break;
+
+				case 0x76:	// v
+				case 0x56:	// V
+					x = prevX;
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new LineSegment(x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x76;
+					break;
+
+				case 0x71:	// q
+				case 0x51:	// Q
+					controlX = getNumber(useRelative, prevX, value);
+					controlY = getNumber(useRelative, prevY, value);
+					x = getNumber(useRelative, prevX, value);
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new QuadraticBezierSegment(controlX, controlY, x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x71;
+
+					break;
+
+				case 0x74:	// t
+				case 0x54:	// T
+					// control is a reflection of the previous control point
+					if (prevIdentifier == 0x74 || prevIdentifier == 0x71) // 't' or 'q'
+					{
+						controlX = prevX + (prevX - controlX);
+						controlY = prevY + (prevY - controlY);
+					}
+					else
+					{
+						controlX = prevX;
+						controlY = prevY;
+					}
+
+					x = getNumber(useRelative, prevX, value);
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new QuadraticBezierSegment(controlX, controlY, x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x74;
+
+					break;
+
+				case 0x73:	// s
+				case 0x53:	// S
+					if (prevIdentifier == 0x73 || prevIdentifier == 0x63) // s or c
+					{
+						controlX = prevX + (prevX - control2X);
+						controlY = prevY + (prevY - control2Y);
+					}
+					else
+					{
+						controlX = prevX;
+						controlY = prevY;
+					}
+
+					control2X = getNumber(useRelative, prevX, value);
+					control2Y = getNumber(useRelative, prevY, value);
+					x = getNumber(useRelative, prevX, value);
+					y = getNumber(useRelative, prevY, value);
+					newSegments.push(new CubicBezierSegment(controlX, controlY,
+						control2X, control2Y, x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x73;
+
+					break;
+
+				case 0x7A:	// z
+				case 0x5A:	// Z
+					x = lastMoveX;
+					y = lastMoveY;
+					newSegments.push(new LineSegment(x, y));
+					prevX = x;
+					prevY = y;
+					prevIdentifier = 0x7A;
+
+					break;
+
+				default:
+					// unknown identifier, throw error?
+					_segments = new Vector.<PathSegment>();
+					return;
+			}
+		}
+		_segments = newSegments;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  data
+	//----------------------------------
+
+	private var _segments:Vector.<PathSegment>;
+
+	/**
+	 *  A Vector of the actual path segments. May be empty, but always non-null.
+	 */
+	public function get data():Vector.<PathSegment>
+	{
+		return _segments;
+	}
+
+	//----------------------------------
+	//  bounds
+	//----------------------------------
+
+	private var _bounds:Rectangle;
+
+	/**
+	 *  The bounds of the segments in local coordinates.
+	 */
+	public function getBounds():Rectangle
+	{
+		if (_bounds)
+			return _bounds;
+
+		// First, allocate temporary bounds, as getBoundingBox() requires
+		// natual bounds to calculate a scaling factor
+		_bounds = new Rectangle(0, 0, 1, 1);
+
+		// Pass in the same size to getBoundingBox
+		// so that the scaling factor is (1, 1).
+		_bounds = getBoundingBox(1, 1, null /*Matrix*/);
+		return _bounds;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @return Returns the axis aligned bounding box of the segments stretched to
+	 *  width, height and then transformed with transformation matrix m.
+	 */
+	public function getBoundingBox(width:Number, height:Number, m:Matrix):Rectangle
+	{
+		var naturalBounds:Rectangle = getBounds();
+		var sx:Number = naturalBounds.width == 0 ? 1 : width / naturalBounds.width;
+		var sy:Number = naturalBounds.height == 0 ? 1 : height / naturalBounds.height;
+
+		var prevSegment:PathSegment;
+		var pathBBox:Rectangle;
+		var count:int = _segments.length;
+
+		for (var i:int = 0; i < count; i++)
+		{
+			var segment:PathSegment = _segments[i];
+			pathBBox = segment.getBoundingBox(prevSegment, sx, sy, m, pathBBox);
+			prevSegment = segment;
+		}
+
+		// If path is empty, it's untransformed bounding box is (0,0), so we return transformed point (0,0)
+		if (!pathBBox)
+		{
+			var x:Number = m ? m.tx : 0;
+			var y:Number = m ? m.ty : 0;
+			pathBBox = new Rectangle(x, y);
+		}
+		return pathBBox;
+	}
+
+	/**
+     *  Workhorse method that iterates through the segments
+     *  array and draws each path egment based on its control points.
+     *
+     *  Segments are drawn from the x and y position of the path.
+     *  Additionally, segments are drawn by taking into account the scale
+     *  applied to the path.
+     *
+     *  @param tx A Number representing the x position of where this
+     *  path segment should be drawn
+     *
+     *  @param ty A Number representing the y position of where this
+     *  path segment should be drawn
+     *
+     *  @param sx A Number representing the scaleX at which to draw
+     *  this path segment
+     *
+     *  @param sy A Number representing the scaleY at which to draw this
+     *  path segment
+	 */
+	public function generateGraphicsPath(graphicsPath:GraphicsPath,
+										 tx:Number,
+										 ty:Number,
+										 sx:Number,
+										 sy:Number):void
+	{
+		graphicsPath.commands = null;
+		graphicsPath.data = null;
+
+		// Always start by moving to drawX, drawY. Otherwise
+		// the path will begin at the previous pen location
+		// if it does not start with a MoveSegment.
+		graphicsPath.moveTo(tx, ty);
+
+		var curSegment:PathSegment;
+		var prevSegment:PathSegment;
+		var count:int = _segments.length;
+		for (var i:int = 0; i < count; i++)
+		{
+			prevSegment = curSegment;
+			curSegment = _segments[i];
+			curSegment.draw(graphicsPath, tx, ty, sx, sy, prevSegment);
+		}
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Private methods
+	//
+	//--------------------------------------------------------------------------
+
+	static private var numberRegExp:RegExp = /[+-]?\d*\.?\d+([Ee][+-]?\d+)?/g;
+
+	private var _charPos:int = 0;
+	private var _dataLength:int = 0;
+
+	private function skipWhiteSpace(data:String):void
+	{
+		while (_charPos < _dataLength)
+		{
+			var c:Number = data.charCodeAt(_charPos);
+			if (c != 0x20 && // Space
+				c != 0x2C && // Comma
+				c != 0xD  && // Carriage return
+				c != 0x9  && // Tab
+				c != 0xA)    // New line
+			{
+				break;
+			}
+			_charPos++;
+		}
+	}
+
+	private function getNumber(useRelative:Boolean, offset:Number, value:String):Number
+	{
+		skipWhiteSpace(value); // updates _charPos
+		var subString:String = value.substr(_charPos);
+		var result:Number = parseFloat(subString);
+		if (isNaN(result))
+		{
+			// Go to the end of the data
+			_charPos = _dataLength;
+			return NaN;
+		}
+
+		numberRegExp.lastIndex = 0;
+		numberRegExp.test(subString);
+		_charPos += numberRegExp.lastIndex;
+		return useRelative ? result + offset : result;
+	}
+}
+
+//--------------------------------------------------------------------------
+//
 //  Internal Helper Class - PathSegment
 //
 //--------------------------------------------------------------------------
 import flash.display.GraphicsPath;
 import flash.geom.Matrix;
 import flash.geom.Rectangle;
-import spark.primitives.Path;
+
 import mx.events.PropertyChangeEvent;

 /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 5119
Author:   smgilson@adobe.com
Date:     2009-03-01T15:19:39.936226Z

Log Message:
-----------
Clean up some ASDoc tags from the addition of the @productversion/@playerversion tags

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/HaloBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToolTip.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/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/config/ServerConfig.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/HTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/HTTPRequestMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CalendarLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/src/mx/skins/halo/HaloBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/NCManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractConsumer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/Base64Encoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/validators/StringValidator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SchemaMarshaller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IInteractiveObjectInterface.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ContainerRawChildrenList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/FaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/wsdl/WSDL.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/SparkSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxResizeInstance.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/controls/videoClasses/VideoPlayer.as</path>
<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/rpc/src/mx/rpc/xml/Schema.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/utils/HexEncoder.as</path>
<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/rpc/src/mx/rpc/soap/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDisplayObjectInterface.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDisplayObjectContainerInterface.as</path>
<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/effects/effectClasses/SoundEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISpriteInterface.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/haloclassic/src/haloclassic/HaloRectBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/mxml/Operation.as</path>

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

--- frameworks/projects/spark/src/spark/skins/SparkSkin.as
+++ frameworks/projects/spark/src/spark/skins/SparkSkin.as
@@ -36,7 +36,7 @@

     public var colorized:Boolean = false;

-    /*
+    /**
      * Constructor
      *
      *  @langversion 3.0
@@ -49,7 +49,7 @@
         super();
     }

-    /*
+    /**
      * names of items that should not be colorized by the "baseColor" style.
      *
      *  @langversion 3.0
@@ -62,7 +62,7 @@
         return null;
     }

-    /*
+    /**
      * names of items that should have their "color" property defined by the "symbolColor" style.
      *
      *  @langversion 3.0


fix for fp9 trunk

fix for fp9 trunk

--- fp9/src/eDpLib/events/EventDispatcherProxy.as
+++ fp9/src/eDpLib/events/EventDispatcherProxy.as
@@ -418,7 +418,7 @@
 			}

 			else
-				eventDispatcher.addEventListener(type, listener, useCapture);
+				eventDispatcher.removeEventListener(type, listener, useCapture);
 		}

 		/**


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@1259213 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/FlexTextField.as
+++ frameworks/projects/framework/src/mx/core/FlexTextField.as
@@ -21,6 +21,11 @@
  *  It overrides the toString() method
  *  to return a string indicating the location of the object
  *  within the hierarchy of DisplayObjects in the application.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class FlexTextField extends TextField
 {
@@ -45,6 +50,11 @@
 	 *
 	 *  @see flash.display.DisplayObject#name
 	 *  @see mx.utils.NameUtil#createUniqueName()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function FlexTextField()
 	{
@@ -88,6 +98,11 @@
 	 *
 	 *  @see flash.display.DisplayObject#name
 	 *  @see mx.utils.NameUtil#displayObjectToString()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     override public function toString():String
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 2349
Author:   dloverin@adobe.com
Date:     2008-07-03T00:37:56.331835Z

Log Message:
-----------
PopUpRequest.as
    Remove topMost property.
    Add parent property.

SandboxUtil.as
   Add hasMutualTrustWithChild().
   Rename mutualTrustWithParent() to hasMutualTrustWithParent()

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/events/PopUpRequest.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/utils/SandboxUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/marshall-plan-3.0.x/frameworks/projects/framework/src/mx/sandbox/ISandboxBridgeGroup.as</path>

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

--- frameworks/projects/framework/src/mx/utils/SecurityUtil.as
+++ frameworks/projects/framework/src/mx/utils/SecurityUtil.as
@@ -14,6 +14,7 @@

 import mx.sandbox.ISandboxBridgeGroup;
 import mx.managers.ISystemManager2;
+import flash.events.IEventDispatcher;

 /**
@@ -28,7 +29,7 @@
 	/**
 	 * Test if there is mutual trust between a SystemManager and its parent.
 	 */
-	public static function mutualTrustWithParent(sm:ISystemManager2):Boolean
+	public static function hasMutualTrustWithParent(sm:ISystemManager2):Boolean
 	{
 		var sandboxBridgeGroup:ISandboxBridgeGroup = sm.sandboxBridgeGroup;

@@ -40,5 +41,22 @@
 		return false;
 	}

+
+	/**
+	 * Test if there is mutual trust between a SystemManager and one of its
+	 * bridged applications.
+	 */
+	public static function hasMutualTrustWithChild(sm:ISystemManager2, bridge:IEventDispatcher):Boolean
+	{
+		var sandboxBridgeGroup:ISandboxBridgeGroup = sm.sandboxBridgeGroup;
+
+		if (sandboxBridgeGroup.canAccessChildBridge(bridge) &&
+		    sandboxBridgeGroup.accessibleFromChildBridge(bridge))
+			return true;
+
+		return false;
+	}
+
+
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5067
Author:   smgilson@adobe.com
Date:     2009-02-25T16:21:22.849704Z

Log Message:
-----------
In preparation for adding ASDoc version tags for Flex, remove old tags from AIR files

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/IWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumeration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemSizeDisplayMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FileEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/WindowExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowCloseButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/ApplicationTitleBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/airframework/src/mx/events/FileEvent.as
+++ frameworks/projects/airframework/src/mx/events/FileEvent.as
@@ -25,7 +25,6 @@
  *  @see mx.controls.FileSystemList
  *  @see mx.controls.FileSystemTree
  *
- *  @playerversion AIR 1.1
  */
 public class FileEvent extends Event
 {


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@1262465 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/styles/CSSCondition.as
+++ frameworks/projects/framework/src/mx/styles/CSSCondition.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 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.styles
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 1994
Author:   jimurphy@adobe.com
Date:     2008-06-09T14:09:05.185095Z

Log Message:
-----------
Merge 3.0.x revisions [1990-1991] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/utils/HexEncoder.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/Base64Encoder.as</path>

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

--- frameworks/projects/framework/src/mx/utils/Base64Encoder.as
+++ frameworks/projects/framework/src/mx/utils/Base64Encoder.as
@@ -280,7 +280,7 @@
      *
      * @private
      */
-    private static const MAX_BUFFER_SIZE:uint = 65535;
+    public static const MAX_BUFFER_SIZE:uint = 32767;

     private static const ESCAPE_CHAR_CODE:Number = 61; // The '=' char


Transferred from the Adobe Open Source Subversion Repository

Revision: 9177
Author:   jimurphy@adobe.com
Date:     2009-08-07T21:15:07.894169Z

Log Message:
-----------
Merged 3.4 revisions 8630,8660,8683,8735,8750,8753,8755,8757,8759,8764,8776,8798,8821,8824,8837,8862,8911,8946,8949,8962,8965,9026,9109,9131,9138-9139,9147 -> trunk

integrates:
player: 10.0.32.18
AIR kit: 1.5.2.8870 (20090721ap)

checkintests: pass

(btw: I'm not happy about doing this on a Friday PM!)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/air/air_version.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Install Flash Player 10 UB.dmg</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/mac/AIR Integration Kit.tbz2</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/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/player/10/playerglobal.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLDecoder.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/flashplayer.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/win/AIR Integration Kit.zip</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/in/player/10/lnx/libflashplayer.so.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/FlashPlayer.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Flash Player.app.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/Operation.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/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 Plugin.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<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/AbstractService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 ActiveX.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/MessagePerformanceUtils.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/mxml/IMXMLSupport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/ISOAPDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/install_flash_player_10_linux.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLSchemaInstance.as</path>

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

--- frameworks/projects/rpc/src/mx/rpc/http/HTTPMultiService.as
+++ frameworks/projects/rpc/src/mx/rpc/http/HTTPMultiService.as
@@ -87,6 +87,9 @@
  *  the useProxy  property to true and you use the server-based proxy service, you
  *  can also use the HTTP HEAD, OPTIONS, TRACE, and DELETE methods.

  *
+ *
Note: Unlike the HTTPService class, the HTTPMultiService class does not
+ *  define a request property.

+ *
  *
Note: Due to a software limitation, like HTTPService, the HTTPMultiService does
  *  not generate user-friendly error messages when using GET and not using a proxy.

  *
@@ -96,6 +99,8 @@
  *  @playerversion Flash 9
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
+ *
+ *  @see mx.rpc.http.HTTPService
  */
 public dynamic class HTTPMultiService extends AbstractService
 {