Transferred from the Adobe Open Source Subversion Repository

Revision: 10633
Author:   dloverin@adobe.com
Date:     2009-09-28T13:24:30.559033Z

Log Message:
-----------
Use styleManager instance instead of StyleManager singleton (framework and compiler generated code)

Modified compiler generated style code for the FlexInit class. The style related changes are only available with the -keep option. AST generation is coming later.

Only the framework project is changed here. The other projects are will be changed soon.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex and Paul
Tests run: checkintests, all Mustella tests(no new failures)
Is noteworthy for integration: no.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonBarButtonSkin.as</path>
<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/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollArrowSkin.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/skins/halo/ButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/configuration_en.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressIndeterminateSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DateChooserMonthArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollThumbSkin.as</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/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleModule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Form.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager2.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/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.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/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TitleBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperDownSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PopUpButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/ProgrammaticSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TabSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/textClasses/TextRange.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/AccordionHeaderSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/CheckBoxIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperUpSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/RadioButtonIcon.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/states/SetStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ComboBoxArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeaderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</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/frameworks/projects/framework/src/mx/skins/halo/MenuBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressBarSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.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/skins/halo/SliderTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.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/skins/halo/DataGridHeaderBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/ModuleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>

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

--- frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as
+++ frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as
@@ -120,15 +120,20 @@
      *  represent a simple type selector. If not null, this CSSStyleDeclaration
      *  will be registered with StyleManager.
      *
+     *  @param styleManager - The style manager to set this declaration into. If the
+     *  styleManager is null the top-level style manager will be used.
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public function CSSStyleDeclaration(selector:Object=null)
+    public function CSSStyleDeclaration(selector:Object=null, styleManager:IStyleManager2=null)
     {
         super();

+        this.styleManager = styleManager;
+
         if (selector)
         {
             if (selector is CSSSelector)
@@ -142,9 +147,12 @@
             }

             // Do not reference StyleManager directly because this is a bootstrap class
-            styleManager = Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2;
-            styleManager.setStyleDeclaration(selectorString, this, false);
-        }
+            if (!styleManager)
+                styleManager = Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2;
+
+            styleManager.setStyleDeclaration(selectorString, this, false);
+        }
+
     }

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


Remove labeldisplayshadow since it is not required

--- frameworks/projects/mobiletheme/src/spark/skins/ios7/ButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/ios7/ButtonSkin.as
@@ -278,18 +278,6 @@
     override protected function createChildren():void
     {
         super.createChildren();
-
-        if (!labelDisplayShadow && labelDisplay)
-        {
-            labelDisplayShadow = StyleableTextField(createInFontContext(StyleableTextField));
-            labelDisplayShadow.styleName = this;
-            labelDisplayShadow.colorName = "textShadowColor";
-            labelDisplayShadow.useTightTextBounds = false;
-
-            // add shadow before display
-            addChildAt(labelDisplayShadow, getChildIndex(labelDisplay));
-        }
-
         setStyle("textAlign", "center");
     }

@@ -336,18 +324,6 @@

         layoutBorder(unscaledWidth, unscaledHeight);

-        // update label shadow
-        labelDisplayShadow.alpha = getStyle("textShadowAlpha");
-        labelDisplayShadow.commitStyles();
-
-        // don't use tightText positioning on shadow
-        setElementPosition(labelDisplayShadow, labelDisplay.x, labelDisplay.y + 1);
-        setElementSize(labelDisplayShadow, labelDisplay.width, labelDisplay.height);
-
-        // if labelDisplay is truncated, then push it down here as well.
-        // otherwise, it would have gotten pushed in the labelDisplay_valueCommitHandler()
-        if (labelDisplay.isTruncated)
-            labelDisplayShadow.text = labelDisplay.text;
     }

     /**
@@ -392,7 +368,6 @@
     override protected function labelDisplay_valueCommitHandler(event:FlexEvent):void
     {
         super.labelDisplay_valueCommitHandler(event);
-        labelDisplayShadow.text = labelDisplay.text;
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8576
Author:   cframpto@adobe.com
Date:     2009-07-15T12:19:18.531995Z

Log Message:
-----------
RichEditableText will dispatch all the FlexEvent.COMMIT_VALUE events and SkinnableTextBase will redispatch them for TextInput and TextArea.  Dispatched on focusOut, set text/content/textFlow, and for the insertText() and appendText() API calls.

Also changed a few validateNow() calls to validateProperties() because that is all that is needed and it is a much safer call.

QA Notes:
Doc Notes: SDK-21991
Reviewers: Alex

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextInput.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -482,7 +482,7 @@
      *  @private
      *  Source of text: one of "text", "textFlow" or "content".
      */
-    private var source:String = "";
+    private var source:String = "text";

     /**
      *  @private
@@ -886,6 +886,8 @@
         invalidateProperties();
         invalidateSize();
         invalidateDisplayList();
+
+        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }

     //----------------------------------
@@ -1459,6 +1461,8 @@
         invalidateProperties();
         invalidateSize();
         invalidateDisplayList();
+
+        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }

     //----------------------------------
@@ -1531,6 +1535,8 @@
         invalidateProperties();
         invalidateSize();
         invalidateDisplayList();
+
+        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }

     //----------------------------------
@@ -2722,7 +2728,7 @@
                                 activePosition:int):void
     {
         // Make sure all properties are committed before doing the operation.
-        validateNow();
+        validateProperties();

         var selectionManager:ISelectionManager = getSelectionManager();

@@ -2746,7 +2752,7 @@
                                   activePosition:int = int.MAX_VALUE):void
     {
         // Make sure all properties are committed before doing the operation.
-        validateNow();
+        validateProperties();

         // Scrolls so that the text position is visible in the container.
         textContainerManager.scrollToRange(anchorPosition, activePosition);
@@ -2812,7 +2818,7 @@
         var format:TextLayoutFormat = new TextLayoutFormat();

          // Make sure all properties are committed before doing the operation.
-        validateNow();
+        validateProperties();

         var selectionManager:ISelectionManager = getSelectionManager();

@@ -2940,7 +2946,7 @@
                                      activePosition:int=-1):void
     {
          // Make sure all properties are committed before doing the operation.
-        validateNow();
+        validateProperties();

         var editManager:IEditManager = getEditManager();

@@ -3023,13 +3029,13 @@
         // EditManager.updateAllControllers().
         editManager.insertText(text);

+        // Make the insertion happen now rather than on the next frame.
+        editManager.flushPendingOperations();
+
         // All done with edit manager.
-        releaseEditManager();
-
-        // The insertion will generate a damage event which will invalidate
-        // the size and the display list.
-        validateSize();
-        validateDisplayList();
+        releaseEditManager();
+
+        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }

     /**
@@ -3163,6 +3169,8 @@
         if (focusManager)
             focusManager.defaultButtonEnabled = true;

+
+        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 6465
Author:   cframpto@adobe.com
Date:     2009-05-01T19:39:54.877042Z

Log Message:
-----------
Vellum build 423.

Selection back to the way it was I so removed temporary workaround I put in yesterday.
Removed some extraneous code that should not have been left in RichTextEditor.

QE Notes: all TextArea and TextInput tests pass except Gumbo_TextArea_export_method_default which I will leave to QA to sort out
Doc Notes:
Bugs:
Reviewers:

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swf</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/tlf.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -2754,21 +2754,6 @@
                 releaseSelectionManager();
             }

-            if (enabled &&
-                selectionAnchorPosition == -1 && selectionActivePosition == -1)
-            {
-                //setSelection(int.MAX_VALUE, int.MAX_VALUE);
-
-                // This is ugly but it's the only way to get tabbing into
-                // the control to allow input without a mouse click.
-                //var controller:ContainerController =
-                //                    textFlow.flowComposer.getControllerAt(0);
-                //controller.tlf_internal::requiredFocusInHandler(event);
-            }
-
-            if (enabled)
-                getSelectionManager();
-
             if (_imeMode != null)
             {
                 IME.enabled = true;
@@ -2979,15 +2964,6 @@
                         event:SelectionEvent):void
     {
         var selectionManager:ISelectionManager = getSelectionManager();
-
-        // ToDo: this may not be needed if Vellum goes back to dispatching
-        // this event on editManager.insertText()/appendText().
-        if (!event &&
-            _selectionAnchorPosition == selectionManager.anchorPosition &&
-            _selectionActivePosition != selectionManager.activePosition)
-        {
-            return;
-        }

         _selectionAnchorPosition = selectionManager.anchorPosition;
         _selectionActivePosition = selectionManager.activePosition;
@@ -3109,10 +3085,6 @@
         if (event.operation is PasteOperation)
             handlePasteOperation(PasteOperation(event.operation));

-        // ToDo: this may not be needed if Vellum goes back to dispatching
-        // this event on editManager.insertText()/appendText().
-        inputManager_selectionChangeHandler(null);
-
         // Since the text may have changed, set a flag which will
         // cause the 'text' getter to call extractText() to extract
         // the text by walking the TextFlow.


FLEX-33544 Make paste to single line field ignore both \r and \n

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -552,7 +552,7 @@
          *  Regular expression which matches all newlines in the text.  Used
          *  to strip newlines when pasting text when multiline is false.
          */
-        private static const ALL_NEWLINES_REGEXP:RegExp = /\n/g;
+        private static const ALL_NEWLINES_REGEXP:RegExp = /[\n\r]/g;

         //--------------------------------------------------------------------------
         //
@@ -4129,7 +4129,7 @@

             // If there are no constraints and no newlines there is nothing
             // more to do.
-            if (!hasConstraints && pastedText.indexOf("\n") == -1)
+            if (!hasConstraints && pastedText.search(ALL_NEWLINES_REGEXP) == -1)
                 return;

             // Save this in case we modify the pasted text.  We need to know


Code clean

Code clean

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/ListPresenter.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/ListPresenter.as
@@ -225,7 +225,10 @@
 			//offset starts from 0
 			var offset:int = (currentPage - 1) * MAX_RECORDS_PER_PAGE;

-			_dataClient.getRecordSummaries(new AsyncResponder(getRecordsSummaryResultHandler, faultHandler), Application.activeRootEntity.name,
+			var responder:IResponder = new AsyncResponder(getRecordsSummaryResultHandler, faultHandler);
+			var rootEntityName:String = Application.activeRootEntity.name;
+
+			_dataClient.getRecordSummaries(responder, rootEntityName,
 				offset, MAX_RECORDS_PER_PAGE, currentSortFields, currentFilter);
 		}


Fix for https://issues.apache.org/jira/browse/FLEX-34391 Ensure that StageText's viewport x/y values stay within the range 0 to stage.stageWidth or stage.stageHeight

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ScrollableStageText.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ScrollableStageText.as
@@ -1628,6 +1628,28 @@
         globalRect.y = Math.floor(Math.min(globalTopLeft.y, globalBottomRight.y));
         globalRect.width = Math.ceil(Math.abs(globalBottomRight.x - globalTopLeft.x));
         globalRect.height = Math.ceil(Math.abs(globalBottomRight.y - globalTopLeft.y));
+
+		//StageText ViewPort's x and y should be in between -8192 and 8191
+		//Reset x to min of x and stage.stageWidth
+		if(globalRect.x > 0)
+		{
+			globalRect.x = Math.min(globalRect.x, stage.stageWidth);
+		}
+		else
+		{
+			globalRect.x = Math.max(globalRect.x, 0);
+		}
+
+		//Reset y to min of y and stage.stageHeight
+		if(globalRect.y > 0)
+		{
+			globalRect.y = Math.min(globalRect.y, stage.stageHeight);
+		}
+		else
+		{
+			globalRect.y = Math.max(globalRect.y, 0);
+		}
+

         return globalRect;
     }


Bug 664339 - Remove _IF/_IFDEF/_IFNDEF processing code from exactgc.as and add failure conditions (p=rulohani, r=treilly, sr=lhansen)

--- utils/exactgc.as
+++ utils/exactgc.as
@@ -362,21 +362,9 @@
   "GC_DATA_END":            GCDataEnd,
   "GC_NO_DATA":             GCNoData,
   "GC_ATOM":                GCAtom,
-  "GC_ATOM_IF":             GCAtom,
-  "GC_ATOM_IFDEF":          GCAtom,
-  "GC_ATOM_IFNDEF":         GCAtom,
   "GC_POINTER":             GCPointer,
-  "GC_POINTER_IF":          GCPointer,
-  "GC_POINTER_IFDEF":       GCPointer,
-  "GC_POINTER_IFNDEF":      GCPointer,
   "GC_CONSERVATIVE":        GCConservative,
-  "GC_CONSERVATIVE_IF":     GCConservative,
-  "GC_CONSERVATIVE_IFDEF":  GCConservative,
-  "GC_CONSERVATIVE_IFNDEF": GCConservative,
   "GC_STRUCTURE":           GCStructure,
-  "GC_STRUCTURE_IF":        GCStructure,
-  "GC_STRUCTURE_IFDEF":     GCStructure,
-  "GC_STRUCTURE_IFNDEF":    GCStructure,
   "GC_ATOMS":               GCAtoms,
   "GC_ATOMS_SMALL":         GCAtoms,
   "GC_POINTERS":            GCPointers,
@@ -780,25 +768,33 @@
                     "GC_ATOMS",
                     "GC_ATOMS_SMALL",
                     "GC_STRUCTURE",
-                    "GC_STRUCTURE_IFDEF",
+                    "GC_POINTER",
+                    "GC_ATOM",
+                    "GC_CONSERVATIVE"].join("|") +
+                   ")\\s*\\((.*)");
+
+    function matchCppFieldTag(line, where) {
+        return cppFieldTag.exec(line.substring(where));
+    }
+
+    const deprecatedFieldTag =
+        new RegExp("^(" +
+                   ["GC_STRUCTURE_IFDEF",
                     "GC_STRUCTURE_IFNDEF",
                     "GC_STRUCTURE_IF",
-                    "GC_POINTER",
                     "GC_POINTER_IFDEF",
                     "GC_POINTER_IFNDEF",
                     "GC_POINTER_IF",
-                    "GC_ATOM",
                     "GC_ATOM_IFDEF",
                     "GC_ATOM_IFNDEF",
                     "GC_ATOM_IF",
-                    "GC_CONSERVATIVE",
                     "GC_CONSERVATIVE_IFDEF",
                     "GC_CONSERVATIVE_IFNDEF",
                     "GC_CONSERVATIVE_IF"].join("|") +
-                   ")\\s*\\((.*)");
-
-    function matchCppFieldTag(line, where) {
-        return cppFieldTag.exec(line.substring(where));
+                    ")\\s*\\((.*)");
+
+    function matchDeprecatedFieldTag(line, where) {
+        return deprecatedFieldTag.exec(line.substring(where));
     }

     function stackToCppPrefix() {
@@ -968,6 +964,12 @@
                     reportMatch(line);
                     var v = positionalAttrs(result[1], result[2], ")", currentClassName());
                     specs.push(v);
+                }
+                else {
+                    if(line.indexOf("_IF") >= 0 && matchDeprecatedFieldTag(line, gcIndex) != null) {
+                        print(line);
+                        fail("The above annotation has _IF/_IFDEF/_IFNDEF!! _IF etc. are no longer required on member annotations and should be removed.");
+                    }
                 }
             }


add Geometry.changed signal executed when one of the vertex streams or the index stream changes

--- src/aerys/minko/render/geometry/Geometry.as
+++ src/aerys/minko/render/geometry/Geometry.as
@@ -9,6 +9,7 @@
 	import aerys.minko.render.geometry.stream.VertexStreamList;
 	import aerys.minko.render.geometry.stream.format.VertexComponent;
 	import aerys.minko.render.geometry.stream.format.VertexFormat;
+	import aerys.minko.type.Signal;
 	import aerys.minko.type.bounding.BoundingBox;
 	import aerys.minko.type.bounding.BoundingSphere;
 	import aerys.minko.type.bounding.IBoundingVolume;
@@ -65,6 +66,8 @@

 		private var _bulkUpdate		: Boolean			= false;

+		private var _changed		: Signal;
+
 		/**
 		 * The number of IVertexStreams objects stored in the geometry.
 		 * @return
@@ -88,7 +91,15 @@
 		}
 		public function set indexStream(value : IndexStream) : void
 		{
+			if (_indexStream != null)
+				_indexStream.changed.remove(indexStreamChangedHandler);
+
 			_indexStream = value;
+
+			if (_indexStream != null)
+				_indexStream.changed.add(indexStreamChangedHandler);
+
+			_changed.execute(this);
 		}

 		/**
@@ -136,6 +147,11 @@
 		public function get format() : VertexFormat
 		{
 			return _vertexStreams.length ? _vertexStreams[0].format : null;
+		}
+
+		public function get changed() : Signal
+		{
+			return _changed;
 		}

 		/**
@@ -166,6 +182,8 @@
 									firstIndex		: uint						= 0,
 									numTriangles	: int						= -1) : void
 		{
+			_changed = new Signal('Geometry.changed');
+
 			_firstIndex 	= firstIndex;
 			_numTriangles	= numTriangles;

@@ -177,11 +195,7 @@
 				var vstream : IVertexStream	= vertexStreams[i];

 				if (!vstream.format.equals(vertexStreams[0].format))
-				{
-					throw new Error(
-						'All vertex streams must have the same vertex format.'
-					);
-				}
+					throw new Error('All vertex streams must have the same vertex format.');

 				setVertexStream(vstream, i);
 			}
@@ -239,15 +253,18 @@
 		public function setVertexStream(vertexStream : IVertexStream, index : uint = 0) : void
 		{
 			if (index < _vertexStreams.length)
-				_vertexStreams[index].boundsChanged.remove(vertexStreamBoundsChangedHandler);
+			{
+				var oldStream : IVertexStream = _vertexStreams[index] as IVertexStream;
+
+				oldStream.changed.remove(vertexStreamChangedHandler);
+				oldStream.boundsChanged.remove(vertexStreamBoundsChangedHandler);
+			}

 			vertexStream.boundsChanged.add(vertexStreamBoundsChangedHandler);
+			vertexStream.changed.add(vertexStreamChangedHandler);
 			_vertexStreams[index] = vertexStream;
-		}
-
-		private function vertexStreamBoundsChangedHandler(stream	: IVertexStream) : void
-		{
-			updateBoundingVolumes();
+
+			_changed.execute(this);
 		}

 		/**
@@ -1032,5 +1049,20 @@

 			vertexStream.unlock();
 		}
+
+		private function vertexStreamChangedHandler(stream : IVertexStream) : void
+		{
+			_changed.execute(this);
+		}
+
+		private function vertexStreamBoundsChangedHandler(stream : IVertexStream) : void
+		{
+			updateBoundingVolumes();
+		}
+
+		private function indexStreamChangedHandler(stream : IndexStream) : void
+		{
+			_changed.execute(this);
+		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 15368
Author:   smgilson@adobe.com
Date:     2010-04-13T12:31:21.786591Z

Log Message:
-----------
integrate 15352: Update ASDoc version tags

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkCheckBoxAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSliderBaseAutomationImpl.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTextAreaAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkButtonBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkListBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableTextBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>

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

--- frameworks/projects/spark/src/spark/accessibility/TitleWindowAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/TitleWindowAccImpl.as
@@ -121,171 +121,171 @@
  *

  *
  *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
  */
 public class TitleWindowAccImpl extends PanelAccImpl
 {
     include "../core/Version.as";

-	//--------------------------------------------------------------------------
-	//
-	//  Class methods
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  Enables accessibility in the TitleWindow class.
-	 *
-	 *
This method is called by application startup code
-	 *  that is autogenerated by the MXML compiler.
-	 *  Afterwards, when instances of TitleWindow are initialized,
-	 *  the accessibilityImplementation property
-	 *  of a special first child Sprite will be set to an instance
-	 *  of this class.
-	 *  If the TitleWindowAccImpl were attached to the TitleWindow itself
-	 *  the accessibility implementations of the TitleWindow's children
-	 *  would be ignored.

-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 9
-	 *  @playerversion AIR 1.1
-	 *  @productversion Flex 3
-	 */
-	public static function enableAccessibility():void
-	{
-		TitleWindow.createAccessibilityImplementation =
-			createAccessibilityImplementation;
-	}
-
-	/**
-	 *  @private
-	 *  Creates a TitleWindow's AccessibilityImplementation object.
-	 *  This method is called from TitleWindow's
-	 *  initializeAccessibility() method.
-	 */
-	mx_internal static function createAccessibilityImplementation(
-								component:UIComponent):void
-	{
-		// The TitleWindowAccImpl is attached
-		// not to the TitleWindow but to a special child Sprite.
-		// If it were attached to the TitleWindow itself,
-		// the AccessibilityImplementations of the TitleWindow's
-		// children would be ignored.
-		var accImpl:TitleWindowAccImpl = new TitleWindowAccImpl(component);
-		var accImplSprite:Sprite = accImpl.attach();
-
-		Accessibility.sendEvent(accImplSprite, 0, AccConst.EVENT_OBJECT_CREATE);
-		Accessibility.updateProperties();
-	}
-
-	//--------------------------------------------------------------------------
-	//
-	//  Constructor
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  Constructor.
-	 *
-	 *  @param master The UIComponent instance that this AccImpl instance
-	 *  is making accessible.
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 9
-	 *  @playerversion AIR 1.1
-	 *  @productversion Flex 3
-	 */
-	public function TitleWindowAccImpl(master:UIComponent)
-	{
-		super(master);
-
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Enables accessibility in the TitleWindow class.
+     *
+     *
This method is called by application startup code
+     *  that is autogenerated by the MXML compiler.
+     *  Afterwards, when instances of TitleWindow are initialized,
+     *  the accessibilityImplementation property
+     *  of a special first child Sprite will be set to an instance
+     *  of this class.
+     *  If the TitleWindowAccImpl were attached to the TitleWindow itself
+     *  the accessibility implementations of the TitleWindow's children
+     *  would be ignored.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public static function enableAccessibility():void
+    {
+        TitleWindow.createAccessibilityImplementation =
+            createAccessibilityImplementation;
+    }
+
+    /**
+     *  @private
+     *  Creates a TitleWindow's AccessibilityImplementation object.
+     *  This method is called from TitleWindow's
+     *  initializeAccessibility() method.
+     */
+    mx_internal static function createAccessibilityImplementation(
+                                component:UIComponent):void
+    {
+        // The TitleWindowAccImpl is attached
+        // not to the TitleWindow but to a special child Sprite.
+        // If it were attached to the TitleWindow itself,
+        // the AccessibilityImplementations of the TitleWindow's
+        // children would be ignored.
+        var accImpl:TitleWindowAccImpl = new TitleWindowAccImpl(component);
+        var accImplSprite:Sprite = accImpl.attach();
+
+        Accessibility.sendEvent(accImplSprite, 0, AccConst.EVENT_OBJECT_CREATE);
+        Accessibility.updateProperties();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param master The UIComponent instance that this AccImpl instance
+     *  is making accessible.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function TitleWindowAccImpl(master:UIComponent)
+    {
+        super(master);
+
         role = AccConst.ROLE_SYSTEM_PANE;
-	}
-
-	//--------------------------------------------------------------------------
-	//
-	//  Overridden properties: AccImpl
-	//
-	//--------------------------------------------------------------------------
-
-	//----------------------------------
-	//  eventsToHandle
-	//----------------------------------
-
-	/**
-	 *  @private
-	 *  Array of events that we should listen for from the master component.
-	 */
-	override protected function get eventsToHandle():Array
-	{
-		return super.eventsToHandle.concat(
-			[ TitleWindowBoundsEvent.WINDOW_MOVE_END, CloseEvent.CLOSE ]);
-	}
-
-	//--------------------------------------------------------------------------
-	//
-	//  Overridden methods: AccessibilityImplementation
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  IAccessible method for returning the state of the TitleWindow.
-	 *  States are predefined for all the components in MSAA.
-	 *  Values are assigned to each state.
-	 *  Depending upon the TitleWindow being Focusable, Focused and Moveable,
-	 *  a value is returned.
-	 *
-	 *  @param childID:uint
-	 *
-	 *  @return State:uint
-	 */
-	override public function get_accState(childID:uint):uint
-	{
-		var accState:uint = getState(childID);
-
-		accState |= AccConst.STATE_SYSTEM_MOVEABLE;
-
-		return accState;
-	}
-
-	//--------------------------------------------------------------------------
-	//
-	//  Overridden event handlers: AccImpl
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  Override the generic event handler.
-	 *  All AccImpl must implement this
-	 *  to listen for events from its master component.
-	 */
-	override protected function eventHandler(event:Event):void
-	{
-		super.eventHandler(event);
-
-		switch (event.type)
-		{
-			case TitleWindowBoundsEvent.WINDOW_MOVE_END:
-			{
-				Accessibility.sendEvent(accImplSprite, 0,
-					AccConst.EVENT_OBJECT_LOCATIONCHANGE, true);
-				Accessibility.updateProperties();
-				break;
-			}
-
-			case CloseEvent.CLOSE:
-			{
-				Accessibility.sendEvent(accImplSprite, 0,
-										AccConst.EVENT_OBJECT_DESTROY, true);
-				Accessibility.updateProperties();
-				break;
-			}
-		}
-	}
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden properties: AccImpl
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  eventsToHandle
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Array of events that we should listen for from the master component.
+     */
+    override protected function get eventsToHandle():Array
+    {
+        return super.eventsToHandle.concat(
+            [ TitleWindowBoundsEvent.WINDOW_MOVE_END, CloseEvent.CLOSE ]);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: AccessibilityImplementation
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  IAccessible method for returning the state of the TitleWindow.
+     *  States are predefined for all the components in MSAA.
+     *  Values are assigned to each state.
+     *  Depending upon the TitleWindow being Focusable, Focused and Moveable,
+     *  a value is returned.
+     *
+     *  @param childID:uint
+     *
+     *  @return State:uint
+     */
+    override public function get_accState(childID:uint):uint
+    {
+        var accState:uint = getState(childID);
+
+        accState |= AccConst.STATE_SYSTEM_MOVEABLE;
+
+        return accState;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden event handlers: AccImpl
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Override the generic event handler.
+     *  All AccImpl must implement this
+     *  to listen for events from its master component.
+     */
+    override protected function eventHandler(event:Event):void
+    {
+        super.eventHandler(event);
+
+        switch (event.type)
+        {
+            case TitleWindowBoundsEvent.WINDOW_MOVE_END:
+            {
+                Accessibility.sendEvent(accImplSprite, 0,
+                    AccConst.EVENT_OBJECT_LOCATIONCHANGE, true);
+                Accessibility.updateProperties();
+                break;
+            }
+
+            case CloseEvent.CLOSE:
+            {
+                Accessibility.sendEvent(accImplSprite, 0,
+                                        AccConst.EVENT_OBJECT_DESTROY, true);
+                Accessibility.updateProperties();
+                break;
+            }
+        }
+    }
 }

 }


import AdvertisementEvent in PlayerViewMediator

--- src/ru/kutu/grindplayer/views/mediators/PlayerViewMediator.as
+++ src/ru/kutu/grindplayer/views/mediators/PlayerViewMediator.as
@@ -14,6 +14,7 @@

 	import ru.kutu.grind.views.mediators.PlayerViewBaseMediator;
 	import ru.kutu.grindplayer.config.GrindPlayerConfiguration;
+	import ru.kutu.grindplayer.events.AdvertisementEvent;
 	import ru.kutu.grindplayer.events.PlayerVideoZoomEvent;
 	import ru.kutu.osmf.advertisement.AdvertisementPluginInfo;
 	import ru.kutu.osmf.subtitles.SubtitlesPluginInfo;


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

--- frameworks/projects/automation_spark/src/mx/automation/delegates/core/UIFTETextFieldAutomationImpl.as
+++ frameworks/projects/automation_spark/src/mx/automation/delegates/core/UIFTETextFieldAutomationImpl.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.automation.delegates.core
 {


fixed bug in keyDown event handling on Desktop app.

Change-Id: I0a1ddc1cd8ee72a69e6ee826323f5882479c9a9a

--- WeaveCore/src/weave/core/StageUtils.as
+++ WeaveCore/src/weave/core/StageUtils.as
@@ -666,6 +666,7 @@
 import flash.events.MouseEvent;
 import flash.events.TimerEvent;
 import flash.geom.Point;
+import flash.system.Capabilities;
 import flash.utils.getTimer;
 import flash.utils.setTimeout;

@@ -777,6 +778,7 @@

 	private var eventManager:EventManager;
 	private var eventType:String;
+	private var cancelable:Boolean = true;

 	/**
 	 * This is the _preCallback
@@ -806,6 +808,9 @@
 		// do not create event listeners for these meta events
 		if (eventType == POINT_CLICK_EVENT || eventType == THROTTLED_MOUSE_MOVE_EVENT)
 			return;
+
+		if (eventType == KeyboardEvent.KEY_DOWN && Capabilities.playerType == "Desktop")
+			cancelable = false;

 		// Add a listener to the capture phase so the callbacks will run before the target gets the event.
 		stage.addEventListener(eventType, captureListener, true, 0, true); // use capture phase
@@ -833,7 +838,7 @@
 	private function captureListener(event:Event):void
 	{
 		// avoid handling redundant events generated by SystemManager
-		if (event.cancelable)
+		if (event.cancelable && cancelable)
 			return;

 		// detect deactivated framerate (when app is hidden)


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

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

 package mx.automation.delegates.controls
 {


fix Geometry.setVertexStream() to listen to VertexStream.boundsChanged only on the stream containing VertexComponent.XYZ

--- src/aerys/minko/render/geometry/Geometry.as
+++ src/aerys/minko/render/geometry/Geometry.as
@@ -249,11 +249,15 @@
 			{
 				var oldStream : IVertexStream = _vertexStreams[index] as IVertexStream;

-				oldStream.changed.remove(vertexStreamChangedHandler);
-				oldStream.boundsChanged.remove(vertexStreamBoundsChangedHandler);
-			}
-
-			vertexStream.boundsChanged.add(vertexStreamBoundsChangedHandler);
+                if (oldStream.changed.hasCallback(vertexStreamChangedHandler))
+                    oldStream.changed.remove(vertexStreamChangedHandler);
+
+                if (oldStream.boundsChanged.hasCallback(vertexStreamBoundsChangedHandler))
+                    oldStream.boundsChanged.remove(vertexStreamBoundsChangedHandler);
+			}
+
+            if (vertexStream.format.hasComponent(VertexComponent.XYZ))
+    			vertexStream.boundsChanged.add(vertexStreamBoundsChangedHandler);
 			vertexStream.changed.add(vertexStreamChangedHandler);
 			_vertexStreams[index] = vertexStream;


Apparently String concatination is really cheap in AVM2, so let's just
keep things simple.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4443 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/StringBuilder.as
+++ src/as/com/threerings/util/StringBuilder.as
@@ -13,8 +13,8 @@
      */
     public function append (... args) :StringBuilder
     {
-        while (args.length > 0) {
-            _array.push(String(args.shift()));
+        for each (var o :Object in args) {
+            _buf += String(o);
         }
         return this;
     }
@@ -24,10 +24,13 @@
      */
     public function toString () :String
     {
-        return _array.join("");
+        // it's ok, Strings are immutable
+        return _buf;
     }

-    /** Our array in which we place all arguments. */
-    protected var _array :Array = [];
+    /** The string upon which we build. Internally in AVM2, Strings have
+     * been designed with a prefix pointer so that concatination is
+     * really cheap. */
+    protected var _buf :String = "";
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkListAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkListAutomationImpl.as
@@ -0,0 +1,424 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.automation.delegates.components
+{
+
+	import flash.display.DisplayObject;
+	import flash.events.MouseEvent;
+
+	import mx.automation.Automation;
+	import mx.automation.AutomationHelper;
+	import mx.automation.AutomationIDPart;
+	import mx.automation.IAutomationManager;
+	import mx.automation.IAutomationObject;
+	import mx.automation.IAutomationTabularData;
+	import mx.automation.delegates.DragManagerAutomationImpl;
+	import mx.automation.events.AutomationDragEvent;
+	import mx.automation.events.AutomationRecordEvent;
+	import mx.core.EventPriority;
+	import mx.core.IVisualElement;
+	import mx.core.mx_internal;
+	import mx.events.DragEvent;
+	import mx.managers.DragManager;
+
+	import spark.automation.delegates.components.supportClasses.SparkListBaseAutomationImpl;
+	import spark.automation.events.SparkListItemSelectEvent;
+	import spark.automation.events.SparkValueChangeAutomationEvent;
+	import spark.components.IItemRenderer;
+	import spark.components.List;
+	import spark.components.Scroller;
+	import spark.components.supportClasses.ScrollBarBase;
+    import spark.layouts.HorizontalLayout;
+	import spark.layouts.VerticalLayout;
+
+	use namespace mx_internal;
+
+	[Mixin]
+	/**
+	 *
+	 *  Defines methods and properties required to perform instrumentation for the
+	 *  List class.
+	 *
+	 *  @see spark.components.List
+	 *
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 4
+	 */
+	public class SparkListAutomationImpl extends SparkListBaseAutomationImpl
+	{
+		include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @param root The SystemManger of the application.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 4
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(spark.components.List, SparkListAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 * @param obj List object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 4
+		 */
+		public function SparkListAutomationImpl(obj:spark.components.List)
+		{
+			super(obj);
+			obj.addEventListener(DragEvent.DRAG_START, dragStartHandler, false, 0 , true);
+			obj.addEventListener(DragEvent.DRAG_DROP, dragDropHandler, false, EventPriority.DEFAULT+1, true);
+			obj.addEventListener(DragEvent.DRAG_COMPLETE, dragCompleteHandler, false, 0 , true);
+			obj.addEventListener(DragEvent.DRAG_ENTER, dragEnterHandler, false, 0 , true);
+			obj.addEventListener(AutomationRecordEvent.RECORD, recordHandler, false, 0 , true);
+		}
+
+
+		//--------------------------------------------------------------------------
+		//
+		//  Variables
+		//
+		//--------------------------------------------------------------------------
+
+
+		/**
+		 *  @private
+		 *  storage for the owner component
+		 */
+		protected function get sparkList():spark.components.List
+		{
+			return uiComponent as spark.components.List;
+		}
+
+		/**
+		 * @private
+		 */
+		private var dragEnterVScrollPos:Number;
+
+		/**
+		 * @private
+		 */
+		private var dragEnterHScrollPos:Number;
+
+		/**
+		 * @private
+		 */
+		private var itemUnderMouse:IAutomationObject;
+
+		/**
+		 * @private
+		 */
+		public function get firstVisibleRow():int
+		{
+			if(sparkList.layout is VerticalLayout)
+				return (sparkList.layout as VerticalLayout).firstIndexInView;
+			else if(sparkList.layout is HorizontalLayout)
+				return (sparkList.layout as HorizontalLayout).firstIndexInView;
+			return 0;
+
+		}
+
+		/**
+		 * @private
+		 */
+		public function get lastVisibleRow():int
+		{
+			if(sparkList.layout is VerticalLayout)
+				return (sparkList.layout as VerticalLayout).lastIndexInView;
+			else if(sparkList.layout is HorizontalLayout)
+				return (sparkList.layout as HorizontalLayout).lastIndexInView;
+			return 0;
+
+		}
+
+		/**
+		 * @private
+		 */
+		override public function get automationValue():Array
+		{
+			var result:Array = [];
+			// this gets the value of the item renderers in the
+			// selected indices.
+			// currently we are handling only the single column details here.
+
+			var selectedItemsAboveView:Boolean = false;
+			var selectedItemsBelowView:Boolean = false;
+
+			var selItems:Vector.<int> = sparkList.selectedIndices;
+			var n:int = selItems? selItems.length :0;
+
+			var listLength:int = (sparkList && sparkList.dataGroup)?sparkList.dataGroup.numElements:0 ;
+			var firstVisibleIndex:int  = firstVisibleRow;
+			var lastVisibleIndex:int  = lastVisibleRow;
+
+			for (var i:int = 0; i < n; i++)
+			{
+
+				var selectedIndex:int  =  selItems[i];
+
+				if (selectedIndex < firstVisibleIndex)
+			{
+			selectedItemsAboveView = true;
+			}
+				else if (selectedIndex > lastVisibleIndex)
+			{
+			selectedItemsBelowView = true;
+			}
+			else
+			{
+					var item:IVisualElement = sparkList.dataGroup.getElementAt(selectedIndex);
+					if(item is IAutomationObject)
+			result.push(IAutomationObject(item).automationValue);
+			}
+			}
+
+			if (selectedItemsAboveView)
+			result.unshift("...");
+
+			if (selectedItemsBelowView)
+			result.push("...");
+
+			return result;
+		}
+
+		/**
+		 *  @private
+		 */
+		protected function dragStartHandler(event:DragEvent):void
+		{
+			var shouldEventBeDispatched:Boolean = true;
+
+			// we need a different handling if the event is happening in air.
+			// first we need to check whether the env is air or not.
+			// for automation we have a special class to handle the
+			if (AutomationHelper.isCurrentAppAir())
+			{
+				// for air we need to send the event only if the dragSource is present.
+				// drag start happens from the list base  (mouse  down  + mouse move)
+				// and from the listener of the native drag start.
+				// we need the details from the native event, hence handle it only
+				// if it is from the native drag event.
+				if (!event.dragSource)
+					shouldEventBeDispatched = false;
+			}
+
+			if (shouldEventBeDispatched)
+			{
+				var drag:AutomationDragEvent = new AutomationDragEvent(event.type);
+				drag.draggedItem = itemUnderMouse;
+				drag.ctrlKey = ctrlKeyDown;
+				drag.shiftKey = shiftKeyDown;
+
+				var re:AutomationRecordEvent = new AutomationRecordEvent(AutomationRecordEvent.RECORD, false);
+				re.automationObject = uiAutomationObject;
+				re.cacheable = false;
+				re.replayableEvent = drag;
+
+				var am:IAutomationManager = Automation.automationManager;
+				preventDragDropRecording = false;
+				am.recordAutomatableEvent(uiAutomationObject, re);
+				preventDragDropRecording = true;
+			}
+		}
+
+		/**
+		 *  @private
+		 */
+		protected function dragDropHandler(event:DragEvent):void
+		{
+			var dragDropVScrollPos:Number = sparkList.layout.verticalScrollPosition;
+			var dragDropHScrollPos:Number = sparkList.layout.horizontalScrollPosition;
+			var am:IAutomationManager = Automation.automationManager;
+
+			// Scrolling on the list while dragging is not dispatching any event.
+			// It dispatches a SCROLL event in Halo List controls but that is not the case in Spark List controls.
+			// So we are recording a value change event here if we find that the scroll positions
+			// at the time of drag drop are different from those at the time of drag enter.
+			if((dragDropVScrollPos != dragEnterVScrollPos) ||  (dragDropHScrollPos != dragEnterHScrollPos))
+			{
+				var vScrollBar:ScrollBarBase;
+				var hScrollBar:ScrollBarBase;
+				var scroller:Scroller = getScroller(sparkList, sparkList.dataGroup);
+				if(scroller)
+				{
+					if(scroller.horizontalScrollBar && scroller.horizontalScrollBar.visible)
+						hScrollBar = scroller.horizontalScrollBar;
+					if(scroller.verticalScrollBar && scroller.verticalScrollBar.visible)
+						vScrollBar = scroller.verticalScrollBar;
+				}
+
+				if(dragDropVScrollPos != dragEnterVScrollPos)
+				{
+					var valueChangeEvent:SparkValueChangeAutomationEvent =
+						new SparkValueChangeAutomationEvent(
+							SparkValueChangeAutomationEvent.CHANGE,false,false,dragDropVScrollPos);
+					if (am && am.recording)
+						am.recordAutomatableEvent(vScrollBar as IAutomationObject, valueChangeEvent);
+				}
+
+				if(dragDropHScrollPos != dragEnterHScrollPos)
+				{
+					var valueChangeEvent1:SparkValueChangeAutomationEvent =
+						new SparkValueChangeAutomationEvent(
+							SparkValueChangeAutomationEvent.CHANGE,false,false,dragDropHScrollPos);
+					if (am && am.recording)
+						am.recordAutomatableEvent(hScrollBar as IAutomationObject, valueChangeEvent1);
+				}
+			}
+
+			var drag:AutomationDragEvent = new AutomationDragEvent(event.type);
+			drag.action = event.action;
+			var index:int = sparkList.layout.calculateDropLocation(event).dropIndex;
+
+			drag.draggedItem = sparkList.dataGroup.getElementAt(index) as IAutomationObject;
+			preventDragDropRecording = false;
+			am.recordAutomatableEvent(uiAutomationObject, drag);
+			preventDragDropRecording = true;
+		}
+
+		/**
+		 *  @private
+		 */
+		protected function dragEnterHandler(event:DragEvent):void
+		{
+			// Scrolling on the list while dragging is not dispatching any event.
+			// It dispatches a SCROLL event in Halo List controls but that is not the case in Spark List controls.
+			// So we are storing the scroll positions at the time of drag enter
+			// so that we can record a value change event if we find that the scroll positions
+			// at the time of drag drop are different from those at the time of drag enter.
+			dragEnterVScrollPos = sparkList.layout.verticalScrollPosition;
+			dragEnterHScrollPos = sparkList.layout.horizontalScrollPosition;
+		}
+
+		/**
+		 *  @private
+		 */
+		protected function dragCompleteHandler(event:DragEvent):void
+		{
+			if (event.action == DragManager.NONE)
+			{
+				var drag:AutomationDragEvent = new AutomationDragEvent(event.type);
+				drag.action = event.action;
+
+				var am:IAutomationManager = Automation.automationManager;
+				preventDragDropRecording = false;
+				am.recordAutomatableEvent(uiAutomationObject, drag);
+				preventDragDropRecording = true;
+			}
+		}
+
+
+		/**
+		 *  @private
+		 */
+
+		override protected function findItemRenderer(selectEvent:SparkListItemSelectEvent):Boolean
+		{
+			if (selectEvent.itemAutomationValue && selectEvent.itemAutomationValue.length)
+			{
+				var itemLabel:String = selectEvent.itemAutomationValue;
+				var tabularData:IAutomationTabularData = automationTabularData as IAutomationTabularData;
+				var values:Array = tabularData.getValues(0, tabularData.numRows);
+				var length:int = values.length;
+
+				var part:AutomationIDPart = new AutomationIDPart();
+				part.automationName = itemLabel;
+
+				var labels:Array = itemLabel.split("|");
+
+				trimArray(labels);
+
+				var index:int = 0;
+				for each (var a:Array in values)
+				{
+					values[index] = [];
+					trimArray(a);
+					var colIndex:int = 0 ;
+					for each (var b:String in a)
+					{
+						var splitArray:Array = b.split("|");
+						for each ( var c:String in splitArray)
+						values[index].push(c);
+					}
+					trimArray(values[index]);
+					++index;
+				}
+
+				var n:int = labels.length;
+				for (var i:int = 0; i < n; i++)
+				{
+					var lString:String = labels[i];
+					if (lString.charAt(0) == "*" && lString.charAt(lString.length-1) == "*")
+						labels[i] = lString.substr(1, lString.length-2);
+				}
+
+				for ( i = 0; i < length; i++)
+				{
+					if(compare(labels, values[i]))
+					{
+						sparkList.ensureIndexIsVisible(i);
+						var ao:IAutomationObject = Automation.automationManager.resolveIDPartToSingleObject(uiAutomationObject, part);
+
+						if (ao)
+						{
+							selectEvent.itemRenderer = ao as IItemRenderer;
+							return true;
+						}
+					}
+				}
+			}
+
+			return false;
+		}
+
+
+		private function recordHandler(ev:AutomationRecordEvent):void
+		{
+			// list based controls handle drag-drop on their own
+			if (preventDragDropRecording && ev.replayableEvent is AutomationDragEvent)
+				ev.preventDefault();
+		}
+
+		override protected function mouseDownHandler(event:MouseEvent):void
+		{
+			//This mouseDownHandler is on the renderer.
+			ctrlKeyDown = event.ctrlKey;
+			shiftKeyDown = event.shiftKey;
+			itemUnderMouse = DragManagerAutomationImpl.getChildAutomationObject(sparkList, event);
+			super.mouseDownHandler(event);
+		}
+	}
+}


Allowing buffer check when in PLAYING_BUFFERING state as well Allows pause of net stream in the case of buffer <= 0.1 && !reachedEnd && state == PLAYING_BUFFERING

--- src/org/mangui/hls/stream/HLSNetStream.as
+++ src/org/mangui/hls/stream/HLSNetStream.as
@@ -144,7 +144,7 @@
             // Log.info("netstream/total:" + super.bufferLength + "/" + this.bufferLength);

             if (_seekState != HLSSeekStates.SEEKING) {
-                if (_playbackState == HLSPlayStates.PLAYING) {
+                if (_playbackState == HLSPlayStates.PLAYING || _playbackState == HLSPlayStates.PLAYING_BUFFERING) {
                   /* check if play head reached end of stream.
                         this happens when
                             playstate is PLAYING


StreamBuffer: don't check fragment overlapping in case of live playlists or VoD playlist that slided in the past

fix macroblocks and freeze on live

--- src/org/mangui/hls/stream/StreamBuffer.as
+++ src/org/mangui/hls/stream/StreamBuffer.as
@@ -198,48 +198,51 @@
                 // if a new fragment is being appended
                 if(fragLevel != _fragMainLevel || fragSN != _fragMainSN) {
                     if(continuity == _fragMainInitialContinuity) {
-                        // this whole part of the code is here to handle playlists with fragments overlapping with each other (when switching level usually)
-                        // for example let's imagine we have data already  buffered, and new tags are appended, overlapping with existing buffer :
-                        // existing ------------------------------------------->
-                        // new tags                                       K--K----K----->
-                        //
-                        // here we are trying to filter new tags to convert them into the following
-                        // existing ------------------------------------------->
-                        // filtered new tags                                      K----->
-                        // this is more complex than it seems, as we need to deal with keyframes for video and all that kind of stuff
-                        // video filtered new tags should start with a keyframe ...
-                        // if we already have overlapping tags, adjust startPosition/minPTS to match the one from first tag
-                        // we only trigger this logic if detected overlapping is more than 500 ms
-
-                        if(_overlappingTags.length) {
-                            startPosition = _overlappingStartPosition;
-                            min_pts = _overlappingMinPTS;
-                            nextRelativeStartPos = startPosition + (max_pts - min_pts) / 1000;
-                        } else {
-                            _overlappingStartPosition = startPosition;
-                            _overlappingMinPTS = min_pts;
-                        }
-                        var end : Number = startPosition+(max_pts-min_pts)/1000;
-                        // check if any overlapping occurs, let 500ms tolerance
-                        if(startPosition+0.5 < max_audio_pos && startPosition+0.5 < max_video_pos) {
-                            CONFIG::LOGGING {
-                                Log.warn("fragment overlapping with buffered one, start/end/max_audio_pos/max_video_pos:"+startPosition+"/"+ end + "/" + max_audio_pos+"/"+max_video_pos);
+                        /// don't check overlapping on live playlists or VoD playlists that slided in the past
+                        if(!computeSliding) {
+                            // this whole part of the code is here to handle playlists with fragments overlapping with each other (when switching level usually)
+                            // for example let's imagine we have data already  buffered, and new tags are appended, overlapping with existing buffer :
+                            // existing ------------------------------------------->
+                            // new tags                                       K--K----K----->
+                            //
+                            // here we are trying to filter new tags to convert them into the following
+                            // existing ------------------------------------------->
+                            // filtered new tags                                      K----->
+                            // this is more complex than it seems, as we need to deal with keyframes for video and all that kind of stuff
+                            // video filtered new tags should start with a keyframe ...
+                            // if we already have overlapping tags, adjust startPosition/minPTS to match the one from first tag
+                            // we only trigger this logic if detected overlapping is more than 500 ms
+
+                            if(_overlappingTags.length) {
+                                startPosition = _overlappingStartPosition;
+                                min_pts = _overlappingMinPTS;
+                                nextRelativeStartPos = startPosition + (max_pts - min_pts) / 1000;
+                            } else {
+                                _overlappingStartPosition = startPosition;
+                                _overlappingMinPTS = min_pts;
                             }
-                            _overlappingTags = _overlappingTags.concat(tags);
-                            // filter out overlapping tags
-                            tags = filterOverlappingTags(_overlappingTags, max_pos - startPosition);
-                            if(tags.length == 0) {
-                                // not enough data, cannot filter overlapping tags, don't push those tags
-                                // fragloader will call us back later with more data
-                                return;
-                            } else {
-                                // reset overlapping tags
-                                _overlappingTags = new Vector.<FLVTag>();
-                                // adjust startPosition and min_pts
-                                startPosition = max_pos;
-                                min_pts = tags[0].pts;
-                                // recompute value
-                                nextRelativeStartPos = startPosition + (max_pts - min_pts) / 1000;
+                            var end : Number = startPosition+(max_pts-min_pts)/1000;
+                            // check if any overlapping occurs, let 500ms tolerance
+                            if(startPosition+0.5 < max_audio_pos && startPosition+0.5 < max_video_pos) {
+                                CONFIG::LOGGING {
+                                    Log.warn("fragment overlapping with buffered one, start/end/max_audio_pos/max_video_pos:"+startPosition+"/"+ end + "/" + max_audio_pos+"/"+max_video_pos);
+                                }
+                                _overlappingTags = _overlappingTags.concat(tags);
+                                // filter out overlapping tags
+                                tags = filterOverlappingTags(_overlappingTags, max_pos - startPosition);
+                                if(tags.length == 0) {
+                                    // not enough data, cannot filter overlapping tags, don't push those tags
+                                    // fragloader will call us back later with more data
+                                    return;
+                                } else {
+                                    // reset overlapping tags
+                                    _overlappingTags = new Vector.<FLVTag>();
+                                    // adjust startPosition and min_pts
+                                    startPosition = max_pos;
+                                    min_pts = tags[0].pts;
+                                    // recompute value
+                                    nextRelativeStartPos = startPosition + (max_pts - min_pts) / 1000;
+                                }
                             }
                         }
                     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3553
Author:   chaase@adobe.com
Date:     2008-10-09T23:14:18.257660Z

Log Message:
-----------
Fixed sdk-17113, sdk-17139, sdk-16526, sdk-16884, sdk-17154, sdk-16999, sdk-16631, sdk-17214. Most of these fixes are related to making effects work when contraints are enabled on the target. For that, two new attributes were added to FxAnimate: disableLayout (default false) and adjustConstraints (default false). Fixes were also made for various other effects issues, such as running all animations and startDelays off of the same global timer.
The change also includes renames of some effects classes and the easing API (now in mx.effects.interpolation).

Reviewed by: Jason (effects code) and Hans (renames)
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxResizeInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/IEaser.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/IEaser.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Linear.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Animate3DInstance.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animate3D.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxMoveInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Animate3DInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Timeline.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Constant.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Constant.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Rotate3DInstance.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimateFilter.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Rotate3D.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxRotate3D.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/EaseInOut.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/EaseInOut.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Power.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Power.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Rotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Sine.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Sine.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Rotate3D.as</path>

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

--- frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as
+++ frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as
@@ -8,7 +8,7 @@
 //  in accordance with the terms of the license agreement accompanying it.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package mx.effects.fxEasing
+package mx.effects.interpolation
 {
 /**
  * The superclass for classes that provide easing capability where there


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

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

 package spark.automation.delegates.components
 {


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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkLabelAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkLabelAutomationImpl.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


- implement in game quiz, but not fixed yet

--- framework/screenstates/GamePlay.as
+++ framework/screenstates/GamePlay.as
@@ -12,6 +12,13 @@
 	import starling.events.Touch;
 	import starling.utils.deg2rad;
 	import framework.gameobject.Item;
+	import framework.quiz.QuizQuestion;
+	import starling.text.TextField;
+	import framework.customobjects.Font;
+	import framework.utils.Fonts;
+	import starling.utils.HAlign;
+	import starling.utils.VAlign;
+

 	public class GamePlay extends Sprite{
@@ -43,6 +50,24 @@

 		private var itemsToAnimate:Vector.<Item>;

+		/* for quiz declaration */
+		//for managing questions:
+        private var quizQuestions:Array;
+        private var currentQuestion:QuizQuestion;
+        private var currentIndex:int = 0;
+        //the buttons:
+        private var prevButton:Button;
+        private var nextButton:Button;
+        private var finishButton:Button;
+        //scoring and messages:
+        private var score:int = 0;
+        private var statusT:TextField;
+		/*end quiz declaration */
+		/** Font - Regular text. */
+		private var fontRegular:Font;
+		/** Is game currently in paused state? */
+		private var gamePaused:Boolean = false;
+
 		public function GamePlay() {
 			// constructor code
 			super();
@@ -128,63 +153,66 @@

 		private function onGameTick(event:Event):void
 		{
-			switch(gameState)
-			{
-				case "idle":
-					//take off
-					if(hero.x < stage.stageWidth * 0.5 * 0.5)
-					{
-						hero.x += ((stage.stageWidth * 0.5 * 0.5 + 10)-hero.x)*0.05;
-						hero.y = stage.stageHeight * 0.5;
+			if (!gamePaused)
+			{
+				switch(gameState)
+				{
+					case "idle":
+						//take off
+						if(hero.x < stage.stageWidth * 0.5 * 0.5)
+						{
+							hero.x += ((stage.stageWidth * 0.5 * 0.5 + 10)-hero.x)*0.05;
+							hero.y = stage.stageHeight * 0.5;
+
+							playerSpeed += (MIN_SPEED - playerSpeed)* 0.05;
+							bg.speed = playerSpeed * elapsed;
+						}
+						else
+						{
+							gameState = "flying";
+						}
+						break;
+					case "flying":
+
+						if(hitObstacle <= 0)
+						{
+							hero.y -= (hero.y - touchY) * 0.1;
+
+							if(-(hero.y - touchY)<150 && -(hero.y - touchY)>-150)
+							{
+								hero.rotation = deg2rad(-(hero.y -touchY) * 0.2);
+							}
+							if(hero.y > gameArea.bottom - hero.height * 0.5)
+							{
+								hero.y = gameArea.bottom - hero.height * 0.5;
+								hero.rotation = deg2rad(0);
+							}
+							if(hero.y < gameArea.top + hero.height * 0.5)
+							{
+								hero.y = gameArea.top + hero.height * 0.5;
+								hero.rotation = deg2rad(0);
+							}
+
+						}
+						else
+						{
+							hitObstacle--;
+							cameraShake();
+						}
+
+						playerSpeed -= (playerSpeed - MIN_SPEED) * 0.01;
+						bg.speed = playerSpeed * elapsed;
+						scoreDistance += (playerSpeed * elapsed)*0.1;

-						playerSpeed += (MIN_SPEED - playerSpeed)* 0.05;
-						bg.speed = playerSpeed * elapsed;
-					}
-					else
-					{
-						gameState = "flying";
-					}
+						initObstacle();
+						animateObstacles();
+
+						createFoodItems();
+						animateItems();
+						break;
+					case "over":
 					break;
-				case "flying":
-
-					if(hitObstacle <= 0)
-					{
-						hero.y -= (hero.y - touchY) * 0.1;
-
-						if(-(hero.y - touchY)<150 && -(hero.y - touchY)>-150)
-						{
-							hero.rotation = deg2rad(-(hero.y -touchY) * 0.2);
-						}
-						if(hero.y > gameArea.bottom - hero.height * 0.5)
-						{
-							hero.y = gameArea.bottom - hero.height * 0.5;
-							hero.rotation = deg2rad(0);
-						}
-						if(hero.y < gameArea.top + hero.height * 0.5)
-						{
-							hero.y = gameArea.top + hero.height * 0.5;
-							hero.rotation = deg2rad(0);
-						}
-
-					}
-					else
-					{
-						hitObstacle--;
-						cameraShake();
-					}
-
-					playerSpeed -= (playerSpeed - MIN_SPEED) * 0.01;
-					bg.speed = playerSpeed * elapsed;
-					scoreDistance += (playerSpeed * elapsed)*0.1;
-
-					initObstacle();
-					animateObstacles();
-
-					createFoodItems();
-					animateItems();
-					break;
-				case "over":
-				break;
+				}
 			}
 		}

@@ -201,7 +229,21 @@
 				{
 					itemsToAnimate.splice(i,1);
 					this.removeChild(itemToTrack);
-				}
+					if(itemToTrack.foodItemType == 1)
+					{
+						gameState = "idle";
+						initQuiz();
+						gamePaused = true;
+					}
+				}
+
+				/*if(itemToTrack.bounds.intersects(hero.bounds)&& itemToTrack.foodItemType == 1)
+				{
+					itemsToAnimate.splice(i,1);
+					this.removeChild(itemToTrack);
+				} */
+
+
 				if(itemToTrack.x < -50)
 				{
 					itemsToAnimate.splice(i,1);
@@ -327,6 +369,156 @@
 			// Calcualte the time it takes for a frame to pass, in milliseconds.
 			elapsed = (timeCurrent - timePrevious) * 0.001;
 		}
+
+		private function initQuiz():void
+		{
+			fontRegular = Fonts.getFont("Regular");
+
+			statusT = new TextField(480, 600, "", fontRegular.fontName, fontRegular.fontSize, 0xffffff);
+			statusT.x = 0;
+			statusT.y = 100;
+			statusT.hAlign = HAlign.CENTER;
+			statusT.vAlign = VAlign.TOP;
+			this.addChild(statusT);
+
+			/* quiz button */
+			 var yPosition:Number = 300;
+
+			prevButton = new Button(GameAssets.getAtlas().getTexture("welcome_playButton"));
+			prevButton.x = 30;
+			prevButton.y = yPosition;
+			//prevButton.addEventListener(Event.TRIGGERED, prevHandler);
+			this.addChild(prevButton);
+
+
+            nextButton = new Button(GameAssets.getAtlas().getTexture("welcome_playButton"));
+            nextButton.x = prevButton.x + prevButton.width + 40;
+            nextButton.y = yPosition;
+            //nextButton.addEventListener(Event.TRIGGERED, nextHandler);
+            this.addChild(nextButton);
+
+            finishButton = new Button(GameAssets.getAtlas().getTexture("welcome_playButton"));
+            finishButton.x = nextButton.x + nextButton.width + 40;
+            finishButton.y = yPosition;
+            finishButton.addEventListener(Event.TRIGGERED, finishHandler);
+            this.addChild(finishButton);
+
+			quizQuestions = new Array();
+            createQuestions();
+
+			addAllQuestions();
+            hideAllQuestions();
+            firstQuestion();
+
+
+		}
+
+		private function createQuestions() {
+            quizQuestions.push(new QuizQuestion("What color is an orange?",
+                                                            0,
+                                                            "Orange",
+                                                            "Blue",
+                                                            "Purple",
+                                                            "Brown"));
+            quizQuestions.push(new QuizQuestion("What is the shape of planet earth?",
+                                                            2,
+                                                            "Flat",
+                                                            "Cube",
+                                                            "Round",
+                                                            "Shabby"));
+            quizQuestions.push(new QuizQuestion("Who created SpiderMan?",
+                                                            1,
+                                                            "Jack Kirby",
+                                                            "Stan Lee and Steve Ditko",
+                                                            "Stan Lee",
+                                                            "Steve Ditko",
+                                                            "none of the above"));
+            quizQuestions.push(new QuizQuestion("Who created Mad?",
+                                                            1,
+                                                            "Al Feldstein",
+                                                            "Harvey Kurtzman",
+                                                            "William M. Gaines",
+                                                            "Jack Davis",
+                                                            "none of the above"));
+        }
+
+		 private function showMessage(theMessage:String) {
+            statusT.text = theMessage;
+            statusT.x = 200;
+        }
+        private function addAllQuestions() {
+            for(var i:int = 0; i < quizQuestions.length; i++) {
+                this.addChild(quizQuestions[i]);
+            }
+        }
+        private function hideAllQuestions() {
+            for(var i:int = 0; i < quizQuestions.length; i++) {
+                quizQuestions[i].visible = false;
+            }
+        }
+        private function firstQuestion() {
+            currentQuestion = quizQuestions[0];
+            currentQuestion.visible = true;
+        }
+        private function prevHandler(event:Event) {
+            showMessage("");
+            if(currentIndex > 0) {
+                currentQuestion.visible = false;
+                currentIndex--;
+                currentQuestion = quizQuestions[currentIndex];
+                currentQuestion.visible = true;
+            } else {
+                showMessage("sebelumnya");
+            }
+        }
+        private function nextHandler(event:Event) {
+            showMessage("error");
+			trace("user: "+currentQuestion.userAnswer)
+            if(currentQuestion.userAnswer < 0) {
+                showMessage("sesudahnya");
+                return;
+            }
+            if(currentIndex < (quizQuestions.length - 1)) {
+                currentQuestion.visible = false;
+                currentIndex++;
+                currentQuestion = quizQuestions[currentIndex];
+                currentQuestion.visible = true;
+            } else {
+                showMessage("That's all the questions! Click Finish to Score, or Previous to go back");
+            }
+        }
+        private function finishHandler(event:Event) {
+            showMessage("");
+            var finished:Boolean = true;
+            for(var i:int = 0; i < quizQuestions.length; i++) {
+                if(quizQuestions[i].userAnswer == 0) {
+                    finished = false;
+                    break;
+                }
+            }
+			trace(quizQuestions.length)
+            if(finished || currentIndex == quizQuestions.length -1) {
+                prevButton.visible = false;
+                nextButton.visible = false;
+                finishButton.visible = false;
+                hideAllQuestions();
+                computeScore();
+            } else {
+                showMessage("belum selesai semua");
+            }
+
+			gamePaused = false;
+        }
+        private function computeScore() {
+            for(var i:int = 0; i < quizQuestions.length; i++) {
+                if(quizQuestions[i].userAnswer == quizQuestions[i].correctAnswer) {
+                    score++;
+                }
+            }
+            showMessage("You answered " + score + " correct out of " + quizQuestions.length + " questions.");
+			//trace("You answered " + score + " correct out of " + quizQuestions.length + " questions.")
+        }
+
 	}

 }


remove Protocols and URl reference

remove Protocols and URl reference

--- src/com/google/analytics/v4/Tracker.as
+++ src/com/google/analytics/v4/Tracker.as
@@ -37,9 +37,11 @@
     import com.google.analytics.ecommerce.Transaction;
     import com.google.analytics.external.AdSenseGlobals;
     import com.google.analytics.utils.Environment;
-    import com.google.analytics.utils.Protocols;
-    import com.google.analytics.utils.URL;
     import com.google.analytics.utils.Variables;
+    import com.google.analytics.utils.getDomainFromHost;
+    import com.google.analytics.utils.getSubDomainFromHost;
+
+    import core.uri;

     import flash.net.URLRequest;
     import flash.net.navigateToURL;
@@ -443,23 +445,19 @@
          */
         private function _doTracking():Boolean
         {
-            if( (_info.protocol != Protocols.file) &&
-                (_info.protocol != Protocols.none) &&
+
+            if( (_info.protocol != "file") &&
+                (_info.protocol != "") &&
                 _isNotGoogleSearch() )
-                {
-                    return true;
-                }
+            {
+                return true;
+            }

             if( _config.allowLocalTracking )
             {
                 return true;
             }

-            /* TODO:
-               add logic for AIR and other running local exe
-               by default a SWF running ina projector or in AIR
-               will have a file:// protocol
-            */
             return false;
         }

@@ -490,6 +488,7 @@
          */
         private function _formatReferrer():String
         {
+
             var referrer:String = _info.referrer;

             //if there is no referrer
@@ -501,28 +500,36 @@
             else
             {
                 var domainName:String = _info.domainName;
-                var ref:URL = new URL( referrer );
-                var dom:URL = new URL( "http://" + domainName );
-
-                if( ref.hostName == domainName )
+                //var ref:URL = new URL( referrer );
+                //var dom:URL = new URL( "http://" + domainName );
+                var ref:uri = new uri( referrer );
+                var dom:uri = new uri( "http://" + domainName );
+
+                if( ref.host == domainName )
                 {
                     return "-";
                 }

+                var ref_d:String = getDomainFromHost( ref.host );
+                var ref_s:String = getSubDomainFromHost( ref.host );
+                var dom_d:String = getDomainFromHost( dom.host );
+                var dom_s:String = getSubDomainFromHost( dom.host );
+
                 /* If referrer is in the sub-domain of document,
                    then formatted referrer is set to "0".
                 */
-                if( dom.domain == ref.domain )
+                if( dom_d == ref_d )
                 {
                     //no self-referral
-                    if( dom.subDomain != ref.subDomain )
+                    if( dom_s != ref_s )
                     {
                         referrer = "0";
                     }
                 }

                 //no referrer if referrer is enclosed in square-brackets
-                if( (referrer.charAt(0) == "[") && (referrer.charAt(referrer.length-1)) )
+                if( (referrer.charAt(0) == "[") &&
+                    (referrer.charAt(referrer.length-1) == "]") )
                 {
                     referrer = "-";
                 }


Add check for NaN in formatDuration. #WEAVE-616 Fixed Spent time 1h

--- WeaveJS/src/weavejs/util/DateUtils.as
+++ WeaveJS/src/weavejs/util/DateUtils.as
@@ -34,7 +34,7 @@
 		}
 		public static function formatDuration(date:Object):String
 		{
-			return moment.duration(date).humanize();
+			return !isNaN(date as Number) ? moment.duration(date).humanize() : "";
 		}
 		public static function detectFormats(dates:Array/*/<string>/*/, moment_formats:Array/*/<string>/*/):Array/*/<string>/*/
 		{


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

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

 package mx.effects
 {