You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jm...@apache.org on 2017/12/31 00:02:52 UTC

[01/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35267 FLEX-35260 Added a unit test which can verify the column-index and header-index related functions more thoroughly. Currently it fails, as expected.

Repository: flex-sdk
Updated Branches:
  refs/heads/master ea8a5ab63 -> ba4144430


FLEX-35267 FLEX-35260
Added a unit test which can verify the column-index and header-index related functions more thoroughly. Currently it fails, as expected.


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

Branch: refs/heads/master
Commit: a603b07c8cc68173be112b3cffe00670f46bf947
Parents: 7185ca6
Author: Mihai Chira <mi...@apache.org>
Authored: Fri Mar 10 16:56:41 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Fri Mar 10 16:56:41 2017 +0100

----------------------------------------------------------------------
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 387 +++++++++++++++++++
 1 file changed, 387 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a603b07c/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
new file mode 100644
index 0000000..925ea0c
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -0,0 +1,387 @@
+package spark.components.gridClasses {
+    import flash.geom.Matrix;
+    import flash.geom.Point;
+    import flash.geom.Rectangle;
+
+    import mx.collections.ArrayCollection;
+
+    import org.flexunit.assertThat;
+
+    import org.flexunit.asserts.assertEquals;
+    import org.flexunit.runners.Parameterized;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    import spark.components.DataGrid;
+    import spark.components.GridColumnHeaderGroup;
+
+    /*
+     Example for two-column table (with no horizontal scroll):
+
+     [pl]: GridColumnHeaderGroup padding left
+     [lch]: still part of last column header, but beyond last column width
+     c0: first column header starts here
+     c1: first column header ends here, second column header (if it exists) starts, and column separator is here
+     c2: second column header ends here; second column separator is here
+     ...
+     cx: last column header ends here; last column separator is here
+
+     d0: first column ends at this x-axis coordinate (but the first header doesn't, due to [pl])
+     d1: second column ends at this x-axis coordinate
+     ...
+     dx: last column ends at this x-axis coordinate
+
+     e: table ends at this x-axis coordinate
+
+     f0: header ends and grid starts at this y-coordinate
+     f1: first column ends here and second column (if it exists) begins here
+     f2: second column ends here and third column (if it exists) begins here
+     ...
+     fx: last column ends here
+
+     g0: bottom-left point of first column header
+     g1: bottom-right point of first column header
+     g2: bottom-right point of second column header
+     ...
+     gx: bottom-right point of (last column header - [lch])
+
+     h: bottom-right point of last column header and x-coordinate at end of data grid
+
+     And for each point we generate the 8 adjacent points:
+     (x+1, y), (x+1, y+1), (x+1, y-1),
+     (x-1, y), (x-1, y+1), (x-1, y-1),
+     (x, y-1), (x, y-1). For easier comprehension we mark them
+     using cardinal points: N, NE, E, SE, S, SW, W, NW.
+     ...and we check various boundaries against all of them
+
+     a (0, 0)
+     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
+     ░░░░░b════c0══════d0═══c1════════════════════════════d1══c2═════════e░░░░░░░
+     ░░░░░║▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓║░░░░░░░
+     ░░░░░║[pl]║▓▓▓INDEX▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓NAME▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓[lch]▓▓║░░░░░░░
+     ░░░░░║▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓║░░░░░░░
+     ░░░░░f0═══g0══════f1═══g1════════════════════════════f2══g2═════════h░░░░░░░
+     ░░░░░║     01     ║     John                         ║              ║░░░░░░░
+     ░░░░░║     02     ║     Jane                         ║              ║░░░░░░░
+     ░░░░░║     03     ║     Judy                         ║              ║░░░░░░░
+     ░░░░░║     04     ║     James                        ║              ║░░░░░░░
+     ░░░░░╚════════════╩══════════════════════════════════╩══════════════╝░░░░░░░
+     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
+     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
+     */
+
+    [RunWith("org.flexunit.runners.Parameterized")]
+    public class GridHeaderViewLayout_FLEX_35260_Tests
+    {
+        private static var foo:Parameterized;
+        private static const N:Matrix = new Matrix(1, 0, 0, 1, 0, -1);
+        private static const NE:Matrix = new Matrix(1, 0, 0, 1, 1, -1);
+        private static const E:Matrix = new Matrix(1, 0, 0, 1, 1, 0);
+        private static const SE:Matrix = new Matrix(1, 0, 0, 1, 1, 1);
+        private static const S:Matrix = new Matrix(1, 0, 0, 1, 0, 1);
+        private static const SW:Matrix = new Matrix(1, 0, 0, 1, -1, 1);
+        private static const W:Matrix = new Matrix(1, 0, 0, 1, -1, 0);
+        private static const NW:Matrix = new Matrix(1, 0, 0, 1, -1, -1);
+        private static const ITSELF:Matrix = new Matrix(1, 0, 0, 1, 0, 0); //the point, unmodified
+        private static const directions:Array = [ITSELF, N, NE, E, SE, S, SW, W, NW];
+
+        private static var _dataGrid:DataGrid;
+
+        private var _keyRectangles:Array;
+        private var _keyPoints:Array;
+
+        public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, [column widths] */
+            [[10, 0, 300, 5, 0, [25, 150]]],
+            [[0, 0, 300, 5, 0, [25, 150]]]
+        ];
+
+
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+            _dataGrid = new DataGrid();
+            _dataGrid.setStyle("borderVisible", false); //to not deal with the complications of Scroller.minViewportInset
+            UIImpersonator.addChild(_dataGrid);
+        }
+
+        [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+            UIImpersonator.removeAllChildren();
+
+            _dataGrid = null;
+        }
+
+        [Before]
+        public function setUp():void
+        {
+
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _keyRectangles = null;
+            _keyPoints = null;
+        }
+
+        /*[Ignore]
+        [Test]
+        public function test_global_coordinates_over_header_view(globalPoint:Array, expectedHeaderIndex:int):void
+        {
+            //given
+            var pointOverAHeaderView:Boolean = expectedHeaderIndex != -1;
+
+            //when
+            var doesHeaderContainThisPoint:Boolean = _sut.areCoordinatesOverAHeaderView(new Point(globalPoint[0], globalPoint[1]));
+
+            //then
+            assertEquals(pointOverAHeaderView, doesHeaderContainThisPoint);
+        }
+
+        [Ignore]
+        [Test]
+        public function test_column_index(globalPoint:Array, expectedColumnIndex:int):void
+        {
+            //given
+            var localPoint:Point = _dataGrid.grid.globalToLocal(new Point(globalPoint[0], globalPoint[1]));
+
+            //when
+            var columnIndex:int = _dataGrid.grid.getColumnIndexAt(localPoint.x, 0);
+
+            //then
+            assertEquals(expectedColumnIndex, columnIndex);
+        }
+
+        [Ignore]
+        [Test]
+        public function test_header_contains_global_coordinates(globalPoint:Array, headerShouldContainThisPoint:Boolean):void
+        {
+            //when
+            var doesHeaderContainThisPoint:Boolean = _sut.containsGlobalCoordinates(new Point(globalPoint[0], globalPoint[1]));
+
+            //then
+            assertEquals(headerShouldContainThisPoint, doesHeaderContainThisPoint);
+        }*/
+
+        [Test(dataProvider="dimensions")]
+        public function test_with_no_scroll(dimensions:Array):void
+        {
+            //given
+            _dataGrid.width = getWidth(dimensions);
+            _dataGrid.x = getX(dimensions);
+            _dataGrid.y = getY(dimensions);
+
+            _dataGrid.columnHeaderGroup.setStyle("paddingLeft", getHeaderPaddingLeft(dimensions));
+            _dataGrid.columnHeaderGroup.setStyle("paddingTop", getHeaderPaddingTop(dimensions));
+
+            var gridColumns:Array = [];
+            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
+            {
+                var column:GridColumn = new GridColumn();
+                column.width = getColumnWidth(dimensions, i);
+                gridColumns.push(column);
+            }
+            _dataGrid.columns = new ArrayCollection(gridColumns);
+
+            _dataGrid.validateNow();
+
+            _keyPoints = generateKeyPoints(dimensions, _dataGrid);
+            _keyRectangles = generateKeyRectangles(_keyPoints, dimensions);
+
+            //then
+            //first, make sure that the dataGrid was rendered correctly
+            assertThat("The dataGrid has not yet been correctly rendered on stage", getActualHeaderHeight(_dataGrid) > 0);
+
+            for (var pointName:String in _keyPoints)
+            {
+                for (var i:int = 0; i < directions.length; i++)
+                {
+                    //when
+                    var adjacentPoint:Point = getAdjacentPoint(_keyPoints[pointName], directions[i]);
+                    var expectedHeaderIndex:int = getHeaderIndexAssumption(adjacentPoint);
+                    var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(adjacentPoint);
+
+                    //then
+                    const errorMessage:String = getHeaderIndexErrorMessage(pointName, directions[i], adjacentPoint, expectedHeaderIndex, actualHeaderIndex);
+                    assertEquals(errorMessage, expectedHeaderIndex, actualHeaderIndex);
+                }
+            }
+        }
+
+        private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedHeaderIndex:int, actualHeaderIndex:int):String
+        {
+            return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
+                    + (expectedHeaderIndex == -1 ? "outside any header bounds" : "inside the header with index " + expectedHeaderIndex)
+                    + " but was mistakenly found to be "
+                    + (actualHeaderIndex == -1 ? "outside any header bounds" : "inside the header with index " + actualHeaderIndex
+                    + "\n DEBUG INFO: headerRectangles=" + headerRectangles);
+        }
+
+        private function getHeaderIndexAtGlobalPoint(globalPoint:Point):int
+        {
+            var localPoint:Point = _sut.globalToLocal(globalPoint);
+            return _sut.getHeaderIndexAt(localPoint.x, localPoint.y);
+        }
+
+        private function getHeaderIndexAssumption(point:Point):int
+        {
+            return getIndexOfHeaderRectangleWhichContainsPoint(point, headerRectangles);
+        }
+
+        private function getAdjacentPoint(point:Point, direction:Matrix):Point
+        {
+            return direction.transformPoint(point);
+        }
+
+        private function getIndexOfHeaderRectangleWhichContainsPoint(point:Point, rectangles:Array):int
+        {
+            for (var i:int = 0; i < rectangles.length; i++)
+            {
+                if(rectangleContainsPoint(rectangles[i], point))
+                    return i;
+            }
+
+            return -1;
+        }
+
+        private function rectangleContainsPoint(rectangle:Rectangle, point:Point):Boolean
+        {
+            return rectangle.containsPoint(point);
+        }
+
+        private function generateKeyPoints(dimensions:Array, grid:DataGrid):Array
+        {
+            var keyPoints:Array = [];
+            //TODO this code does not yet account for horizontal scrolling!
+
+            keyPoints["a"] = new Point(0, 0);
+            keyPoints["b"] = new Point(getX(dimensions), getY(dimensions));
+            keyPoints["c0"] = new Point(getX(dimensions) + getHeaderPaddingLeft(dimensions), getY(dimensions));
+            generateColumnIntermediates(keyPoints, dimensions, "c0");
+            keyPoints["d0"] = new Point(getX(dimensions) + getColumnWidths(dimensions)[0], getY(dimensions));
+            generateColumnIntermediates(keyPoints, dimensions, "d0");
+            keyPoints["e"] = new Point(getX(dimensions) + getWidth(dimensions), getY(dimensions));
+
+            const yUnderHeader:Number = getY(dimensions) + getActualHeaderHeight(grid);
+            keyPoints["f0"] = new Point(getX(dimensions), yUnderHeader);
+            generateColumnIntermediates(keyPoints, dimensions, "f0");
+            keyPoints["g0"] = new Point(getX(dimensions) + getHeaderPaddingLeft(dimensions), yUnderHeader);
+            generateColumnIntermediates(keyPoints, dimensions, "g0");
+            keyPoints["h"] = new Point(getX(dimensions) + getWidth(dimensions), yUnderHeader);
+
+            return keyPoints;
+        }
+
+        private function generateColumnIntermediates(keyPoints:Array, dimensions:Array, initialPointName:String):void
+        {
+            const initialPoint:Point = keyPoints[initialPointName];
+            const y:Number = initialPoint.y;
+            var currentX:Number = initialPoint.x;
+            const initialPointFirstCharacter:String = initialPointName.charAt(0);
+            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
+            {
+                currentX += getColumnWidth(dimensions, i);
+                keyPoints[initialPointFirstCharacter + (i+1)] = new Point(currentX, y);
+            }
+        }
+
+        private function generateKeyRectangles(keyPoints:Array, dimensions:Array):Array
+        {
+            var keyRectangles:Array = [];
+
+            keyRectangles["headerRectangles"] = generateHeaderRectangles(keyPoints, dimensions);
+
+            return keyRectangles;
+        }
+
+        private function generateHeaderRectangles(keyPoints:Array, dimensions:Array):Array
+        {
+            var headerRectangles:Array = [];
+
+            const headerHeight:Number = getHeaderHeightFromKeyPoints(keyPoints);
+            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
+            {
+                var topLeft:Point = keyPoints["c" + i];
+                var topRight:Point = keyPoints["c" + (i+1)];
+                headerRectangles.push(new Rectangle(topLeft.x, topLeft.y, topRight.x - topLeft.x, headerHeight));
+            }
+
+            //correct last header rectangle to extend to grid boundaries. This is one of the issues which prompted
+            //this unit test in the first place.
+            var lastHeaderRectangle:Rectangle = headerRectangles[headerRectangles.length - 1];
+            lastHeaderRectangle.width = Point(keyPoints["e"]).x - lastHeaderRectangle.x;
+
+            return headerRectangles;
+        }
+
+        private function get headerRectangles():Array
+        {
+            return _keyRectangles["headerRectangles"];
+        }
+
+        private function getColumnWidthFromKeyPoints(keyPoints:Array, columnIndex:int):Number
+        {
+            //we're assuming columnIndex has a valid value
+            return Point(keyPoints["c" + (columnIndex + 1)]).x - Point(keyPoints["c" + columnIndex]).x;
+        }
+
+        private function getX(dimensions:Array):Number
+        {
+            return dimensions[0];
+        }
+
+        private function getY(dimensions:Array):Number
+        {
+            return dimensions[1];
+        }
+
+        private function getWidth(dimensions:Array):Number
+        {
+            return dimensions[2];
+        }
+
+        private function getHeaderPaddingLeft(dimensions:Array):Number
+        {
+            return dimensions[3];
+        }
+
+        private function getHeaderPaddingTop(dimensions:Array):Number
+        {
+            return dimensions[4];
+        }
+
+        private function getActualHeaderHeight(grid:DataGrid):Number
+        {
+            //Note that we're assuming the grid is on stage and validated by this point!
+            return grid.columnHeaderGroup.height;
+        }
+
+        private function getHeaderHeightFromKeyPoints(keyPoints:Array):Number
+        {
+            return Point(keyPoints["h"]).y - Point(keyPoints["e"]).y;
+        }
+
+        private function getColumnWidths(dimensions:Array):Array
+        {
+            return dimensions[5];
+        }
+
+        private function getColumnWidth(dimensions:Array, columnIndex:int):Number
+        {
+            return getColumnWidths(dimensions)[columnIndex];
+        }
+
+        private function getTotalColumnWidths(dimensions:Array):Number
+        {
+            var sum:Number = 0;
+            getColumnWidths(dimensions).forEach(function (item:*, index:int, arr:Array):void {sum += item;});
+            return sum;
+        }
+
+
+        private function get _sut():GridColumnHeaderGroup
+        {
+            return _dataGrid.columnHeaderGroup;
+        }
+    }
+}
\ No newline at end of file


[31/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35351 FLEX-18746 Now unit tests can be run for the mx project, and they're also included in the entire frameworks suite

Posted by jm...@apache.org.
FLEX-35351 FLEX-18746 Now unit tests can be run for the mx project, and they're also included in the entire frameworks suite


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

Branch: refs/heads/master
Commit: b175cd6d2632091f7ef783bbcc068dbfe9735fc1
Parents: cd060ca
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Aug 15 11:10:14 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Aug 15 11:10:14 2017 +0200

----------------------------------------------------------------------
 frameworks/build.xml             | 4 ++++
 frameworks/projects/mx/build.xml | 6 ++++++
 2 files changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/b175cd6d/frameworks/build.xml
----------------------------------------------------------------------
diff --git a/frameworks/build.xml b/frameworks/build.xml
index 500a186..2e71195 100644
--- a/frameworks/build.xml
+++ b/frameworks/build.xml
@@ -142,6 +142,7 @@
         <antcall target="spark-test"/>
         <antcall target="advancedgrids-test"/>
         <antcall target="framework-test"/>
+        <antcall target="mx-test"/>
     </target>
 
 	<target name="flex-config" depends="playerglobal-setswfversion" description="Copy the flex/air/airmobile config templates to flex/air/airmobile-config.xml and inject version numbers">
@@ -551,6 +552,9 @@
     <target name="framework-test" description="Tests for 'framework' project">
         <ant dir="${basedir}/projects/framework" target="test"/>
     </target>
+    <target name="mx-test" description="Tests for the 'mx' project">
+        <ant dir="${basedir}/projects/mx" target="test"/>
+    </target>
 
     <target name="experimental" description="Clean build of experimental.swc">
         <ant dir="${basedir}/projects/experimental"/>

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/b175cd6d/frameworks/projects/mx/build.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/build.xml b/frameworks/projects/mx/build.xml
index f1ad0ad..259c7b6 100644
--- a/frameworks/projects/mx/build.xml
+++ b/frameworks/projects/mx/build.xml
@@ -229,4 +229,10 @@
         <delete dir="${FLEX_HOME}/tempDoc" failonerror="false" includeEmptyDirs="true"/>
         <delete file="${basedir}/bundles/en_US/packages.dita" failonerror="false"/>
     </target>
+
+    <target name="test" description="Runs the FlexUnit tests for this project">
+        <ant antfile="${FLEX_HOME}/flexunit-tests.xml">
+            <property name="project.root" value="${basedir}"/>
+        </ant>
+    </target>
 </project>


[09/50] git commit: [flex-sdk] [refs/heads/master] - Merge remote-tracking branch 'origin/develop' into develop

Posted by jm...@apache.org.
Merge remote-tracking branch 'origin/develop' into develop


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/6bc7ad5e
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/6bc7ad5e
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/6bc7ad5e

Branch: refs/heads/master
Commit: 6bc7ad5e9e85daada0ebd1e7c6946b032409de71
Parents: d7299c3 1040357
Author: Mihai Chira <mi...@apache.org>
Authored: Thu Mar 16 13:11:55 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Thu Mar 16 13:11:55 2017 +0100

----------------------------------------------------------------------
 .gitignore                                      |   1 +
 ApproveSDK.xml                                  |  21 +-
 CONTRIBUTORS                                    |   3 +
 NOTICE                                          |   2 +-
 README                                          |   9 +-
 RELEASE_NOTES                                   |  90 ++++-
 build.xml                                       |   4 +-
 frameworks/build.xml                            |  12 +
 frameworks/downloads.xml                        |  21 +-
 .../assets/fonts/awesome/FontAwesome.otf        | Bin 109688 -> 134808 bytes
 .../src/flatspark/utils/AwesomeUtils.as         | 122 ++++++-
 .../framework/src/mx/utils/ObjectUtil.as        |   2 +-
 .../src/mx/validators/EmailValidator.as         |   2 +-
 .../src/spark/skins/ios7/BusyIndicatorSkin.as   |  20 +-
 .../spark/src/spark/components/DropDownList.as  |  12 +-
 .../src/spark/skins/spark/BusyIndicatorSkin.as  |  21 +-
 ide/addAIRtoSDK.sh                              |  59 +++-
 ide/checkAllPlayerGlobals.sh                    |  50 +--
 ide/flashbuilder/config/air-config.xml          |  21 +-
 ide/flashbuilder/config/flex-config.xml         |  20 +-
 ide/setFlashPlayerVersion.sh                    |  79 ++++-
 installer.xml                                   |  28 +-
 licenseParts/NOTICE.asc                         |   2 +-
 licenseParts/NOTICE.base                        |   2 +-
 licenseParts/NOTICE.pb                          |   2 +-
 licenseParts/saxon9-NOTICES/APACHE-ANT.txt      |  13 +
 licenseParts/saxon9-NOTICES/APACHE-RESOLVER.txt |   9 +
 licenseParts/saxon9-NOTICES/APACHE-XERCES.txt   |  17 +
 licenseParts/saxon9-NOTICES/CERN.txt            |   7 +
 licenseParts/saxon9-NOTICES/FRIJTERS.txt        |  22 ++
 licenseParts/saxon9-NOTICES/GPL+CLASSPATH.txt   | 347 +++++++++++++++++++
 licenseParts/saxon9-NOTICES/JAMESCLARK.txt      |  25 ++
 licenseParts/saxon9-NOTICES/LEGAL.txt           |  33 ++
 licenseParts/saxon9-NOTICES/LICENSE.txt         |  15 +
 licenseParts/saxon9-NOTICES/THAI.txt            |  31 ++
 licenseParts/saxon9-NOTICES/UNICODE.txt         |  29 ++
 .../src/java/macromedia/asc/embedding/Main.java |   2 +-
 .../java/macromedia/asc/embedding/Shell.java    |   2 +-
 .../java/macromedia/asc/embedding/SwfMaker.java |  16 +-
 .../flex2/compiler/common/Configuration.java    |  32 ++
 .../java/flex2/linker/LinkerConfiguration.java  |   4 +
 .../src/java/flex2/linker/SimpleMovie.java      |  10 +
 .../src/java/flex2/tools/ASDoc_da.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_de.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_en.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_es.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_fi.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_fr.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_it.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_ja.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_ko.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_nb.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_nl.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_pt.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_ru.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_sv.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_zh_CN.properties |   2 +-
 .../src/java/flex2/tools/ASDoc_zh_TW.properties |   2 +-
 .../src/java/flex2/tools/Compc_da.properties    |   2 +-
 .../src/java/flex2/tools/Compc_de.properties    |   2 +-
 .../src/java/flex2/tools/Compc_en.properties    |   2 +-
 .../src/java/flex2/tools/Compc_es.properties    |   2 +-
 .../src/java/flex2/tools/Compc_fi.properties    |   2 +-
 .../src/java/flex2/tools/Compc_fr.properties    |   2 +-
 .../src/java/flex2/tools/Compc_it.properties    |   2 +-
 .../src/java/flex2/tools/Compc_ja.properties    |   2 +-
 .../src/java/flex2/tools/Compc_ko.properties    |   2 +-
 .../src/java/flex2/tools/Compc_nb.properties    |   2 +-
 .../src/java/flex2/tools/Compc_nl.properties    |   2 +-
 .../src/java/flex2/tools/Compc_pt.properties    |   2 +-
 .../src/java/flex2/tools/Compc_ru.properties    |   2 +-
 .../src/java/flex2/tools/Compc_sv.properties    |   2 +-
 .../src/java/flex2/tools/Compc_zh_CN.properties |   2 +-
 .../src/java/flex2/tools/Compc_zh_TW.properties |   2 +-
 .../java/flex2/tools/DigestTool_da.properties   |   2 +-
 .../java/flex2/tools/DigestTool_de.properties   |   2 +-
 .../java/flex2/tools/DigestTool_en.properties   |   2 +-
 .../java/flex2/tools/DigestTool_es.properties   |   2 +-
 .../java/flex2/tools/DigestTool_fi.properties   |   2 +-
 .../java/flex2/tools/DigestTool_fr.properties   |   2 +-
 .../java/flex2/tools/DigestTool_it.properties   |   2 +-
 .../java/flex2/tools/DigestTool_ja.properties   |   2 +-
 .../java/flex2/tools/DigestTool_ko.properties   |   2 +-
 .../java/flex2/tools/DigestTool_nb.properties   |   2 +-
 .../java/flex2/tools/DigestTool_nl.properties   |   2 +-
 .../java/flex2/tools/DigestTool_pt.properties   |   2 +-
 .../java/flex2/tools/DigestTool_ru.properties   |   2 +-
 .../java/flex2/tools/DigestTool_sv.properties   |   2 +-
 .../flex2/tools/DigestTool_zh_CN.properties     |   2 +-
 .../flex2/tools/DigestTool_zh_TW.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_da.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_de.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_en.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_es.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_fi.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_fr.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_it.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_ja.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_ko.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_nb.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_nl.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_pt.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_ru.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_sv.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_zh_CN.properties  |   2 +-
 .../src/java/flex2/tools/Fcsh_zh_TW.properties  |   2 +-
 .../src/java/flex2/tools/Mxmlc_da.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_de.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_en.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_es.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_fi.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_fr.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_it.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_ja.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_ko.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_nb.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_nl.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_pt.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_ru.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_sv.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_zh_CN.properties |   2 +-
 .../src/java/flex2/tools/Mxmlc_zh_TW.properties |   2 +-
 .../tools/flexbuilder/BuilderConfiguration.java |  10 +
 .../src/java/flex2/tools/oem/Application.java   |   2 +-
 .../src/java/flex2/tools/oem/Configuration.java |  44 ++-
 .../src/java/flex2/tools/oem/Library.java       |   2 +-
 .../src/java/flex2/tools/oem/Toolkit.java       |   4 +-
 .../oem/internal/ConfigurationConstants.java    |   2 +
 .../tools/oem/internal/LinkerConfiguration.java |  24 ++
 .../tools/oem/internal/OEMConfiguration.java    |  30 ++
 .../flex/tools/debugger/cli/fdb_da.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_de.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_en.properties   |   4 +-
 .../flex/tools/debugger/cli/fdb_es.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_fi.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_fr.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_it.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_ja.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_ko.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_nb.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_nl.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_pt.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_ru.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_sv.properties   |   2 +-
 .../tools/debugger/cli/fdb_zh_CN.properties     |   2 +-
 .../tools/debugger/cli/fdb_zh_TW.properties     |   2 +-
 modules/downloads.xml                           |  25 +-
 .../swfutils/src/java/flash/swf/TagDecoder.java |   7 +-
 .../swfutils/src/java/flash/swf/TagEncoder.java |   4 +-
 .../src/java/flash/swf/tags/FileAttributes.java |   4 +
 .../src/java/flash/swf/tools/SwfxParser.java    |   2 +
 .../src/java/flash/swf/tools/SwfxPrinter.java   |   2 +
 .../velocity/test/texen/additional.props        |   1 -
 .../velocity/test/texen/compare/Test.txt        |  11 -
 .../test/texen/compare/TurbineWeather.java      |  81 -----
 .../texen/compare/TurbineWeatherService.java    |  78 -----
 .../test/texen/compare/WeatherService.java      |  70 ----
 .../velocity/test/texen/compare/book.txt        |  15 -
 .../thirdparty/velocity/test/texen/license.txt  |  55 ---
 .../velocity/test/texen/service.props           |  21 --
 .../velocity/test/texen/templates/Control.vm    |  41 ---
 .../texen/templates/ServiceImplementation.vm    |  39 ---
 .../test/texen/templates/ServiceInterface.vm    |  31 --
 .../test/texen/templates/ServiceStaticHelper.vm |  42 ---
 .../velocity/test/texen/templates/Test.vm       |  27 --
 .../velocity/test/texen/templates/book.vm       |  31 --
 .../velocity/test/texen/templates/test.props    |   4 -
 templates/swfobject/history/history.js          |  23 +-
 168 files changed, 1316 insertions(+), 829 deletions(-)
----------------------------------------------------------------------



[27/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35329: fixed issue where initializing member variable/constant that is [Deprecated] incorrectly throws extra warning

Posted by jm...@apache.org.
FLEX-35329: fixed issue where initializing member variable/constant that is [Deprecated] incorrectly throws extra warning


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

Branch: refs/heads/master
Commit: bb7447f5ebe32ce58f85a9e9b2d2ffc48994cf42
Parents: e66554e
Author: Josh Tynjala <jo...@apache.org>
Authored: Thu Jun 22 10:53:50 2017 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Thu Jun 22 10:53:50 2017 -0700

----------------------------------------------------------------------
 RELEASE_NOTES                                   | 42 ++++++++++++++++++++
 .../macromedia/asc/embedding/LintEvaluator.java |  8 +++-
 2 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/bb7447f5/RELEASE_NOTES
----------------------------------------------------------------------
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 5aaadc3..b82ea1f 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,3 +1,45 @@
+Apache Flex 4.17.0
+==================
+
+
+New Features
+------------
+
+
+AIR and Flash Player Support
+----------------------------
+
+
+Bug Fixes
+---------
+FLEX-35329  Initializing member variable/constant that is [Deprecated]
+            incorrectly throws extra warning
+
+Known Issues
+------------
+
+Adobe Flash Builder Integration
+
+Adobe Flash Builder 4.7 and Adobe Flash Builder 4.6 both contain a bug where,
+when generating the .mxml file for a new project that uses Apache Flex SDK
+4.10.0 or later Spark Application, Flash Builder will incorrectly insert the
+attribute:
+
+    layout="absolute"
+
+This results in a compile error in the new project.  The remedy is to simply
+remove the errant attribute.
+
+The following wiki page has been set up to contain the latest news on Adobe's
+attempt to correct this problem:
+
+    https://cwiki.apache.org/confluence/display/FLEX/Adobe+Flash+Builder+'New+Project'+Bug
+
+Adobe has provided a patch for Flash Builder 4.7 that resolves this issue:
+
+    http://helpx.adobe.com/flash-builder/kb/flex-new-project-issue--.html
+
+
 Apache Flex 4.16.0
 ==================
 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/bb7447f5/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java
----------------------------------------------------------------------
diff --git a/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java b/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java
index de2ea96..359af64 100644
--- a/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java
+++ b/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java
@@ -749,8 +749,14 @@ public final class LintEvaluator extends Emitter implements Evaluator, ErrorCons
 			boolean is_unbound_ref       = is_unbound_dotref || is_unbound_lexref || is_unbound_globalref;
 
 
-			if (slot != null )
+			if (slot != null && !(node.expr instanceof QualifiedIdentifierNode))
+			{
+				//if it's a qualified identifier node, then it's a member/static
+				//variable on a class that is being initialized, like this:
+				//public var memberVar:String = "hi";
+				//this case should not have a warning!
 				checkDeprecatedSlot(cx, node.expr, node.ref, slot);
+			}
 			
 			// special case to avoid warning on access to a Class's prototype property.  This
 			//  property can't be expressed in global.as because you can't both declare a class


[08/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35260 Now the unit test passes, having been updated to check the column header view boundaries. Other changes: -Now we're ignoring the grid header's right padding, because it doesn't make a visual

Posted by jm...@apache.org.
FLEX-35260 Now the unit test passes, having been updated to check the column header view boundaries. Other changes:
-Now we're ignoring the grid header's right padding, because it doesn't make a visual difference (except in the edge case where, together with the left and right padding, the column widths are wider than the grid's width, in which case the grid header expands beyond the grid limits), but we are starting to take into account bottom and top padding.
-Renamed some variables and functions for clarity in GridColumnHeaderView and GridDimensions.
-Improved error messages in the unit test


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

Branch: refs/heads/master
Commit: d7299c330fe7bbfd348a8db03258cb3ab777e32b
Parents: 9e2620e
Author: Mihai Chira <mi...@apache.org>
Authored: Thu Mar 16 12:45:29 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Thu Mar 16 12:45:29 2017 +0100

----------------------------------------------------------------------
 .../spark/components/GridColumnHeaderGroup.as   | 32 ++++++--
 .../gridClasses/GridColumnHeaderView.as         | 15 ++--
 .../components/gridClasses/GridDimensions.as    | 14 ++--
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 81 +++++++++++++++-----
 4 files changed, 104 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d7299c33/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
index a9209a1..0b202b7 100644
--- a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -783,6 +783,15 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
         return (_visibleSortIndicatorIndices.indexOf(columnIndex) != -1);
     }
 
+    /**
+     *  True if either of this GridColumnHeaderGroup's views contains the global
+     *  coordinates in the event, or if they fall over this component's padding.
+     */
+    public function containsMouseEvent(event:MouseEvent):Boolean
+    {
+        return containsGlobalCoordinates(new Point(event.stageX, event.stageY));
+    }
+
     public function containsGlobalCoordinates(coordinates:Point):Boolean
     {
         return areCoordinatesOverAHeaderView(coordinates) || areCoordinatesOverPadding(coordinates);
@@ -795,7 +804,7 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
 
     public function areCoordinatesOverPadding(coordinates:Point):Boolean
     {
-        return areCoordinatesOverLeftPadding(coordinates) || areCoordinatesOverRightPadding(coordinates);
+        return areCoordinatesOverLeftPadding(coordinates) || areCoordinatesOverTopPadding(coordinates) || areCoordinatesOverBottomPadding(coordinates);
     }
 
     public function areCoordinatesOverLeftPadding(coordinates:Point):Boolean
@@ -807,13 +816,22 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
                 getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x + paddingLeft, coordinates.y)) != null;
     }
     
-    public function areCoordinatesOverRightPadding(coordinates:Point):Boolean
+    public function areCoordinatesOverTopPadding(coordinates:Point):Boolean
+    {
+        var paddingTopStyle:Number = getStyle("paddingTop");
+        var paddingTop:Number = isNaN(paddingTopStyle) ? 0 : paddingTopStyle;
+
+        return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
+        getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y + paddingTop)) != null;
+    }
+
+    public function areCoordinatesOverBottomPadding(coordinates:Point):Boolean
     {
-        var paddingRightStyle:Number = getStyle("paddingRight");
-        var paddingRight:Number = isNaN(paddingRightStyle) ? 0 : paddingRightStyle;
+        var paddingBottomStyle:Number = getStyle("paddingBottom");
+        var paddingBottom:Number = isNaN(paddingBottomStyle) ? 0 : paddingBottomStyle;
 
         return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
-        getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y - paddingRight)) != null;
+        getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y - paddingBottom)) != null;
     }
 
     //--------------------------------------------------------------------------
@@ -1037,11 +1055,11 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
 		const ghl:GridHeaderLayout = layout as GridHeaderLayout;
 
 		const centerGridColumnHeaderView:GridColumnHeaderView = GridColumnHeaderView(ghl.centerGridColumnHeaderView);
-		if (centerGridColumnHeaderView && centerGridColumnHeaderView.containsStageCoordinates(globalCoordinates))
+		if (centerGridColumnHeaderView && centerGridColumnHeaderView.containsGlobalPoint(globalCoordinates))
 			return centerGridColumnHeaderView;
 		
 		const leftGridColumnHeaderView:GridColumnHeaderView = GridColumnHeaderView(ghl.leftGridColumnHeaderView);
-		if (leftGridColumnHeaderView && leftGridColumnHeaderView.containsStageCoordinates(globalCoordinates))
+		if (leftGridColumnHeaderView && leftGridColumnHeaderView.containsGlobalPoint(globalCoordinates))
 			return leftGridColumnHeaderView;
 		
 		return null;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d7299c33/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
index 2e6f449..a836462 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
@@ -106,13 +106,13 @@ public class GridColumnHeaderView extends Group
      */
     public function containsMouseEvent(event:MouseEvent):Boolean
     {
-        return containsStageCoordinates(new Point(event.stageX, event.stageY));
+        return containsGlobalPoint(new Point(event.stageX, event.stageY));
     }
 
-    public function containsStageCoordinates(coordinates:Point):Boolean
+    public function containsGlobalPoint(globalCoordinates:Point):Boolean
     {
-        const eventStageX:Number = coordinates.x;
-        const eventStageY:Number = coordinates.y;
+        const stageX:Number = globalCoordinates.x;
+        const stageY:Number = globalCoordinates.y;
         const origin:Point = localToGlobal(zeroPoint);
 
         origin.x += horizontalScrollPosition;
@@ -121,8 +121,11 @@ public class GridColumnHeaderView extends Group
 
         origin.y += verticalScrollPosition;
         
-        return (eventStageX >= origin.x) && (eventStageY >= origin.y) && 
-            (eventStageX < (origin.x + width)) && (eventStageY < (origin.y + height));
+
+        var headerViewContainsGlobalCoordinates:Boolean = (stageX >= origin.x) && (stageY >= origin.y) &&
+                (stageX < (origin.x + width)) && (stageY < (origin.y + height));
+
+        return headerViewContainsGlobalCoordinates;
     }   
 }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d7299c33/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
index 0c679db..9c975b2 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
@@ -1191,21 +1191,21 @@ public class GridDimensions
 
         for (i = 0; i < _columnCount; i++)
         {
-            var temp:Number = _columnWidths[i];
+            var columnWidth:Number = _columnWidths[i];
             
             // fall back on typical widths if the actual width isn't set.
-            if (isNaN(temp))
+            if (isNaN(columnWidth))
             {
-                temp = typicalCellWidths[i];
-                if (temp == 0) // invisible column
+                columnWidth = typicalCellWidths[i];
+                if (columnWidth == 0) // invisible column
                     continue;
             }
             
             // fall back on defaultColumnWidth
-            if (isNaN(temp))
-                temp = defaultColumnWidth;
+            if (isNaN(columnWidth))
+                columnWidth = defaultColumnWidth;
             
-            current -= temp + columnGap;
+            current -= columnWidth + columnGap;
 
             if (current < 0)
                 return i;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d7299c33/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 55421f4..dad721d 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -84,12 +84,18 @@ package spark.components.gridClasses {
         private static const ITSELF:Matrix = new Matrix(1, 0, 0, 1, 0, 0); //the point, unmodified
         private static const directions:Array = [ITSELF, N, NE, E, SE, S, SW, W, NW];
 
+        private static const COLUMN_HEADER_RECTANGLES:String = "columnHeaderRectangles";
+        private static const ENTIRE_HEADER_RECTANGLE:String = "headerRectangle";
+        private static const MAIN_HEADER_VIEW_RECTANGLE:String = "mainHeaderViewRectangle";
+        private static const FIXED_HEADER_VIEW_RECTANGLE:String = "fixedHeaderViewRectangle";
+
         private static var _dataGrid:DataGrid;
 
         private var _keyRectangles:Array;
         private var _keyPoints:Array;
 
-        //@TODO add cases with horizontal scroll, and also with fixed columns
+        //@TODO we probably have to account for paddingTop and paddingBottom as well
+        //@TODO add cases with horizontal scroll, with fixed columns, and RTL
         public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, [column widths] */
             [[10, 0, 300, 5, 0, [25, 150]]],
             [[0, 0, 300, 5, 0, [25, 150]]]
@@ -192,33 +198,35 @@ package spark.components.gridClasses {
                     var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(pointToTest);
                     const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, directions[i], pointToTest, expectedHeaderIndex, actualHeaderIndex);
 
-                    var shouldBeContainedInHeader:Boolean = getHeaderContainsPointAssumption(pointToTest);
-                    var actuallyContainedInHeader:Boolean = _sut.areCoordinatesOverAHeaderView(pointToTest);
-                    const errorMessageHeaderContainsPoint:String = getHeaderContainsPointErrorMessage(pointName, directions[i], pointToTest, shouldBeContainedInHeader, actuallyContainedInHeader);
+                    var shouldBeContainedInMainHeaderView:Boolean = getMainHeaderViewContainsPointAssumption(pointToTest);
+                    var shouldBeContainedInFixedHeaderView:Boolean = getFixedHeaderViewContainsPointAssumption(pointToTest);
+                    const shouldBeContainedInAHeaderView:Boolean = shouldBeContainedInMainHeaderView || shouldBeContainedInFixedHeaderView;
+                    var actuallyContainedInAHeaderView:Boolean = _sut.areCoordinatesOverAHeaderView(pointToTest);
+                    const errorMessageHeaderViewContainsPoint:String = getHeaderContainsPointErrorMessage(pointName, directions[i], pointToTest, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
 
                     //then
                     assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
-                    assertEquals(errorMessageHeaderContainsPoint, shouldBeContainedInHeader, actuallyContainedInHeader);
+                    assertEquals(errorMessageHeaderViewContainsPoint, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
                 }
             }
         }
 
-        private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedHeaderIndex:int, actualHeaderIndex:int):String
+        private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
-                    + (expectedHeaderIndex == -1 ? "outside any header bounds" : "inside the header with index " + expectedHeaderIndex)
+                    + (expectedColumnHeaderIndex == -1 ? "outside any header bounds" : "inside the column header with index " + expectedColumnHeaderIndex)
                     + " but was mistakenly found to be "
-                    + (actualHeaderIndex == -1 ? "outside any header bounds" : "inside the header with index " + actualHeaderIndex
-                    + "\n DEBUG INFO: headerRectangles=" + headerRectangles);
+                    + (actualColumnHeaderIndex == -1 ? "outside any header bounds" : "inside the column header with index " + actualColumnHeaderIndex
+                    + "\n DEBUG INFO: headerRectangles=" + columnHeaderRectangles);
         }
 
         private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
-                    + (shouldBeContainedInHeader ? "within " : "outside ") + "header bounds"
+                    + (shouldBeContainedInHeader ? "within " : "outside ") + "a header view"
                     + " but was mistakenly found to be "
                     + (isActuallyContainedInHeader ? "within" : "outside")
-                    + "\n DEBUG INFO: headerRectangle=" + headerRectangle;
+                    + "\n DEBUG INFO: header views=" + fixedHeaderViewRectangle + "; " + mainHeaderViewRectangle;
         }
 
         private function getHeaderIndexAtGlobalPoint(globalPoint:Point):int
@@ -232,9 +240,19 @@ package spark.components.gridClasses {
             return rectangleContainsPoint(headerRectangle, point);
         }
 
+        private function getFixedHeaderViewContainsPointAssumption(point:Point):Boolean
+        {
+            return rectangleContainsPoint(fixedHeaderViewRectangle, point);
+        }
+
+        private function getMainHeaderViewContainsPointAssumption(point:Point):Boolean
+        {
+            return rectangleContainsPoint(mainHeaderViewRectangle, point);
+        }
+
         private function getHeaderIndexAssumption(point:Point):int
         {
-            return getIndexOfHeaderRectangleWhichContainsPoint(point, headerRectangles);
+            return getIndexOfHeaderRectangleWhichContainsPoint(point, columnHeaderRectangles);
         }
 
         private function getAdjacentPoint(point:Point, direction:Matrix):Point
@@ -298,18 +316,35 @@ package spark.components.gridClasses {
         {
             var keyRectangles:Array = [];
 
-            keyRectangles["headerRectangles"] = generateHeaderRectangles(keyPoints, dimensions);
-            keyRectangles["headerRectangle"] = generateVisibleHeaderRectangle(keyPoints, dimensions);
+            keyRectangles[COLUMN_HEADER_RECTANGLES] = generateHeaderColumnRectangles(keyPoints, dimensions);
+            keyRectangles[ENTIRE_HEADER_RECTANGLE] = generateVisibleHeaderRectangle(keyPoints, dimensions);
+            keyRectangles[MAIN_HEADER_VIEW_RECTANGLE] = generateMainHeaderViewRectangle(keyPoints, dimensions);
+            keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] = generateFixedHeaderViewRectangle(keyPoints, dimensions);
 
             return keyRectangles;
         }
 
+        private function generateMainHeaderViewRectangle(keyPoints:Array, dimensions:Array):Rectangle
+        {
+            //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which is holds the non-fixed columns; padding excluded
+            const topLeftCorner:Point = keyPoints["c0"];
+            return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints) - getHeaderPaddingLeft(dimensions), getHeaderHeightFromKeyPoints(keyPoints));
+        }
+
+        private function generateFixedHeaderViewRectangle(keyPoints:Array, dimensions:Array):Rectangle
+        {
+            //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which is holds the non-fixed columns; padding excluded
+            const topLeftCorner:Point = keyPoints["b"];
+            return new Rectangle(topLeftCorner.x, topLeftCorner.y, 0, 0);
+        }
+
         private function generateVisibleHeaderRectangle(keyPoints:Array, dimensions:Array):Rectangle
         {
             const topLeftCorner:Point = keyPoints["b"];
             return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints), getHeaderHeightFromKeyPoints(keyPoints));
         }
-        private function generateHeaderRectangles(keyPoints:Array, dimensions:Array):Array
+
+        private function generateHeaderColumnRectangles(keyPoints:Array, dimensions:Array):Array
         {
             var headerRectangles:Array = [];
 
@@ -329,14 +364,24 @@ package spark.components.gridClasses {
             return headerRectangles;
         }
 
-        private function get headerRectangles():Array
+        private function get columnHeaderRectangles():Array
         {
-            return _keyRectangles["headerRectangles"];
+            return _keyRectangles[COLUMN_HEADER_RECTANGLES];
         }
 
         private function get headerRectangle():Rectangle
         {
-            return _keyRectangles["headerRectangle"] as Rectangle;
+            return _keyRectangles[ENTIRE_HEADER_RECTANGLE] as Rectangle;
+        }
+
+        private function get mainHeaderViewRectangle():Rectangle
+        {
+            return _keyRectangles[MAIN_HEADER_VIEW_RECTANGLE] as Rectangle;
+        }
+
+        private function get fixedHeaderViewRectangle():Rectangle
+        {
+            return _keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] as Rectangle;
         }
 
         private function getColumnWidthFromKeyPoints(keyPoints:Array, columnIndex:int):Number


[40/50] git commit: [flex-sdk] [refs/heads/master] - Update release notes to 4.16.1

Posted by jm...@apache.org.
Update release notes to 4.16.1


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/0f96a265
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/0f96a265
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/0f96a265

Branch: refs/heads/master
Commit: 0f96a26509e0b10fd2b85530378fce42f8b6079d
Parents: 752b1d3
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Mon Oct 30 20:09:33 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Mon Oct 30 20:09:33 2017 +0100

----------------------------------------------------------------------
 RELEASE_NOTES | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/0f96a265/RELEASE_NOTES
----------------------------------------------------------------------
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index b82ea1f..81d4b72 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,19 +1,19 @@
-Apache Flex 4.17.0
+Apache Flex 4.16.1
 ==================
 
-
-New Features
-------------
-
-
 AIR and Flash Player Support
 ----------------------------
-
+- Support Flash Player 21.0, 22.0, 23.0, 24.0, 25.0, 26.0 and 27.0
+- Support for AIR 21.0, 22.0, 23.0, 24.0, 25.0, 26.0 and 27.0
 
 Bug Fixes
 ---------
-FLEX-35329  Initializing member variable/constant that is [Deprecated]
+FLEX-35364 Flex installer.xml is failing occasionally
+FLEX-35329 Initializing member variable/constant that is [Deprecated]
             incorrectly throws extra warning
+FLEX-35321 LayoutManager initializes components which are no longer on stage
+FLEX-35267 Spark DataGrid's GridHeaderViewLayout.getHeaderIndexAt() returns wrong header index when leftPadding is comparable to a column's width
+FLEX-27509 AdvancedListBase itemMaskFreeList is null 
 
 Known Issues
 ------------


[32/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-18746 Added the same test, but without using opening animation. (This way the bug cannot be reproduced, which is a good clue.)

Posted by jm...@apache.org.
FLEX-18746 Added the same test, but without using opening animation. (This way the bug cannot be reproduced, which is a good clue.)


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/7a519a33
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/7a519a33
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/7a519a33

Branch: refs/heads/master
Commit: 7a519a33e4e93d9657531b15e24d5684a0f80abc
Parents: b175cd6
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Aug 15 12:19:14 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Aug 15 12:19:14 2017 +0200

----------------------------------------------------------------------
 .../tests/mx/controls/Tree_FLEX_18746_Tests.as  | 39 +++++++++++++++-----
 1 file changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7a519a33/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
index 26568d6..16a3cbc 100644
--- a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
@@ -18,8 +18,8 @@ package mx.controls {
 
         private static var _sut:Tree;
         private static var child:Object = {label: "Item"};
-        private static var parent0:Object = {label: "Folder 0", children: new ArrayCollection()};
-        private static var parent1:Object = {label: "Folder 1", children: new ArrayCollection([child])};
+        private static var parent0:Object;
+        private static var parent1:Object;
 
 
         [Before]
@@ -28,6 +28,10 @@ package mx.controls {
             _sut = new Tree();
             _sut.width = 200;
             _sut.height = 200;
+
+            parent0 = {label: "Folder 0", children: new ArrayCollection()};
+            parent1 = {label: "Folder 1", children: new ArrayCollection([child])};
+
             UIImpersonator.addChild(_sut);
         }
 
@@ -46,7 +50,24 @@ package mx.controls {
         //--------------------------------------------------------------------------
 
         [Test(async, timeout=1000)]
-        public function test_closing_previously_opened_folder_with_0_children_does_not_throw_fatal():void
+        public function test_closing_previously_opened_folder_with_0_children_without_animation_does_not_throw_fatal():void
+        {
+            //given
+            const dataProvider:ArrayCollection = new ArrayCollection();
+            dataProvider.addItem(parent0);
+            dataProvider.addItem(parent1);
+
+            //when
+            _sut.dataProvider = dataProvider;
+
+            //then wait a few frames
+            noEnterFramesToWait = 2;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_second_folder, 300, {useAnimation:false});
+        }
+
+        [Test(async, timeout=1000)]
+        public function test_closing_previously_opened_folder_with_0_children_using_animation_does_not_throw_fatal():void
         {
             //given
             const dataProvider:ArrayCollection = new ArrayCollection();
@@ -59,19 +80,19 @@ package mx.controls {
             //then wait a few frames
             noEnterFramesToWait = 2;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_second_folder, 300);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_second_folder, 300, {useAnimation:true});
         }
 
 
         private function then_expand_second_folder(event:Event, passThroughData:Object):void
         {
             //when
-            _sut.expandItem(parent1, true, true, true);
+            _sut.expandItem(parent1, true, passThroughData.useAnimation, true);
 
             //then wait a bit
             noEnterFramesToWait = 5;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_move_child_to_first_parent_and_expand_it, 500);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_move_child_to_first_parent_and_expand_it, 500, passThroughData);
         }
 
         private function then_move_child_to_first_parent_and_expand_it(event:Event, passThroughData:Object):void
@@ -81,19 +102,19 @@ package mx.controls {
 
             //when
             ArrayCollection(parent1.children).removeItemAt(0);
-            _sut.expandItem(parent0, true, true, true);
+            _sut.expandItem(parent0, true, passThroughData.useAnimation, true);
             ArrayCollection(parent0.children).addItem(child);
 
             //then wait a bit
             noEnterFramesToWait = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_contract_second_folder, 200);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_contract_second_folder, 200, passThroughData);
         }
 
         private static function then_contract_second_folder(event:Event, passThroughData:Object):void
         {
             //when
-            _sut.expandItem(parent1, false, true, true);
+            _sut.expandItem(parent1, false, passThroughData.useAnimation, true);
 
             //then no error was thrown
             assertThat(true);


[07/50] git commit: [flex-sdk] [refs/heads/master] - Merge branch 'develop' of https://git-wip-us.apache.org/repos/asf/flex-sdk into develop

Posted by jm...@apache.org.
Merge branch 'develop' of https://git-wip-us.apache.org/repos/asf/flex-sdk into develop


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/1040357f
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/1040357f
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/1040357f

Branch: refs/heads/master
Commit: 1040357f69cea18c8a60d4bab32d1066e3847fae
Parents: a616e55 f985937
Author: Justin Mclean <jm...@apache.org>
Authored: Wed Mar 15 15:04:04 2017 +1100
Committer: Justin Mclean <jm...@apache.org>
Committed: Wed Mar 15 15:04:04 2017 +1100

----------------------------------------------------------------------
 GIT-TEST.txt                                    |   2 +-
 .../spark/components/GridColumnHeaderGroup.as   |  66 +++-
 .../gridClasses/GridColumnHeaderView.as         |   9 +-
 .../components/gridClasses/GridDimensions.as    |  11 +-
 .../gridClasses/GridDimensionsView.as           |   4 +-
 .../gridClasses/GridHeaderViewLayout.as         |  45 +--
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 387 +++++++++++++++++++
 7 files changed, 473 insertions(+), 51 deletions(-)
----------------------------------------------------------------------



[45/50] git commit: [flex-sdk] [refs/heads/master] - ignore saxon parts

Posted by jm...@apache.org.
ignore saxon parts


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/91f196e4
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/91f196e4
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/91f196e4

Branch: refs/heads/master
Commit: 91f196e4d1e4e5c2e5398e9c1e002f5a31fb8824
Parents: 35103c6
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 3 14:29:32 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 3 14:29:32 2017 -0700

----------------------------------------------------------------------
 ApproveSDK.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/91f196e4/ApproveSDK.xml
----------------------------------------------------------------------
diff --git a/ApproveSDK.xml b/ApproveSDK.xml
index 08134b7..bce723e 100644
--- a/ApproveSDK.xml
+++ b/ApproveSDK.xml
@@ -325,6 +325,7 @@
                 <exclude name="licenseParts/NOTICE.asc"/>
                 <exclude name="licenseParts/NOTICE.base"/>
                 <exclude name="licenseParts/NOTICE.pb"/>
+                <exclude name="licenseParts/saxon9-NOTICES/*"/>
                 <exclude name="modules/thirdparty/batik/lib/**/LICENSE*.txt"/>
                 <exclude name="modules/thirdparty/batik/lib/**/README*.txt"/>
                 <exclude name="frameworks/projects/flatspark/src/flatspark/assets/fonts/**/OFL.txt"/>


[50/50] git commit: [flex-sdk] [refs/heads/master] - Merge commit 'd90867218312b97113ce7c50c5232f6e5ceee9be'

Posted by jm...@apache.org.
Merge commit 'd90867218312b97113ce7c50c5232f6e5ceee9be'


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

Branch: refs/heads/master
Commit: ba414443032b49c45ff11b61db452c8a8f428bd8
Parents: ea8a5ab d908672
Author: Justin Mclean <jm...@apache.org>
Authored: Sun Dec 31 11:02:18 2017 +1100
Committer: Justin Mclean <jm...@apache.org>
Committed: Sun Dec 31 11:02:18 2017 +1100

----------------------------------------------------------------------
 ApproveSDK.xml                                  |   9 +-
 GIT-TEST.txt                                    |   2 +-
 KEYS                                            | 116 ++++
 LICENSE                                         |   3 +
 README                                          |   4 +
 RELEASE_NOTES                                   |  42 ++
 build.properties                                |   4 +-
 frameworks/build.xml                            |   4 +
 .../advancedgrids/src/mx/core/Version.as        |   2 +-
 .../airframework/src/mx/core/Version.as         |   2 +-
 .../projects/airspark/src/spark/core/Version.as |   2 +-
 frameworks/projects/apache/src/core/Version.as  |   2 +-
 .../projects/automation/src/mx/core/Version.as  |   2 +-
 .../automation_agent/src/mx/core/Version.as     |   2 +-
 .../automation_air/src/mx/core/Version.as       |   2 +-
 .../automation_dmv/src/mx/core/Version.as       |   2 +-
 .../src/mx/core/Version.as                      |   2 +-
 .../automation_spark/src/mx/core/Version.as     |   2 +-
 .../automation_spark/src/spark/core/Version.as  |   2 +-
 .../projects/charts/src/mx/core/Version.as      |   2 +-
 .../flatspark/src/flatspark/utils/ColorUtils.as |  16 +-
 .../framework/src/mx/core/FlexVersion.as        |  18 +-
 .../projects/framework/src/mx/core/Version.as   |   2 +-
 .../framework/src/mx/managers/LayoutManager.as  |  35 +-
 .../managers/LayoutManager_FLEX_35321_Tests.as  | 295 +++++++++
 frameworks/projects/mx/build.xml                |   6 +
 frameworks/projects/mx/src/mx/controls/Tree.as  |   2 +-
 .../treeClasses/HierarchicalCollectionView.as   |   7 +-
 frameworks/projects/mx/src/mx/core/Version.as   |   2 +-
 .../Tree_FLEX_18746_Collection_Length_Tests.as  | 220 +++++++
 .../tests/mx/controls/Tree_FLEX_18746_Tests.as  | 146 +++++
 frameworks/projects/rpc/src/mx/core/Version.as  |   2 +-
 .../spark/components/GridColumnHeaderGroup.as   |  61 +-
 .../projects/spark/src/spark/components/List.as |  29 -
 .../spark/src/spark/components/Scroller.as      |   4 +-
 .../gridClasses/GridColumnHeaderView.as         |  17 +-
 .../components/gridClasses/GridDimensions.as    |  23 +-
 .../gridClasses/GridDimensionsView.as           |   4 +-
 .../gridClasses/GridHeaderViewLayout.as         |  42 +-
 .../supportClasses/DropDownListBase.as          |   3 +-
 .../spark/components/supportClasses/ListBase.as |   6 +-
 .../projects/spark/src/spark/core/Version.as    |   2 +-
 .../DropDownListBase_FLEX_35362_Tests.as        |  79 +++
 .../spark/components/List_FLEX_35306_Tests.as   | 274 ++++++++
 .../spark/tests/spark/components/_CompanyVO.as  |  68 ++
 .../tests/spark/components/_HeadquarterVO.as    |  42 ++
 .../spark/components/_ListWithMXMLBinding.mxml  |  41 ++
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 646 +++++++++++++++++++
 .../spark_dmv/src/spark/core/Version.as         |   2 +-
 frameworks/projects/tool/src/mx/core/Version.as |   2 +-
 .../projects/tool_air/src/mx/core/Version.as    |   2 +-
 installer.xml                                   |  18 +-
 .../macromedia/asc/embedding/LintEvaluator.java |   8 +-
 .../compiler/common/MxmlConfiguration.java      |   6 +-
 .../src/java/flex2/tools/VersionInfo.java       |   2 +-
 releasecandidate.xml                            |   9 +-
 56 files changed, 2175 insertions(+), 174 deletions(-)
----------------------------------------------------------------------



[06/50] git commit: [flex-sdk] [refs/heads/master] - Merge branch 'release4.16.0' into develop

Posted by jm...@apache.org.
Merge branch 'release4.16.0' into develop

Conflicts:
	installer.xml


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

Branch: refs/heads/master
Commit: a616e55899d8e58db4886c00f681cee2fe8945ed
Parents: a5b04e1 14c9664
Author: Justin Mclean <jm...@apache.org>
Authored: Wed Mar 15 15:03:47 2017 +1100
Committer: Justin Mclean <jm...@apache.org>
Committed: Wed Mar 15 15:03:47 2017 +1100

----------------------------------------------------------------------
 .gitignore                                      |   1 +
 ApproveSDK.xml                                  |  21 +-
 CONTRIBUTORS                                    |   3 +
 NOTICE                                          |   2 +-
 README                                          |   9 +-
 RELEASE_NOTES                                   |  90 ++++-
 build.xml                                       |   4 +-
 frameworks/build.xml                            |  12 +
 frameworks/downloads.xml                        |  21 +-
 .../mx/controls/listClasses/AdvancedListBase.as |   5 +-
 .../assets/fonts/awesome/FontAwesome.otf        | Bin 109688 -> 134808 bytes
 .../src/flatspark/utils/AwesomeUtils.as         | 122 ++++++-
 .../framework/src/mx/utils/ObjectUtil.as        |   2 +-
 .../src/mx/validators/EmailValidator.as         |   2 +-
 .../src/spark/skins/ios7/BusyIndicatorSkin.as   |  20 +-
 .../spark/src/spark/components/DropDownList.as  |  12 +-
 .../src/spark/skins/spark/BusyIndicatorSkin.as  |  21 +-
 ide/addAIRtoSDK.sh                              |  59 +++-
 ide/checkAllPlayerGlobals.sh                    |  50 +--
 ide/flashbuilder/config/air-config.xml          |  21 +-
 ide/flashbuilder/config/flex-config.xml         |  20 +-
 ide/setFlashPlayerVersion.sh                    |  79 ++++-
 installer.xml                                   |  28 +-
 licenseParts/NOTICE.asc                         |   2 +-
 licenseParts/NOTICE.base                        |   2 +-
 licenseParts/NOTICE.pb                          |   2 +-
 licenseParts/saxon9-NOTICES/APACHE-ANT.txt      |  13 +
 licenseParts/saxon9-NOTICES/APACHE-RESOLVER.txt |   9 +
 licenseParts/saxon9-NOTICES/APACHE-XERCES.txt   |  17 +
 licenseParts/saxon9-NOTICES/CERN.txt            |   7 +
 licenseParts/saxon9-NOTICES/FRIJTERS.txt        |  22 ++
 licenseParts/saxon9-NOTICES/GPL+CLASSPATH.txt   | 347 +++++++++++++++++++
 licenseParts/saxon9-NOTICES/JAMESCLARK.txt      |  25 ++
 licenseParts/saxon9-NOTICES/LEGAL.txt           |  33 ++
 licenseParts/saxon9-NOTICES/LICENSE.txt         |  15 +
 licenseParts/saxon9-NOTICES/THAI.txt            |  31 ++
 licenseParts/saxon9-NOTICES/UNICODE.txt         |  29 ++
 .../src/java/macromedia/asc/embedding/Main.java |   2 +-
 .../java/macromedia/asc/embedding/Shell.java    |   2 +-
 .../java/macromedia/asc/embedding/SwfMaker.java |  16 +-
 .../flex2/compiler/common/Configuration.java    |  32 ++
 .../java/flex2/linker/LinkerConfiguration.java  |   4 +
 .../src/java/flex2/linker/SimpleMovie.java      |  10 +
 .../src/java/flex2/tools/ASDoc_da.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_de.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_en.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_es.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_fi.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_fr.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_it.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_ja.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_ko.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_nb.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_nl.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_pt.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_ru.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_sv.properties    |   2 +-
 .../src/java/flex2/tools/ASDoc_zh_CN.properties |   2 +-
 .../src/java/flex2/tools/ASDoc_zh_TW.properties |   2 +-
 .../src/java/flex2/tools/Compc_da.properties    |   2 +-
 .../src/java/flex2/tools/Compc_de.properties    |   2 +-
 .../src/java/flex2/tools/Compc_en.properties    |   2 +-
 .../src/java/flex2/tools/Compc_es.properties    |   2 +-
 .../src/java/flex2/tools/Compc_fi.properties    |   2 +-
 .../src/java/flex2/tools/Compc_fr.properties    |   2 +-
 .../src/java/flex2/tools/Compc_it.properties    |   2 +-
 .../src/java/flex2/tools/Compc_ja.properties    |   2 +-
 .../src/java/flex2/tools/Compc_ko.properties    |   2 +-
 .../src/java/flex2/tools/Compc_nb.properties    |   2 +-
 .../src/java/flex2/tools/Compc_nl.properties    |   2 +-
 .../src/java/flex2/tools/Compc_pt.properties    |   2 +-
 .../src/java/flex2/tools/Compc_ru.properties    |   2 +-
 .../src/java/flex2/tools/Compc_sv.properties    |   2 +-
 .../src/java/flex2/tools/Compc_zh_CN.properties |   2 +-
 .../src/java/flex2/tools/Compc_zh_TW.properties |   2 +-
 .../java/flex2/tools/DigestTool_da.properties   |   2 +-
 .../java/flex2/tools/DigestTool_de.properties   |   2 +-
 .../java/flex2/tools/DigestTool_en.properties   |   2 +-
 .../java/flex2/tools/DigestTool_es.properties   |   2 +-
 .../java/flex2/tools/DigestTool_fi.properties   |   2 +-
 .../java/flex2/tools/DigestTool_fr.properties   |   2 +-
 .../java/flex2/tools/DigestTool_it.properties   |   2 +-
 .../java/flex2/tools/DigestTool_ja.properties   |   2 +-
 .../java/flex2/tools/DigestTool_ko.properties   |   2 +-
 .../java/flex2/tools/DigestTool_nb.properties   |   2 +-
 .../java/flex2/tools/DigestTool_nl.properties   |   2 +-
 .../java/flex2/tools/DigestTool_pt.properties   |   2 +-
 .../java/flex2/tools/DigestTool_ru.properties   |   2 +-
 .../java/flex2/tools/DigestTool_sv.properties   |   2 +-
 .../flex2/tools/DigestTool_zh_CN.properties     |   2 +-
 .../flex2/tools/DigestTool_zh_TW.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_da.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_de.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_en.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_es.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_fi.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_fr.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_it.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_ja.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_ko.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_nb.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_nl.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_pt.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_ru.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_sv.properties     |   2 +-
 .../src/java/flex2/tools/Fcsh_zh_CN.properties  |   2 +-
 .../src/java/flex2/tools/Fcsh_zh_TW.properties  |   2 +-
 .../src/java/flex2/tools/Mxmlc_da.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_de.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_en.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_es.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_fi.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_fr.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_it.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_ja.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_ko.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_nb.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_nl.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_pt.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_ru.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_sv.properties    |   2 +-
 .../src/java/flex2/tools/Mxmlc_zh_CN.properties |   2 +-
 .../src/java/flex2/tools/Mxmlc_zh_TW.properties |   2 +-
 .../tools/flexbuilder/BuilderConfiguration.java |  10 +
 .../src/java/flex2/tools/oem/Application.java   |   2 +-
 .../src/java/flex2/tools/oem/Configuration.java |  44 ++-
 .../src/java/flex2/tools/oem/Library.java       |   2 +-
 .../src/java/flex2/tools/oem/Toolkit.java       |   4 +-
 .../oem/internal/ConfigurationConstants.java    |   2 +
 .../tools/oem/internal/LinkerConfiguration.java |  24 ++
 .../tools/oem/internal/OEMConfiguration.java    |  30 ++
 .../flex/tools/debugger/cli/fdb_da.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_de.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_en.properties   |   4 +-
 .../flex/tools/debugger/cli/fdb_es.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_fi.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_fr.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_it.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_ja.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_ko.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_nb.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_nl.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_pt.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_ru.properties   |   2 +-
 .../flex/tools/debugger/cli/fdb_sv.properties   |   2 +-
 .../tools/debugger/cli/fdb_zh_CN.properties     |   2 +-
 .../tools/debugger/cli/fdb_zh_TW.properties     |   2 +-
 modules/downloads.xml                           |  25 +-
 .../swfutils/src/java/flash/swf/TagDecoder.java |   7 +-
 .../swfutils/src/java/flash/swf/TagEncoder.java |   4 +-
 .../src/java/flash/swf/tags/FileAttributes.java |   4 +
 .../src/java/flash/swf/tools/SwfxParser.java    |   2 +
 .../src/java/flash/swf/tools/SwfxPrinter.java   |   2 +
 .../velocity/test/texen/additional.props        |   1 -
 .../velocity/test/texen/compare/Test.txt        |  11 -
 .../test/texen/compare/TurbineWeather.java      |  81 -----
 .../texen/compare/TurbineWeatherService.java    |  78 -----
 .../test/texen/compare/WeatherService.java      |  70 ----
 .../velocity/test/texen/compare/book.txt        |  15 -
 .../thirdparty/velocity/test/texen/license.txt  |  55 ---
 .../velocity/test/texen/service.props           |  21 --
 .../velocity/test/texen/templates/Control.vm    |  41 ---
 .../texen/templates/ServiceImplementation.vm    |  39 ---
 .../test/texen/templates/ServiceInterface.vm    |  31 --
 .../test/texen/templates/ServiceStaticHelper.vm |  42 ---
 .../velocity/test/texen/templates/Test.vm       |  27 --
 .../velocity/test/texen/templates/book.vm       |  31 --
 .../velocity/test/texen/templates/test.props    |   4 -
 templates/swfobject/history/history.js          |  23 +-
 169 files changed, 1320 insertions(+), 830 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a616e558/installer.xml
----------------------------------------------------------------------
diff --cc installer.xml
index f86ecec,5996861..38ace4f
--- a/installer.xml
+++ b/installer.xml
@@@ -419,7 -419,7 +419,11 @@@
      	<echo message="Should unzip: ${shouldUnzip}"/>
      </target>
  
++<<<<<<< HEAD
 +    <target name="unzipAIRSDK" if="${shouldUnzip}" depends="unzipOrMountDMG">
++=======
+     <target name="unzipAIRSDK" if="${shouldUnzip}">
++>>>>>>> release4.16.0
      	<echo message="Unzipping"/>
  
      	<!--The tbz2 contains symlinks which Ant does not preserve
@@@ -439,15 -439,16 +443,27 @@@
          <delete file="${basedir}/airtar.properties" />
      </target>
      
++<<<<<<< HEAD
 +	<target name="mountAIRSDK" unless="${shouldUnzip}" depends="unzipOrMountDMG">
 +		<echo message="Mounting dmg"/>
 +		<exec executable="/usr/bin/hdiutil" os="Mac OS X" failonerror="true">
 +	      <arg value="attach"/>
++=======
+ 	<target name="mountAIRSDK" unless="${shouldUnzip}">
+ 		<echo message="Mounting dmg"/>
+ 		<exec executable="/usr/bin/hdiutil" os="Mac OS X" failonerror="true">
+ 	      <arg value="attach"/>
+ 	      <arg value="-nobrowse"/>
++>>>>>>> release4.16.0
  	      <arg value="${download.dir}/airsdk/${air.sdk.url.file}"/>
  	    </exec>
  	</target>
  
++<<<<<<< HEAD
 +	<target name="copyFromMount" unless="${shouldUnzip}" depends="mountAIRSDK">
++=======
+ 	<target name="copyFromMount" unless="${shouldUnzip}">
++>>>>>>> release4.16.0
  		<echo message="Copying AIR SDK from mounted volume"/>
  		<exec executable="rsync" dir="${FLEX_HOME}">
              <arg value="--archive" />
@@@ -458,7 -459,7 +474,11 @@@
          </exec>
  	</target>
  
++<<<<<<< HEAD
 +	<target name="unmountAIRSDK" unless="${shouldUnzip}" depends="copyFromMount">
++=======
+ 	<target name="unmountAIRSDK" unless="${shouldUnzip}">
++>>>>>>> release4.16.0
  		<echo message="Unmounting AIR SDK"/>
  		<exec executable="/usr/bin/hdiutil" os="Mac OS X" failonerror="false">
  	      <arg value="unmount"/>
@@@ -466,7 -467,7 +486,11 @@@
  	    </exec>
  	</target>
      
++<<<<<<< HEAD
 +    <target name="air-setup-mac" depends="unzipAIRSDK,mountAIRSDK,copyFromMount,unmountAIRSDK" unless="isWindows">
++=======
+     <target name="air-setup-mac" depends="unzipOrMountDMG,unzipAIRSDK,mountAIRSDK,copyFromMount,unmountAIRSDK" unless="isWindows">
++>>>>>>> release4.16.0
          <antcall target="mac-copy-file">
              <param name="srcdir" value="." />
              <param name="filename" value="AIR SDK license.pdf"/>


[34/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-18746 CAUSE: HierarchicalCollectionView.updateLength() was ignoring nodes without children, as it should. However, the function it called for the nodes with children, getChildren() unfortunately h

Posted by jm...@apache.org.
FLEX-18746 CAUSE: HierarchicalCollectionView.updateLength() was ignoring nodes without children, as it should. However, the function it called for the nodes with children, getChildren() unfortunately had a necessary side-effect (which is a poor design choice, to be sure), which was to add an event listener to the children collection. So the empty collections of nodes were not listened to, which meant that once the node was open any children that were added to that node were not counted towards the length of the collection. And one way this inconsistency surfaced was through the expandItem() fatal.

SOLUTION: The best - and most time-consuming - solution to this is to find a way to extract the side-effect of getChildren() into a separate function and call it when needed. However, for the moment I have opted to simply allow getChildren() to be called even for empty nodes, which in turn adds the event listeners.

NOTES: all unit tests now pass.


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

Branch: refs/heads/master
Commit: fcc25865f43a7f0760da5a5b1849a932349797d8
Parents: 5fb2fb6
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Aug 16 11:51:05 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Aug 16 11:51:05 2017 +0200

----------------------------------------------------------------------
 frameworks/projects/mx/src/mx/controls/Tree.as                | 2 +-
 .../src/mx/controls/treeClasses/HierarchicalCollectionView.as | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/fcc25865/frameworks/projects/mx/src/mx/controls/Tree.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/src/mx/controls/Tree.as b/frameworks/projects/mx/src/mx/controls/Tree.as
index 5f9215a..5bf874f 100644
--- a/frameworks/projects/mx/src/mx/controls/Tree.as
+++ b/frameworks/projects/mx/src/mx/controls/Tree.as
@@ -1783,7 +1783,7 @@ public class Tree extends List implements IIMESupport
             // is the item on screen?
             if (visibleData[uid])
             {
-                //find the rowindex of the row after the open thats opening/closing
+                //find the row index of the first row after the one that's opening/closing
                 var n:int = listItems.length;
                 for (rowIndex = 0; rowIndex < n; rowIndex++)
                 {

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/fcc25865/frameworks/projects/mx/src/mx/controls/treeClasses/HierarchicalCollectionView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/src/mx/controls/treeClasses/HierarchicalCollectionView.as b/frameworks/projects/mx/src/mx/controls/treeClasses/HierarchicalCollectionView.as
index 5f357b0..59fe7e8 100644
--- a/frameworks/projects/mx/src/mx/controls/treeClasses/HierarchicalCollectionView.as
+++ b/frameworks/projects/mx/src/mx/controls/treeClasses/HierarchicalCollectionView.as
@@ -267,7 +267,7 @@ public class HierarchicalCollectionView extends EventDispatcher
 			var modelCursor:IViewCursor = treeData.createCursor();
 			if (modelCursor.beforeFirst)
 			{
-				// indicates that an IPE occured on the first item
+				// indicates that an IPE occurred on the first item
 				return treeData.length;
 			}
 			while (!modelCursor.afterLast)
@@ -315,8 +315,7 @@ public class HierarchicalCollectionView extends EventDispatcher
 			parentMap[uid] = parent;
 			if (node != null &&
 				openNodes[uid] &&
-				dataDescriptor.isBranch(node, treeData) &&
-				dataDescriptor.hasChildren(node, treeData))
+				dataDescriptor.isBranch(node, treeData))
 			{
 				childNodes = getChildren(node);
 				if (childNodes != null)
@@ -432,7 +431,7 @@ public class HierarchicalCollectionView extends EventDispatcher
     
     /**
 	 * @private
-	 * delegate getchildren in order to add event listeners for nested collections
+	 * delegate getChildren in order to add event listeners for nested collections
 	 */
 	private function getChildren(node:Object):ICollectionView
 	{


[12/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35267 Updated unit test - made it easier to read, and now we're also testing GridColumnHeaderGroup.containsGlobalCoordinates(). For the test to pass I've improved the logic in GridHeaderViewLayout

Posted by jm...@apache.org.
FLEX-35267 Updated unit test - made it easier to read, and now we're also testing GridColumnHeaderGroup.containsGlobalCoordinates(). For the test to pass I've improved the logic in GridHeaderViewLayout.getHeaderIndexAt() which, in turn, made a few functions redundant in GridColumnHeaderGroup. All tests currently pass.


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

Branch: refs/heads/master
Commit: a1c61c5cfd452cb0a150788e498865763890d112
Parents: 56abc7d
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Mar 29 14:26:51 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Mar 29 14:26:51 2017 +0200

----------------------------------------------------------------------
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 84 ++++++++++++++------
 1 file changed, 61 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a1c61c5c/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 1ac5a17..5bc24b4 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -88,6 +88,7 @@ package spark.components.gridClasses {
         private static const directions:Array = [ITSELF, N, NE, E, SE, S, SW, W, NW];
 
         private static const COLUMN_HEADER_RECTANGLES:String = "columnHeaderRectangles";
+        private static const COLUMN_RECTANGLES:String = "columnRectangles";
         private static const ENTIRE_HEADER_RECTANGLE:String = "headerRectangle"; //includes padding
         private static const MAIN_HEADER_VIEW_RECTANGLE:String = "mainHeaderViewRectangle";
         private static const FIXED_HEADER_VIEW_RECTANGLE:String = "fixedHeaderViewRectangle";
@@ -98,11 +99,11 @@ package spark.components.gridClasses {
         private var _keyPoints:Array;
 
         //@TODO add cases with horizontal scroll, and also with fixed columns
-        //@TODO we probably have to account for paddingTop and paddingBottom as well
         public static var dimensions:Array = [
             /*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
-            [[10, 0, 300, 5, 0, 5, [25, 150]]],
-            [[0, 0, 300, 5, 0, 0, [25, 150]]]
+            [[/*x=*/    0, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   0, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/   10, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   5, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/   -5, /*y=*/-100, /*width=*/   200, /*paddingLeft=*/  25, /*paddingTop=*/ 12, /*paddingBottom=*/   5, /*columnWidths=*/[100, 150]]] //horizontal scroll
         ];
 
 
@@ -135,22 +136,6 @@ package spark.components.gridClasses {
             _keyPoints = null;
         }
 
-        /*
-        [Ignore]
-        [Test]
-        public function test_column_index(globalPoint:Array, expectedColumnIndex:int):void
-        {
-            //given
-            var localPoint:Point = _dataGrid.grid.globalToLocal(new Point(globalPoint[0], globalPoint[1]));
-
-            //when
-            var columnIndex:int = _dataGrid.grid.getColumnIndexAt(localPoint.x, 0);
-
-            //then
-            assertEquals(expectedColumnIndex, columnIndex);
-        }
-*/
-
 
         [Test(dataProvider="dimensions")]
         public function test_with_no_scroll(dimensions:Array):void
@@ -189,6 +174,7 @@ package spark.components.gridClasses {
             {
             assertThatHeaderContainsPointOrNot(point, pointName, currentTransformation);
             assertThatHeaderIndexIsCorrect(point, pointName, currentTransformation);
+            assertThatColumnIndexIsCorrect(point, pointName, currentTransformation);
             assertThatCoordinatesOverHeaderViewOrNot(point, pointName, currentTransformation);
         }
 
@@ -227,6 +213,17 @@ package spark.components.gridClasses {
             assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
         }
 
+        private function assertThatColumnIndexIsCorrect(point:Point, pointName:String, currentTransformation:Matrix):void
+        {
+            //when
+            var expectedColumnIndex:int = getColumnIndexAssumption(point);
+            var actualColumnIndex:int = getColumnIndexAtGlobalPoint(point);
+            const errorMessageColumnIndex:String = getColumnIndexErrorMessage(pointName, currentTransformation, point, expectedColumnIndex, actualColumnIndex);
+
+            //then
+            assertEquals(errorMessageColumnIndex, expectedColumnIndex, actualColumnIndex);
+        }
+
         private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
@@ -236,6 +233,15 @@ package spark.components.gridClasses {
                     + "\n DEBUG INFO: headerRectangles=" + columnHeaderRectangles);
         }
 
+        private function getColumnIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
+        {
+            return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should have its x value "
+                    + (expectedColumnHeaderIndex == -1 ? "outside any column bounds" : "within the column with index " + expectedColumnHeaderIndex)
+                    + " but was mistakenly found to be "
+                    + (actualColumnHeaderIndex == -1 ? "outside any column bounds" : "inside the column with index " + actualColumnHeaderIndex
+                    + "\n DEBUG INFO: columnRectangles=" + columnRectangles);
+        }
+
         private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
@@ -260,6 +266,12 @@ package spark.components.gridClasses {
             return _sut.getHeaderIndexAt(localPoint.x, localPoint.y);
         }
 
+        private function getColumnIndexAtGlobalPoint(globalPoint:Point):int
+        {
+            var localPoint:Point = _dataGrid.grid.globalToLocal(globalPoint);
+            return _dataGrid.grid.getColumnIndexAt(localPoint.x, localPoint.y);
+        }
+
         private function getHeaderShouldContainPointAssumption(point:Point):Boolean
         {
             return rectangleContainsPoint(entireHeaderRectangle, point);
@@ -277,15 +289,15 @@ package spark.components.gridClasses {
 
         private function getHeaderIndexAssumption(point:Point):int
         {
-            return getIndexOfHeaderRectangleWhichContainsPoint(point, columnHeaderRectangles);
+            return getIndexOfRectangleWhichContainsPoint(point, columnHeaderRectangles);
         }
 
-        private function getAdjacentPoint(point:Point, direction:Matrix):Point
+        private function getColumnIndexAssumption(point:Point):int
         {
-            return direction.transformPoint(point);
+            return getIndexOfRectangleWhichContainsPoint(point, columnRectangles);
         }
 
-        private function getIndexOfHeaderRectangleWhichContainsPoint(point:Point, rectangles:Array):int
+        private function getIndexOfRectangleWhichContainsPoint(point:Point, rectangles:Array):int
         {
             for (var i:int = 0; i < rectangles.length; i++)
             {
@@ -301,6 +313,11 @@ package spark.components.gridClasses {
             return rectangle.containsPoint(point);
         }
 
+        private function getAdjacentPoint(point:Point, direction:Matrix):Point
+        {
+            return direction.transformPoint(point);
+        }
+
         private function generateKeyPoints(dimensions:Array, grid:DataGrid):Array
         {
             var keyPoints:Array = [];
@@ -338,6 +355,7 @@ package spark.components.gridClasses {
             var keyRectangles:Array = [];
 
             keyRectangles[COLUMN_HEADER_RECTANGLES] = generateHeaderColumnRectangles(keyPoints, dimensions);
+            keyRectangles[COLUMN_RECTANGLES] = generateColumnRectangles(keyPoints, dimensions);
             keyRectangles[ENTIRE_HEADER_RECTANGLE] = generateVisibleHeaderRectangle(keyPoints, dimensions);
             keyRectangles[MAIN_HEADER_VIEW_RECTANGLE] = generateMainHeaderViewRectangle(keyPoints, dimensions);
             keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] = generateFixedHeaderViewRectangle(keyPoints, dimensions);
@@ -390,6 +408,21 @@ package spark.components.gridClasses {
             return headerRectangles;
         }
 
+        //Note that the height and y of the rectangles doesn't matter until FLEX-35280 is fixed
+        private function generateColumnRectangles(keyPoints:Array, dimensions:Array):Array
+        {
+            var columnRectangles:Array = [];
+
+            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
+            {
+                var topLeft:Point = keyPoints["g" + i];
+                var topRight:Point = keyPoints["g" + (i+1)];
+                columnRectangles.push(new Rectangle(topLeft.x, -10000, topRight.x - topLeft.x, Number.MAX_VALUE));
+            }
+
+            return columnRectangles;
+        }
+
         private function forEachPoint(assertThat_:Function):void
         {
             for (var pointName:String in _keyPoints)
@@ -415,6 +448,11 @@ package spark.components.gridClasses {
             return _keyRectangles[COLUMN_HEADER_RECTANGLES];
         }
 
+        private function get columnRectangles():Array
+        {
+            return _keyRectangles[COLUMN_RECTANGLES];
+        }
+
         private function get entireHeaderRectangle():Rectangle //includes padding
         {
             return _keyRectangles[ENTIRE_HEADER_RECTANGLE] as Rectangle;


[14/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35280 FLEX-35260 Recent changes to FLEX-35267 made it so that the y value in GridHeaderViewLayout.getHeaderIndexAt() started to be considered, when before it was simply ignored. But one caller of

Posted by jm...@apache.org.
FLEX-35280 FLEX-35260 Recent changes to FLEX-35267 made it so that the y value in GridHeaderViewLayout.getHeaderIndexAt() started to be considered, when before it was simply ignored. But one caller of this function, GridColumnHeaderGroup.eventToHeaderLocations(), simply used '0' for that argument, instead of the real value, knowing that (before these changes) it wasn't being considered. Now the real value is used.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/60ccf24c
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/60ccf24c
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/60ccf24c

Branch: refs/heads/master
Commit: 60ccf24cbd641fcac30e27215156e65d4cb0e923
Parents: 7d3073b
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Apr 12 13:34:54 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Apr 12 13:34:54 2017 +0200

----------------------------------------------------------------------
 .../projects/spark/src/spark/components/GridColumnHeaderGroup.as   | 2 +-
 .../spark/src/spark/components/gridClasses/GridColumnHeaderView.as | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/60ccf24c/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
index 02f3aac..3d51fd8 100644
--- a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -1050,7 +1050,7 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
         const separatorIndex:int = viewLayout.getSeparatorIndexAt(viewXY.x, 0);
         
         headerCP.rowIndex = (separatorIndex != -1) ? separatorIndex + gdv.viewColumnIndex : -1;
-        headerCP.columnIndex = (separatorIndex == -1) ? viewLayout.getHeaderIndexAt(viewXY.x, 0) + gdv.viewColumnIndex : -1;
+        headerCP.columnIndex = (separatorIndex == -1) ? viewLayout.getHeaderIndexAt(viewXY.x, viewXY.y) + gdv.viewColumnIndex : -1;
         
         headerXY.x = viewXY.x + gdv.viewOriginX;
         headerXY.y = viewXY.y;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/60ccf24c/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
index a836462..aecb7c2 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
@@ -120,7 +120,6 @@ public class GridColumnHeaderView extends Group
             origin.x -= width;
 
         origin.y += verticalScrollPosition;
-        
 
         var headerViewContainsGlobalCoordinates:Boolean = (stageX >= origin.x) && (stageY >= origin.y) &&
                 (stageX < (origin.x + width)) && (stageY < (origin.y + height));


[47/50] git commit: [flex-sdk] [refs/heads/master] - Update rat version in releasecandidate.xml file

Posted by jm...@apache.org.
Update rat version in releasecandidate.xml file


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

Branch: refs/heads/master
Commit: d242fd9d20415eef26474dbbc5cfc846c8ec9d5d
Parents: 7cc34f9
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Tue Nov 7 22:56:59 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Tue Nov 7 22:56:59 2017 +0100

----------------------------------------------------------------------
 releasecandidate.xml | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d242fd9d/releasecandidate.xml
----------------------------------------------------------------------
diff --git a/releasecandidate.xml b/releasecandidate.xml
index 7597846..c2d43f8 100644
--- a/releasecandidate.xml
+++ b/releasecandidate.xml
@@ -49,9 +49,10 @@
     </condition>
 	
 	<property name="rat.report" value="${basedir}/rat-report.txt"/>
-	<property name="apache.rat.jar" value="apache-rat-0.8.jar" />
-	<property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.8.jar" />
-	<property name="apache.rat.url" value="http://people.apache.org/~aharui/rat" />
+	<property name="apache.rat.jar" value="apache-rat-0.11.jar" />
+	<property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.11.jar" />
+	<property name="apache.rat.url" value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.11" />
+	<property name="apache.rat.tasks.url" value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat-tasks/0.11"/>
     
 	<property file="${basedir}/local.properties" />
 	<property file="${basedir}/build.properties" />
@@ -192,7 +193,7 @@
 		<get src="${apache.rat.url}/${apache.rat.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.jar}" />
 	</target>
 	<target name="install-rat.tasks.jar" unless="apache.rat.tasks.found">
-		<get src="${apache.rat.url}/${apache.rat.tasks.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}" />
+		<get src="${apache.rat.tasks.url}/${apache.rat.tasks.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}" />
 	</target>
 	
     <target name="rat-taskdef" description="Rat taskdef">


[28/50] git commit: [flex-sdk] [refs/heads/master] - Merge remote-tracking branch 'origin/develop' into develop

Posted by jm...@apache.org.
Merge remote-tracking branch 'origin/develop' into develop


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

Branch: refs/heads/master
Commit: fea9be98df7c60b75b1d1141e568012c5622e2c5
Parents: 0226437 bb7447f
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Jun 27 09:21:18 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Jun 27 09:21:18 2017 +0200

----------------------------------------------------------------------
 RELEASE_NOTES                                   | 42 ++++++++++++++++++++
 .../macromedia/asc/embedding/LintEvaluator.java |  8 +++-
 2 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[26/50] git commit: [flex-sdk] [refs/heads/master] - Merge remote-tracking branch 'origin/develop' into develop

Posted by jm...@apache.org.
Merge remote-tracking branch 'origin/develop' into develop


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/0226437e
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/0226437e
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/0226437e

Branch: refs/heads/master
Commit: 0226437edfef900f9135b3fd97b8b82af10b2ae0
Parents: 9c5cbbe e66554e
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Jun 20 11:50:06 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Jun 20 11:50:06 2017 +0200

----------------------------------------------------------------------
 KEYS | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 116 insertions(+)
----------------------------------------------------------------------



[33/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-18746 Adding another unit test which goes to the heart of the bug - the length calculation in HierarchicalCollectionView. (Currently the test function test_opening_closing_with_Jill_having_no_chil

Posted by jm...@apache.org.
FLEX-18746 Adding another unit test which goes to the heart of the bug - the length calculation in HierarchicalCollectionView. (Currently the test function test_opening_closing_with_Jill_having_no_children_to_begin_with() fails, as expected.)


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/5fb2fb63
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/5fb2fb63
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/5fb2fb63

Branch: refs/heads/master
Commit: 5fb2fb634ea856cc0cd4034dc9bc99e4a58219d5
Parents: 7a519a3
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Aug 15 17:20:48 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Aug 15 17:20:48 2017 +0200

----------------------------------------------------------------------
 .../Tree_FLEX_18746_Collection_Length_Tests.as  | 201 +++++++++++++++++++
 .../tests/mx/controls/Tree_FLEX_18746_Tests.as  |   6 -
 2 files changed, 201 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/5fb2fb63/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
new file mode 100644
index 0000000..1d7a131
--- /dev/null
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
@@ -0,0 +1,201 @@
+package mx.controls {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+
+    import mx.collections.ArrayCollection;
+    import mx.core.mx_internal;
+
+    import org.flexunit.asserts.assertEquals;
+    import org.flexunit.async.Async;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    use namespace mx_internal;
+
+    public class Tree_FLEX_18746_Collection_Length_Tests
+    {
+        private static var noEnterFramesToWait:int = NaN;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
+        private static var _sut:Tree_;
+        private static var Sam:TreeItem;
+        private static var Ana:TreeItem;
+        private static var Jenny:TreeItem;
+        private static var Marc:TreeItem;
+        private static var parentJill:TreeItem;
+        private static var parentJohn:TreeItem;
+
+
+        [Before]
+        public function setUp():void
+        {
+            Sam = new TreeItem("Sam");
+            Ana = new TreeItem("Ana");
+            Jenny = new TreeItem("Jenny");
+            Marc = new TreeItem("Marc");
+
+            _sut = new Tree_();
+            _sut.width = 200;
+            _sut.height = 200;
+
+            UIImpersonator.addChild(_sut);
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            UIImpersonator.removeAllChildren();
+            _sut = null;
+        }
+
+
+        [Test(async, timeout=300)]
+        public function test_opening_closing_with_both_parents_having_at_least_one_child():void
+        {
+            //given
+            parentJill = new TreeItem("Jill", new ArrayCollection([Marc]));
+            parentJohn = new TreeItem("John", new ArrayCollection([Sam]));
+
+            const dataProvider:ArrayCollection = new ArrayCollection();
+            dataProvider.addItem(parentJill);
+            dataProvider.addItem(parentJohn);
+
+            //when
+            _sut.dataProvider = dataProvider;
+
+            //then wait a few frames
+            noEnterFramesToWait = 2;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_and_contract, 250);
+        }
+
+        [Test(async, timeout=300)]
+        public function test_opening_closing_with_Jill_having_no_children_to_begin_with():void
+        {
+            //given
+            parentJill = new TreeItem("Jill", new ArrayCollection());
+            parentJohn = new TreeItem("John", new ArrayCollection([Sam]));
+
+            const dataProvider:ArrayCollection = new ArrayCollection();
+            dataProvider.addItem(parentJill);
+            dataProvider.addItem(parentJohn);
+
+            //when
+            _sut.dataProvider = dataProvider;
+
+            //then wait a few frames
+            noEnterFramesToWait = 2;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_and_contract, 250);
+        }
+
+        private static function then_expand_and_contract(event:Event, passThroughData:Object):void
+        {
+            //given
+            var currentLength:int = _sut.collectionLength_; //current length is correct
+
+            //then
+            assertEquals(2, currentLength);
+
+            //when
+            _sut.expandItem(parentJohn, true, false, true);
+            currentLength += parentJohn.children.length;
+
+            //then
+            assertEquals(currentLength, _sut.collectionLength_);
+
+            //when
+            _sut.expandItem(parentJill, true, false, true);
+            currentLength += parentJill.children.length;
+
+            //then
+            assertEquals(currentLength, _sut.collectionLength_);
+
+            //when
+            parentJohn.children.addItem(Jenny);
+            currentLength += 1;
+
+            //then
+            assertEquals(currentLength, _sut.collectionLength_);
+
+            //when
+            _sut.expandItem(parentJohn, false, false, true);
+            currentLength -= parentJohn.children.length;
+
+            //then
+            assertEquals(currentLength, _sut.collectionLength_);
+
+            //when
+            parentJill.children.addItem(Ana);
+            currentLength += 1;
+
+            //then
+            assertEquals(currentLength, _sut.collectionLength_);
+        }
+
+
+        private static function onEnterFrame(event:Event):void
+        {
+            if(!--noEnterFramesToWait)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+        }
+    }
+}
+
+import mx.controls.Tree;
+import mx.controls.treeClasses.HierarchicalCollectionView;
+
+class Tree_ extends Tree
+{
+    public function getHierarchicalCollection():HierarchicalCollectionView
+    {
+        return super.collection as HierarchicalCollectionView;
+    }
+
+    public function get collectionLength_():int
+    {
+        return getHierarchicalCollection().length;
+    }
+}
+
+import mx.collections.ArrayCollection;
+
+class TreeItem {
+    private var _label:String;
+    private var _children:ArrayCollection;
+
+    public function TreeItem(label:String, children:ArrayCollection = null)
+    {
+        this.label = label;
+        this.children = children;
+    }
+
+    [Bindable]
+    public function set label(label:String):void
+    {
+        _label = label;
+    }
+
+    public function get label():String
+    {
+        return _label;
+    }
+
+    [Bindable]
+    public function set children(children:ArrayCollection):void
+    {
+        _children = children;
+    }
+
+    public function get children():ArrayCollection
+    {
+        return _children;
+    }
+
+    public function toString():String
+    {
+        return "TreeItem{_label=" + String(_label) + "}";
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/5fb2fb63/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
index 16a3cbc..0cfb3af 100644
--- a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
@@ -43,12 +43,6 @@ package mx.controls {
         }
 
 
-        //--------------------------------------------------------------------------
-        //
-        //  Test method
-        //
-        //--------------------------------------------------------------------------
-
         [Test(async, timeout=1000)]
         public function test_closing_previously_opened_folder_with_0_children_without_animation_does_not_throw_fatal():void
         {


[15/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35260 When calling localToGlobal() on gridColumnHeaderGroup, the result does not reflect its horizontal scroll position, which means that we need to include it manually (in GridHeaderViewLayout.ge

Posted by jm...@apache.org.
FLEX-35260 When calling localToGlobal() on gridColumnHeaderGroup, the result does not reflect its horizontal scroll position, which means that we need to include it manually (in GridHeaderViewLayout.getHeaderIndexAt()). However, the 'x' function argument is assumed to include it, so we're not adding it anymore when calling GridDimensionsView.getColumnIndexAt().


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

Branch: refs/heads/master
Commit: d726aee2da04bd796ab91fa1960d7e55d47cde44
Parents: 60ccf24
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Apr 12 15:16:39 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Apr 12 15:16:39 2017 +0200

----------------------------------------------------------------------
 .../projects/spark/src/spark/components/GridColumnHeaderGroup.as | 4 ++--
 .../src/spark/components/gridClasses/GridHeaderViewLayout.as     | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d726aee2/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
index 3d51fd8..63a0eb3 100644
--- a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -1039,11 +1039,11 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
     // TODO: apologize for stashing the separatorIndex in headerCP.rowIndex
     private function eventToHeaderLocations(event:MouseEvent, headerCP:CellPosition, headerXY:Point):Boolean
     {
-        const view:Group = getHeaderViewUnderGlobalCoordinates(new Point(event.stageX, event.stageY));
+        const stageXY:Point = new Point(event.stageX, event.stageY);
+        const view:Group = getHeaderViewUnderGlobalCoordinates(stageXY);
         if (!view)
             return false;
 
-		const stageXY:Point = new Point(event.stageX, event.stageY);
         const viewXY:Point = view.globalToLocal(stageXY);
         const viewLayout:GridHeaderViewLayout = view.layout as GridHeaderViewLayout;
         const gdv:GridDimensionsView = viewLayout.gridView.gridViewLayout.gridDimensionsView;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d726aee2/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
index cbdf3eb..9432c0a 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
@@ -501,14 +501,14 @@ public class GridHeaderViewLayout extends LayoutBase
     public function getHeaderIndexAt(x:Number, y:Number):int
     {
         var headerIndex:int = -1;
-        var globalPoint:Point = gridColumnHeaderGroup.localToGlobal(new Point(x, y));
+        var globalPoint:Point = gridColumnHeaderGroup.localToGlobal(new Point(x - horizontalScrollPosition, y));
 
         if(gridColumnHeaderGroup.areCoordinatesOverAHeaderView(globalPoint))
         {
             var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
             var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
 
-            headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft + horizontalScrollPosition, y);
+            headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft, y);
 
             if(headerIndex == -1)
             {


[02/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35267 FLEX-35260 FLEX-35029 1. GridHeaderViewLayout.getHeaderIndexAt() now verifies if the coordinates are over the GridColumnHeaderView's left or right padding. 2. Renamed GridColumnHeaderGroup.m

Posted by jm...@apache.org.
FLEX-35267 FLEX-35260 FLEX-35029
1. GridHeaderViewLayout.getHeaderIndexAt() now verifies if the coordinates are over the GridColumnHeaderView's left or right padding.
2. Renamed GridColumnHeaderGroup.mouseEventHeaderView() to getHeaderViewUnderGlobalCoordinates(), while also changing the parameter to be a Point instead of a MouseEvent. This is so that areCoordinatesOverAHeaderView(), areCoordinatesOverLeftPadding() and areCoordinatesOverRightPadding() can use it too.
3. Expanded some variable names in GridColumnHeaderGroup.


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

Branch: refs/heads/master
Commit: ad48251737546e5ae17081044f3051bfbb1997e8
Parents: a603b07
Author: Mihai Chira <mi...@apache.org>
Authored: Fri Mar 10 17:44:32 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Fri Mar 10 17:44:32 2017 +0100

----------------------------------------------------------------------
 .../spark/components/GridColumnHeaderGroup.as   | 66 +++++++++++++++-----
 .../gridClasses/GridColumnHeaderView.as         |  9 ++-
 .../gridClasses/GridHeaderViewLayout.as         | 40 +++++-------
 3 files changed, 72 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ad482517/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
index 9d5b81d..a9209a1 100644
--- a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -782,7 +782,40 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
     {
         return (_visibleSortIndicatorIndices.indexOf(columnIndex) != -1);
     }
+
+    public function containsGlobalCoordinates(coordinates:Point):Boolean
+    {
+        return areCoordinatesOverAHeaderView(coordinates) || areCoordinatesOverPadding(coordinates);
+    }
+
+    public function areCoordinatesOverAHeaderView(coordinates:Point):Boolean
+    {
+        return getHeaderViewUnderGlobalCoordinates(coordinates) != null;
+    }
+
+    public function areCoordinatesOverPadding(coordinates:Point):Boolean
+    {
+        return areCoordinatesOverLeftPadding(coordinates) || areCoordinatesOverRightPadding(coordinates);
+    }
+
+    public function areCoordinatesOverLeftPadding(coordinates:Point):Boolean
+    {
+        var paddingLeftStyle:Number = getStyle("paddingLeft");
+        var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
+
+        return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
+                getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x + paddingLeft, coordinates.y)) != null;
+    }
     
+    public function areCoordinatesOverRightPadding(coordinates:Point):Boolean
+    {
+        var paddingRightStyle:Number = getStyle("paddingRight");
+        var paddingRight:Number = isNaN(paddingRightStyle) ? 0 : paddingRightStyle;
+
+        return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
+        getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y - paddingRight)) != null;
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Methods 
@@ -804,28 +837,28 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
 	 */
 	public function configureGridColumnHeaderViews():void
 	{
-        const ghl:GridHeaderLayout = layout as GridHeaderLayout;
-        if (!ghl)
+        const headerLayout:GridHeaderLayout = layout as GridHeaderLayout;
+        if (!headerLayout)
             return;
         
-		if (ghl.centerGridColumnHeaderView == null)
-			ghl.centerGridColumnHeaderView = createGridColumnHeaderView();
+		if (headerLayout.centerGridColumnHeaderView == null)
+			headerLayout.centerGridColumnHeaderView = createGridColumnHeaderView();
 		
 		if (dataGrid.lockedColumnCount > 0)
 		{
-			ghl.leftGridColumnHeaderView = createGridColumnHeaderView();
+			headerLayout.leftGridColumnHeaderView = createGridColumnHeaderView();
 		}
-		else if (ghl.leftGridColumnHeaderView)
+		else if (headerLayout.leftGridColumnHeaderView)
 		{
-			removeElement(ghl.leftGridColumnHeaderView);
-			ghl.leftGridColumnHeaderView = null;
+			removeElement(headerLayout.leftGridColumnHeaderView);
+			headerLayout.leftGridColumnHeaderView = null;
 		}
 		
 		const gridLayout:GridLayout = dataGrid.grid.layout as GridLayout;
 
-		GridHeaderViewLayout(ghl.centerGridColumnHeaderView.layout).gridView = gridLayout.centerGridView;
-		if (ghl.leftGridColumnHeaderView)
-			GridHeaderViewLayout(ghl.leftGridColumnHeaderView.layout).gridView = gridLayout.leftGridView;
+		GridHeaderViewLayout(headerLayout.centerGridColumnHeaderView.layout).gridView = gridLayout.centerGridView;
+		if (headerLayout.leftGridColumnHeaderView)
+			GridHeaderViewLayout(headerLayout.leftGridColumnHeaderView.layout).gridView = gridLayout.leftGridView;
 	}
 	
 	/**
@@ -850,7 +883,6 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
      */
     public function getHeaderIndexAt(x:Number, y:Number):int
     {
-        // TODO: fix this: x coordinate has to be adjusted
 		const view:Group = getColumnHeaderViewAtX(x);
         return GridHeaderViewLayout(view.layout).getHeaderIndexAt(x, y);
     }
@@ -1000,16 +1032,16 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
 	 *  comparison is based strictly on the event's location and the GridViews' bounds.
 	 *  The event's target can be anything.
 	 */
-	private function mouseEventHeaderView(event:MouseEvent):GridColumnHeaderView
+	private function getHeaderViewUnderGlobalCoordinates(globalCoordinates:Point):GridColumnHeaderView
 	{
 		const ghl:GridHeaderLayout = layout as GridHeaderLayout;
 
-		const centerGridColumnHeaderView:GridColumnHeaderView = GridColumnHeaderView(ghl.centerGridColumnHeaderView)
-		if (centerGridColumnHeaderView && centerGridColumnHeaderView.containsMouseEvent(event))
+		const centerGridColumnHeaderView:GridColumnHeaderView = GridColumnHeaderView(ghl.centerGridColumnHeaderView);
+		if (centerGridColumnHeaderView && centerGridColumnHeaderView.containsStageCoordinates(globalCoordinates))
 			return centerGridColumnHeaderView;
 		
 		const leftGridColumnHeaderView:GridColumnHeaderView = GridColumnHeaderView(ghl.leftGridColumnHeaderView);
-		if (leftGridColumnHeaderView && leftGridColumnHeaderView.containsMouseEvent(event))
+		if (leftGridColumnHeaderView && leftGridColumnHeaderView.containsStageCoordinates(globalCoordinates))
 			return leftGridColumnHeaderView;
 		
 		return null;
@@ -1018,7 +1050,7 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
     // TODO: apologize for stashing the separatorIndex in headerCP.rowIndex
     private function eventToHeaderLocations(event:MouseEvent, headerCP:CellPosition, headerXY:Point):Boolean
     {
-        const view:Group = mouseEventHeaderView(event);
+        const view:Group = getHeaderViewUnderGlobalCoordinates(new Point(event.stageX, event.stageY));
         if (!view)
             return false;
 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ad482517/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
index ee475ee..2e6f449 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridColumnHeaderView.as
@@ -106,8 +106,13 @@ public class GridColumnHeaderView extends Group
      */
     public function containsMouseEvent(event:MouseEvent):Boolean
     {
-        const eventStageX:Number = event.stageX;
-        const eventStageY:Number = event.stageY;
+        return containsStageCoordinates(new Point(event.stageX, event.stageY));
+    }
+
+    public function containsStageCoordinates(coordinates:Point):Boolean
+    {
+        const eventStageX:Number = coordinates.x;
+        const eventStageY:Number = coordinates.y;
         const origin:Point = localToGlobal(zeroPoint);
 
         origin.x += horizontalScrollPosition;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ad482517/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
index 2d98b89..4dd36b8 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
@@ -500,33 +500,25 @@ public class GridHeaderViewLayout extends LayoutBase
      */
     public function getHeaderIndexAt(x:Number, y:Number):int
     {
-        return gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x, y);
-        
-        // TODO: restore the special case handling below
-        /*
-        const gridColumnHeaderGroup:GridColumnHeaderGroup = this.gridColumnHeaderGroup;
-        const grid:Grid = this.grid;
-        const columnsView:IList = this.columnsView;
-        
-        if (!gridColumnHeaderGroup || !grid || !columnsView)
-            return -1; 
-        
-        const paddingLeft:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
-        const paddedX:Number = x + paddingLeft;
-        var columnIndex:int = grid.getColumnIndexAt(paddedX, 0);
-        
-        // Special case for the stretched renderer above the vertical scrollbar
-        // TODO (klin): Rethink this case if we change how the last header looks.
-        if (columnIndex < 0)
+        var headerIndex:int = -1;
+        var globalPoint:Point = gridColumnHeaderGroup.localToGlobal(new Point(x, y));
+
+        if(!gridColumnHeaderGroup.areCoordinatesOverLeftPadding(globalPoint))
         {
-            const contentWidth:Number = gridColumnHeaderGroup.contentWidth;
-            const totalWidth:Number = horizontalScrollPosition + gridColumnHeaderGroup.width - gridColumnHeaderGroup.getStyle("paddingRight");
-            if (paddedX >= contentWidth && paddedX < totalWidth)
-                columnIndex = grid.getPreviousVisibleColumnIndex(columnsView.length)
+            var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
+            var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
+        
+            headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft + horizontalScrollPosition, y);
+
+            if(headerIndex == -1 && gridColumnHeaderGroup.containsGlobalCoordinates(globalPoint))
+            {
+                //then the point is either over the right padding, over the width of the vertical
+                //scroll bar, or over the space between the last separator and the width of the grid
+                headerIndex = grid.getPreviousVisibleColumnIndex(columnsView.length);
+            }
         }
         
-        return columnIndex;
-        */
+        return headerIndex;
     }
     
     /**


[19/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 Made the unit test more realistic (by having the user's action happen in the next frame), and prevented an error when tearDown() tries to remove a component which is no longer on stage.

Posted by jm...@apache.org.
FLEX-35321 Made the unit test more realistic (by having the user's action happen in the next frame), and prevented an error when tearDown() tries to remove a component which is no longer on stage.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/5ea79a20
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/5ea79a20
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/5ea79a20

Branch: refs/heads/master
Commit: 5ea79a20f07bba7aab51dd1a45057cf26c48caa0
Parents: 53a7710
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Jun 7 13:04:32 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Jun 7 13:04:32 2017 +0200

----------------------------------------------------------------------
 .../framework/src/mx/managers/LayoutManager.as  |  2 +-
 .../managers/LayoutManager_FLEX_35321_Tests.as  | 36 +++++++++++++++-----
 2 files changed, 28 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/5ea79a20/frameworks/projects/framework/src/mx/managers/LayoutManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/managers/LayoutManager.as b/frameworks/projects/framework/src/mx/managers/LayoutManager.as
index 45395ac..feebeff 100644
--- a/frameworks/projects/framework/src/mx/managers/LayoutManager.as
+++ b/frameworks/projects/framework/src/mx/managers/LayoutManager.as
@@ -780,7 +780,7 @@ public class LayoutManager extends EventDispatcher implements ILayoutManager
      */
     private function doPhasedInstantiation():void
     {
-        // trace(">>DoPhasedInstantation");
+        // trace(">>DoPhasedInstantiation");
 
         // If phasing, do only one phase: validateProperties(),
         // validateSize(), or validateDisplayList().

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/5ea79a20/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
index bb969ba..47d5f14 100644
--- a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
+++ b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -1,16 +1,23 @@
 package mx.managers {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+
     import mx.core.UIComponentGlobals;
     import mx.core.mx_internal;
     import mx.events.FlexEvent;
 
     import org.flexunit.asserts.assertFalse;
     import org.flexunit.asserts.assertNull;
+    import org.flexunit.async.Async;
     import org.fluint.uiImpersonation.UIImpersonator;
 
     use namespace mx_internal;
 
     public class LayoutManager_FLEX_35321_Tests
     {
+        private static var noEnterFramesRemaining:int = NaN;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
         private var _objectWhichIsRemovedOnSizeValidation:SomeComponent;
         private var _creationCompleteCalled:Boolean;
 
@@ -25,7 +32,7 @@ package mx.managers {
         [After]
         public function tearDown():void
         {
-            UIImpersonator.removeChild(_objectWhichIsRemovedOnSizeValidation);
+            UIImpersonator.removeAllChildren();
             _objectWhichIsRemovedOnSizeValidation = null;
         }
 
@@ -44,7 +51,7 @@ package mx.managers {
             assertFalse("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", _creationCompleteCalled);
         }
 
-        [Test]
+        [Test(async, timeout=500)]
         public function test_object_removed_from_stage_via_user_action_is_not_initialized():void
         {
             //given
@@ -55,11 +62,28 @@ package mx.managers {
             _objectWhichIsRemovedOnSizeValidation.validateNow();
             _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemoval();
 
+            //then wait 2 frames
+            noEnterFramesRemaining = 2;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert, 300);
+        }
+
+        private function then_assert(event:Event, passThroughData:Object):void
+        {
             //then
             assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
             assertFalse("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", _creationCompleteCalled);
         }
 
+        private static function onEnterFrame(event:Event):void
+        {
+            if(!--noEnterFramesRemaining)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+        }
+
         private function onCreationComplete(event:FlexEvent):void
         {
             _creationCompleteCalled = true;
@@ -96,12 +120,6 @@ class SomeComponent extends UIComponent
 
     public function pretendUserAskedForComponentRemoval():void
     {
-        _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
-        _timer.start();
-    }
-
-    private function onTimerComplete(event:TimerEvent):void
-    {
-        removeFromStage();
+        callLater(removeFromStage);
     }
 }
\ No newline at end of file


[18/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 Adding unit test (currently fails, as expected).

Posted by jm...@apache.org.
FLEX-35321 Adding unit test (currently fails, as expected).


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/53a77105
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/53a77105
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/53a77105

Branch: refs/heads/master
Commit: 53a771056b9f7c8bf7c1127a50f2bd2c7923e0c7
Parents: 2750254
Author: Mihai Chira <mi...@apache.org>
Authored: Mon Jun 5 14:14:13 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Mon Jun 5 14:14:13 2017 +0200

----------------------------------------------------------------------
 .../managers/LayoutManager_FLEX_35321_Tests.as  | 107 +++++++++++++++++++
 1 file changed, 107 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/53a77105/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
new file mode 100644
index 0000000..bb969ba
--- /dev/null
+++ b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -0,0 +1,107 @@
+package mx.managers {
+    import mx.core.UIComponentGlobals;
+    import mx.core.mx_internal;
+    import mx.events.FlexEvent;
+
+    import org.flexunit.asserts.assertFalse;
+    import org.flexunit.asserts.assertNull;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    use namespace mx_internal;
+
+    public class LayoutManager_FLEX_35321_Tests
+    {
+        private var _objectWhichIsRemovedOnSizeValidation:SomeComponent;
+        private var _creationCompleteCalled:Boolean;
+
+        [Before]
+        public function setUp():void
+        {
+            _creationCompleteCalled = false;
+            _objectWhichIsRemovedOnSizeValidation = new SomeComponent();
+            UIImpersonator.addChild(_objectWhichIsRemovedOnSizeValidation);
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            UIImpersonator.removeChild(_objectWhichIsRemovedOnSizeValidation);
+            _objectWhichIsRemovedOnSizeValidation = null;
+        }
+
+        [Test]
+        public function test_object_removed_from_stage_via_code_is_not_initialized():void
+        {
+            //given
+            UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = false;
+            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+
+            //when
+            _objectWhichIsRemovedOnSizeValidation.validateNow();
+
+            //then
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertFalse("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", _creationCompleteCalled);
+        }
+
+        [Test]
+        public function test_object_removed_from_stage_via_user_action_is_not_initialized():void
+        {
+            //given
+            UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
+            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+
+            //when
+            _objectWhichIsRemovedOnSizeValidation.validateNow();
+            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemoval();
+
+            //then
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertFalse("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", _creationCompleteCalled);
+        }
+
+        private function onCreationComplete(event:FlexEvent):void
+        {
+            _creationCompleteCalled = true;
+        }
+    }
+}
+
+import flash.events.TimerEvent;
+import flash.utils.Timer;
+
+import mx.core.IVisualElementContainer;
+import mx.core.UIComponent;
+
+class SomeComponent extends UIComponent
+{
+    private var _timer:Timer = new Timer(1, 1);
+
+    override public function validateSize(recursive:Boolean = false):void
+    {
+        super.validateSize(recursive);
+        removeFromStage();
+    }
+
+    private function removeFromStage():void
+    {
+        if(this.parent)
+        {
+            if(this.parent is IVisualElementContainer)
+                IVisualElementContainer(this.parent).removeElement(this);
+            else
+                this.parent.removeChild(this);
+        }
+    }
+
+    public function pretendUserAskedForComponentRemoval():void
+    {
+        _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
+        _timer.start();
+    }
+
+    private function onTimerComplete(event:TimerEvent):void
+    {
+        removeFromStage();
+    }
+}
\ No newline at end of file


[20/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 LayoutManager.validateNow() doesn't use phased instantiation, so it wasn't the best idea to test it with that, at least the test where we fake a user request for the removal of the component

Posted by jm...@apache.org.
FLEX-35321 LayoutManager.validateNow() doesn't use phased instantiation, so it wasn't the best idea to test it with that, at least the test where we fake a user request for the removal of the component in the next frame. Also added a test that tries to make sure that objects removed from stage and then readded are indeed validated and initialized.


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

Branch: refs/heads/master
Commit: f475aed995adc5206a27ad6fc8cf80224ed425fb
Parents: 5ea79a2
Author: Mihai Chira <mi...@apache.org>
Authored: Sat Jun 10 10:33:28 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Sat Jun 10 10:33:28 2017 +0200

----------------------------------------------------------------------
 .../managers/LayoutManager_FLEX_35321_Tests.as  | 104 ++++++++++++++++---
 1 file changed, 88 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f475aed9/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
index 47d5f14..a23d002 100644
--- a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
+++ b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -6,7 +6,8 @@ package mx.managers {
     import mx.core.mx_internal;
     import mx.events.FlexEvent;
 
-    import org.flexunit.asserts.assertFalse;
+    import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertNotNull;
     import org.flexunit.asserts.assertNull;
     import org.flexunit.async.Async;
     import org.fluint.uiImpersonation.UIImpersonator;
@@ -19,14 +20,15 @@ package mx.managers {
         private static const _finishNotifier:EventDispatcher = new EventDispatcher();
 
         private var _objectWhichIsRemovedOnSizeValidation:SomeComponent;
-        private var _creationCompleteCalled:Boolean;
+        private var _creationCompleteCalls:int;
 
         [Before]
         public function setUp():void
         {
-            _creationCompleteCalled = false;
+            _creationCompleteCalls = 0;
             _objectWhichIsRemovedOnSizeValidation = new SomeComponent();
-            UIImpersonator.addChild(_objectWhichIsRemovedOnSizeValidation);
+            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+            UIImpersonator.addElement(_objectWhichIsRemovedOnSizeValidation);
         }
 
         [After]
@@ -41,14 +43,14 @@ package mx.managers {
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = false;
-            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = true;
 
             //when
             _objectWhichIsRemovedOnSizeValidation.validateNow();
 
             //then
             assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-            assertFalse("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", _creationCompleteCalled);
+            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
         }
 
         [Test(async, timeout=500)]
@@ -56,25 +58,79 @@ package mx.managers {
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
-            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = false;
 
             //when
-            _objectWhichIsRemovedOnSizeValidation.validateNow();
-            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemoval();
+            _objectWhichIsRemovedOnSizeValidation.invalidateDisplayList();
+            _objectWhichIsRemovedOnSizeValidation.invalidateProperties();
+            _objectWhichIsRemovedOnSizeValidation.invalidateSize();
+
+            //then wait 1 frame
+            noEnterFramesRemaining = 1;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_in_next_frame, 300);
+        }
+
+        private function then_remove_from_stage_in_next_frame(event:Event, passThroughData:Object):void
+        {
+            //when
+            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemovalInNextFrame();
 
             //then wait 2 frames
             noEnterFramesRemaining = 2;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert, 300);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert_not_initialized, 300);
+        }
+
+        private function then_assert_not_initialized(event:Event, passThroughData:Object):void
+        {
+            //then
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
+        }
+
+
+        [Test(async, timeout=750)]
+        public function test_object_removed_from_stage_then_readded_is_initialized_once():void
+        {
+            //given
+            UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
+            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = false;
+
+            //when
+            _objectWhichIsRemovedOnSizeValidation.validateNow();
+            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemovalInNextFrame();
+
+            //then wait 1 frame
+            noEnterFramesRemaining = 1;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_readd_object, 200);
         }
 
-        private function then_assert(event:Event, passThroughData:Object):void
+        private function then_readd_object(event:Event, passThroughData:Object):void
         {
             //then
             assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-            assertFalse("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", _creationCompleteCalled);
+
+            //when
+            UIImpersonator.addElement(_objectWhichIsRemovedOnSizeValidation);
+
+            //then wait 4 frames, to make sure validation is done
+            noEnterFramesRemaining = 4;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert_one_initialization_only, 400);
+        }
+
+        private function then_assert_one_initialization_only(event:Event, passThroughData:Object):void
+        {
+            //then
+            assertNotNull("The object should be on stage...", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertEquals("When validation is interrupted half-way it should be complete once the object is re-added to stage", 1, _creationCompleteCalls);
         }
 
+
+
+
         private static function onEnterFrame(event:Event):void
         {
             if(!--noEnterFramesRemaining)
@@ -86,7 +142,7 @@ package mx.managers {
 
         private function onCreationComplete(event:FlexEvent):void
         {
-            _creationCompleteCalled = true;
+            _creationCompleteCalls++;
         }
     }
 }
@@ -99,12 +155,23 @@ import mx.core.UIComponent;
 
 class SomeComponent extends UIComponent
 {
-    private var _timer:Timer = new Timer(1, 1);
+    private var _removeFromStageOnValidateProperties:Boolean = false;
+
+    override public function validateProperties():void
+    {
+        super.validateProperties();
+        if(_removeFromStageOnValidateProperties)
+            removeFromStage();
+    }
 
     override public function validateSize(recursive:Boolean = false):void
     {
         super.validateSize(recursive);
-        removeFromStage();
+    }
+
+    override public function validateDisplayList():void
+    {
+        super.validateDisplayList();
     }
 
     private function removeFromStage():void
@@ -118,8 +185,13 @@ class SomeComponent extends UIComponent
         }
     }
 
-    public function pretendUserAskedForComponentRemoval():void
+    public function pretendUserAskedForComponentRemovalInNextFrame():void
     {
         callLater(removeFromStage);
     }
+
+    public function set removeFromStageOnValidateProperties(value:Boolean):void
+    {
+        _removeFromStageOnValidateProperties = value;
+    }
 }
\ No newline at end of file


[46/50] git commit: [flex-sdk] [refs/heads/master] - missing headers

Posted by jm...@apache.org.
missing headers


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/7cc34f9c
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/7cc34f9c
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/7cc34f9c

Branch: refs/heads/master
Commit: 7cc34f9c85d410aba0442bd6ede9a6590090c392
Parents: 91f196e
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 3 14:29:46 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 3 14:29:46 2017 -0700

----------------------------------------------------------------------
 .../managers/LayoutManager_FLEX_35321_Tests.as   | 19 +++++++++++++++++++
 .../Tree_FLEX_18746_Collection_Length_Tests.as   | 19 +++++++++++++++++++
 .../tests/mx/controls/Tree_FLEX_18746_Tests.as   | 19 +++++++++++++++++++
 .../DropDownListBase_FLEX_35362_Tests.as         | 19 +++++++++++++++++++
 .../spark/tests/spark/components/_CompanyVO.as   | 19 +++++++++++++++++++
 .../tests/spark/components/_HeadquarterVO.as     | 19 +++++++++++++++++++
 .../spark/components/_ListWithMXMLBinding.mxml   | 19 +++++++++++++++++++
 .../GridHeaderViewLayout_FLEX_35260_Tests.as     | 19 +++++++++++++++++++
 8 files changed, 152 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
index 9b0b38c..1c830f4 100644
--- a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
+++ b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package mx.managers {
     import flash.events.Event;
     import flash.events.EventDispatcher;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
index 1d7a131..4b32a32 100644
--- a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Collection_Length_Tests.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package mx.controls {
     import flash.events.Event;
     import flash.events.EventDispatcher;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
index 0cfb3af..38bd4db 100644
--- a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package mx.controls {
     import flash.events.Event;
     import flash.events.EventDispatcher;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as b/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
index 1c081df..1305fb2 100644
--- a/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package spark.components {
     import flash.events.Event;
     import flash.events.EventDispatcher;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/_CompanyVO.as b/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
index 3889c62..7e21808 100644
--- a/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
+++ b/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package spark.components {
     import mx.collections.ArrayCollection;
 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as b/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
index b41d129..ebfeb70 100644
--- a/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
+++ b/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package spark.components {
     [Bindable]
     public class _HeadquarterVO {

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml b/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
index 3e65389..f2b24fb 100644
--- a/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
+++ b/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 <?xml version="1.0"?>
 <s:List xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
     selectedItem="@{container.selectedCompany.headquarter}"

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cc34f9c/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 3fb4b92..6677ea3 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package spark.components.gridClasses {
     import flash.events.Event;
     import flash.events.EventDispatcher;


[25/50] git commit: [flex-sdk] [refs/heads/master] - sync up our KEYS file with dist

Posted by jm...@apache.org.
sync up our KEYS file with dist


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

Branch: refs/heads/master
Commit: e66554e9b94d54b2bfc0d6686b4d5a77fed0f325
Parents: 42c7c38
Author: Alex Harui <ah...@apache.org>
Authored: Sun Jun 18 21:33:43 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sun Jun 18 21:33:43 2017 -0700

----------------------------------------------------------------------
 KEYS | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/e66554e9/KEYS
----------------------------------------------------------------------
diff --git a/KEYS b/KEYS
index 276c4db..b9f884f 100644
--- a/KEYS
+++ b/KEYS
@@ -356,6 +356,64 @@ Kf5nY0+eTBMDKw6a4ntfEow7jkzzikhWKYDya/NuT/QDF51bC8FnbEdU2D3jDCWN
 f/WyocyIyPkr7HH0xI7PLn0=
 =nsEL
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096/EDF6613E 2016-09-09
+uid         [ultimate] Josh Tynjala (CODE SIGNING KEY) <jo...@apache.org>
+sig 3        EDF6613E 2016-09-09  Josh Tynjala (CODE SIGNING KEY) <jo...@apache.org>
+sub   rsa4096/D5780FEF 2016-09-09
+sig          EDF6613E 2016-09-09  Josh Tynjala (CODE SIGNING KEY) <jo...@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2
+
+mQINBFfS1pABEADHaLgnR7zWW1ROAmHoPwqIHMML/VAVJHULDbQmCifD+7tndr8w
+irZaIUUUusATRH8amdhUrTeidVWCD8QJRG71ckBCxiNWXJ08JpeCjuuE3i9DNIpO
+nwvhyNA0nOB6uJuC9kncJh8mUTJoEVoqYesc27Qj0PAPUBsv8mGa3KJizhBUFnjc
+dHNzpdLkafPYedyuIYbl2HcV3roiyGZ1wPygBAUjX1Hig164i3xUohh2JozIgnRQ
+DxW8r30+D/iuTjnKEDoQDOqBLU3cVWV8C+/j/0AJKkLddFOqfW1BkVLHDEecDguh
+aGv98Ifccx4ohaX7ll6twp0IgOhqxOYt7BFK3nQz8kCKevcNaYdQRCS1rl0zWrWd
+scNXFZ4E0gUZGaKMWZJPsH74kaAfmz8ahRpCtbEtywx6WEnAXR7S4YOqXFQRDNXs
+YTcZl98X+2iJhbDkMR22YV1QpyQ3May05fZloeQ84p8mogbOdo5oxr//xIjKKDzI
+uJrj3MEUPZXjfK0gnhJk2XwPpavhbUyHUM7PtltPQyHhF+7vPXjT4sJqLCCg8xs0
+7Wb3z/gqF5X0g9CLlRBjHWRx2TymcJMd85Fn+eN94+GADOpJemMC0SABFd0IzJGP
+ihc821YG1rcYfirNCtQZHuDXW6f+k765Rl6YIZkO6s6h+A/ZaIpCGpy4vwARAQAB
+tDhKb3NoIFR5bmphbGEgKENPREUgU0lHTklORyBLRVkpIDxqb3NodHluamFsYUBh
+cGFjaGUub3JnPokCNwQTAQgAIQUCV9LWkAIbAwULCQgHAgYVCAkKCwIEFgIDAQIe
+AQIXgAAKCRA3R56q7fZhPlHTD/4jBQyC9lGNlYOPrNsa7pVALdB2asnf5hCo/dxl
+EZzgQADZvvBlgGoRFMfEkINHn8BvuCEmLI4AQtTTKCV0vxC3uvyYu+xUGpLOufOK
+Q7/38A0HULN5Z6Qp2FPJaX70VD6HvvdFnob9yXhH6FMgXh+DsDCUz2XW/kf86mTW
+gWN8t/NyX4EycQ1eGpOJlvCH2mkIOKuhfLaLzPTYVo6WwMoBL5e5Pgprn9GDi8Cx
+cWeMw+lAveH9uowAKtz0nvVE5kwC6oZ1pNBQr/BwVdb8YAvgFpt7Z0hxsQaBLiqB
+TOi2vMn9TiKOImUw5lNp4tLgWbNHBrSjjkQC+3YL8YYhdSt8Rcc3UJPJch2HkNtq
+dKGI6LZIDG7umNMZbA+EPBHcTzf/zjo9z4jc5e07ImpnqCzXG7AhVhxzBNVHPzp5
+mySLwQ+5jH6ftjUHrvU2Kgo7dcpHRIBoy0yqLbCjbrp6d9ajnU2vXUFssteaGzli
+6rak2rNXh4d5UlVEUo8GMho6CkapfcGK5qPCKcZGmZidBvV5bvzHLCQlcAOX/yzj
+H6tcb5jC4Ue8UhYVoEAvZXzviuEYA6ziLSnqww6itr7lzfX7CWTFCHtfWIUjPChF
+aLmiXOz6Tgm/QrPlar8T0kPCxrR3fVExzgxWkSkLN6FcfBQ9O3e2CZEZTFFcuBQ+
+IidE+bkCDQRX0taQARAAsVh1XhC4qYCn7hjyeocLcKsNAJokSpkkx0GWTGBIDfYr
+j70t8xOGJuHLi6BljLf10adNb4NE3ZoSfCwaU0z1v5Qba5fQLu26s4t5ltRtwvjX
+Pgoj0AliPyKrLYoA7VfQGx9jWFPqIN+KbExrv2VYOKT4Y1X8jBNNS5W3vmlkKksq
+wxPkyF1iL8FUoHEuoubKoEok1iK+ts6sGDLreTRFgHYmgMiMQG68oeIoefPYdovW
+Ccnauj+TTjP9dcMQUwogWN2aMqYqQE2+Vb2dZAjLqkksyU2PmO6bxNHzS3wAlTWL
+sq86Ne8GQP16Jnp8ggUrt0urW8aaAZrvCKkOgDbRGNAG1vIQuhDnlcc0bW/jN+Mt
+KupEqWIetgTGbJfl3KyMtPuIBtTBjt+09ZIU8RhAaeDp6qu5cdZ4qd29gALLF9Bg
+JCHn780HAX2oBAGBjE5rqQOqx0+vmfqU0yd55+2llXaxT/5TjMvUfyf/+1F7V/Uv
+qyAM5P3vohC0e640lNOdPVKcFYeIGqutt/wVqsiVyV1ygbWTFvqcOfXsv8gSsHyL
+InWl9/5fjt4lnSNTO7A6/7Y8yQ5M/54J1oKZcG+LyCYerCVzQHgW5u0oJgB7S579
+6y3Ag2AII4LN+eYPEDOzO2GsuU5ChEHOi5njWWDcdihudj5aA7mE6TGYQBOxFqUA
+EQEAAYkCHwQYAQgACQUCV9LWkAIbDAAKCRA3R56q7fZhPouXEACnQWZJEhun2Z+T
+ZJXOtVsh/FboBPRXbwgWQPV2T2y7BJGA7MPRV5Bt1TeefOq3OVziwt/R78MIzoHx
+zbRGi7S6If5RPOIcIqq3YaVhXf4qgAC62pbFjHEQg8dx/J3Z6LvLUae5vQtU9LTp
+/N1Dd8GFOO1g9OdBUyu7McDxeBpOiPbduNiJ3V7MyP6CHtdsn7qUgS1DfKGnvE5K
+mzfaA3ewPRSYn0Lfhx4Z3YMaeEpHVT4S1+/wGqPtcETxDc8EV9nn46fOhc0OjIDi
+5iKk9ByqBCxRG5WdLMVn7rm1EOKRdnegPxpHjr/opsv7YBspjXDg7CaP1O0opk9G
+PavEmM6YgsoFLaaXvtGtJEOzjNPvyU1EQGk6g+h3PgM1kMx3F+hmfR3kzzN/qsz/
+VxwruILL6FPuCBxU4szKvHvKuE94SSAQLFMubKK94G1V4h0OtG5RP4wCk/CMRA0/
+7Zc3d8jtuRKssgRdN1oU3Var0t+elo021tP9NvVPB0TldlCeSocJAWjcC0VKyUP/
+jzuepBWPs3515KGS9ReEnMkpLH+34U8SAA8X/Gzo5y1atXvL1bMQOXdtw156aNm2
+cRT7IPR/6Nnb0zto367C+fJcX9y+GojlAv6lX6lDTT+Qxa72SGWF4CYvYCsqXkFK
+CR1nUan0cN8sLesf4hK5RUWpX6ww0g==
+=mfLU
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub  4096R/05061FC8 2017-06-17
 Key fingerprint = 4499 8F3E 2427 27E9 4C4B  ADEB 6B0A 7EC9 0506 1FC8


[05/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35260 Now in the unit test we're also verifying areCoordinatesOverAHeaderView(). Currently fails (for point "b").

Posted by jm...@apache.org.
FLEX-35260 Now in the unit test we're also verifying areCoordinatesOverAHeaderView(). Currently fails (for point "b").


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/9e2620e5
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/9e2620e5
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/9e2620e5

Branch: refs/heads/master
Commit: 9e2620e5bc2b08567fc33f16116f30d4b0e054f0
Parents: f985937
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Mar 14 13:46:27 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Mar 14 13:46:27 2017 +0100

----------------------------------------------------------------------
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 63 ++++++++++++++------
 1 file changed, 44 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/9e2620e5/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 925ea0c..55421f4 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -89,6 +89,7 @@ package spark.components.gridClasses {
         private var _keyRectangles:Array;
         private var _keyPoints:Array;
 
+        //@TODO add cases with horizontal scroll, and also with fixed columns
         public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, [column widths] */
             [[10, 0, 300, 5, 0, [25, 150]]],
             [[0, 0, 300, 5, 0, [25, 150]]]
@@ -124,20 +125,7 @@ package spark.components.gridClasses {
             _keyPoints = null;
         }
 
-        /*[Ignore]
-        [Test]
-        public function test_global_coordinates_over_header_view(globalPoint:Array, expectedHeaderIndex:int):void
-        {
-            //given
-            var pointOverAHeaderView:Boolean = expectedHeaderIndex != -1;
-
-            //when
-            var doesHeaderContainThisPoint:Boolean = _sut.areCoordinatesOverAHeaderView(new Point(globalPoint[0], globalPoint[1]));
-
-            //then
-            assertEquals(pointOverAHeaderView, doesHeaderContainThisPoint);
-        }
-
+        /*
         [Ignore]
         [Test]
         public function test_column_index(globalPoint:Array, expectedColumnIndex:int):void
@@ -196,14 +184,21 @@ package spark.components.gridClasses {
             {
                 for (var i:int = 0; i < directions.length; i++)
                 {
+                    //given
+                    var pointToTest:Point = getAdjacentPoint(_keyPoints[pointName], directions[i]);
+
                     //when
-                    var adjacentPoint:Point = getAdjacentPoint(_keyPoints[pointName], directions[i]);
-                    var expectedHeaderIndex:int = getHeaderIndexAssumption(adjacentPoint);
-                    var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(adjacentPoint);
+                    var expectedHeaderIndex:int = getHeaderIndexAssumption(pointToTest);
+                    var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(pointToTest);
+                    const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, directions[i], pointToTest, expectedHeaderIndex, actualHeaderIndex);
+
+                    var shouldBeContainedInHeader:Boolean = getHeaderContainsPointAssumption(pointToTest);
+                    var actuallyContainedInHeader:Boolean = _sut.areCoordinatesOverAHeaderView(pointToTest);
+                    const errorMessageHeaderContainsPoint:String = getHeaderContainsPointErrorMessage(pointName, directions[i], pointToTest, shouldBeContainedInHeader, actuallyContainedInHeader);
 
                     //then
-                    const errorMessage:String = getHeaderIndexErrorMessage(pointName, directions[i], adjacentPoint, expectedHeaderIndex, actualHeaderIndex);
-                    assertEquals(errorMessage, expectedHeaderIndex, actualHeaderIndex);
+                    assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
+                    assertEquals(errorMessageHeaderContainsPoint, shouldBeContainedInHeader, actuallyContainedInHeader);
                 }
             }
         }
@@ -217,12 +212,26 @@ package spark.components.gridClasses {
                     + "\n DEBUG INFO: headerRectangles=" + headerRectangles);
         }
 
+        private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
+        {
+            return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
+                    + (shouldBeContainedInHeader ? "within " : "outside ") + "header bounds"
+                    + " but was mistakenly found to be "
+                    + (isActuallyContainedInHeader ? "within" : "outside")
+                    + "\n DEBUG INFO: headerRectangle=" + headerRectangle;
+        }
+
         private function getHeaderIndexAtGlobalPoint(globalPoint:Point):int
         {
             var localPoint:Point = _sut.globalToLocal(globalPoint);
             return _sut.getHeaderIndexAt(localPoint.x, localPoint.y);
         }
 
+        private function getHeaderContainsPointAssumption(point:Point):Boolean
+        {
+            return rectangleContainsPoint(headerRectangle, point);
+        }
+
         private function getHeaderIndexAssumption(point:Point):int
         {
             return getIndexOfHeaderRectangleWhichContainsPoint(point, headerRectangles);
@@ -290,10 +299,16 @@ package spark.components.gridClasses {
             var keyRectangles:Array = [];
 
             keyRectangles["headerRectangles"] = generateHeaderRectangles(keyPoints, dimensions);
+            keyRectangles["headerRectangle"] = generateVisibleHeaderRectangle(keyPoints, dimensions);
 
             return keyRectangles;
         }
 
+        private function generateVisibleHeaderRectangle(keyPoints:Array, dimensions:Array):Rectangle
+        {
+            const topLeftCorner:Point = keyPoints["b"];
+            return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints), getHeaderHeightFromKeyPoints(keyPoints));
+        }
         private function generateHeaderRectangles(keyPoints:Array, dimensions:Array):Array
         {
             var headerRectangles:Array = [];
@@ -319,6 +334,11 @@ package spark.components.gridClasses {
             return _keyRectangles["headerRectangles"];
         }
 
+        private function get headerRectangle():Rectangle
+        {
+            return _keyRectangles["headerRectangle"] as Rectangle;
+        }
+
         private function getColumnWidthFromKeyPoints(keyPoints:Array, columnIndex:int):Number
         {
             //we're assuming columnIndex has a valid value
@@ -361,6 +381,11 @@ package spark.components.gridClasses {
             return Point(keyPoints["h"]).y - Point(keyPoints["e"]).y;
         }
 
+        private function getHeaderWidthFromKeyPoints(keyPoints:Array):Number
+        {
+            return Point(keyPoints["e"]).x - Point(keyPoints["b"]).x;
+        }
+
         private function getColumnWidths(dimensions:Array):Array
         {
             return dimensions[5];


[49/50] git commit: [flex-sdk] [refs/heads/master] - Update apache rat in ApproveSDK script

Posted by jm...@apache.org.
Update apache rat in ApproveSDK script


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

Branch: refs/heads/master
Commit: d90867218312b97113ce7c50c5232f6e5ceee9be
Parents: f1fac8f
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Sun Nov 12 22:40:53 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Sun Nov 12 22:40:53 2017 +0100

----------------------------------------------------------------------
 ApproveSDK.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d9086721/ApproveSDK.xml
----------------------------------------------------------------------
diff --git a/ApproveSDK.xml b/ApproveSDK.xml
index bce723e..903655d 100644
--- a/ApproveSDK.xml
+++ b/ApproveSDK.xml
@@ -54,10 +54,10 @@
 	
     <property name="src.rat.report" value="${basedir}/rat-report-src.txt"/>
     <property name="bin.rat.report" value="${basedir}/rat-report-bin.txt"/>
-    <property name="apache.rat.jar" value="apache-rat-0.11.jar" />
-    <property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.11.jar" />
-    <property name="apache.rat.url" value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.11" />
-    <property name="apache.rat.tasks.url" value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat-tasks/0.11" />
+    <property name="apache.rat.jar" value="apache-rat-0.12.jar" />
+    <property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.12.jar" />
+    <property name="apache.rat.url" value="http://central.maven.org/maven2/org/apache/rat/apache-rat/0.12" />
+    <property name="apache.rat.tasks.url" value="http://central.maven.org/maven2/org/apache/rat/apache-rat-tasks/0.12" />
 	   
     <property file="${basedir}/approvesdk.properties"/>
     


[24/50] git commit: [flex-sdk] [refs/heads/master] - Add my public key

Posted by jm...@apache.org.
Add my public key


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/42c7c383
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/42c7c383
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/42c7c383

Branch: refs/heads/master
Commit: 42c7c383562f717b142d41cbe3f393e656862c3a
Parents: 5ea79a2
Author: piotrz <pi...@apache.org>
Authored: Sun Jun 18 11:25:04 2017 +0200
Committer: piotrz <pi...@apache.org>
Committed: Sun Jun 18 11:25:04 2017 +0200

----------------------------------------------------------------------
 KEYS | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/42c7c383/KEYS
----------------------------------------------------------------------
diff --git a/KEYS b/KEYS
index 6651922..276c4db 100644
--- a/KEYS
+++ b/KEYS
@@ -356,3 +356,61 @@ Kf5nY0+eTBMDKw6a4ntfEow7jkzzikhWKYDya/NuT/QDF51bC8FnbEdU2D3jDCWN
 f/WyocyIyPkr7HH0xI7PLn0=
 =nsEL
 -----END PGP PUBLIC KEY BLOCK-----
+
+pub  4096R/05061FC8 2017-06-17
+Key fingerprint = 4499 8F3E 2427 27E9 4C4B  ADEB 6B0A 7EC9 0506 1FC8
+uid  Piotr Zarzycki (CODE SIGNING KEY) <pi...@apache.org>
+sub  4096R/E7EF0C6D 2017-06-17
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG 2.0.30
+
+mQINBFlE+SwBEADWuDcV3Sce05GopgWoggxbqo6e6JYzy+2kxjasB9I5QSFtLFtI
+EVTNVa/iKWGzo0gnRbFQiEcERRog8lcgJ+MPLQxK+Db7zP+kfXE14+qaW/Yr8aDY
+LVfb8NfOD6SkBPC0snuluMuesTF0e2E0C1zdDKhIwVE5qUzi1TV+IYHlzgV7r2X9
+dBc0TxYHbb0iOjh8fc2DtvN0X8ieN1MBJxdWt0Ce/mloUueUWxcFJhvsXDOOK9Sc
+cBHgcV1X707DTK5I2i3ESBnOzTr3zrns4evkyugXVM60ULgddayhg4wvTlyra7X0
+/t8LkimRHl+hZuSMdr03ZuAEyrOLCA2jkQKVPKoGdbpqeKp+cwmrcI4Jqw/JEKB1
+cbzqEFoELGCwfQE8nMYMqQ43ZLV+jUJ6HC1atEdcW5UjHiUVhhur5pMtb5zsf7Bx
+CerOOBoUW8Xw9eM0iM6qGycowc2fsrogYNa8QCHgIq1PDFrC3YNmkkOtPyBoCIhw
+xC2bwfvH5AxC1SdKJE5UUY+7Vg7ieB4Ku5Kb/7Fw0DzMbG3mT2Aq0qaHI/KyMUgn
+TRQFSFe+Dx5j4QRNXwefqNvQHIFETDCcViVSfXAj9HjwdC+LdG97HJFvrtk48PsD
+GvPPVxYyA6M07TE28kuLuFLO5YhCnlrWPc9g6+74RQZRE4ZmDpYzn1gi7wARAQAB
+tDVQaW90ciBaYXJ6eWNraSAoQ09ERSBTSUdOSU5HIEtFWSkgPHBpb3RyekBhcGFj
+aGUub3JnPokCOQQTAQgAIwUCWUT5LAIbAwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4B
+AheAAAoJEGsKfskFBh/IQekQALDKXARMBTUBScDuuJNMi5qxgHrIjEzXwcWNMEsw
+QCn/8AAh0xpWtZ4Lgiuig+vjpkEQuPogS2nov/4mgxQGABEmOnNBedh4ahltgqN4
+sW93IYK1KEU25El75AOQwfkA+M7YCtriR65IAg0waR/CsDgmzIXKnTOhC+ry6pWV
+m5YtbHlLz/l2wq4LdCgQzr/LEOhYJWVeYPZUV4X0VDRvugsDq6XzY7xJQONgiGBB
+LQk2HrlmNXa5svFYwTe6ILwNFbN2n3p7rJsXANvP7bDXXQ3NhyzV4sPtrv2OEBrV
+8LFRjv5qCifLR3lsB4JY/GnLim5HW9HNvv7wsAA7N72+ZM9EMX89v0YqeIyo1qCO
+Fxe2myuZudi8ZxRh8z1Hw6rhRSrDR3IBLLdHU/xp2viGkuK5X3fu/Y0E7Bs8kCCQ
+6ebORS4gVygVRA0PkSJI0kTLhWf7gEMhMqb7RqTXAQx84xe+Pwz5ck6mZ1NYKr3Y
+7CukINfZ17q9kZCmbwqlJF3S3gNJDBKWunmVKM5O8Dz/LKNxcns5DWmNn6kQGE38
+j0TmmCQPYR5SZa+I+J17ml9Qokc7zTJriJg7KqbdHvOrPArx30eH0n1TxDfNfAwZ
+1fh1zLZLGzYgP/xapA+wQp32Onr1+Zo+Dsk7t2beIrdC8rRkohmLml0fXXz88v+A
+HztcuQINBFlE+SwBEADsG1n16SgS8NssKFK+VnuOXgJ0QQ4H2nVz0uQHD8Gpqzq8
+wVAAQUHcnCbSdIYF81mPjfq1UK3yGFzQFFY8PrWnipbZzOhH4EORgqGyXFL4h1gt
+cyV8axcfyxSThw5zTFffma3IwefbxYZ4c3To60k5z9kp6M7ns7L7dE80BCMlQft1
+vzd6YVkZB3IXeoC+70g3XxK3L4CN20S1fQu9mjhawqyXBqF1fIs9TjLw0xIMDYvG
+9SgVG4qoKV/WtprEUTia4Ie2jZ3Oal2Uak8xMvpUcp+dF58su5OcSFXOhYtuKh1A
+iDLcYXGMrIOTnbYdmvSjnlClUp6MZfTzq41VwiigjmKnFyv3WB+0uJb4MZJ3TDg2
+DEsaxyrqGQiY1DZL/UzflQ3YtBTaMiOZnkhgnJTEP9joe4xMAJpVusri2XdaUtFs
+PmLjbHCarx9esfxslu7XBhE4iikkD5/ptgmBcnu/U+OTebumu8adVP7YQ9TUit9C
+M3nK8cQPgdIsu3mr7xggS0UeYxNo/pNKsuapV5bxn1swWksePH2543rl9pq1QAsC
+n9nXo1jdP75QS9SpBoCAhbDiUjq8RdUi0ypm64lyZaULpY2KtmA8LvU5lv7IO4ls
+bzYdkmNwnzJAtg7mhDrDTJQiNjg6kcOyYr4wPOTAzU3hypgWalfhKztLe51hwQAR
+AQABiQIfBBgBCAAJBQJZRPksAhsMAAoJEGsKfskFBh/IagQQAJ6akuFqdgZimt5a
+c+LilkgVy2vtMpe1+4Xd/w9ko6WRH4lXQW64RdrF5nLji61AIiOc26jgjSyDslrX
+jcsgjgxeXj8PnMyA+wKJgJQhEt9fW0uvGVr6PBeRcwPteaO7wyenOzSUbie47jw3
+dVhACHwr4Dl75JeSwKkKnqfzWbLovYYyVzKFa1dwX+GSzf9rJhT6ooM30ktfrOIq
+EhjpHVl8+gkc8kYKJ/yxepKmYCdeFVD7Tixf0+DZfvAu9brynsSyLtOjJMBrYy+b
+iDCaTIcQAfqtdC2tT+GvUZFYPN7EuT7GugO7dU2p1x2oDuVQENu2jB7GhMcEU/zo
++DMY4Fk94KfWYxpTKvH7Z2Nh33ETMlCk8RFbQoeq3FEByQylP2RifOV7BgyTugOP
+HyP9iqVFkYr9fdi0POJsgO+z0lM4ogRzNk4SYucoH8EZR+bGaTWI6Y0PFe2U3GJE
+8TThC+i0BYwD8FeTuF7xwaDDTBh9z6OeLIMj2M0YgxCUdLmhwwvrcAR7yFAHB4OF
+WQOR8K0DZJK5nBtBwiIsl7Oeh7m2vquU3+hV6Re6VmyGisH0WMrfl5IdJs1oMyyc
+AA5kBssMJqOIOVF5KZsafBSW3OG7xbmF/hNA6cJMmvSDXax69k/eYAH4Uk4MX8m6
+ZGs7Ibn/LbgXcM6jdzDFLOHfulZ/
+=GBzo
+-----END PGP PUBLIC KEY BLOCK-----


[11/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35267 Updated unit test - made it easier to read, and now we're also testing GridColumnHeaderGroup.containsGlobalCoordinates(). For the test to pass I've improved the logic in GridHeaderViewLayout

Posted by jm...@apache.org.
FLEX-35267 Updated unit test - made it easier to read, and now we're also testing GridColumnHeaderGroup.containsGlobalCoordinates(). For the test to pass I've improved the logic in GridHeaderViewLayout.getHeaderIndexAt() which, in turn, made a few functions redundant in GridColumnHeaderGroup. All tests currently pass.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/56abc7db
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/56abc7db
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/56abc7db

Branch: refs/heads/master
Commit: 56abc7db27bc79bc313db3f6ab4ab2c14f536a4e
Parents: 5787e9b
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Mar 29 13:16:54 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Mar 29 13:16:54 2017 +0200

----------------------------------------------------------------------
 .../spark/components/GridColumnHeaderGroup.as   |  37 +-----
 .../gridClasses/GridHeaderViewLayout.as         |  21 ++-
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 132 ++++++++++++-------
 3 files changed, 99 insertions(+), 91 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/56abc7db/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
index 0b202b7..02f3aac 100644
--- a/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ b/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -794,7 +794,10 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
 
     public function containsGlobalCoordinates(coordinates:Point):Boolean
     {
-        return areCoordinatesOverAHeaderView(coordinates) || areCoordinatesOverPadding(coordinates);
+        var globalPosition:Point = localToGlobal(new Point(getLayoutBoundsX(), getLayoutBoundsY()));
+        var bounds:Rectangle = new Rectangle(globalPosition.x, globalPosition.y, getLayoutBoundsWidth(), getLayoutBoundsHeight());
+
+        return bounds.containsPoint(coordinates);
     }
 
     public function areCoordinatesOverAHeaderView(coordinates:Point):Boolean
@@ -802,38 +805,6 @@ public class GridColumnHeaderGroup extends Group implements IDataGridElement
         return getHeaderViewUnderGlobalCoordinates(coordinates) != null;
     }
 
-    public function areCoordinatesOverPadding(coordinates:Point):Boolean
-    {
-        return areCoordinatesOverLeftPadding(coordinates) || areCoordinatesOverTopPadding(coordinates) || areCoordinatesOverBottomPadding(coordinates);
-    }
-
-    public function areCoordinatesOverLeftPadding(coordinates:Point):Boolean
-    {
-        var paddingLeftStyle:Number = getStyle("paddingLeft");
-        var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
-
-        return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
-                getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x + paddingLeft, coordinates.y)) != null;
-    }
-    
-    public function areCoordinatesOverTopPadding(coordinates:Point):Boolean
-    {
-        var paddingTopStyle:Number = getStyle("paddingTop");
-        var paddingTop:Number = isNaN(paddingTopStyle) ? 0 : paddingTopStyle;
-
-        return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
-        getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y + paddingTop)) != null;
-    }
-
-    public function areCoordinatesOverBottomPadding(coordinates:Point):Boolean
-    {
-        var paddingBottomStyle:Number = getStyle("paddingBottom");
-        var paddingBottom:Number = isNaN(paddingBottomStyle) ? 0 : paddingBottomStyle;
-
-        return getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y)) == null &&
-        getHeaderViewUnderGlobalCoordinates(new Point(coordinates.x, coordinates.y - paddingBottom)) != null;
-    }
-
     //--------------------------------------------------------------------------
     //
     //  Methods 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/56abc7db/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
index 4eac8c7..cbdf3eb 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
@@ -503,21 +503,18 @@ public class GridHeaderViewLayout extends LayoutBase
         var headerIndex:int = -1;
         var globalPoint:Point = gridColumnHeaderGroup.localToGlobal(new Point(x, y));
 
-        if(gridColumnHeaderGroup.containsGlobalCoordinates(globalPoint))
+        if(gridColumnHeaderGroup.areCoordinatesOverAHeaderView(globalPoint))
         {
-            if (!gridColumnHeaderGroup.areCoordinatesOverPadding(globalPoint))
-            {
-                var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
-                var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
+            var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
+            var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
 
-                headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft + horizontalScrollPosition, y);
+            headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft + horizontalScrollPosition, y);
 
-                if(headerIndex == -1)
-                {
-                    //then the point is either over the right padding, over the width of the vertical
-                    //scroll bar, or over the space between the last separator and the width of the grid
-                    headerIndex = grid.getPreviousVisibleColumnIndex(columnsView.length);
-                }
+            if(headerIndex == -1)
+            {
+                //then the point is either over the right padding, over the width of the vertical
+                //scroll bar, or over the space between the last separator and the width of the grid
+                headerIndex = grid.getPreviousVisibleColumnIndex(columnsView.length);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/56abc7db/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 9c7bd51..1ac5a17 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -99,7 +99,8 @@ package spark.components.gridClasses {
 
         //@TODO add cases with horizontal scroll, and also with fixed columns
         //@TODO we probably have to account for paddingTop and paddingBottom as well
-        public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
+        public static var dimensions:Array = [
+            /*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
             [[10, 0, 300, 5, 0, 5, [25, 150]]],
             [[0, 0, 300, 5, 0, 0, [25, 150]]]
         ];
@@ -148,17 +149,8 @@ package spark.components.gridClasses {
             //then
             assertEquals(expectedColumnIndex, columnIndex);
         }
+*/
 
-        [Ignore]
-        [Test]
-        public function test_header_contains_global_coordinates(globalPoint:Array, headerShouldContainThisPoint:Boolean):void
-        {
-            //when
-            var doesHeaderContainThisPoint:Boolean = _sut.containsGlobalCoordinates(new Point(globalPoint[0], globalPoint[1]));
-
-            //then
-            assertEquals(headerShouldContainThisPoint, doesHeaderContainThisPoint);
-        }*/
 
         [Test(dataProvider="dimensions")]
         public function test_with_no_scroll(dimensions:Array):void
@@ -190,46 +182,75 @@ package spark.components.gridClasses {
             //first, make sure that the dataGrid was rendered correctly
             assertThat("The dataGrid has not yet been correctly rendered on stage", getActualHeaderHeight(_dataGrid) > 0);
 
-            for (var pointName:String in _keyPoints)
+            forEachPoint(assertAssumptionsAboutPoint);
+        }
+
+        private function assertAssumptionsAboutPoint(point:Point, pointName:String, currentTransformation:Matrix):void
             {
-                for (var i:int = 0; i < directions.length; i++)
-                {
-                    //given
-                    var pointToTest:Point = getAdjacentPoint(_keyPoints[pointName], directions[i]);
+            assertThatHeaderContainsPointOrNot(point, pointName, currentTransformation);
+            assertThatHeaderIndexIsCorrect(point, pointName, currentTransformation);
+            assertThatCoordinatesOverHeaderViewOrNot(point, pointName, currentTransformation);
+        }
 
+        private function assertThatHeaderContainsPointOrNot(point:Point, pointName:String, currentTransformation:Matrix):void
+        {
                     //when
-                    var expectedHeaderIndex:int = getHeaderIndexAssumption(pointToTest);
-                    var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(pointToTest);
-                    const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, directions[i], pointToTest, expectedHeaderIndex, actualHeaderIndex);
+            var headerShouldContainThisPoint:Boolean = getHeaderShouldContainPointAssumption(point);
+            var doesHeaderContainThisPoint:Boolean = _sut.containsGlobalCoordinates(point);
+            const errorMessageHeaderContainsPoint:String = getHeaderContainsPointErrorMessage(pointName, currentTransformation, point, headerShouldContainThisPoint, doesHeaderContainThisPoint);
 
-                    var shouldBeContainedInMainHeaderView:Boolean = getMainHeaderViewContainsPointAssumption(pointToTest);
-                    var shouldBeContainedInFixedHeaderView:Boolean = getFixedHeaderViewContainsPointAssumption(pointToTest);
+            //then
+            assertEquals(errorMessageHeaderContainsPoint, headerShouldContainThisPoint, doesHeaderContainThisPoint);
+        }
+
+        private function assertThatCoordinatesOverHeaderViewOrNot(point:Point, pointName:String, currentTransformation:Matrix):void
+        {
+            //when
+            var shouldBeContainedInMainHeaderView:Boolean = getMainHeaderViewContainsPointAssumption(point);
+            var shouldBeContainedInFixedHeaderView:Boolean = getFixedHeaderViewContainsPointAssumption(point);
                     const shouldBeContainedInAHeaderView:Boolean = shouldBeContainedInMainHeaderView || shouldBeContainedInFixedHeaderView;
-                    var actuallyContainedInAHeaderView:Boolean = _sut.areCoordinatesOverAHeaderView(pointToTest);
-                    const errorMessageHeaderViewContainsPoint:String = getHeaderContainsPointErrorMessage(pointName, directions[i], pointToTest, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
+            var actuallyContainedInAHeaderView:Boolean = _sut.areCoordinatesOverAHeaderView(point);
+            const errorMessageHeaderViewContainsPoint:String = getHeaderViewContainsPointErrorMessage(pointName, currentTransformation, point, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
 
                     //then
-                    assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
                     assertEquals(errorMessageHeaderViewContainsPoint, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
                 }
-            }
+
+        private function assertThatHeaderIndexIsCorrect(point:Point, pointName:String, currentTransformation:Matrix):void
+        {
+            //when
+            var expectedHeaderIndex:int = getHeaderIndexAssumption(point);
+            var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(point);
+            const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, currentTransformation, point, expectedHeaderIndex, actualHeaderIndex);
+
+            //then
+            assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
         }
 
         private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
-                    + (expectedColumnHeaderIndex == -1 ? "outside any header bounds" : "inside the column header with index " + expectedColumnHeaderIndex)
+                    + (expectedColumnHeaderIndex == -1 ? "outside any column header bounds" : "inside the column header with index " + expectedColumnHeaderIndex)
                     + " but was mistakenly found to be "
-                    + (actualColumnHeaderIndex == -1 ? "outside any header bounds" : "inside the column header with index " + actualColumnHeaderIndex
+                    + (actualColumnHeaderIndex == -1 ? "outside any column header bounds" : "inside the column header with index " + actualColumnHeaderIndex
                     + "\n DEBUG INFO: headerRectangles=" + columnHeaderRectangles);
         }
 
         private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
-                    + (shouldBeContainedInHeader ? "within " : "outside ") + "a header view"
+                    + (shouldBeContainedInHeader ? "within " : "outside ") + "the header bounds"
                     + " but was mistakenly found to be "
                     + (isActuallyContainedInHeader ? "within" : "outside")
+                    + "\n DEBUG INFO: header rectangle=" + entireHeaderRectangle;
+        }
+
+        private function getHeaderViewContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInAHeaderView:Boolean, isActuallyContainedByAHeaderView:Boolean):String
+        {
+            return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
+                    + (shouldBeContainedInAHeaderView ? "within " : "outside ") + "a header view"
+                    + " but was mistakenly found to be "
+                    + (isActuallyContainedByAHeaderView ? "within" : "outside")
                     + "\n DEBUG INFO: header views=" + fixedHeaderViewRectangle + "; " + mainHeaderViewRectangle;
         }
 
@@ -239,7 +260,7 @@ package spark.components.gridClasses {
             return _sut.getHeaderIndexAt(localPoint.x, localPoint.y);
         }
 
-        private function getHeaderContainsPointAssumption(point:Point):Boolean
+        private function getHeaderShouldContainPointAssumption(point:Point):Boolean
         {
             return rectangleContainsPoint(entireHeaderRectangle, point);
         }
@@ -343,7 +364,8 @@ package spark.components.gridClasses {
         private function generateVisibleHeaderRectangle(keyPoints:Array, dimensions:Array):Rectangle
         {
             const topLeftCorner:Point = keyPoints["b0"];
-            return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints), getHeaderHeightFromKeyPoints(keyPoints));
+            const bottomRightCorner:Point = keyPoints["i"];
+            return new Rectangle(topLeftCorner.x, topLeftCorner.y, bottomRightCorner.x - topLeftCorner.x, bottomRightCorner.y - topLeftCorner.y);
         }
 
         private function generateHeaderColumnRectangles(keyPoints:Array, dimensions:Array):Array
@@ -368,6 +390,26 @@ package spark.components.gridClasses {
             return headerRectangles;
         }
 
+        private function forEachPoint(assertThat_:Function):void
+        {
+            for (var pointName:String in _keyPoints)
+            {
+                for (var i:int = 0; i < directions.length; i++)
+                {
+                    assertThat_(getAdjacentPoint(_keyPoints[pointName], directions[i]), pointName, directions[i]);
+                }
+            }
+        }
+
+
+        private function getActualHeaderHeight(grid:DataGrid):Number
+        {
+            //Note that we're assuming the grid is on stage and validated by this point!
+            return grid.columnHeaderGroup.height;
+        }
+
+        /* key rectangles getters */
+
         private function get columnHeaderRectangles():Array
         {
             return _keyRectangles[COLUMN_HEADER_RECTANGLES];
@@ -388,12 +430,26 @@ package spark.components.gridClasses {
             return _keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] as Rectangle;
         }
 
+        /* key points getters */
+
         private function getColumnWidthFromKeyPoints(keyPoints:Array, columnIndex:int):Number
         {
             //we're assuming columnIndex has a valid value
             return Point(keyPoints["c" + (columnIndex + 1)]).x - Point(keyPoints["c" + columnIndex]).x;
         }
 
+        private function getHeaderHeightFromKeyPoints(keyPoints:Array):Number
+        {
+            return Point(keyPoints["i"]).y - Point(keyPoints["d"]).y;
+        }
+
+        private function getHeaderWidthFromKeyPoints(keyPoints:Array):Number
+        {
+            return Point(keyPoints["d"]).x - Point(keyPoints["b0"]).x;
+        }
+
+        /* dimensions getters */
+
         private function getX(dimensions:Array):Number
         {
             return dimensions[0];
@@ -424,22 +480,6 @@ package spark.components.gridClasses {
             return dimensions[5];
         }
 
-        private function getActualHeaderHeight(grid:DataGrid):Number
-        {
-            //Note that we're assuming the grid is on stage and validated by this point!
-            return grid.columnHeaderGroup.height;
-        }
-
-        private function getHeaderHeightFromKeyPoints(keyPoints:Array):Number
-        {
-            return Point(keyPoints["i"]).y - Point(keyPoints["d"]).y;
-        }
-
-        private function getHeaderWidthFromKeyPoints(keyPoints:Array):Number
-        {
-            return Point(keyPoints["d"]).x - Point(keyPoints["b0"]).x;
-        }
-
         private function getColumnWidths(dimensions:Array):Array
         {
             return dimensions[6];


[37/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35362 CAUSE: the DropDownController signals that the DropDownListBase is open immediately, even before the latter has actually made that change on stage. Since the opening takes one or two frames,

Posted by jm...@apache.org.
FLEX-35362 CAUSE: the DropDownController signals that the DropDownListBase is open immediately, even before the latter has actually made that change on stage. Since the opening takes one or two frames, it leaves a few milliseconds in which code which relies on that open/closed state erroneously assumes that it can use elements that should be on stage or initialized. In this case it's the layout property, which, due to the skin of the DropDownList, is only initialized once the drop down is actually open.

SOLUTION: we check whether the layout is not-null, and if it is, we select items in the list as if it were closed.

NOTES:
-also edited some comments, simplified Array instantiation, and removed an empty constructor.
-now the unit test will pass.


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

Branch: refs/heads/master
Commit: 4c60183258caf23020d7398f6d2ffdab747d0e56
Parents: 23a306c
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Oct 18 14:56:22 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Oct 18 14:56:22 2017 +0200

----------------------------------------------------------------------
 .../flatspark/src/flatspark/utils/ColorUtils.as     | 16 ++++------------
 .../components/supportClasses/DropDownListBase.as   |  3 +--
 .../src/spark/components/supportClasses/ListBase.as |  6 +++---
 3 files changed, 8 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4c601832/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as b/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
index 09f9cb2..e9007c3 100644
--- a/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
+++ b/frameworks/projects/flatspark/src/flatspark/utils/ColorUtils.as
@@ -45,15 +45,10 @@ package flatspark.utils
 		public static const Concrete:uint = 0x95A5A6;
 		public static const Asbestos:uint = 0x7F8C8D;
 		
-		public function ColorUtils()
-		{
-			
-		}		
-		
 		public static function ButtonColor(brand:int, estado:State):uint
 		{
 			// All the possible colors
-			var cores:Array = new Array(
+			var cores:Array = [
 				ButtonColorEnum.PrimaryUp, ButtonColorEnum.PrimaryHover, ButtonColorEnum.PrimaryDown, ButtonColorEnum.PrimaryDisabled,
 				ButtonColorEnum.SuccessUp, ButtonColorEnum.SuccessHover, ButtonColorEnum.SuccessDown, ButtonColorEnum.SuccessDisabled,
 				ButtonColorEnum.WarningUp, ButtonColorEnum.WarningHover, ButtonColorEnum.WarningDown, ButtonColorEnum.WarningDisabled,
@@ -61,7 +56,7 @@ package flatspark.utils
 				ButtonColorEnum.DefaultUp, ButtonColorEnum.DefaultHover, ButtonColorEnum.DefaultDown, ButtonColorEnum.DefaultDisabled,
 				ButtonColorEnum.InfoUp, ButtonColorEnum.InfoHover, ButtonColorEnum.InfoDown, ButtonColorEnum.InfoDisabled,
 				ButtonColorEnum.DangerUp, ButtonColorEnum.DangerHover, ButtonColorEnum.DangerDown, ButtonColorEnum.DangerDisabled
-				);
+				];
 			
 			// Map all the allowed states
 			var numeroEstado:int = 1;
@@ -80,11 +75,8 @@ package flatspark.utils
 					numeroEstado = 3;
 					break;
 			}
-			
-			var posicao:int = 1;
-			posicao = 4 * (brand - 1) + (numeroEstado - 1); 
-			
-			return cores[posicao];
+
+			return cores[4 * (brand - 1) + (numeroEstado - 1)];
 		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4c601832/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as b/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
index aaba442..c80c2b4 100644
--- a/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
+++ b/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as
@@ -900,7 +900,7 @@ public class DropDownListBase extends List
             var proposedNewIndex:int = NO_SELECTION;
             var currentIndex:int;
                         
-            if (isDropDownOpen)
+            if (isDropDownOpen && layout)
             {   
                 // Normalize the proposed index for getNavigationDestinationIndex
                 currentIndex = userProposedSelectedIndex < NO_SELECTION ? NO_SELECTION : userProposedSelectedIndex;
@@ -992,7 +992,6 @@ public class DropDownListBase extends List
         {
             event.preventDefault();
         }
-        
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4c601832/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as b/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
index e700d0d..fbe1050 100644
--- a/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ b/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -1877,9 +1877,9 @@ public class ListBase extends SkinnableDataContainer implements IDataProviderEnh
         
         // We want to wait one frame after validation has occured before turning off 
         // selection transitions again.  We tried using dataGroup's updateComplete event listener, 
-        // but because some validateNows() occur (before all of the event handling code has finished), 
-        // this was occuring too early.  We also tried just using callLater or ENTER_FRAME, but that 
-        // occurs before the LayoutManager has run, so we add an ENTER_FRAME handler with a 
+        // but because some validateNow() calls occur (before all of the event handling code has
+        // finished), this was occurring too early.  We also tried just using callLater or ENTER_FRAME,
+        // but that occurs before the LayoutManager has run, so we add an ENTER_FRAME handler with a
         // low priority to make sure it occurs after the LayoutManager pass.
         systemManager.addEventListener(Event.ENTER_FRAME, allowSelectionTransitions_enterFrameHandler, false, -100);
     }


[44/50] git commit: [flex-sdk] [refs/heads/master] - add AwesomeUtils

Posted by jm...@apache.org.
add AwesomeUtils


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/35103c64
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/35103c64
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/35103c64

Branch: refs/heads/master
Commit: 35103c64c318c60a4abbc988ae94dac01f9623da
Parents: 0b9764c
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 3 14:29:08 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 3 14:29:08 2017 -0700

----------------------------------------------------------------------
 LICENSE | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/35103c64/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index 3faa057..3de99e1 100644
--- a/LICENSE
+++ b/LICENSE
@@ -258,6 +258,9 @@ see frameworks/projects/flatspark/src/flatspark/assets/fonts/awesome
 The Lato font is available under OFL. For details
 see frameworks/projects/flatspark/src/flatspark/assets/fonts/lato
 
+The AwesomeUtils is available under MIT. For details
+see frameworks/projects/flatspark/src/flatspark/utils/AwesomeUtils.as
+
 This product includes a fork of Apache Batik which includes files available under
 the 2002 W3C Software license.  For details, see 
 modules/thirdparty/batik/LICENSE.W3C2002.


[21/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 test_object_removed_from_stage_via_user_action_is_not_initialized() needed one more frame to complete (made sure it fails without the proposed fix, and passes with it). Also made some variab

Posted by jm...@apache.org.
FLEX-35321 test_object_removed_from_stage_via_user_action_is_not_initialized() needed one more frame to complete (made sure it fails without the proposed fix, and passes with it). Also made some variable and function renames, plus now we can also test how many times each validation function has been called.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/75b4d39d
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/75b4d39d
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/75b4d39d

Branch: refs/heads/master
Commit: 75b4d39d806d6a3bef3cd123493fe4b718f9b2c3
Parents: f475aed
Author: Mihai Chira <mi...@apache.org>
Authored: Sat Jun 10 11:52:14 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Sat Jun 10 11:52:14 2017 +0200

----------------------------------------------------------------------
 .../managers/LayoutManager_FLEX_35321_Tests.as  | 135 +++++++++++++------
 1 file changed, 96 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/75b4d39d/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
index a23d002..1fef434 100644
--- a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
+++ b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -19,101 +19,108 @@ package mx.managers {
         private static var noEnterFramesRemaining:int = NaN;
         private static const _finishNotifier:EventDispatcher = new EventDispatcher();
 
-        private var _objectWhichIsRemovedOnSizeValidation:SomeComponent;
+        private var _objectWhichIsRemovedAtValidation:SomeComponent;
         private var _creationCompleteCalls:int;
 
         [Before]
         public function setUp():void
         {
             _creationCompleteCalls = 0;
-            _objectWhichIsRemovedOnSizeValidation = new SomeComponent();
-            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
-            UIImpersonator.addElement(_objectWhichIsRemovedOnSizeValidation);
+            _objectWhichIsRemovedAtValidation = new SomeComponent();
+            _objectWhichIsRemovedAtValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+            UIImpersonator.addChild(_objectWhichIsRemovedAtValidation);
         }
 
         [After]
         public function tearDown():void
         {
             UIImpersonator.removeAllChildren();
-            _objectWhichIsRemovedOnSizeValidation = null;
+            _objectWhichIsRemovedAtValidation = null;
         }
 
+
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------
+
+
         [Test]
         public function test_object_removed_from_stage_via_code_is_not_initialized():void
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = false;
-            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = true;
+            _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = true;
 
             //when
-            _objectWhichIsRemovedOnSizeValidation.validateNow();
+            _objectWhichIsRemovedAtValidation.validateNow();
 
             //then
-            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
+            then_assert_not_initialized();
         }
 
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------
+
+
         [Test(async, timeout=500)]
         public function test_object_removed_from_stage_via_user_action_is_not_initialized():void
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
-            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = false;
+            _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = false;
 
             //when
-            _objectWhichIsRemovedOnSizeValidation.invalidateDisplayList();
-            _objectWhichIsRemovedOnSizeValidation.invalidateProperties();
-            _objectWhichIsRemovedOnSizeValidation.invalidateSize();
+            _objectWhichIsRemovedAtValidation.invalidateDisplayList();
+            _objectWhichIsRemovedAtValidation.invalidateProperties();
+            _objectWhichIsRemovedAtValidation.invalidateSize();
 
             //then wait 1 frame
             noEnterFramesRemaining = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_in_next_frame, 300);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, then_assert_not_initialized);
         }
 
-        private function then_remove_from_stage_in_next_frame(event:Event, passThroughData:Object):void
-        {
-            //when
-            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemovalInNextFrame();
 
-            //then wait 2 frames
-            noEnterFramesRemaining = 2;
-            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert_not_initialized, 300);
-        }
 
-        private function then_assert_not_initialized(event:Event, passThroughData:Object):void
-        {
-            //then
-            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
-        }
 
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------
 
         [Test(async, timeout=750)]
         public function test_object_removed_from_stage_then_readded_is_initialized_once():void
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
-            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = false;
+            _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = false;
 
             //when
-            _objectWhichIsRemovedOnSizeValidation.validateNow();
-            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemovalInNextFrame();
+            _objectWhichIsRemovedAtValidation.invalidateDisplayList();
+            _objectWhichIsRemovedAtValidation.invalidateProperties();
+            _objectWhichIsRemovedAtValidation.invalidateSize();
 
             //then wait 1 frame
             noEnterFramesRemaining = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_readd_object, 200);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, then_readd_object);
         }
 
         private function then_readd_object(event:Event, passThroughData:Object):void
         {
             //then
-            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedAtValidation.parent);
 
             //when
-            UIImpersonator.addElement(_objectWhichIsRemovedOnSizeValidation);
+            UIImpersonator.addElement(_objectWhichIsRemovedAtValidation);
 
             //then wait 4 frames, to make sure validation is done
             noEnterFramesRemaining = 4;
@@ -124,11 +131,43 @@ package mx.managers {
         private function then_assert_one_initialization_only(event:Event, passThroughData:Object):void
         {
             //then
-            assertNotNull("The object should be on stage...", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertNotNull("The object should be on stage...", _objectWhichIsRemovedAtValidation.parent);
             assertEquals("When validation is interrupted half-way it should be complete once the object is re-added to stage", 1, _creationCompleteCalls);
         }
 
 
+        //--------------------------------------------------------------------------
+        //
+        //  Shared test methods
+        //
+        //--------------------------------------------------------------------------
+
+        private function then_remove_from_stage_via_callLater(event:Event, passThroughData:Object):void
+        {
+            //then
+            assertEquals("The first validation step should have completed by now", 1, _objectWhichIsRemovedAtValidation.numValidatePropertiesCalls);
+            assertEquals("But not validateSize()", 0, _objectWhichIsRemovedAtValidation.numValidateSizeCalls);
+            assertEquals("Nor validateDisplayList()", 0, _objectWhichIsRemovedAtValidation.numValidateDisplayListCalls);
+
+            //given
+            const whereToGoNext:Function = passThroughData as Function;
+
+            //when
+            _objectWhichIsRemovedAtValidation.pretendUserAskedForComponentRemovalInNextFrame();
+
+            //then wait 2 frames
+            noEnterFramesRemaining = 3;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, whereToGoNext, 300);
+        }
+
+        private function then_assert_not_initialized(event:Event = null, passThroughData:Object = null):void
+        {
+            //then
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedAtValidation.parent);
+            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
+        }
+
 
 
         private static function onEnterFrame(event:Event):void
@@ -147,19 +186,20 @@ package mx.managers {
     }
 }
 
-import flash.events.TimerEvent;
-import flash.utils.Timer;
-
 import mx.core.IVisualElementContainer;
 import mx.core.UIComponent;
 
 class SomeComponent extends UIComponent
 {
     private var _removeFromStageOnValidateProperties:Boolean = false;
+    private var _numValidatePropertiesCalls:int = 0;
+    private var _numValidateSizeCalls:int = 0;
+    private var _numValidateDisplayListCalls:int = 0;
 
     override public function validateProperties():void
     {
         super.validateProperties();
+        _numValidatePropertiesCalls++;
         if(_removeFromStageOnValidateProperties)
             removeFromStage();
     }
@@ -167,11 +207,13 @@ class SomeComponent extends UIComponent
     override public function validateSize(recursive:Boolean = false):void
     {
         super.validateSize(recursive);
+        _numValidateSizeCalls++;
     }
 
     override public function validateDisplayList():void
     {
         super.validateDisplayList();
+        _numValidateDisplayListCalls++;
     }
 
     private function removeFromStage():void
@@ -194,4 +236,19 @@ class SomeComponent extends UIComponent
     {
         _removeFromStageOnValidateProperties = value;
     }
+
+    public function get numValidateDisplayListCalls():int
+    {
+        return _numValidateDisplayListCalls;
+    }
+
+    public function get numValidateSizeCalls():int
+    {
+        return _numValidateSizeCalls;
+    }
+
+    public function get numValidatePropertiesCalls():int
+    {
+        return _numValidatePropertiesCalls;
+    }
 }
\ No newline at end of file


[29/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-18746 Added unit test (current fails).

Posted by jm...@apache.org.
FLEX-18746 Added unit test (current fails).


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

Branch: refs/heads/master
Commit: f804380f10e725aa90fee6c2ab998b3db30fe705
Parents: fea9be9
Author: Mihai Chira <mi...@apache.org>
Authored: Mon Aug 14 19:56:14 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Mon Aug 14 19:56:14 2017 +0200

----------------------------------------------------------------------
 .../tests/mx/controls/Tree_FLEX_18746_Tests.as  | 112 +++++++++++++++++++
 1 file changed, 112 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f804380f/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
new file mode 100644
index 0000000..5d64b06
--- /dev/null
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
@@ -0,0 +1,112 @@
+package mx.controls {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+
+    import mx.collections.ArrayCollection;
+    import mx.core.mx_internal;
+
+    import org.flexunit.assertThat;
+    import org.flexunit.async.Async;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    use namespace mx_internal;
+
+    public class Tree_FLEX_18746_Tests
+    {
+        private static var noEnterFramesToWait:int = NaN;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
+        private static var _sut:Tree;
+        private static var child:Object = {label: "Item"};
+        private static var parent0:Object = {label: "Folder 0", children: new ArrayCollection()};
+        private static var parent1:Object = {label: "Folder 1", children: new ArrayCollection([child])};
+
+
+        [Before]
+        public function setUp():void
+        {
+            _sut = new Tree();
+            _sut.width = 200;
+            _sut.height = 200;
+            UIImpersonator.addChild(_sut);
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            UIImpersonator.removeAllChildren();
+            _sut = null;
+        }
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------
+
+        [Test(async, timeout=1000)]
+        public function test_object_removed_from_stage_via_code_is_not_initialized():void
+        {
+            //given
+            const dataProvider:ArrayCollection = new ArrayCollection();
+            dataProvider.addItem(parent0);
+            dataProvider.addItem(parent1);
+
+            //when
+            _sut.dataProvider = dataProvider;
+
+            //then wait a few frames
+            noEnterFramesToWait = 2;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_second_folder, 200);
+        }
+
+
+        private function then_expand_second_folder(event:Event, passThroughData:Object):void
+        {
+            //when
+            _sut.expandItem(parent1, true, true, true);
+
+            //then wait a bit
+            noEnterFramesToWait = 5;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_move_child_to_first_parent_and_expand_it, 500);
+        }
+
+        private function then_move_child_to_first_parent_and_expand_it(event:Event, passThroughData:Object):void
+        {
+            //then
+            assertThat(_sut.isItemOpen(parent1));
+
+            //when
+            ArrayCollection(parent1.children).removeItemAt(0);
+            _sut.expandItem(parent0, true, true, true);
+            ArrayCollection(parent0.children).addItem(child);
+
+            //then wait a bit
+            noEnterFramesToWait = 1;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_contract_second_folder, 200);
+        }
+
+        private static function then_contract_second_folder(event:Event, passThroughData:Object):void
+        {
+            //when
+            _sut.expandItem(parent1, false, true, true);
+
+            //then no error was thrown
+            assertThat(true);
+        }
+
+
+        private static function onEnterFrame(event:Event):void
+        {
+            if(!--noEnterFramesToWait)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+        }
+    }
+}
\ No newline at end of file


[10/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35260 Now we are taking into account paddingTop and paddingBottom in getHeaderIndexAt(). Unit test updated as well (and passes, including a second data grid configuration).

Posted by jm...@apache.org.
FLEX-35260 Now we are taking into account paddingTop and paddingBottom in getHeaderIndexAt(). Unit test updated as well (and passes, including a second data grid configuration).


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/5787e9ba
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/5787e9ba
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/5787e9ba

Branch: refs/heads/master
Commit: 5787e9baf653d3c4f0a7664cb5baaf2103f8387d
Parents: 6bc7ad5
Author: Mihai Chira <mi...@apache.org>
Authored: Thu Mar 16 15:18:10 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Thu Mar 16 15:18:10 2017 +0100

----------------------------------------------------------------------
 .../gridClasses/GridHeaderViewLayout.as         |   2 +-
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 111 ++++++++++---------
 2 files changed, 61 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/5787e9ba/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
index ef79a02..4eac8c7 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
@@ -505,7 +505,7 @@ public class GridHeaderViewLayout extends LayoutBase
 
         if(gridColumnHeaderGroup.containsGlobalCoordinates(globalPoint))
         {
-            if(!gridColumnHeaderGroup.areCoordinatesOverLeftPadding(globalPoint))
+            if (!gridColumnHeaderGroup.areCoordinatesOverPadding(globalPoint))
             {
                 var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
                 var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/5787e9ba/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index dad721d..9c7bd51 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -17,34 +17,35 @@ package spark.components.gridClasses {
     /*
      Example for two-column table (with no horizontal scroll):
 
+     [pt]: GridColumnHeaderGroup padding top
      [pl]: GridColumnHeaderGroup padding left
      [lch]: still part of last column header, but beyond last column width
-     c0: first column header starts here
-     c1: first column header ends here, second column header (if it exists) starts, and column separator is here
-     c2: second column header ends here; second column separator is here
-     ...
-     cx: last column header ends here; last column separator is here
 
-     d0: first column ends at this x-axis coordinate (but the first header doesn't, due to [pl])
-     d1: second column ends at this x-axis coordinate
+     b0: top-left corner of the data grid. Also, first column starts at this x-coordinate
+     b1: first column ends at this x-coordinate (but the first header usually doesn't, due to [pl])
+     b2: second column ends at this x-coordinate (but the second header usually doesn't, due to [pl])
      ...
-     dx: last column ends at this x-axis coordinate
-
-     e: table ends at this x-axis coordinate
+     bx: last column ends at this x-coordinate
 
-     f0: header ends and grid starts at this y-coordinate
-     f1: first column ends here and second column (if it exists) begins here
-     f2: second column ends here and third column (if it exists) begins here
+     c0: first column header starts at this x-coordinate
+     c1: first column header ends at this x-coordinate, separator starts at this x-coordinate, and
+         second column header (if it exists) starts at this x-coordinate + separator.width
+     c1: second column header ends at this x-coordinate, next separator (if it exists) starts at
+     this x-coordinate, and third column header (if it exists) starts at this x-coordinate + separator.width
      ...
-     fx: last column ends here
+     cx: last column header ends at this x-coordinate; last column separator starts at this x-coordinate
+
+     d: table ends at this x-axis coordinate
+     e: top-left corner of header. If [pt] and [pl] are 0, this coincides with b0
+     f: b0ttom-left corner of header. If [pb] and [pl] are 0, this coincides with g0
 
-     g0: bottom-left point of first column header
-     g1: bottom-right point of first column header
-     g2: bottom-right point of second column header
+     g0: header ends and grid starts at this y-coordinate
+     g1: first column ends at this x-coordinate and second column (if it exists) begins at this x-coordinate
+     g2: second column ends at this x-coordinate and third column (if it exists) begins at this x-coordinate
      ...
-     gx: bottom-right point of (last column header - [lch])
+     gx: last column ends at this x-coordinate
 
-     h: bottom-right point of last column header and x-coordinate at end of data grid
+     i: bottom-right point of last column header and x-coordinate at end of data grid
 
      And for each point we generate the 8 adjacent points:
      (x+1, y), (x+1, y+1), (x+1, y-1),
@@ -55,11 +56,13 @@ package spark.components.gridClasses {
 
      a (0, 0)
      ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
-     ░░░░░b════c0══════d0═══c1════════════════════════════d1══c2═════════e░░░░░░░
-     ░░░░░║▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓║░░░░░░░
+     ░░░░░b0═══c0══════b1═══c1════════════════════════════b2══c2═════════d░░░░░░░
+     ░░░░░║                              [pt]                            ║░░░░░░░
+     ░░░░░║    e▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓║░░░░░░░
      ░░░░░║[pl]║▓▓▓INDEX▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓NAME▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓[lch]▓▓║░░░░░░░
-     ░░░░░║▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓║░░░░░░░
-     ░░░░░f0═══g0══════f1═══g1════════════════════════════f2══g2═════════h░░░░░░░
+     ░░░░░║    f▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║▓▓▓▓▓▓▓▓▓▓║░░░░░░░
+     ░░░░░║                              [pb]                            ║░░░░░░░
+     ░░░░░g0═══════════g1═════════════════════════════════g2═════════════i░░░░░░░
      ░░░░░║     01     ║     John                         ║              ║░░░░░░░
      ░░░░░║     02     ║     Jane                         ║              ║░░░░░░░
      ░░░░░║     03     ║     Judy                         ║              ║░░░░░░░
@@ -85,7 +88,7 @@ package spark.components.gridClasses {
         private static const directions:Array = [ITSELF, N, NE, E, SE, S, SW, W, NW];
 
         private static const COLUMN_HEADER_RECTANGLES:String = "columnHeaderRectangles";
-        private static const ENTIRE_HEADER_RECTANGLE:String = "headerRectangle";
+        private static const ENTIRE_HEADER_RECTANGLE:String = "headerRectangle"; //includes padding
         private static const MAIN_HEADER_VIEW_RECTANGLE:String = "mainHeaderViewRectangle";
         private static const FIXED_HEADER_VIEW_RECTANGLE:String = "fixedHeaderViewRectangle";
 
@@ -94,11 +97,11 @@ package spark.components.gridClasses {
         private var _keyRectangles:Array;
         private var _keyPoints:Array;
 
+        //@TODO add cases with horizontal scroll, and also with fixed columns
         //@TODO we probably have to account for paddingTop and paddingBottom as well
-        //@TODO add cases with horizontal scroll, with fixed columns, and RTL
-        public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, [column widths] */
-            [[10, 0, 300, 5, 0, [25, 150]]],
-            [[0, 0, 300, 5, 0, [25, 150]]]
+        public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
+            [[10, 0, 300, 5, 0, 5, [25, 150]]],
+            [[0, 0, 300, 5, 0, 0, [25, 150]]]
         ];
 
 
@@ -167,6 +170,7 @@ package spark.components.gridClasses {
 
             _dataGrid.columnHeaderGroup.setStyle("paddingLeft", getHeaderPaddingLeft(dimensions));
             _dataGrid.columnHeaderGroup.setStyle("paddingTop", getHeaderPaddingTop(dimensions));
+            _dataGrid.columnHeaderGroup.setStyle("paddingBottom", getHeaderPaddingBottom(dimensions));
 
             var gridColumns:Array = [];
             for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
@@ -237,7 +241,7 @@ package spark.components.gridClasses {
 
         private function getHeaderContainsPointAssumption(point:Point):Boolean
         {
-            return rectangleContainsPoint(headerRectangle, point);
+            return rectangleContainsPoint(entireHeaderRectangle, point);
         }
 
         private function getFixedHeaderViewContainsPointAssumption(point:Point):Boolean
@@ -282,20 +286,16 @@ package spark.components.gridClasses {
             //TODO this code does not yet account for horizontal scrolling!
 
             keyPoints["a"] = new Point(0, 0);
-            keyPoints["b"] = new Point(getX(dimensions), getY(dimensions));
+            keyPoints["b0"] = new Point(getX(dimensions), getY(dimensions));
+            generateColumnIntermediates(keyPoints, dimensions, "b0");
             keyPoints["c0"] = new Point(getX(dimensions) + getHeaderPaddingLeft(dimensions), getY(dimensions));
             generateColumnIntermediates(keyPoints, dimensions, "c0");
-            keyPoints["d0"] = new Point(getX(dimensions) + getColumnWidths(dimensions)[0], getY(dimensions));
-            generateColumnIntermediates(keyPoints, dimensions, "d0");
-            keyPoints["e"] = new Point(getX(dimensions) + getWidth(dimensions), getY(dimensions));
-
-            const yUnderHeader:Number = getY(dimensions) + getActualHeaderHeight(grid);
-            keyPoints["f0"] = new Point(getX(dimensions), yUnderHeader);
-            generateColumnIntermediates(keyPoints, dimensions, "f0");
-            keyPoints["g0"] = new Point(getX(dimensions) + getHeaderPaddingLeft(dimensions), yUnderHeader);
+            keyPoints["d"] = new Point(getX(dimensions) + getWidth(dimensions), getY(dimensions));
+            keyPoints["e"] = new Point(Point(keyPoints["c0"]).x, getY(dimensions) + getHeaderPaddingTop(dimensions));
+            keyPoints["f"] = new Point(Point(keyPoints["c0"]).x, getY(dimensions) + getActualHeaderHeight(grid) - getHeaderPaddingBottom(dimensions));
+            keyPoints["g0"] = new Point(getX(dimensions), getY(dimensions) + getActualHeaderHeight(grid));
             generateColumnIntermediates(keyPoints, dimensions, "g0");
-            keyPoints["h"] = new Point(getX(dimensions) + getWidth(dimensions), yUnderHeader);
-
+            keyPoints["i"] = new Point(getX(dimensions) + getWidth(dimensions), Point(keyPoints["g0"]).y);
             return keyPoints;
         }
 
@@ -327,20 +327,22 @@ package spark.components.gridClasses {
         private function generateMainHeaderViewRectangle(keyPoints:Array, dimensions:Array):Rectangle
         {
             //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which is holds the non-fixed columns; padding excluded
-            const topLeftCorner:Point = keyPoints["c0"];
-            return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints) - getHeaderPaddingLeft(dimensions), getHeaderHeightFromKeyPoints(keyPoints));
+            const topLeftCorner:Point = keyPoints["e"];
+            return new Rectangle(topLeftCorner.x, topLeftCorner.y,
+                    getHeaderWidthFromKeyPoints(keyPoints) - getHeaderPaddingLeft(dimensions),
+                    getHeaderHeightFromKeyPoints(keyPoints) - getHeaderPaddingTop(dimensions) - getHeaderPaddingBottom(dimensions));
         }
 
         private function generateFixedHeaderViewRectangle(keyPoints:Array, dimensions:Array):Rectangle
         {
             //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which is holds the non-fixed columns; padding excluded
-            const topLeftCorner:Point = keyPoints["b"];
+            const topLeftCorner:Point = keyPoints["e"];
             return new Rectangle(topLeftCorner.x, topLeftCorner.y, 0, 0);
         }
 
         private function generateVisibleHeaderRectangle(keyPoints:Array, dimensions:Array):Rectangle
         {
-            const topLeftCorner:Point = keyPoints["b"];
+            const topLeftCorner:Point = keyPoints["b0"];
             return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints), getHeaderHeightFromKeyPoints(keyPoints));
         }
 
@@ -348,18 +350,20 @@ package spark.components.gridClasses {
         {
             var headerRectangles:Array = [];
 
-            const headerHeight:Number = getHeaderHeightFromKeyPoints(keyPoints);
+            const headerPaddingTop:Number = getHeaderPaddingTop(dimensions);
+            const headerPaddingBottom:Number = getHeaderPaddingBottom(dimensions);
+            const headerHeight:Number = getHeaderHeightFromKeyPoints(keyPoints) - headerPaddingTop - headerPaddingBottom;
             for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
             {
                 var topLeft:Point = keyPoints["c" + i];
                 var topRight:Point = keyPoints["c" + (i+1)];
-                headerRectangles.push(new Rectangle(topLeft.x, topLeft.y, topRight.x - topLeft.x, headerHeight));
+                headerRectangles.push(new Rectangle(topLeft.x, topLeft.y + headerPaddingTop, topRight.x - topLeft.x, headerHeight));
             }
 
             //correct last header rectangle to extend to grid boundaries. This is one of the issues which prompted
             //this unit test in the first place.
             var lastHeaderRectangle:Rectangle = headerRectangles[headerRectangles.length - 1];
-            lastHeaderRectangle.width = Point(keyPoints["e"]).x - lastHeaderRectangle.x;
+            lastHeaderRectangle.width = Point(keyPoints["d"]).x - lastHeaderRectangle.x;
 
             return headerRectangles;
         }
@@ -369,7 +373,7 @@ package spark.components.gridClasses {
             return _keyRectangles[COLUMN_HEADER_RECTANGLES];
         }
 
-        private function get headerRectangle():Rectangle
+        private function get entireHeaderRectangle():Rectangle //includes padding
         {
             return _keyRectangles[ENTIRE_HEADER_RECTANGLE] as Rectangle;
         }
@@ -415,6 +419,11 @@ package spark.components.gridClasses {
             return dimensions[4];
         }
 
+        private function getHeaderPaddingBottom(dimensions:Array):Number
+        {
+            return dimensions[5];
+        }
+
         private function getActualHeaderHeight(grid:DataGrid):Number
         {
             //Note that we're assuming the grid is on stage and validated by this point!
@@ -423,17 +432,17 @@ package spark.components.gridClasses {
 
         private function getHeaderHeightFromKeyPoints(keyPoints:Array):Number
         {
-            return Point(keyPoints["h"]).y - Point(keyPoints["e"]).y;
+            return Point(keyPoints["i"]).y - Point(keyPoints["d"]).y;
         }
 
         private function getHeaderWidthFromKeyPoints(keyPoints:Array):Number
         {
-            return Point(keyPoints["e"]).x - Point(keyPoints["b"]).x;
+            return Point(keyPoints["d"]).x - Point(keyPoints["b0"]).x;
         }
 
         private function getColumnWidths(dimensions:Array):Array
         {
-            return dimensions[5];
+            return dimensions[6];
         }
 
         private function getColumnWidth(dimensions:Array, columnIndex:int):Number


[04/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35260 GridHeaderViewLayout.getHeaderIndexAt() (which calls GridDimensions.getColumnIndexAt()) used to return a valid headerIndex (when it was expected to return -1) for an y < 0. Fixed.

Posted by jm...@apache.org.
FLEX-35260 GridHeaderViewLayout.getHeaderIndexAt() (which calls GridDimensions.getColumnIndexAt()) used to return a valid headerIndex (when it was expected to return -1) for an y < 0. Fixed.


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

Branch: refs/heads/master
Commit: f985937c08a261e8da91c0fc8a905ca0ddbbc842
Parents: 2adccce
Author: Mihai Chira <mi...@apache.org>
Authored: Fri Mar 10 18:21:44 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Fri Mar 10 18:21:44 2017 +0100

----------------------------------------------------------------------
 .../gridClasses/GridDimensionsView.as           |  4 ++--
 .../gridClasses/GridHeaderViewLayout.as         | 25 +++++++++++---------
 2 files changed, 16 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f985937c/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensionsView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensionsView.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensionsView.as
index fe7b55a..e5444a6 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensionsView.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensionsView.as
@@ -225,9 +225,9 @@ public class GridDimensionsView
         return rowIndex >= 0 ? rowIndex : -1;
     }
     
-    public function getColumnIndexAt(viewX:Number, viewY:Number):int
+    public function getColumnIndexAt(localX:Number, localY:Number):int
     {
-        const columnIndex:int = gridDimensions.getColumnIndexAt(viewX + viewOriginX, viewY + viewOriginY) - viewColumnIndex;
+        const columnIndex:int = gridDimensions.getColumnIndexAt(localX + viewOriginX, localY + viewOriginY) - viewColumnIndex;
         return columnIndex >= 0 ? columnIndex : -1;
     }
     

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f985937c/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
index 4dd36b8..ef79a02 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridHeaderViewLayout.as
@@ -503,21 +503,24 @@ public class GridHeaderViewLayout extends LayoutBase
         var headerIndex:int = -1;
         var globalPoint:Point = gridColumnHeaderGroup.localToGlobal(new Point(x, y));
 
-        if(!gridColumnHeaderGroup.areCoordinatesOverLeftPadding(globalPoint))
+        if(gridColumnHeaderGroup.containsGlobalCoordinates(globalPoint))
         {
-            var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
-            var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
-        
-            headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft + horizontalScrollPosition, y);
-
-            if(headerIndex == -1 && gridColumnHeaderGroup.containsGlobalCoordinates(globalPoint))
+            if(!gridColumnHeaderGroup.areCoordinatesOverLeftPadding(globalPoint))
             {
-                //then the point is either over the right padding, over the width of the vertical
-                //scroll bar, or over the space between the last separator and the width of the grid
-                headerIndex = grid.getPreviousVisibleColumnIndex(columnsView.length);
+                var paddingLeftStyle:Number = gridColumnHeaderGroup.getStyle("paddingLeft");
+                var paddingLeft:Number = isNaN(paddingLeftStyle) ? 0 : paddingLeftStyle;
+
+                headerIndex = gridView.gridViewLayout.gridDimensionsView.getColumnIndexAt(x - paddingLeft + horizontalScrollPosition, y);
+
+                if(headerIndex == -1)
+                {
+                    //then the point is either over the right padding, over the width of the vertical
+                    //scroll bar, or over the space between the last separator and the width of the grid
+                    headerIndex = grid.getPreviousVisibleColumnIndex(columnsView.length);
+                }
             }
         }
-        
+
         return headerIndex;
     }
     


[23/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 CAUSE: If a component is removed from stage during a validation cycle, the LayoutManager nevertheless sets its initialized flag to true, even if it's not on stage anymore. That's because it

Posted by jm...@apache.org.
FLEX-35321 CAUSE: If a component is removed from stage during a validation cycle, the LayoutManager nevertheless sets its initialized flag to true, even if it's not on stage anymore. That's because it doesn't check at the end whether the component is still on stage.

SOLUTION: Now the LayoutManager verifies that the component is still on stage before initializing it.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/9c5cbbe5
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/9c5cbbe5
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/9c5cbbe5

Branch: refs/heads/master
Commit: 9c5cbbe553c9d8afe7982f3ba4bf178ee563bf35
Parents: 442b5f8
Author: Mihai Chira <mi...@apache.org>
Authored: Sat Jun 10 13:36:47 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Sat Jun 10 13:36:47 2017 +0200

----------------------------------------------------------------------
 .../framework/src/mx/managers/LayoutManager.as  | 28 ++++++++++++--------
 1 file changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/9c5cbbe5/frameworks/projects/framework/src/mx/managers/LayoutManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/managers/LayoutManager.as b/frameworks/projects/framework/src/mx/managers/LayoutManager.as
index feebeff..d070203 100644
--- a/frameworks/projects/framework/src/mx/managers/LayoutManager.as
+++ b/frameworks/projects/framework/src/mx/managers/LayoutManager.as
@@ -846,11 +846,14 @@ public class LayoutManager extends EventDispatcher implements ILayoutManager
 			var obj:ILayoutManagerClient = ILayoutManagerClient(updateCompleteQueue.removeLargest());
             while (obj)
             {
-                if (!obj.initialized && obj.processedDescriptors)
-                    obj.initialized = true;
-                if (obj.hasEventListener(FlexEvent.UPDATE_COMPLETE))
-                    obj.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
-                obj.updateCompletePendingFlag = false;
+                if(obj.nestLevel)
+                {
+                    if (!obj.initialized && obj.processedDescriptors)
+                        obj.initialized = true;
+                    if (obj.hasEventListener(FlexEvent.UPDATE_COMPLETE))
+                        obj.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
+                    obj.updateCompletePendingFlag = false;
+                }
                 obj = ILayoutManagerClient(updateCompleteQueue.removeLargest());
             }
 
@@ -1094,12 +1097,15 @@ public class LayoutManager extends EventDispatcher implements ILayoutManager
                 obj = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(target));
                 while (obj)
                 {
-                    if (!obj.initialized)
-                        obj.initialized = true;
-                    
-                    if (obj.hasEventListener(FlexEvent.UPDATE_COMPLETE))
-                        obj.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
-                    obj.updateCompletePendingFlag = false;
+                    if(obj.nestLevel)
+                    {
+                        if (!obj.initialized)
+                            obj.initialized = true;
+
+                        if (obj.hasEventListener(FlexEvent.UPDATE_COMPLETE))
+                            obj.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
+                        obj.updateCompletePendingFlag = false;
+                    }
                     obj = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(target));
                 }
             }


[16/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35306 Reverting the fix for FLEX-19651 because it introduced the FLEX-35306 regression.

Posted by jm...@apache.org.
FLEX-35306 Reverting the fix for FLEX-19651 because it introduced the FLEX-35306 regression.

CAUSE: Due to the fix for FLEX-19651, when the data provider is reset on a (DropDown)List right after the selected item (from this new data provider) is set, a validation cycle is forced on the list immediately before the new data provider is assigned to it. As a consequence, ListBase.commitProperties() fails when trying to find the selected item in the data provider (because, for now, it's still the old one, which doesn't have the new item), thus clearing the selection. But if the list had requireSelection set to true, then the first item in the old provider will be selected nonetheless. And if there was a two-way binding between the list and the model, then the model will at this point be rewritten, most probably wrongly.

SOLUTION: we're reverting the fix for FLEX-19651, which was a minor bug, and seeing if any mustella or unit tests fail. If so, we'll find other ways to fix FLEX-19651.

NOTES: FLEX-19651 doesn't have enough data to reproduce it, so I can't know for sure if it's still there or not. But after playing a bit with multiple selection and data provider changes, as the ticket suggests, there doesn't appear to be any major difference.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/59cefd8e
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/59cefd8e
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/59cefd8e

Branch: refs/heads/master
Commit: 59cefd8e3f5aa8c252f8e06bb5a4a27f95509ef4
Parents: d726aee
Author: Mihai Chira <mi...@apache.org>
Authored: Wed May 17 13:31:23 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed May 17 13:31:23 2017 +0200

----------------------------------------------------------------------
 .../projects/spark/src/spark/components/List.as | 29 --------------------
 1 file changed, 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/59cefd8e/frameworks/projects/spark/src/spark/components/List.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/List.as b/frameworks/projects/spark/src/spark/components/List.as
index c457c5b..d122821 100644
--- a/frameworks/projects/spark/src/spark/components/List.as
+++ b/frameworks/projects/spark/src/spark/components/List.as
@@ -630,36 +630,7 @@ public class List extends ListBase implements IFocusManagerComponent
         super.useVirtualLayout = value;
     }
     
-    //----------------------------------
-    //  dataProvider
-    //----------------------------------
 
-    [Inspectable(category="Data")]
-    
-    /**
-     *  @private
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override public function set dataProvider(value:IList):void
-    {
-        // Uconditionally clear the selection, see SDK-21645.  Can't wait
-        // to commit the selection because it could be set again before
-        // commitProperties runs and that selection gets lost.
-        if (!isEmpty(_proposedSelectedIndices) || !isEmpty(selectedIndices))
-        {
-            _proposedSelectedIndices.length = 0;
-            multipleSelectionChanged = true;
-            invalidateProperties();
-            UIComponentGlobals.layoutManager.validateClient(this, true);
-        }
-        super.dataProvider = value;
-    }
-        
-        
     //--------------------------------------------------------------------------
     //
     //  Properties


[38/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35364 - Fix issue where "air-setup-mac" target launched their dependents targets on windows before checking condition (it is default ant behavior) - Fix some merge issue

Posted by jm...@apache.org.
FLEX-35364 - Fix issue where "air-setup-mac" target launched their dependents targets on windows before checking condition (it is default ant behavior)
- Fix some merge issue


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/7cd99a7a
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/7cd99a7a
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/7cd99a7a

Branch: refs/heads/master
Commit: 7cd99a7a0b3e69c409ad6b2f837d817412e9a766
Parents: 4c60183
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Wed Oct 25 14:25:02 2017 +0200
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Wed Oct 25 14:25:02 2017 +0200

----------------------------------------------------------------------
 installer.xml | 41 +++++++++++------------------------------
 1 file changed, 11 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7cd99a7a/installer.xml
----------------------------------------------------------------------
diff --git a/installer.xml b/installer.xml
index 38ace4f..c22be85 100644
--- a/installer.xml
+++ b/installer.xml
@@ -351,7 +351,7 @@
         <antcall target="air-get" />
 
         <antcall target="air-setup-win" />
-        <antcall target="air-setup-mac" />
+		<antcall target="air-setup-mac-init" />
         
     </target>
 
@@ -377,7 +377,7 @@
             <param name="md5" value="${air.sdk.url.md5}" />
         </antcall>
     </target>
-    
+	
     <target name="air-setup-win" if="isWindows">
         <unzip src="${download.dir}/${air.sdk.url.file}" dest="${download.dir}/airsdk" />
         <echo>${INFO_FINISHED_UNZIPPING} ${download.dir}/${air.sdk.url.file}</echo>
@@ -419,13 +419,8 @@
     	<echo message="Should unzip: ${shouldUnzip}"/>
     </target>
 
-<<<<<<< HEAD
-    <target name="unzipAIRSDK" if="${shouldUnzip}" depends="unzipOrMountDMG">
-=======
-    <target name="unzipAIRSDK" if="${shouldUnzip}">
->>>>>>> release4.16.0
+	<target name="unzipAIRSDK" if="${shouldUnzip}">
     	<echo message="Unzipping"/>
-
     	<!--The tbz2 contains symlinks which Ant does not preserve
         <untar compression="bzip2" src="${download.dir}/${air.sdk.url.file}" dest="${download.dir}/airsdk" />-->
         
@@ -443,27 +438,17 @@
         <delete file="${basedir}/airtar.properties" />
     </target>
     
-<<<<<<< HEAD
-	<target name="mountAIRSDK" unless="${shouldUnzip}" depends="unzipOrMountDMG">
-		<echo message="Mounting dmg"/>
-		<exec executable="/usr/bin/hdiutil" os="Mac OS X" failonerror="true">
-	      <arg value="attach"/>
-=======
 	<target name="mountAIRSDK" unless="${shouldUnzip}">
 		<echo message="Mounting dmg"/>
+		<echo message="IS WINDOWS: ${isWindows}, IS MAC: ${isMac}" />
 		<exec executable="/usr/bin/hdiutil" os="Mac OS X" failonerror="true">
 	      <arg value="attach"/>
 	      <arg value="-nobrowse"/>
->>>>>>> release4.16.0
 	      <arg value="${download.dir}/airsdk/${air.sdk.url.file}"/>
 	    </exec>
 	</target>
 
-<<<<<<< HEAD
-	<target name="copyFromMount" unless="${shouldUnzip}" depends="mountAIRSDK">
-=======
-	<target name="copyFromMount" unless="${shouldUnzip}">
->>>>>>> release4.16.0
+	<target name="copyFromMount" unless="${shouldUnzip}">
 		<echo message="Copying AIR SDK from mounted volume"/>
 		<exec executable="rsync" dir="${FLEX_HOME}">
             <arg value="--archive" />
@@ -474,11 +459,7 @@
         </exec>
 	</target>
 
-<<<<<<< HEAD
-	<target name="unmountAIRSDK" unless="${shouldUnzip}" depends="copyFromMount">
-=======
-	<target name="unmountAIRSDK" unless="${shouldUnzip}">
->>>>>>> release4.16.0
+	<target name="unmountAIRSDK" unless="${shouldUnzip}">
 		<echo message="Unmounting AIR SDK"/>
 		<exec executable="/usr/bin/hdiutil" os="Mac OS X" failonerror="false">
 	      <arg value="unmount"/>
@@ -486,11 +467,11 @@
 	    </exec>
 	</target>
     
-<<<<<<< HEAD
-    <target name="air-setup-mac" depends="unzipAIRSDK,mountAIRSDK,copyFromMount,unmountAIRSDK" unless="isWindows">
-=======
-    <target name="air-setup-mac" depends="unzipOrMountDMG,unzipAIRSDK,mountAIRSDK,copyFromMount,unmountAIRSDK" unless="isWindows">
->>>>>>> release4.16.0
+	<target name="air-setup-mac-init" if="isMac">
+		<antcall target="air-setup-mac" />
+	</target>
+	
+	<target name="air-setup-mac" depends="unzipOrMountDMG,unzipAIRSDK,mountAIRSDK,copyFromMount,unmountAIRSDK">
         <antcall target="mac-copy-file">
             <param name="srcdir" value="." />
             <param name="filename" value="AIR SDK license.pdf"/>


[48/50] git commit: [flex-sdk] [refs/heads/master] - Add information to use Extension Manager CS6 which fix problem with hang of Extension Manager CS5 on Windows 10

Posted by jm...@apache.org.
Add information to use Extension Manager CS6 which fix problem with hang of Extension Manager CS5 on Windows 10


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

Branch: refs/heads/master
Commit: f1fac8fcb5d94465f84650b8c3e1de76691a2531
Parents: d242fd9
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Thu Nov 9 00:21:56 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Thu Nov 9 00:21:56 2017 +0100

----------------------------------------------------------------------
 README | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f1fac8fc/README
----------------------------------------------------------------------
diff --git a/README b/README
index 0bd9999..7aee7d1 100644
--- a/README
+++ b/README
@@ -215,6 +215,10 @@ flash-integration.
 On Windows, download the Adobe Extension Manager from:
 
     http://download.macromedia.com/pub/dw_exchange/extension_manager/win/AdobeExtensionManager5All.zip
+	
+On Windows 10, download the Adobe Extension Manager CS6 from:
+
+	http://download.macromedia.com/pub/dw_exchange/extension_manager/win/AdobeExtensionManager6_0_8All.zip
 
 and set ADOBE_EXTENSION_MANAGER to the absolute path of
 'Adobe Extension Manager CS5.exe'


[42/50] git commit: [flex-sdk] [refs/heads/master] - More version updates

Posted by jm...@apache.org.
More version updates


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/0e0220da
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/0e0220da
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/0e0220da

Branch: refs/heads/master
Commit: 0e0220da3495be9b859dc25e19d84ee7b18e8881
Parents: d474c80
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Mon Oct 30 22:00:31 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Mon Oct 30 22:00:31 2017 +0100

----------------------------------------------------------------------
 .../projects/framework/src/mx/core/FlexVersion.as   | 16 +++++++++++++++-
 .../flex2/compiler/common/MxmlConfiguration.java    |  6 ++++--
 2 files changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/0e0220da/frameworks/projects/framework/src/mx/core/FlexVersion.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/core/FlexVersion.as b/frameworks/projects/framework/src/mx/core/FlexVersion.as
index 08650af..6eca239 100644
--- a/frameworks/projects/framework/src/mx/core/FlexVersion.as
+++ b/frameworks/projects/framework/src/mx/core/FlexVersion.as
@@ -58,7 +58,21 @@ public class FlexVersion
      */
     public static const CURRENT_VERSION:uint = 0x04100000;
 	
-		/** 
+	/** 
+	 *  The <code>compatibilityVersion</code> value of Flex 4.16.1,
+	 *  encoded numerically as a <code>uint</code>.
+	 *  Code can compare this constant against
+	 *  the <code>compatibilityVersion</code>
+	 *  to implement version-specific behavior.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 11
+	 *  @playerversion AIR 3
+	 *  @productversion Apache Flex 4.16.1
+	 */
+	public static const VERSION_4_16_1:uint = 0x04100001;
+	
+	/** 
 	 *  The <code>compatibilityVersion</code> value of Flex 4.16,
 	 *  encoded numerically as a <code>uint</code>.
 	 *  Code can compare this constant against

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/0e0220da/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java b/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java
index 08a9c0c..1614611 100644
--- a/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java
+++ b/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java
@@ -46,6 +46,8 @@ public class MxmlConfiguration
     //
     // 'compiler.mxml.compatibility-version' option
     //
+	public static final int VERSION_4_16_1 = 0x04100001;
+	public static final int VERSION_4_16 = 0x04100000;
     public static final int VERSION_4_15 = 0x040f0000;
     public static final int VERSION_4_14_1 = 0x040e0001;
 	public static final int VERSION_4_14 = 0x040e0000;
@@ -63,10 +65,10 @@ public class MxmlConfiguration
     public static final int VERSION_3_0 = 0x03000000;
     public static final int VERSION_2_0_1 = 0x02000001;
     public static final int VERSION_2_0 = 0x02000000;
-    public static final int CURRENT_VERSION = VERSION_4_15;
+    public static final int CURRENT_VERSION = VERSION_4_16_1;
     public static final int EARLIEST_MAJOR_VERSION = 3;
     public static final int LATEST_MAJOR_VERSION = 4;
-    public static final int LATEST_MINOR_VERSION = 15;
+    public static final int LATEST_MINOR_VERSION = 16;
 
 	private int major = LATEST_MAJOR_VERSION;
 	private int minor = LATEST_MINOR_VERSION;


[13/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35267 Updated unit test to support horizontal scrolling and two new grid profiles. Currently tests fail, but for perplexing reasons (seems like a failure to validate, despite the unit test calling

Posted by jm...@apache.org.
FLEX-35267 Updated unit test to support horizontal scrolling and two new grid profiles. Currently tests fail, but for perplexing reasons (seems like a failure to validate, despite the unit test calling validateNow() way too many times...).


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/7d3073bb
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/7d3073bb
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/7d3073bb

Branch: refs/heads/master
Commit: 7d3073bb34cf4a5853039bab63e6df8d1f47cd65
Parents: a1c61c5
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Apr 5 18:33:03 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Apr 5 18:33:03 2017 +0200

----------------------------------------------------------------------
 .../spark/src/spark/components/Scroller.as      |   4 +-
 .../GridHeaderViewLayout_FLEX_35260_Tests.as    | 313 ++++++++++++-------
 2 files changed, 200 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7d3073bb/frameworks/projects/spark/src/spark/components/Scroller.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/Scroller.as b/frameworks/projects/spark/src/spark/components/Scroller.as
index 3ca9155..4db6528 100644
--- a/frameworks/projects/spark/src/spark/components/Scroller.as
+++ b/frameworks/projects/spark/src/spark/components/Scroller.as
@@ -759,8 +759,8 @@ public class Scroller extends SkinnableComponent
     
     /**
      *  @private
-     *  These are the minimum and maximum scroll possitions allowed
-     *  for both axes.  They determine the points at which bounce and
+     *  These are the minimum and maximum scroll positions allowed
+     *  for both axes. They determine the points at which bounce and
      *  pull occur.
      */
     private var minVerticalScrollPosition:Number = 0;

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/7d3073bb/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 5bc24b4..3fb4b92 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -1,4 +1,7 @@
 package spark.components.gridClasses {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+
     import flash.geom.Matrix;
     import flash.geom.Point;
     import flash.geom.Rectangle;
@@ -8,6 +11,8 @@ package spark.components.gridClasses {
     import org.flexunit.assertThat;
 
     import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.async.Async;
     import org.flexunit.runners.Parameterized;
     import org.fluint.uiImpersonation.UIImpersonator;
 
@@ -87,22 +92,28 @@ package spark.components.gridClasses {
         private static const ITSELF:Matrix = new Matrix(1, 0, 0, 1, 0, 0); //the point, unmodified
         private static const directions:Array = [ITSELF, N, NE, E, SE, S, SW, W, NW];
 
-        private static const COLUMN_HEADER_RECTANGLES:String = "columnHeaderRectangles";
-        private static const COLUMN_RECTANGLES:String = "columnRectangles";
-        private static const ENTIRE_HEADER_RECTANGLE:String = "headerRectangle"; //includes padding
-        private static const MAIN_HEADER_VIEW_RECTANGLE:String = "mainHeaderViewRectangle";
+        private static const ENTIRE_HEADER_RECTANGLE:String = "visibleHeaderRectangle"; //includes padding
         private static const FIXED_HEADER_VIEW_RECTANGLE:String = "fixedHeaderViewRectangle";
 
+        private static const NO_ENTER_FRAMES_TO_ALLOW:int = 2;
+
         private static var _dataGrid:DataGrid;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
 
         private var _keyRectangles:Array;
         private var _keyPoints:Array;
+        private var _dimensions:Array;
+        private var _noEnterFramesRemaining:int = NaN;
 
-        //@TODO add cases with horizontal scroll, and also with fixed columns
-        public static var dimensions:Array = [
+        //@TODO add cases with fixed columns
+        //@TODO can the grid itself have padding?
+        //@TODO test with a columnGap as well
+        public static var allDimensions:Array = [
             /*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
             [[/*x=*/    0, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   0, /*columnWidths=*/[25, 150]]],
             [[/*x=*/   10, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   5, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/    0, /*y=*/   0, /*width=*/   200, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   0, /*columnWidths=*/[80, 150]]], //horizontal scroll
+            [[/*x=*/    0, /*y=*/   0, /*width=*/   100, /*paddingLeft=*/   0, /*paddingTop=*/  0, /*paddingBottom=*/   0, /*columnWidths=*/[10, 110, 15]]], //horizontal scroll
             [[/*x=*/   -5, /*y=*/-100, /*width=*/   200, /*paddingLeft=*/  25, /*paddingTop=*/ 12, /*paddingBottom=*/   5, /*columnWidths=*/[100, 150]]] //horizontal scroll
         ];
 
@@ -134,11 +145,12 @@ package spark.components.gridClasses {
         {
             _keyRectangles = null;
             _keyPoints = null;
+            _dimensions = null;
         }
 
 
-        [Test(dataProvider="dimensions")]
-        public function test_with_no_scroll(dimensions:Array):void
+        [Test(dataProvider="allDimensions", async, timeout=3000)]
+        public function test_ltr(dimensions:Array):void
         {
             //given
             _dataGrid.width = getWidth(dimensions);
@@ -158,24 +170,71 @@ package spark.components.gridClasses {
             }
             _dataGrid.columns = new ArrayCollection(gridColumns);
 
+            _dataGrid.columnHeaderGroup.invalidateDisplayList();
+            _dataGrid.columnHeaderGroup.validateNow();
+            _dataGrid.grid.validateNow();
             _dataGrid.validateNow();
 
-            _keyPoints = generateKeyPoints(dimensions, _dataGrid);
-            _keyRectangles = generateKeyRectangles(_keyPoints, dimensions);
+            _dimensions = dimensions;
+            _keyPoints = generateKeyPoints(_dataGrid);
+            _keyRectangles = generateKeyRectangles();
 
+            _noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, doTests, 3000);
+        }
+
+        private function doTests(event:Event, passThroughData:Object):void
+        {
             //then
             //first, make sure that the dataGrid was rendered correctly
             assertThat("The dataGrid has not yet been correctly rendered on stage", getActualHeaderHeight(_dataGrid) > 0);
 
-            forEachPoint(assertAssumptionsAboutPoint);
+            //test the assumption about the center column header view location
+            var centerGridViewLocation:Point = GridHeaderLayout(_dataGrid.columnHeaderGroup.layout).centerGridColumnHeaderView.localToGlobal(new Point(0, 0));
+            assertTrue("The location of the centerGridColumnHeaderView does not reflect the columnHeaderGroup's padding rules! It's located at the global coordinates " +
+                    centerGridViewLocation + ", but it should be at " + _keyPoints["e"],
+                    centerGridViewLocation.equals(_keyPoints["e"]));
+
+            forEachPointAndScrollLocation(assertAssumptionsAboutPoint);
         }
 
-        private function assertAssumptionsAboutPoint(point:Point, pointName:String, currentTransformation:Matrix):void
+        private function forEachPointAndScrollLocation(assertThat_:Function):void
+        {
+            _dataGrid.columnHeaderGroup.invalidateDisplayList();
+            _dataGrid.columnHeaderGroup.validateNow();
+            _dataGrid.grid.validateNow();
+            _dataGrid.validateNow();
+
+            var maxScroll:Number = Math.max(1, getTotalColumnWidths(_dimensions) - getWidth(_dimensions) - getHeaderPaddingLeft(_dimensions));
+            for (var i:int = 0; i < maxScroll; i++)
             {
+                _dataGrid.grid.horizontalScrollPosition = i;
+                _dataGrid.columnHeaderGroup.invalidateDisplayList();
+                _dataGrid.columnHeaderGroup.validateNow();
+                _dataGrid.grid.validateNow();
+                _dataGrid.validateNow();
+
+                for (var pointName:String in _keyPoints)
+                {
+                    for (var j:int = 0; j < directions.length; j++)
+                    {
+                        assertThat_(getAdjacentPoint(_keyPoints[pointName], directions[j]), pointName, directions[j]);
+                        _dataGrid.columnHeaderGroup.invalidateDisplayList();
+                        _dataGrid.columnHeaderGroup.validateNow();
+                        _dataGrid.grid.validateNow();
+                        _dataGrid.validateNow();
+                    }
+                }
+            }
+        }
+
+        private function assertAssumptionsAboutPoint(point:Point, pointName:String, currentTransformation:Matrix):void
+        {
             assertThatHeaderContainsPointOrNot(point, pointName, currentTransformation);
+            assertThatCoordinatesOverHeaderViewOrNot(point, pointName, currentTransformation);
             assertThatHeaderIndexIsCorrect(point, pointName, currentTransformation);
             assertThatColumnIndexIsCorrect(point, pointName, currentTransformation);
-            assertThatCoordinatesOverHeaderViewOrNot(point, pointName, currentTransformation);
         }
 
         private function assertThatHeaderContainsPointOrNot(point:Point, pointName:String, currentTransformation:Matrix):void
@@ -192,11 +251,12 @@ package spark.components.gridClasses {
         private function assertThatCoordinatesOverHeaderViewOrNot(point:Point, pointName:String, currentTransformation:Matrix):void
         {
             //when
-            var shouldBeContainedInMainHeaderView:Boolean = getMainHeaderViewContainsPointAssumption(point);
+            const visibleHeaderViewRectangle:Rectangle = getVisibleHeaderViewRectangle(getCurrentHScrollPosition());
+            var shouldBeContainedInMainHeaderView:Boolean = getMainHeaderViewContainsPointAssumption(visibleHeaderViewRectangle, point);
             var shouldBeContainedInFixedHeaderView:Boolean = getFixedHeaderViewContainsPointAssumption(point);
                     const shouldBeContainedInAHeaderView:Boolean = shouldBeContainedInMainHeaderView || shouldBeContainedInFixedHeaderView;
             var actuallyContainedInAHeaderView:Boolean = _sut.areCoordinatesOverAHeaderView(point);
-            const errorMessageHeaderViewContainsPoint:String = getHeaderViewContainsPointErrorMessage(pointName, currentTransformation, point, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
+            const errorMessageHeaderViewContainsPoint:String = getHeaderViewContainsPointErrorMessage(pointName, currentTransformation, point, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView, visibleHeaderViewRectangle);
 
                     //then
                     assertEquals(errorMessageHeaderViewContainsPoint, shouldBeContainedInAHeaderView, actuallyContainedInAHeaderView);
@@ -205,9 +265,10 @@ package spark.components.gridClasses {
         private function assertThatHeaderIndexIsCorrect(point:Point, pointName:String, currentTransformation:Matrix):void
         {
             //when
-            var expectedHeaderIndex:int = getHeaderIndexAssumption(point);
+            const visibleColumnHeaderRectangles:Array = getVisibleColumnHeaderRectangles(getCurrentHScrollPosition());
+            var expectedHeaderIndex:int = getHeaderIndexAssumption(point, visibleColumnHeaderRectangles);
             var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(point);
-            const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, currentTransformation, point, expectedHeaderIndex, actualHeaderIndex);
+            const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, currentTransformation, point, expectedHeaderIndex, actualHeaderIndex, visibleColumnHeaderRectangles);
 
             //then
             assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
@@ -216,30 +277,33 @@ package spark.components.gridClasses {
         private function assertThatColumnIndexIsCorrect(point:Point, pointName:String, currentTransformation:Matrix):void
         {
             //when
-            var expectedColumnIndex:int = getColumnIndexAssumption(point);
+            const visibleColumnRectangles:Array = getAllColumnRectangles(getCurrentHScrollPosition());
+            var expectedColumnIndex:int = getColumnIndexAssumption(visibleColumnRectangles, point);
             var actualColumnIndex:int = getColumnIndexAtGlobalPoint(point);
-            const errorMessageColumnIndex:String = getColumnIndexErrorMessage(pointName, currentTransformation, point, expectedColumnIndex, actualColumnIndex);
+            const errorMessageColumnIndex:String = getColumnIndexErrorMessage(pointName, currentTransformation, point, expectedColumnIndex, actualColumnIndex, visibleColumnRectangles);
 
             //then
             assertEquals(errorMessageColumnIndex, expectedColumnIndex, actualColumnIndex);
         }
 
-        private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
+        private function getHeaderIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int, visibleColumnHeaderRectangles:Array):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
                     + (expectedColumnHeaderIndex == -1 ? "outside any column header bounds" : "inside the column header with index " + expectedColumnHeaderIndex)
                     + " but was mistakenly found to be "
-                    + (actualColumnHeaderIndex == -1 ? "outside any column header bounds" : "inside the column header with index " + actualColumnHeaderIndex
-                    + "\n DEBUG INFO: headerRectangles=" + columnHeaderRectangles);
+                    + (actualColumnHeaderIndex == -1 ? "outside any column header bounds" : "inside the column header with index " + actualColumnHeaderIndex)
+                    + " given a horizontalScrollPosition of " + getCurrentHScrollPosition()
+                    + "\n DEBUG INFO: visibleColumnHeaderRectangles=" + visibleColumnHeaderRectangles;
         }
 
-        private function getColumnIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int):String
+        private function getColumnIndexErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, expectedColumnHeaderIndex:int, actualColumnHeaderIndex:int, visibleColumnRectangles:Array):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should have its x value "
-                    + (expectedColumnHeaderIndex == -1 ? "outside any column bounds" : "within the column with index " + expectedColumnHeaderIndex)
+                    + (expectedColumnHeaderIndex == -1 ? "outside any column bounds" : "inside the column with index " + expectedColumnHeaderIndex)
                     + " but was mistakenly found to be "
-                    + (actualColumnHeaderIndex == -1 ? "outside any column bounds" : "inside the column with index " + actualColumnHeaderIndex
-                    + "\n DEBUG INFO: columnRectangles=" + columnRectangles);
+                    + (actualColumnHeaderIndex == -1 ? "outside any column bounds" : "inside the column with index " + actualColumnHeaderIndex)
+                    + " given a horizontalScrollPosition of " + getCurrentHScrollPosition()
+                    + "\n DEBUG INFO: columnRectangles=" + visibleColumnRectangles;
         }
 
         private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
@@ -248,16 +312,18 @@ package spark.components.gridClasses {
                     + (shouldBeContainedInHeader ? "within " : "outside ") + "the header bounds"
                     + " but was mistakenly found to be "
                     + (isActuallyContainedInHeader ? "within" : "outside")
+                    + " given a horizontalScrollPosition of " + getCurrentHScrollPosition()
                     + "\n DEBUG INFO: header rectangle=" + entireHeaderRectangle;
         }
 
-        private function getHeaderViewContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInAHeaderView:Boolean, isActuallyContainedByAHeaderView:Boolean):String
+        private function getHeaderViewContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInAHeaderView:Boolean, isActuallyContainedByAHeaderView:Boolean, visibleHeaderViewRectangle:Rectangle):String
         {
             return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
                     + (shouldBeContainedInAHeaderView ? "within " : "outside ") + "a header view"
                     + " but was mistakenly found to be "
                     + (isActuallyContainedByAHeaderView ? "within" : "outside")
-                    + "\n DEBUG INFO: header views=" + fixedHeaderViewRectangle + "; " + mainHeaderViewRectangle;
+                    + " given a horizontalScrollPosition of " + getCurrentHScrollPosition()
+                    + "\n DEBUG INFO: rectangles of visible header views = " + fixedHeaderViewRectangle + "; " + visibleHeaderViewRectangle;
         }
 
         private function getHeaderIndexAtGlobalPoint(globalPoint:Point):int
@@ -282,19 +348,19 @@ package spark.components.gridClasses {
             return rectangleContainsPoint(fixedHeaderViewRectangle, point);
         }
 
-        private function getMainHeaderViewContainsPointAssumption(point:Point):Boolean
+        private function getMainHeaderViewContainsPointAssumption(visibleHeaderViewRectangle:Rectangle, point:Point):Boolean
         {
-            return rectangleContainsPoint(mainHeaderViewRectangle, point);
+            return rectangleContainsPoint(visibleHeaderViewRectangle, point);
         }
 
-        private function getHeaderIndexAssumption(point:Point):int
+        private function getHeaderIndexAssumption(point:Point, visibleColumnHeaderRectangles:Array):int
         {
-            return getIndexOfRectangleWhichContainsPoint(point, columnHeaderRectangles);
+            return getIndexOfRectangleWhichContainsPoint(point, visibleColumnHeaderRectangles);
         }
 
-        private function getColumnIndexAssumption(point:Point):int
+        private function getColumnIndexAssumption(visibleColumnRectangles:Array, point:Point):int
         {
-            return getIndexOfRectangleWhichContainsPoint(point, columnRectangles);
+            return getIndexOfRectangleWhichContainsPoint(point, visibleColumnRectangles);
         }
 
         private function getIndexOfRectangleWhichContainsPoint(point:Point, rectangles:Array):int
@@ -318,22 +384,21 @@ package spark.components.gridClasses {
             return direction.transformPoint(point);
         }
 
-        private function generateKeyPoints(dimensions:Array, grid:DataGrid):Array
+        private function generateKeyPoints(grid:DataGrid):Array
         {
             var keyPoints:Array = [];
-            //TODO this code does not yet account for horizontal scrolling!
 
             keyPoints["a"] = new Point(0, 0);
-            keyPoints["b0"] = new Point(getX(dimensions), getY(dimensions));
-            generateColumnIntermediates(keyPoints, dimensions, "b0");
-            keyPoints["c0"] = new Point(getX(dimensions) + getHeaderPaddingLeft(dimensions), getY(dimensions));
-            generateColumnIntermediates(keyPoints, dimensions, "c0");
-            keyPoints["d"] = new Point(getX(dimensions) + getWidth(dimensions), getY(dimensions));
-            keyPoints["e"] = new Point(Point(keyPoints["c0"]).x, getY(dimensions) + getHeaderPaddingTop(dimensions));
-            keyPoints["f"] = new Point(Point(keyPoints["c0"]).x, getY(dimensions) + getActualHeaderHeight(grid) - getHeaderPaddingBottom(dimensions));
-            keyPoints["g0"] = new Point(getX(dimensions), getY(dimensions) + getActualHeaderHeight(grid));
-            generateColumnIntermediates(keyPoints, dimensions, "g0");
-            keyPoints["i"] = new Point(getX(dimensions) + getWidth(dimensions), Point(keyPoints["g0"]).y);
+            keyPoints["b0"] = new Point(getX(_dimensions), getY(_dimensions));
+            generateColumnIntermediates(keyPoints, _dimensions, "b0");
+            keyPoints["c0"] = new Point(getX(_dimensions) + getHeaderPaddingLeft(_dimensions), getY(_dimensions));
+            generateColumnIntermediates(keyPoints, _dimensions, "c0");
+            keyPoints["d"] = new Point(getX(_dimensions) + getWidth(_dimensions), getY(_dimensions));
+            keyPoints["e"] = new Point(Point(keyPoints["c0"]).x, getY(_dimensions) + getHeaderPaddingTop(_dimensions));
+            keyPoints["f"] = new Point(Point(keyPoints["c0"]).x, getY(_dimensions) + getActualHeaderHeight(grid) - getHeaderPaddingBottom(_dimensions));
+            keyPoints["g0"] = new Point(getX(_dimensions), getY(_dimensions) + getActualHeaderHeight(grid));
+            generateColumnIntermediates(keyPoints, _dimensions, "g0");
+            keyPoints["i"] = new Point(getX(_dimensions) + getWidth(_dimensions), Point(keyPoints["g0"]).y);
             return keyPoints;
         }
 
@@ -350,119 +415,128 @@ package spark.components.gridClasses {
             }
         }
 
-        private function generateKeyRectangles(keyPoints:Array, dimensions:Array):Array
+        private function generateKeyRectangles():Array
         {
             var keyRectangles:Array = [];
 
-            keyRectangles[COLUMN_HEADER_RECTANGLES] = generateHeaderColumnRectangles(keyPoints, dimensions);
-            keyRectangles[COLUMN_RECTANGLES] = generateColumnRectangles(keyPoints, dimensions);
-            keyRectangles[ENTIRE_HEADER_RECTANGLE] = generateVisibleHeaderRectangle(keyPoints, dimensions);
-            keyRectangles[MAIN_HEADER_VIEW_RECTANGLE] = generateMainHeaderViewRectangle(keyPoints, dimensions);
-            keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] = generateFixedHeaderViewRectangle(keyPoints, dimensions);
+            keyRectangles[ENTIRE_HEADER_RECTANGLE] = generateVisibleHeaderRectangle();
+            keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] = generateFixedHeaderViewRectangle();
 
             return keyRectangles;
         }
 
-        private function generateMainHeaderViewRectangle(keyPoints:Array, dimensions:Array):Rectangle
+        private function generateFixedHeaderViewRectangle():Rectangle
         {
             //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which is holds the non-fixed columns; padding excluded
-            const topLeftCorner:Point = keyPoints["e"];
-            return new Rectangle(topLeftCorner.x, topLeftCorner.y,
-                    getHeaderWidthFromKeyPoints(keyPoints) - getHeaderPaddingLeft(dimensions),
-                    getHeaderHeightFromKeyPoints(keyPoints) - getHeaderPaddingTop(dimensions) - getHeaderPaddingBottom(dimensions));
-        }
-
-        private function generateFixedHeaderViewRectangle(keyPoints:Array, dimensions:Array):Rectangle
-        {
-            //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which is holds the non-fixed columns; padding excluded
-            const topLeftCorner:Point = keyPoints["e"];
+            const topLeftCorner:Point = _keyPoints["e"];
             return new Rectangle(topLeftCorner.x, topLeftCorner.y, 0, 0);
         }
 
-        private function generateVisibleHeaderRectangle(keyPoints:Array, dimensions:Array):Rectangle
+        private function generateVisibleHeaderRectangle():Rectangle
         {
-            const topLeftCorner:Point = keyPoints["b0"];
-            const bottomRightCorner:Point = keyPoints["i"];
+            const topLeftCorner:Point = _keyPoints["b0"];
+            const bottomRightCorner:Point = _keyPoints["i"];
             return new Rectangle(topLeftCorner.x, topLeftCorner.y, bottomRightCorner.x - topLeftCorner.x, bottomRightCorner.y - topLeftCorner.y);
         }
 
-        private function generateHeaderColumnRectangles(keyPoints:Array, dimensions:Array):Array
+
+        private function getActualHeaderHeight(grid:DataGrid):Number
         {
-            var headerRectangles:Array = [];
+            //Note that we're assuming the grid is on stage and validated by this point!
+            return grid.columnHeaderGroup.height;
+        }
 
-            const headerPaddingTop:Number = getHeaderPaddingTop(dimensions);
-            const headerPaddingBottom:Number = getHeaderPaddingBottom(dimensions);
-            const headerHeight:Number = getHeaderHeightFromKeyPoints(keyPoints) - headerPaddingTop - headerPaddingBottom;
-            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
-            {
-                var topLeft:Point = keyPoints["c" + i];
-                var topRight:Point = keyPoints["c" + (i+1)];
-                headerRectangles.push(new Rectangle(topLeft.x, topLeft.y + headerPaddingTop, topRight.x - topLeft.x, headerHeight));
-            }
+        private function getCurrentHScrollPosition():Number
+        {
+            return _dataGrid.grid.horizontalScrollPosition;
+        }
 
-            //correct last header rectangle to extend to grid boundaries. This is one of the issues which prompted
-            //this unit test in the first place.
-            var lastHeaderRectangle:Rectangle = headerRectangles[headerRectangles.length - 1];
-            lastHeaderRectangle.width = Point(keyPoints["d"]).x - lastHeaderRectangle.x;
 
-            return headerRectangles;
+        private function getVisibleHeaderViewRectangle(hScrollPosition:Number = 0):Rectangle
+        {
+            //this is the GridColumnHeaderGroup.centerGridColumnHeaderView, which holds the non-fixed columns; padding excluded
+            const topLeftCorner:Point = _keyPoints["e"];
+            return new Rectangle(topLeftCorner.x, topLeftCorner.y,
+                    getHeaderWidthFromKeyPoints(_keyPoints) - getHeaderPaddingLeft(_dimensions),
+                    getHeaderHeightFromKeyPoints(_keyPoints) - getHeaderPaddingTop(_dimensions) - getHeaderPaddingBottom(_dimensions));
         }
 
-        //Note that the height and y of the rectangles doesn't matter until FLEX-35280 is fixed
-        private function generateColumnRectangles(keyPoints:Array, dimensions:Array):Array
+        private function getVisibleColumnHeaderRectangles(hScrollPosition:Number = 0):Array
         {
-            var columnRectangles:Array = [];
+            var headerRectangles:Array = [];
 
-            for (var i:int = 0; i < getColumnWidths(dimensions).length; i++)
+            const headerPaddingTop:Number = getHeaderPaddingTop(_dimensions);
+            const headerPaddingBottom:Number = getHeaderPaddingBottom(_dimensions);
+            const headerHeight:Number = getHeaderHeightFromKeyPoints(_keyPoints) - headerPaddingTop - headerPaddingBottom;
+            const numColumns:uint = getColumnWidths(_dimensions).length;
+            const headerPaddingLeft:Number = getHeaderPaddingLeft(_dimensions);
+            const headerWidth:Number = getWidth(_dimensions) - headerPaddingLeft;
+            const e:Point = _keyPoints["e"];
+            const visibleRectangle:Rectangle = new Rectangle(e.x, e.y, headerWidth, 100);
+            var totalColumnWidths:Number = getTotalColumnWidths(_dimensions);
+            var columnHeaderY:Number = NaN;
+
+            //create the header rectangles from the first visible point on the left until the end
+            for (var i:int = 0; i < numColumns; i++)
             {
-                var topLeft:Point = keyPoints["g" + i];
-                var topRight:Point = keyPoints["g" + (i+1)];
-                columnRectangles.push(new Rectangle(topLeft.x, -10000, topRight.x - topLeft.x, Number.MAX_VALUE));
-            }
+                var topLeft:Point = _keyPoints["c" + i];
+                var topRight:Point = _keyPoints["c" + (i+1)];
+                var topLeftX:Number = topLeft.x - hScrollPosition;
+                var topRightX:Number = topRight.x - hScrollPosition;
 
-            return columnRectangles;
-        }
+                if(isNaN(columnHeaderY))
+                    columnHeaderY = topLeft.y + headerPaddingTop;
 
-        private function forEachPoint(assertThat_:Function):void
-        {
-            for (var pointName:String in _keyPoints)
-            {
-                for (var i:int = 0; i < directions.length; i++)
+                var endsBeforeVisibleRectangle:Boolean = topRightX < visibleRectangle.x;
+                var startsAfterVisibleRectangle:Boolean = topLeftX >= visibleRectangle.x + visibleRectangle.width;
+
+                if(!(endsBeforeVisibleRectangle || startsAfterVisibleRectangle))
                 {
-                    assertThat_(getAdjacentPoint(_keyPoints[pointName], directions[i]), pointName, directions[i]);
+                    const startingX:Number = Math.max(topLeftX, visibleRectangle.x);
+                    const rightEdge:Number = Math.min(topRightX, visibleRectangle.x + visibleRectangle.width);
+                    const width:Number = rightEdge - startingX;
+                    headerRectangles.push(new Rectangle(startingX, columnHeaderY, width, headerHeight));
                 }
             }
-        }
 
+            assertThat("no example has 0 columns, so we expect this Array to have at least one item.", headerRectangles.length > 0);
 
-        private function getActualHeaderHeight(grid:DataGrid):Number
-        {
-            //Note that we're assuming the grid is on stage and validated by this point!
-            return grid.columnHeaderGroup.height;
+            //correct last header rectangle to extend to grid boundaries if the total width of all the columns is smaller
+            //than the grid's width. It is one of the issues which prompted this unit test in the first place.
+            if(totalColumnWidths <= headerWidth)
+            {
+                var lastHeaderRectangle:Rectangle = headerRectangles[headerRectangles.length - 1];
+                lastHeaderRectangle.width = Point(_keyPoints["d"]).x - lastHeaderRectangle.x;
+            }
+
+            return headerRectangles;
         }
 
-        /* key rectangles getters */
 
-        private function get columnHeaderRectangles():Array
+        //Note that the height and y of the rectangles needs to be all-encompassing until FLEX-35280 is fixed
+        private function getAllColumnRectangles(hScrollPosition:Number = 0):Array
         {
-            return _keyRectangles[COLUMN_HEADER_RECTANGLES];
-        }
+            var columnRectangles:Array = [];
+            const numColumns:uint = getColumnWidths(_dimensions).length;
 
-        private function get columnRectangles():Array
-        {
-            return _keyRectangles[COLUMN_RECTANGLES];
+            for (var i:int = 0; i < numColumns; i++)
+            {
+                var topLeft:Point = _keyPoints["g" + i];
+                var topRight:Point = _keyPoints["g" + (i+1)];
+
+                columnRectangles.push(new Rectangle(topLeft.x, -10000, topRight.x - topLeft.x, Number.MAX_VALUE));
+            }
+
+            return columnRectangles;
         }
 
+        /* key rectangles getters */
+
         private function get entireHeaderRectangle():Rectangle //includes padding
         {
             return _keyRectangles[ENTIRE_HEADER_RECTANGLE] as Rectangle;
         }
 
-        private function get mainHeaderViewRectangle():Rectangle
-        {
-            return _keyRectangles[MAIN_HEADER_VIEW_RECTANGLE] as Rectangle;
-        }
-
         private function get fixedHeaderViewRectangle():Rectangle
         {
             return _keyRectangles[FIXED_HEADER_VIEW_RECTANGLE] as Rectangle;
@@ -536,6 +610,15 @@ package spark.components.gridClasses {
         }
 
 
+        private function onEnterFrame(event:Event):void
+        {
+            if(!--_noEnterFramesRemaining)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+        }
+
         private function get _sut():GridColumnHeaderGroup
         {
             return _dataGrid.columnHeaderGroup;


[41/50] git commit: [flex-sdk] [refs/heads/master] - Update version to 4.16.1

Posted by jm...@apache.org.
Update version to 4.16.1


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

Branch: refs/heads/master
Commit: d474c808f6f95dd7caebad21285a35983e7a92cc
Parents: 0f96a26
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Mon Oct 30 21:03:41 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Mon Oct 30 21:03:41 2017 +0100

----------------------------------------------------------------------
 build.properties                                                 | 4 ++--
 frameworks/projects/advancedgrids/src/mx/core/Version.as         | 2 +-
 frameworks/projects/airframework/src/mx/core/Version.as          | 2 +-
 frameworks/projects/airspark/src/spark/core/Version.as           | 2 +-
 frameworks/projects/apache/src/core/Version.as                   | 2 +-
 frameworks/projects/automation/src/mx/core/Version.as            | 2 +-
 frameworks/projects/automation_agent/src/mx/core/Version.as      | 2 +-
 frameworks/projects/automation_air/src/mx/core/Version.as        | 2 +-
 frameworks/projects/automation_dmv/src/mx/core/Version.as        | 2 +-
 .../projects/automation_flashflexkit/src/mx/core/Version.as      | 2 +-
 frameworks/projects/automation_spark/src/mx/core/Version.as      | 2 +-
 frameworks/projects/automation_spark/src/spark/core/Version.as   | 2 +-
 frameworks/projects/charts/src/mx/core/Version.as                | 2 +-
 frameworks/projects/framework/src/mx/core/Version.as             | 2 +-
 frameworks/projects/mx/src/mx/core/Version.as                    | 2 +-
 frameworks/projects/rpc/src/mx/core/Version.as                   | 2 +-
 frameworks/projects/spark/src/spark/core/Version.as              | 2 +-
 frameworks/projects/spark_dmv/src/spark/core/Version.as          | 2 +-
 frameworks/projects/tool/src/mx/core/Version.as                  | 2 +-
 frameworks/projects/tool_air/src/mx/core/Version.as              | 2 +-
 modules/compiler/src/java/flex2/tools/VersionInfo.java           | 2 +-
 21 files changed, 22 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/build.properties
----------------------------------------------------------------------
diff --git a/build.properties b/build.properties
index 0ba13bb..fb505da 100644
--- a/build.properties
+++ b/build.properties
@@ -18,8 +18,8 @@
 ################################################################################
 
 # flex-sdk-description values
-release = Apache Flex 4.16.0
-release.version = 4.16.0
+release = Apache Flex 4.16.1
+release.version = 4.16.1
 
 # override on command line with -Dbuild.number=999 or in local.properties
 build.number = 0

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/advancedgrids/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/advancedgrids/src/mx/core/Version.as b/frameworks/projects/advancedgrids/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/advancedgrids/src/mx/core/Version.as
+++ b/frameworks/projects/advancedgrids/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/airframework/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/airframework/src/mx/core/Version.as b/frameworks/projects/airframework/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/airframework/src/mx/core/Version.as
+++ b/frameworks/projects/airframework/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/airspark/src/spark/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/airspark/src/spark/core/Version.as b/frameworks/projects/airspark/src/spark/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/airspark/src/spark/core/Version.as
+++ b/frameworks/projects/airspark/src/spark/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/apache/src/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/apache/src/core/Version.as b/frameworks/projects/apache/src/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/apache/src/core/Version.as
+++ b/frameworks/projects/apache/src/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation/src/mx/core/Version.as b/frameworks/projects/automation/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/automation/src/mx/core/Version.as
+++ b/frameworks/projects/automation/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation_agent/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation_agent/src/mx/core/Version.as b/frameworks/projects/automation_agent/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/automation_agent/src/mx/core/Version.as
+++ b/frameworks/projects/automation_agent/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation_air/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation_air/src/mx/core/Version.as b/frameworks/projects/automation_air/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/automation_air/src/mx/core/Version.as
+++ b/frameworks/projects/automation_air/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation_dmv/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation_dmv/src/mx/core/Version.as b/frameworks/projects/automation_dmv/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/automation_dmv/src/mx/core/Version.as
+++ b/frameworks/projects/automation_dmv/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as b/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
index 0b10511..9782bf9 100644
--- a/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
+++ b/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
@@ -24,4 +24,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation_spark/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation_spark/src/mx/core/Version.as b/frameworks/projects/automation_spark/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/automation_spark/src/mx/core/Version.as
+++ b/frameworks/projects/automation_spark/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/automation_spark/src/spark/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/automation_spark/src/spark/core/Version.as b/frameworks/projects/automation_spark/src/spark/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/automation_spark/src/spark/core/Version.as
+++ b/frameworks/projects/automation_spark/src/spark/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/charts/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/charts/src/mx/core/Version.as b/frameworks/projects/charts/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/charts/src/mx/core/Version.as
+++ b/frameworks/projects/charts/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/framework/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/core/Version.as b/frameworks/projects/framework/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/framework/src/mx/core/Version.as
+++ b/frameworks/projects/framework/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/mx/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/src/mx/core/Version.as b/frameworks/projects/mx/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/mx/src/mx/core/Version.as
+++ b/frameworks/projects/mx/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/rpc/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/rpc/src/mx/core/Version.as b/frameworks/projects/rpc/src/mx/core/Version.as
index 463469f..158844f 100644
--- a/frameworks/projects/rpc/src/mx/core/Version.as
+++ b/frameworks/projects/rpc/src/mx/core/Version.as
@@ -22,4 +22,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/spark/src/spark/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/core/Version.as b/frameworks/projects/spark/src/spark/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/spark/src/spark/core/Version.as
+++ b/frameworks/projects/spark/src/spark/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/spark_dmv/src/spark/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark_dmv/src/spark/core/Version.as b/frameworks/projects/spark_dmv/src/spark/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/spark_dmv/src/spark/core/Version.as
+++ b/frameworks/projects/spark_dmv/src/spark/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/tool/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/tool/src/mx/core/Version.as b/frameworks/projects/tool/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/tool/src/mx/core/Version.as
+++ b/frameworks/projects/tool/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/frameworks/projects/tool_air/src/mx/core/Version.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/tool_air/src/mx/core/Version.as b/frameworks/projects/tool_air/src/mx/core/Version.as
index 3077bda..9cc2191 100644
--- a/frameworks/projects/tool_air/src/mx/core/Version.as
+++ b/frameworks/projects/tool_air/src/mx/core/Version.as
@@ -23,4 +23,4 @@ import mx.core.mx_internal;
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.16.0.0";
+mx_internal static const VERSION:String = "4.16.1.0";

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/d474c808/modules/compiler/src/java/flex2/tools/VersionInfo.java
----------------------------------------------------------------------
diff --git a/modules/compiler/src/java/flex2/tools/VersionInfo.java b/modules/compiler/src/java/flex2/tools/VersionInfo.java
index 6e740cc..4ded09c 100644
--- a/modules/compiler/src/java/flex2/tools/VersionInfo.java
+++ b/modules/compiler/src/java/flex2/tools/VersionInfo.java
@@ -33,7 +33,7 @@ public class VersionInfo
 {
     public static String FLEX_MAJOR_VERSION = "4";
     public static String FLEX_MINOR_VERSION = "16";
-    public static String FLEX_NANO_VERSION  = "0";
+    public static String FLEX_NANO_VERSION  = "1";
     
 	/**
 	 * Lib version is the "version" of the SWC format. Major number changes represent big (although not


[43/50] git commit: [flex-sdk] [refs/heads/master] - Change CURRENT_VERSION to 4.16.1

Posted by jm...@apache.org.
Change CURRENT_VERSION to 4.16.1


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/0b9764c0
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/0b9764c0
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/0b9764c0

Branch: refs/heads/master
Commit: 0b9764c0133e68b6b689ab8ab89ff99fda821d82
Parents: 0e0220d
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Mon Oct 30 23:20:17 2017 +0100
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Mon Oct 30 23:20:17 2017 +0100

----------------------------------------------------------------------
 frameworks/projects/framework/src/mx/core/FlexVersion.as | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/0b9764c0/frameworks/projects/framework/src/mx/core/FlexVersion.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/core/FlexVersion.as b/frameworks/projects/framework/src/mx/core/FlexVersion.as
index 6eca239..21a99b3 100644
--- a/frameworks/projects/framework/src/mx/core/FlexVersion.as
+++ b/frameworks/projects/framework/src/mx/core/FlexVersion.as
@@ -56,7 +56,7 @@ public class FlexVersion
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public static const CURRENT_VERSION:uint = 0x04100000;
+    public static const CURRENT_VERSION:uint = 0x04100001;
 	
 	/** 
 	 *  The <code>compatibilityVersion</code> value of Flex 4.16.1,


[03/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35260 GridHeaderViewLayout.getHeaderIndexAt() (which calls GridDimensions.getColumnIndexAt()) used to return a valid headerIndex (when it was expected to return -1) for an x < 0. Fixed.

Posted by jm...@apache.org.
FLEX-35260 GridHeaderViewLayout.getHeaderIndexAt() (which calls GridDimensions.getColumnIndexAt()) used to return a valid headerIndex (when it was expected to return -1) for an x < 0. Fixed.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/2adccce7
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/2adccce7
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/2adccce7

Branch: refs/heads/master
Commit: 2adccce7c285cbbdbd4ceda3e5267d0434fbd477
Parents: ad48251
Author: Mihai Chira <mi...@apache.org>
Authored: Fri Mar 10 17:53:45 2017 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Fri Mar 10 17:53:45 2017 +0100

----------------------------------------------------------------------
 .../src/spark/components/gridClasses/GridDimensions.as   | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/2adccce7/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as b/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
index ec0a003..0c679db 100644
--- a/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
+++ b/frameworks/projects/spark/src/spark/components/gridClasses/GridDimensions.as
@@ -1183,9 +1183,12 @@ public class GridDimensions
      */
     public function getColumnIndexAt(x:Number, y:Number):int
     {
-        var cur:Number = x;
+        var current:Number = x;
         var i:int;
-        
+
+        if(current < 0)
+            return -1;
+
         for (i = 0; i < _columnCount; i++)
         {
             var temp:Number = _columnWidths[i];
@@ -1202,9 +1205,9 @@ public class GridDimensions
             if (isNaN(temp))
                 temp = defaultColumnWidth;
             
-            cur -= temp + columnGap;
+            current -= temp + columnGap;
 
-            if (cur < 0)
+            if (current < 0)
                 return i;
         }
         


[36/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35362 Added unit test to reproduce the bug. As expected, it currently fails.

Posted by jm...@apache.org.
FLEX-35362 Added unit test to reproduce the bug. As expected, it currently fails.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/23a306cc
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/23a306cc
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/23a306cc

Branch: refs/heads/master
Commit: 23a306cc8a08bfb21165aed7647a4f1ba6edbc4b
Parents: 243507a
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Oct 18 14:41:02 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Oct 18 14:41:02 2017 +0200

----------------------------------------------------------------------
 .../DropDownListBase_FLEX_35362_Tests.as        | 60 ++++++++++++++++++++
 1 file changed, 60 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/23a306cc/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as b/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
new file mode 100644
index 0000000..1c081df
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
@@ -0,0 +1,60 @@
+package spark.components {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+    import flash.events.KeyboardEvent;
+    import flash.ui.Keyboard;
+
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.async.Async;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    public class DropDownListBase_FLEX_35362_Tests {
+        private var _sut:DropDownList;
+        private static const NO_ENTER_FRAMES_TO_ALLOW:int = 2;
+        private static var noEnterFramesRemaining:int = NaN;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
+        [Before]
+        public function setUp():void
+        {
+            _sut = new DropDownList();
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _sut = null;
+            UIImpersonator.removeAllChildren();
+        }
+
+        [Test(async, timeout=1000)]
+        public function test_pressing_END_right_after_opening_doesnt_trigger_fatal():void
+        {
+            //given
+            UIImpersonator.addChild(_sut);
+
+            noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_open_drop_down_and_press_key, 300);
+        }
+
+        private function then_open_drop_down_and_press_key(event:Event, passThroughData:Object):void
+        {
+            //when
+            _sut.openDropDown();
+            _sut.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, Keyboard.END, 0, true, false, false, true, false));
+
+            //then - no fatal thrown
+            assertTrue(true);
+        }
+
+        private static function onEnterFrame(event:Event):void
+        {
+            if(!--noEnterFramesRemaining)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+        }
+    }
+}


[17/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35306 Addd unit test. Fails when reverting the fix, passes with the fix.

Posted by jm...@apache.org.
FLEX-35306 Addd unit test. Fails when reverting the fix, passes with the fix.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/2750254b
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/2750254b
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/2750254b

Branch: refs/heads/master
Commit: 2750254ba51c284f8bb5dfce2b5101179600b21b
Parents: 59cefd8
Author: Mihai Chira <mi...@apache.org>
Authored: Mon May 22 10:52:55 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Mon May 22 10:52:55 2017 +0200

----------------------------------------------------------------------
 .../spark/components/List_FLEX_35306_Tests.as   | 274 +++++++++++++++++++
 .../spark/tests/spark/components/_CompanyVO.as  |  49 ++++
 .../tests/spark/components/_HeadquarterVO.as    |  23 ++
 .../spark/components/_ListWithMXMLBinding.mxml  |  22 ++
 4 files changed, 368 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/2750254b/frameworks/projects/spark/tests/spark/components/List_FLEX_35306_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/List_FLEX_35306_Tests.as b/frameworks/projects/spark/tests/spark/components/List_FLEX_35306_Tests.as
new file mode 100644
index 0000000..1780240
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/List_FLEX_35306_Tests.as
@@ -0,0 +1,274 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.components {
+    import flash.events.Event;
+    import flash.events.EventDispatcher;
+
+    import mx.collections.ArrayCollection;
+    import mx.collections.IList;
+    import mx.core.mx_internal;
+
+    import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertFalse;
+    import org.flexunit.asserts.assertNotNull;
+    import org.flexunit.async.Async;
+    import org.flexunit.runners.Parameterized;
+    import org.fluint.uiImpersonation.UIImpersonator;
+
+    import spark.skins.spark.ListSkin;
+
+    use namespace mx_internal;
+
+    [RunWith("org.flexunit.runners.Parameterized")]
+    public class List_FLEX_35306_Tests
+    {
+        private static var foo:Parameterized;
+
+        private static const NO_ENTER_FRAMES_TO_ALLOW:int = 4;
+        private static var noEnterFramesRemaining:int = NaN;
+        private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
+        private static var _sut:_ListWithMXMLBinding;
+
+        private static var _hqRedmond:_HeadquarterVO;
+        private static var _hqSantaClara:_HeadquarterVO;
+        private static var _hqBerlin:_HeadquarterVO;
+        private static var _hqMunchen:_HeadquarterVO;
+        private static var _hqNewYork:_HeadquarterVO;
+        private static var _hqSantaMaria:_HeadquarterVO;
+        private static var _hqSantaDolores:_HeadquarterVO;
+
+        [Bindable]
+        public var selectedCompany:_CompanyVO;
+        [Bindable]
+        public var potentialHeadquarters:IList;
+
+        public static var models:Array;
+        {
+            models = [[createListOfCompaniesWithOnePotentialAddressEach()], [createListOfCompaniesWithMultiplePotentialAddresses()]];
+        }
+
+        [AfterClass]
+        public static function tearDownStatic():void
+        {
+            models = null;
+        }
+
+        [Before]
+        public function setUp():void
+        {
+            _sut = new _ListWithMXMLBinding();
+            _sut.container = this;
+            _sut.setStyle("skinClass", ListSkin);
+            _sut.requireSelection = true;
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            UIImpersonator.removeAllChildren();
+            _sut = null;
+        }
+
+        [Test(order=2, async, timeout=1000, dataProvider="models", description="this should run after the main test because it rewrites the model")]
+        public function test_double_binding(companies:IList):void
+        {
+            //given
+            const firstCompany:_CompanyVO = companies.getItemAt(0) as _CompanyVO;
+            const secondCompany:_CompanyVO = companies.getItemAt(1) as _CompanyVO;
+            const secondCompanyHQ:_HeadquarterVO = secondCompany.originalHeadquarter;
+            selectedCompany = firstCompany;
+
+            UIImpersonator.addElement(_sut);
+
+            //when 1
+            selectedCompany = secondCompany;
+            potentialHeadquarters = secondCompany.potentialHeadquarters;
+
+            //then 1 - wait some frames until there's a selection
+            noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_check_binding_from_bindable_var_to_list, 400, {companies:companies, expectedHQ:secondCompanyHQ});
+        }
+
+        private function then_check_binding_from_bindable_var_to_list(event:Event, passThroughData:Object):void
+        {
+            //given
+            const companies:IList = passThroughData.companies;
+            const expectedHQ:_HeadquarterVO = passThroughData.expectedHQ as _HeadquarterVO;
+            const thirdCompany:_CompanyVO = companies.getItemAt(2) as _CompanyVO;
+
+            //then
+            assertEquals("The list's selected item didn't change (correctly?) when we changed the associated bindable variable!", expectedHQ, _sut.selectedItem);
+
+            //given 2
+            var extraHQ:_HeadquarterVO = new _HeadquarterVO("hello", "address");
+
+            //when 2
+            thirdCompany.potentialHeadquarters.addItem(extraHQ);
+            potentialHeadquarters = thirdCompany.potentialHeadquarters;
+            selectedCompany = thirdCompany;
+            _sut.selectedItem = extraHQ;
+
+            //then 2 - wait some frames until there's a selection
+            noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_check_binding_from_list_to_bindable_var, 400, {companies:companies, expectedHQ:extraHQ});
+        }
+
+        private function then_check_binding_from_list_to_bindable_var(event:Event, passThroughData:Object):void
+        {
+            //given
+            const companies:IList = passThroughData.companies as IList;
+            const expectedHQ:_HeadquarterVO = passThroughData.expectedHQ as _HeadquarterVO;
+
+            //then 2
+            assertEquals("The binding destination didn't change (correctly?) when we changed the list's selectedItem!", expectedHQ, selectedCompany.headquarter);
+
+            //cleanup
+            const thirdCompany:_CompanyVO = companies.getItemAt(2) as _CompanyVO;
+            thirdCompany.potentialHeadquarters.removeItem(expectedHQ);
+        }
+
+
+
+
+
+        [Test(order=1, async, timeout=1000, dataProvider="models")]
+        public function test_list_doesnt_rewrite_model(companies:IList):void
+        {
+            //given
+            const secondCompany:_CompanyVO = companies.getItemAt(1) as _CompanyVO;
+
+            //when
+            selectedCompany = secondCompany;
+            potentialHeadquarters = secondCompany.potentialHeadquarters;
+
+            UIImpersonator.addElement(_sut);
+
+            //then - wait some frames until there's a selection
+            noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_change_dp_and_selected_item, 400, companies);
+        }
+
+        private function then_change_dp_and_selected_item(event:Event, passThroughData:Object):void
+        {
+            //given
+            const model:IList = passThroughData as IList;
+            const secondCompany:_CompanyVO = model.getItemAt(1) as _CompanyVO;
+            const thirdCompany:_CompanyVO = model.getItemAt(2) as _CompanyVO;
+
+            //then
+            assertNotNull(secondCompany.headquarter); //HUH?
+            assertEquals("The selection should be " + secondCompany.headquarter.name + "!", secondCompany.originalHeadquarter, _sut.selectedItem);
+
+            //when
+            selectedCompany = thirdCompany;
+            potentialHeadquarters = thirdCompany.potentialHeadquarters;
+
+            //then - wait some frames until the selection has changed
+            noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_check_if_model_has_been_rewritten, 400, model);
+        }
+
+        private static function then_check_if_model_has_been_rewritten(event:Event, passThroughData:Object):void
+        {
+            //given
+            const model:IList = passThroughData as IList;
+            const thirdCompany:_CompanyVO = model.getItemAt(2) as _CompanyVO;
+            const expectedHQ:_HeadquarterVO = thirdCompany.originalHeadquarter;
+
+            //then
+            assertEquals("The selection should be " + expectedHQ.name + "!", expectedHQ, _sut.selectedItem);
+
+            assertCompaniesHaveCorrectHQ(model);
+            assertNoCompanyHQWasRewritten(model);
+        }
+
+        private static function assertCompaniesHaveCorrectHQ(companiesList:IList):void
+        {
+            for each(var company:_CompanyVO in companiesList)
+            {
+                assertEquals("The headquarter of " + company.name + " has been changed to an invalid value!", company.originalHeadquarter, company.headquarter);
+            }
+        }
+
+        private static function assertNoCompanyHQWasRewritten(companiesList:IList):void
+        {
+            for each(var company:_CompanyVO in companiesList)
+            {
+                assertFalse("The headquarter of " + company.name + " has been rewritten, although with the correct value in the end", company.headquarterRewritten);
+            }
+        }
+
+        private static function onEnterFrame(event:Event):void
+        {
+            if(!--noEnterFramesRemaining)
+            {
+                UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+                _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+            }
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Set up methods
+        //
+        //--------------------------------------------------------------------------
+
+        private static function createListOfCompaniesWithMultiplePotentialAddresses():IList
+        {
+            createHeadquartersIfNeeded();
+
+            var microsoft:_CompanyVO = new _CompanyVO("Microsoft", _hqRedmond, new ArrayCollection([_hqRedmond, _hqNewYork]));
+            var intel:_CompanyVO = new _CompanyVO("Intel", _hqSantaClara, new ArrayCollection([_hqSantaClara, _hqSantaMaria, _hqSantaDolores]));
+            var wv:_CompanyVO = new _CompanyVO("VW", _hqBerlin, new ArrayCollection([_hqBerlin, _hqMunchen]));
+
+            return new ArrayCollection([microsoft, intel, wv]);
+        }
+
+        private static function createListOfCompaniesWithOnePotentialAddressEach():IList
+        {
+            createHeadquartersIfNeeded();
+
+            var microsoft:_CompanyVO = new _CompanyVO("Microsoft", _hqRedmond, new ArrayCollection([_hqRedmond]));
+            var intel:_CompanyVO = new _CompanyVO("Intel", _hqSantaClara, new ArrayCollection([_hqSantaClara]));
+            var wv:_CompanyVO = new _CompanyVO("VW", _hqBerlin, new ArrayCollection([_hqBerlin]));
+
+            return new ArrayCollection([microsoft, intel, wv]);
+        }
+
+        private static function createHeadquartersIfNeeded():void
+        {
+            if(_hqRedmond)
+                return;
+
+            _hqRedmond = new _HeadquarterVO("Redmond", "redmond address 123");
+            _hqNewYork = new _HeadquarterVO("New York", "NY address 123");
+            _hqSantaClara = new _HeadquarterVO("Santa Clara", "santa clara address 123");
+            _hqSantaMaria = new _HeadquarterVO("Santa Maria", "santa maria address 123");
+            _hqSantaDolores = new _HeadquarterVO("Santa Dolores", "santa dolores address 123");
+            _hqBerlin = new _HeadquarterVO("Berlin", "berlin address 123");
+            _hqMunchen = new _HeadquarterVO("Munchen", "munchen address 123");
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/2750254b/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/_CompanyVO.as b/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
new file mode 100644
index 0000000..3889c62
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/_CompanyVO.as
@@ -0,0 +1,49 @@
+package spark.components {
+    import mx.collections.ArrayCollection;
+
+    [Bindable]
+    public class _CompanyVO
+    {
+        private var _headquarter:_HeadquarterVO;
+        private var _headquarterRewritten:Boolean = false;
+        private var _originalHeadquarter:_HeadquarterVO;
+
+        public var name:String;
+        public var potentialHeadquarters:ArrayCollection;
+
+
+        public function _CompanyVO(name:String, headquarter:_HeadquarterVO, potentialHeadquarters:ArrayCollection)
+        {
+            this.name = name;
+            this._headquarter = headquarter;
+            this._originalHeadquarter = headquarter;
+            this.potentialHeadquarters = potentialHeadquarters;
+        }
+
+        public function get headquarter():_HeadquarterVO
+        {
+            return _headquarter;
+        }
+
+        public function set headquarter(value:_HeadquarterVO):void
+        {
+            _headquarterRewritten = true;
+            _headquarter = value;
+        }
+
+        public function get headquarterRewritten():Boolean
+        {
+            return _headquarterRewritten;
+        }
+
+        public function get originalHeadquarter():_HeadquarterVO
+        {
+            return _originalHeadquarter;
+        }
+
+        public function toString():String
+        {
+            return "CompanyVO{name=" + String(name) + ", #hqs="+potentialHeadquarters.length+"}";
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/2750254b/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as b/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
new file mode 100644
index 0000000..b41d129
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/_HeadquarterVO.as
@@ -0,0 +1,23 @@
+package spark.components {
+    [Bindable]
+    public class _HeadquarterVO {
+        public var name:String;
+        public var address:String;
+
+        public function _HeadquarterVO(name:String, address:String)
+        {
+            this.name = name;
+            this.address = address;
+        }
+
+        public function get label():String
+        {
+            return name;
+        }
+
+        public function toString():String
+        {
+            return "HeadquarterVO{name=" + String(name) + "}";
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/2750254b/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml b/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
new file mode 100644
index 0000000..3e65389
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/_ListWithMXMLBinding.mxml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<s:List xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
+    selectedItem="@{container.selectedCompany.headquarter}"
+    dataProvider="{container.potentialHeadquarters}">
+
+    <fx:Script>
+        <![CDATA[
+        private var _container:Object;
+
+        [Bindable]
+        public function get container():Object
+        {
+            return _container;
+        }
+
+        public function set container(value:Object):void
+        {
+            _container = value;
+        }
+        ]]>
+    </fx:Script>
+</s:List>


[30/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-18746 Renamed the main test function and increased the timeout a bit.

Posted by jm...@apache.org.
FLEX-18746 Renamed the main test function and increased the timeout a bit.


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

Branch: refs/heads/master
Commit: cd060ca27b7f9c1cad1e3c9045cfbc64614d01e3
Parents: f804380
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Aug 15 11:02:24 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Tue Aug 15 11:02:24 2017 +0200

----------------------------------------------------------------------
 .../projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as       | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/cd060ca2/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
index 5d64b06..26568d6 100644
--- a/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
+++ b/frameworks/projects/mx/tests/mx/controls/Tree_FLEX_18746_Tests.as
@@ -46,7 +46,7 @@ package mx.controls {
         //--------------------------------------------------------------------------
 
         [Test(async, timeout=1000)]
-        public function test_object_removed_from_stage_via_code_is_not_initialized():void
+        public function test_closing_previously_opened_folder_with_0_children_does_not_throw_fatal():void
         {
             //given
             const dataProvider:ArrayCollection = new ArrayCollection();
@@ -59,7 +59,7 @@ package mx.controls {
             //then wait a few frames
             noEnterFramesToWait = 2;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_second_folder, 200);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_expand_second_folder, 300);
         }
 
 


[39/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35364 - Run air-setup-mac on all non windows OS

Posted by jm...@apache.org.
FLEX-35364 - Run air-setup-mac on all non windows OS


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/752b1d3e
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/752b1d3e
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/752b1d3e

Branch: refs/heads/master
Commit: 752b1d3eb905406075f350197b1ce4701d94e3f9
Parents: 7cd99a7
Author: Piotr Zarzycki <pi...@gmail.com>
Authored: Wed Oct 25 14:41:58 2017 +0200
Committer: Piotr Zarzycki <pi...@gmail.com>
Committed: Wed Oct 25 14:41:58 2017 +0200

----------------------------------------------------------------------
 installer.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/752b1d3e/installer.xml
----------------------------------------------------------------------
diff --git a/installer.xml b/installer.xml
index c22be85..ef08ef2 100644
--- a/installer.xml
+++ b/installer.xml
@@ -467,7 +467,7 @@
 	    </exec>
 	</target>
     
-	<target name="air-setup-mac-init" if="isMac">
+	<target name="air-setup-mac-init" unless="isWindows">
 		<antcall target="air-setup-mac" />
 	</target>
 	


[22/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 Refined tests, including checking for how many validation steps happen for size, properties and display list. Without the fix all those expected to fail fail (the last one is not expected to

Posted by jm...@apache.org.
FLEX-35321 Refined tests, including checking for how many validation steps happen for size, properties and display list. Without the fix all those expected to fail fail (the last one is not expected to fail without the fix, because it's there just to make sure no regression is introduced by the fix), while with the fix all of them pass.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/442b5f8e
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/442b5f8e
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/442b5f8e

Branch: refs/heads/master
Commit: 442b5f8ea4fe08dc8e5f7d48df7dc36b101c99fe
Parents: 75b4d39
Author: Mihai Chira <mi...@apache.org>
Authored: Sat Jun 10 13:28:05 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Sat Jun 10 13:28:05 2017 +0200

----------------------------------------------------------------------
 .../managers/LayoutManager_FLEX_35321_Tests.as  | 42 +++++++++++++++-----
 1 file changed, 32 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/442b5f8e/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
index 1fef434..9b0b38c 100644
--- a/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
+++ b/frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -6,6 +6,8 @@ package mx.managers {
     import mx.core.mx_internal;
     import mx.events.FlexEvent;
 
+    import org.flexunit.assertThat;
+
     import org.flexunit.asserts.assertEquals;
     import org.flexunit.asserts.assertNotNull;
     import org.flexunit.asserts.assertNull;
@@ -28,7 +30,7 @@ package mx.managers {
             _creationCompleteCalls = 0;
             _objectWhichIsRemovedAtValidation = new SomeComponent();
             _objectWhichIsRemovedAtValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
-            UIImpersonator.addChild(_objectWhichIsRemovedAtValidation);
+            UIImpersonator.addElement(_objectWhichIsRemovedAtValidation);
         }
 
         [After]
@@ -45,7 +47,6 @@ package mx.managers {
         //
         //--------------------------------------------------------------------------
 
-
         [Test]
         public function test_object_removed_from_stage_via_code_is_not_initialized():void
         {
@@ -54,10 +55,14 @@ package mx.managers {
             _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = true;
 
             //when
+            _objectWhichIsRemovedAtValidation.invalidateProperties();
+            _objectWhichIsRemovedAtValidation.invalidateSize();
+            _objectWhichIsRemovedAtValidation.invalidateDisplayList();
             _objectWhichIsRemovedAtValidation.validateNow();
 
             //then
             then_assert_not_initialized();
+            assert_validation_count(1, 0, 0);
         }
 
 
@@ -68,7 +73,6 @@ package mx.managers {
         //
         //--------------------------------------------------------------------------
 
-
         [Test(async, timeout=500)]
         public function test_object_removed_from_stage_via_user_action_is_not_initialized():void
         {
@@ -84,7 +88,7 @@ package mx.managers {
             //then wait 1 frame
             noEnterFramesRemaining = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, then_assert_not_initialized);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, {nextStep:then_assert_not_initialized_but_partially_validated, afterNumFrames:3});
         }
 
 
@@ -111,7 +115,7 @@ package mx.managers {
             //then wait 1 frame
             noEnterFramesRemaining = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, then_readd_object);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, {nextStep:then_readd_object, afterNumFrames:1});
         }
 
         private function then_readd_object(event:Event, passThroughData:Object):void
@@ -122,8 +126,8 @@ package mx.managers {
             //when
             UIImpersonator.addElement(_objectWhichIsRemovedAtValidation);
 
-            //then wait 4 frames, to make sure validation is done
-            noEnterFramesRemaining = 4;
+            //then wait 3 frames, to make sure validation is done
+            noEnterFramesRemaining = 3;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
             Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert_one_initialization_only, 400);
         }
@@ -132,7 +136,9 @@ package mx.managers {
         {
             //then
             assertNotNull("The object should be on stage...", _objectWhichIsRemovedAtValidation.parent);
+            assertThat("If it's on stage, the nestLevel should be positive", _objectWhichIsRemovedAtValidation.nestLevel > 0);
             assertEquals("When validation is interrupted half-way it should be complete once the object is re-added to stage", 1, _creationCompleteCalls);
+            assert_validation_count(2, 2, 1);
         }
 
 
@@ -150,13 +156,14 @@ package mx.managers {
             assertEquals("Nor validateDisplayList()", 0, _objectWhichIsRemovedAtValidation.numValidateDisplayListCalls);
 
             //given
-            const whereToGoNext:Function = passThroughData as Function;
+            const whereToGoNext:Function = passThroughData.nextStep as Function;
+            const afterHowManyFrames:int = passThroughData.afterNumFrames as int;
 
             //when
             _objectWhichIsRemovedAtValidation.pretendUserAskedForComponentRemovalInNextFrame();
 
-            //then wait 2 frames
-            noEnterFramesRemaining = 3;
+            //then wait
+            noEnterFramesRemaining = afterHowManyFrames;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
             Async.handleEvent(this, _finishNotifier, Event.COMPLETE, whereToGoNext, 300);
         }
@@ -168,6 +175,21 @@ package mx.managers {
             assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
         }
 
+        private function then_assert_not_initialized_but_partially_validated(event:Event = null, passThroughData:Object = null):void
+        {
+            //then
+            then_assert_not_initialized(event, passThroughData);
+            assert_validation_count(1, 1, 0);
+        }
+
+        private function assert_validation_count(numPropertiesValidations:int = 1, numSizeValidations:int = 1, numDisplayListValidations:int = 1):void
+        {
+            //then
+            assertEquals("Properties should have been validated", numPropertiesValidations, _objectWhichIsRemovedAtValidation.numValidatePropertiesCalls);
+            assertEquals("Size should have been validated", numSizeValidations, _objectWhichIsRemovedAtValidation.numValidateSizeCalls);
+            assertEquals("Display list should have been validated", numDisplayListValidations, _objectWhichIsRemovedAtValidation.numValidateDisplayListCalls);
+        }
+
 
 
         private static function onEnterFrame(event:Event):void


[35/50] git commit: [flex-sdk] [refs/heads/master] - FLEX-35321 CAUSE: if the object isn't on stage when we'd normally set its initialized flag to true, we correctly skip this step, but we also need to set its updateCompletePendingFlag back to false, so

Posted by jm...@apache.org.
FLEX-35321 CAUSE: if the object isn't on stage when we'd normally set its initialized flag to true, we correctly skip this step, but we also need to set its updateCompletePendingFlag back to false, so that in case it's added to stage again it can work correctly, and have its initialized flag set to true as expected. This second step was skipped in the previous commit. This could be noticed, for example, in DataGrid, which would not show the renderers which it initially used in GridViewLayout.updateTypicalCellSizes().
SOLUTION: set the updateCompletePendingFlag to false even if the object isn't on stage anymore.
NOTES: also removed unused imports and an unused local variable.


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/243507a7
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/243507a7
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/243507a7

Branch: refs/heads/master
Commit: 243507a7346b6acbba755833a970dccdb48cf375
Parents: fcc2586
Author: Mihai Chira <mi...@apache.org>
Authored: Wed Aug 30 10:27:35 2017 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed Aug 30 10:27:35 2017 +0200

----------------------------------------------------------------------
 .../projects/framework/src/mx/managers/LayoutManager.as  | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/243507a7/frameworks/projects/framework/src/mx/managers/LayoutManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/managers/LayoutManager.as b/frameworks/projects/framework/src/mx/managers/LayoutManager.as
index d070203..131838e 100644
--- a/frameworks/projects/framework/src/mx/managers/LayoutManager.as
+++ b/frameworks/projects/framework/src/mx/managers/LayoutManager.as
@@ -19,14 +19,10 @@
 
 package mx.managers
 {
-import flash.display.DisplayObject;
-import flash.display.Sprite;
 import flash.display.Stage;
 import flash.events.Event;
 import flash.events.EventDispatcher;
 
-import mx.core.ILayoutElement;
-import mx.core.UIComponent;
 import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
 import mx.events.DynamicEvent;
@@ -852,8 +848,9 @@ public class LayoutManager extends EventDispatcher implements ILayoutManager
                         obj.initialized = true;
                     if (obj.hasEventListener(FlexEvent.UPDATE_COMPLETE))
                         obj.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
-                    obj.updateCompletePendingFlag = false;
                 }
+
+                obj.updateCompletePendingFlag = false;
                 obj = ILayoutManagerClient(updateCompleteQueue.removeLargest());
             }
 
@@ -930,7 +927,6 @@ public class LayoutManager extends EventDispatcher implements ILayoutManager
 		var lastCurrentObject:ILayoutManagerClient = currentObject;
 		
         var obj:ILayoutManagerClient;
-        var i:int = 0;
         var done:Boolean = false;
         var oldTargetLevel:int = targetLevel;
 
@@ -1104,8 +1100,9 @@ public class LayoutManager extends EventDispatcher implements ILayoutManager
 
                         if (obj.hasEventListener(FlexEvent.UPDATE_COMPLETE))
                             obj.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
-                        obj.updateCompletePendingFlag = false;
                     }
+
+                        obj.updateCompletePendingFlag = false;
                     obj = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(target));
                 }
             }