You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Alex Harui <ah...@adobe.com> on 2012/12/07 19:52:18 UTC
FW: svn commit: r1418430 - in /incubator/flex/sdk/branches/develop:
./ frameworks/projects/framework/src/mx/core/
frameworks/projects/framework/src/mx/states/
frameworks/projects/mx/src/mx/containers/
frameworks/projects/mx/src/mx/core/ frameworks/proj...
Sorry, bad commit again. SVN command line is not working as expected.
Reverting again.
--
Alex Harui
Flex SDK Team
Adobe Systems, Inc.
http://blogs.adobe.com/aharui
------ Forwarded Message
From: "aharui@apache.org" <ah...@apache.org>
Reply-To: "flex-dev@incubator.apache.org" <fl...@incubator.apache.org>
Date: Fri, 7 Dec 2012 10:48:27 -0800
To: "flex-commits@incubator.apache.org" flex-commits@incubator.apache.org>
Subject: svn commit: r1418430 - in /incubator/flex/sdk/branches/develop: ./
frameworks/projects/framework/src/mx/core/
frameworks/projects/framework/src/mx/states/
frameworks/projects/mx/src/mx/containers/
frameworks/projects/m/src/mx/core/ frameworks/projects...
Author: aharui
Date: Fri Dec 7 18:48:26 2012
New Revision: 1418430
URL: http://svn.apache.org/viewvc?rev=1418430&view=rev
Log:
merge 1418421 to devlop branch
Modified:
incubator/flex/sdk/branches/develop/ (props changed)
incubator/flex/sdk/branches/develop/build.properties
incubator/flex/dk/branches/develop/frameworks/projects/framework/src/mx/cor
e/FlexSprite.as
incubator/flex/sk/branches/develop/frameworks/projects/framework/src/mx/cor
e/UIComponent.as
icubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/sta
tes/AddItems.as
incubator/flex/sdk/branches/develop/frameworks/projects/mx/src/mx/containers
/ViewStack.as
incubator/flex/sdk/branches/develop/frameworks/projects/mx/src/mx/core/Conta
iner.as
incubator/flex/sdk/branches/develop/frameworks/projects/spark/build.xml
incubatorflex/sdk/branches/develop/frameworks/projects/spark/compile-config
.xml
incubator/flex/sdk/brnches/develop/frameworks/projects/spark/src/spark/comp
onents/Group.as
incubatr/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/comp
onents/SkinnableContainer.as
incubator/flex/sdk/branches/dvelop/frameworks/tests/basicTests/BasicTests-c
onfig.xml
incubator/flex/sdk/brances/develop/frameworks/tests/basicTests/basicLoader.
as
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/halo/scripts
/SWFLoaderTestScript.mxml
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/AIR/CompareBit
map.as
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.
as
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/ResetComponent
.as
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/UnitTester.as
incubator/flex/sdk/branches/develop/mustella/java/src/mustella/Runner.java
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/M
ethods/VideoMethodTester.mxml
incubator/flex/sdk/branches/develop/mustell/tests/components/VideoDisplay/P
roperties/VideoPropertyTester.mxml
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_gif_runtime.mxml
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_jpg_runtime.mxml
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_png_runtime.mxml
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_swf_runtime.mxml
Propchange: incubator/flex/sdk/branches/develop/
----------------------------------------------------------------------------
--
svn:mergeinfo = /incubator/flex/sdk/branches/release4.9:1418412
Modified: incubatr/flex/sdk/branches/develop/build.properties
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/build.prope
rties?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
--- incubator/flex/sdk/branches/develop/build.properties (original)
+++ incubator/flex/sdk/branches/develop/build.properties Fri Dec 7 18:48:26
2012
@@ -56,5 +56,7 @@ mxmlc.jvm.args = ${jvm.args}
manifest.sealed=false
manifest.Implementation-Title=Apache Flex SDK
manifest.Implementation-Version=${release.version}
-manifest.Implementation-Vendor=The Apache Software Foundation
+manifest.Implementation-Vendor=Apache Software Foundation
manifest.Implementation-Vendor-Id=org.apache
+
+localized.jars = true
Modified:
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/cor
e/FlexSprite.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
projects/framework/src/mx/core/FlexSprite.as?rev=1418430&r1=1418429&r2=14184
30&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/cor
e/FlexSprite.as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/cor
e/FlexSprite.as Fri Dec 7 18:48:26 2012
@@ -70,7 +70,7 @@ public class FlexSprite extends Sprite
try
{
- name = NameUtil.createUniqueName(this);
+// name = NameUtil.createUniqueName(this);
}
catch(e:Error)
{
Modified:
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/cor
e/UIComponent.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branchs/develop/frameworks/
projects/framework/src/mx/core/UIComponent.as?rev=1418430&r1=1418429&r2=1418
430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/cor
e/UIComponent.as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/cor
e/UIComponent.as Fri Dec 7 18:48:26 2012
@@ -1723,6 +1723,10 @@ public class UIComponent extends FlexSpr
_width = super.width;
_height = super.height;
+
+ var attributes:Array = this.MXMLProperties;
+ if (attributes)
+ generateMXMLAttributes(attributes);
}
//--------------------------------------------------------------------------
@@ -4426,7 +4430,45 @@ public class UIComponent extnds FlexSpr
return document == this;
}
- //----------------------------------
+ //----------------------------------
+ // MXML Descriptor
+ //----------------------------------
+
+ /**
+ * The descriptor of MXML children.
*/
+ private var _MXMLDescriptor:Array;
+
+ public function get MXMLDescriptor():Array
+ {
+ return _MXMLDescriptor;
+ }
+
+ public function setMXMLDescriptr(value:Array):void
+ {
+ _MXMLDescriptor = value;
+ }
+
+ //----------------------------------
+ // MXML Properties
+ //----------------------------------
+
+ /**
+ * The attributes of MXML top tag.
+ */
+ private var_MXMLProperties:Array;
+
+ public function get MXMLProperties():Array
+ {
+ return _MXMLProperties;
+ }
+
+ public function setMXMLProperties(value:rray):void
+ {
+ _MXMLProperties = value;
+ }
+
+ //----------------------------------
// parentApplication
//----------------------------------
@@ -7763,7 +7805,219 @@ public class UIComponent extends FlexSpr
/
protected function createChildren():void
{
- }
+ var children:Array = this.MXMLDescriptor;
+ if (children)
+ generateMXMLInstances(document, children);
+ }
+
+ protected function addMXMLChilren(comps:Array):void
+ {
+ for each (var i:DisplayObject in comps)
+ {
+ addChild(i);
+ }
+ }
+
+ protected function generteMXMLObject(document:Object,
data:Array):Object
+ {
+ var i:int = 0;
+ var cls:Class = data[i++];
+ var comp:Object = new cls();
+
+ var m:int;
+ var j:int;
+ var name:String;
+ var simple:*;
+ var value:Object;
+ var id:String;
+
+ m = ata[i++]; // num props
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(document, value as
Array);
+ else if (simple == false)
+ value = generateMXMLObject(document, value
as Array);
+ if (name == "id")
+ {
+ document[value] = comp;
+ id = value as String;
+ }
+ else if (name == "_id")
+ {
+ document[value] = comp;
+ id = value as String;
+ continue; // skip assignment to comp
+ }
+ comp[name] = value;
+ }
+ if (comp is IMXMLObject)
+ comp.initialized(document, id);
+ return comp;
+ }
+
+ public function generateMXMLArray(document:Object, data:Array,
recursive:Boolean = true):Array
+ {
+ var comps:Array = [];
+
+ var n:int = data.length;
+ var i:int = 0;
+ while (i < n)
+ {
+ var cls:Class = data[i++];
+ var comp:Object = new cls);
+
+ var m:int;
+ var j:int;
+ var name:String;
+ var simple:*;
+ var value:Object;
+ var id:String = null;
+
+ m = data[i++]; // num props
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(document,
value as Array, recursive);
+ else if (simple == false)
+ value = generateMXMLObject(document,
value as Array);
+ if (name == "id")
+ id = value as String;
+ if (name == "document" && !comp.document)
+ comp.document = document;
+ else if (name == "_id")
+ id = value as String; // and don't
assign to comp
+ else
+ comp[name] = value;
+ }
+ m = data[i++]; // num styles
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArraydocument,
value as Array, recursive);
+ else if (simple == false)
+ value = generateMXMLObject(document,
value as Array);
+ comp.setStyle(name, value);
+ }
+
+ m = data[i++]; // num effects
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(document,
value as Array, recursive);
+ else if (simple == false)
+ value = generateMXMLObject(document,
value as Array);
+ comp.setStyle(name, value);
+ }
+
+ m = data[i++]; // num events
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ value = data[i++];
+ comp.addEventListener(name value);
+ }
+
+ var children:Array = data[i++];
+ if (children)
+ {
+ if (recursive)
+ comp.generateMXMLInstances(document,
children, recursive);
+ else
+ comp.setMXMLDescriptor(children);
+
+
+ if (id)
+ {
+ document[id] = comp;
+
mx.binding.BindingManager.executeBindings(document, id, comp);
+ }
+ if (comp is IMXMLObject)
+ comp.initialized(document, id);
+ comps.push(comp);
+ }
+ return comps;
+ }
+
+ protected function generateMXMLInstances(document:Object,
data:Array, recursive:Boolean = true):void
+ {
+ var comps:Array = generateMXMLArray(document, data,
recursive);
+ addMXMLChildren(comps);
+ }
+
+ protected function generateMXMLAttributes(data:Array):vid
+ {
+ var i:int = 0;
+ var m:int;
+ var j:int;
+ var name:String;
+ var simple:*;
+ var value:Object;
+ var id:String = null;
+
+ m = data[i++]; // num props
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(this, value as
Array, false);
+ else if (simple == false)
+ value = generateMXMLObject(this, value as
Array);
+ if (name == "id")
+ id = value as String;
+ if (name == "_id")
+ id = value as String; // and don't assign
+ else
+ this[name] = value;
+ }
+ m = data[i++]; // num styles
+ for (j = 0; j < m; j++)
+
+ name = data[i++];
+ simple = ata[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLAray(this, value as
Array, false);
+ else if (simple == false)
+ value = generateMXMLObject(this, value as
Array);
+ this.setStyle(name, value);
+ }
+
+ m = data[i++]; // num effects
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(this, value as
Array, false);
+ else if (simple == false)
+ value = generateMXMLObject(this, value as
Array);
+ this.setStyle(name, value);
+ }
+
+ m = data[i++]; // num events
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ value = data[i++];
+ this.addEventListener(name, value as Function);
+ }
+ }
/**
* Performs any final procesing after child objects are created.
Modified:
incubator/flex/sdk/branches/develop/framworks/projects/framework/src/mx/sta
tes/AddItems.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
projects/framewor/src/mx/states/AddItems.as?rev=1418430&r1=1418429&r2=14184
30&view=diff
===========================================================================
==
---
icubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/sta
tes/AddItems.as (origial)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/framework/src/mx/sta
tes/ddItems.as Fri Dec 7 18:48:26 2012
@@ -26,10 +26,12 @@ import mx.collection.IList;
import mx.core.ContainerCreationPolicy;
import mx.core.IChildList;
import mx.core.IDeferredContentOwner
+import mx.core.IMXMLObject;
import mx.core.ITransientDeferredInstance; import mx.core.IVisualElement;
import mx.core.IVisualElementContainer;
import mx.core.UIComponent;
+import mx.binding.BindingManager;
[DefaultProperty("itemsFactory")]
@@ -41,7 +43,7 @@ import mx.core.UIComponent;
* @playerversion AIR 1.5
* @productversion Flex 4
*/
-public class AddItems extends OverrideBase
+public class AddItems extends OverrideBase implements IMXMLObject
{
include "../core/Version.as";
@@ -116,6 +118,8 @@ public class AddItems extends OverrideBa
//
//--------------------------------------------------------------------------
+ private var document:Object;
+
/**
* @private
*/
@@ -309,6 +313,52 @@ public class AddItems extends OverrideBa
_items = value;
}
+ //------------------------------------
+ // itemsDescriptor
+ //------------------------------------
+
+ /**
+ * @private
+ * Storage for the itemsDescriptor prperty.
+ */
+ private var _itemsDescriptor:Array;
+
+ [Inspectable(category="General")]
+
+ /**
+ *
+ * The descriptor tha describes the items.
+ *
+ * <p>If you set this property, the items are instantiated at the
time
+ * determinedby the <code>creationPolicy</code> property.</p>
+ *
+ * <p>Do not set this property if you set the <code>items</code>
+ * property.
+ * This propety is the <code>AddItems</code> class default
property.
+ * Setting this propertywith a <code>creationPolicy</code> of
"all"
+ * is equivalent to setting a <code>items</code> property.</p>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4
+ */
+ public function get itemsDescriptor():Array
+ {
+ return _itemsDescriptor;
+ }
+
+ /**
+ * @private
+ */
+ public function set itemsDescriptor(value:Array):void
+ {
+ _itemsDescriptor = value;
+
+ if (creationPolicy == ContainerCreationPolicy.ALL)
+ createInstance();
+ }
+
//------------------------------------
// itemsFactory
//------------------------------------
@@ -489,12 +539,133 @@ pblic class AddItems extends OverrideBa
*/
public funtion createInstance():void
{
- if (!instanceCreated && !_items && itemsFactory)
+ if (!instanceCreated && !_items && itemsFactory &&
!_itemsDescriptor)
{
instanceCreated = true;
items = itemsFactory.getInstance();
}
- }
+ else if (!instanceCreated && !_items && !itemsFactory &&
_itemsDescriptor)
+ {
+ instanceCreated = true;
+ items = generateMXMLArray(itemsDescriptor, false);
+ }
+ }
+
+ protected function generateMXMLObject(data:Array):Object
+ {+ var i:int = 0;
+ var cls:Class = data[i++];
+ var comp:Object = new cls();
+
+ var m:int;
+ var j:int;
+ var name:String;
+ var simple:*;
+ var value:Object;
+ var id:String;
+
+ m = data[i++]; // num props
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[++];
+ if (simple == null)
+ value = generateMXMLArray(value as Array);
+ else if (simple == false)
+ value = generateMXMLObject(value as Array);
+ comp[name] = value;
+ }
+ return comp;
+ }
+
+ // varis slightly from version in UIComponent in how it handles
documents
+ public function generateMXMLArray(data:Array, recursive:Boolean =
true):Array
+ {
+ var comps:Array = [];
+
+ var n:int = data.length;
+ var i:int = 0;
+ while (i < n)
+ {
+ var cls:Class = data[i++];
+ var comp:Object = new cls();
+
+ var m:int;
+ var j:int;
+ var name:String;
+ var simple:*;
+ var value:Obect;
+ var id:String = null;
+
+ m = data[i++]; // num rops
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(value as
Array, recursiv);
+ else if (simple == false)
+ value = generateMXMLObject(value as
Array);
+ if (name == "id")
+ id = value as String;
+ if (name == "_id")
+ id = value as String; // and don't
assign to comp
+ else
+ comp[name] = value;
+ }
+ m = dta[i++]; // num styles
+ for (j = 0; j < m; j++)
{
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(value as
Array, recursive);
+ else if simple == false)
+ valu = generateMXMLObject(value as
Array);
+ comp.setStyle(name, vlue);
+ }
+
+ m = data[i++]; / num effects
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ simple = data[i++];
+ value = data[i++];
+ if (simple == null)
+ value = generateMXMLArray(value as
Array, recursive);
+ else if (simple == false)
+ value = generateMXMLObject(value as
Array);
+ comp.setStyle(name, value);
+ }
+
+ m = data[i++]; // num events
+ for (j = 0; j < m; j++)
+ {
+ name = data[i++];
+ value = data[i++];
+ comp.addEventListener(name, value);
+ }
+
+ var children:Array = data[i++];
+ if (children)
+ {
+ if (recursive)
+ comp.generateMXMLInstances(cildren,
recursive);
+ else
+ comp.setMXMLDescriptor(children);
+ }
+ if (id)
+ {
+ document[id] = comp;
+
mx.binding.BindingManager.executeBindings(document, id, comp);
+ }
+ cops.push(comp);
+ }
+ return comps;
+ }
/**
* @inheritDoc
@@ -907,6 +1078,15 @@ public class AddItems extends OverrideBa
_waitingForDeferredContent = false;
}
}
+
+ /**
+ * IMXMLObject support
+ */
+ public function initialized(document:Object, id:String):void
+ {
+ this.document = document;
+ }
+
}
}
Modified:
incubator/flex/sdk/branches/develop/frameworks/projects/mx/src/mx/containers
/ViewStack.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
projects/mx/src/mx/containers/ViewStack.as?rev=1418430&r1=1418429&r2=1418430
&view=diff
============================================================================
==
---
incubator/flexsdk/branches/develop/frameworks/projects/mx/src/mx/containers
/iewStack.as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/mx/src/mx/contaners
/ViewStack.as Fri Dec 7 18:48:26 2012
@@ -736,6 +736,15 @@ public clas ViewStack extends Container
//
//--------------------------------------------------------------------------
+ /**
+ * @private
+ */
+ override protected function generateMXMLInstances(document:Object,
data:Array, recursive:Boolean = true):vod
+ {
+ // in theory, creationpolicy gets aplied later
+ super.generateMXMLInstances(document, data, false);
+ }
+
/*
* @private
*/
Modified:
incubator/flex/sdk/branches/developframeworks/projects/mx/src/mx/core/Conta
iner.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
projects/mx/src/mx/core/Container.as?rev=1418430&r1=1418429&r2=1418430&view=
diff
===========================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/projectsmx/src/mx/core/Conta
iner.as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/project/mx/src/mx/core/Conta
iner.as Fri Dec 7 18:48:26 2012
@@ -4219,7 +4219,11 @@ public class Container extends UICompone
*/
public function createDeferredContent():void
{
- createComponentsFromDescriptors(true);
+ var children:Array = this.MXMLDescriptor;
+ if (children)
+ generateMXMLInstances(ocument, children);
+ else
+ creaeComponentsFromDescriptors(true);
}
/**
Modified:
incubator/flex/sdk/branches/develop/fameworks/projects/spark/build.xml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
projects/spark/build.xml?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
--- incubator/flex/sdk/branches/develop/frameworks/projects/spark/build.xml
(original)
+++ incubator/flex/dk/branches/develop/frameworks/projects/spark/build.xml
Fri Dec 7 18:4:26 2012
@@ -229,7 +229,6 @@
output="${FLEX_HOME}/frameworks/libs/spark.swc">
<jvmarg line="${compc.jvm.args}"/>
<load-config filename="compile-config.xml" />
- <include-file name="version.properties"
path="${FLEX_HOME}/frameworks/version.properties"/>
<arg value="+playerglobal.version=${playerglobal.version}" />
<arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
</compc
Modified:
incubator/flex/sdk/branches/develop/frameworks/projects/sprk/compile-config
.xml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameorks/
projects/spark/compile-config.xml?rev=1418430&r1=1418429&r2=1418430&view=dif
f
============================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/projects/spark/compile-config
.xml (original)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/spark/compile-config
.xml Fri Dec 7 18:48:26 2012
@@ 60,6 +60,11 @@
</include-classes>
<include-file>
+ <nme>version.properties</name>
+ <path>../../version.properties</path>
+ </include-file>
+
<include-file>
<name>defaults.css</name>
<path>defaults.css</path>
</include-file>
Modified:
incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/comp
onents/Group.as
URL:
http://svn.apache.org/viewvc/incubator/fle/sdk/branches/develop/frameworks/
projects/spark/src/spark/coponents/Group.as?rev=1418430&r1=1418429&r2=14184
30&view=diff
===========================================================================
==
---
incubator/flex/sdk/ranches/develop/frameworks/projects/spark/src/spark/comp
onents/Group.as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/comp
onents/Group.as Fri Dec 7 18:48:26 2012
@@ -547,6 +547,14 @@ public class Group extends GroupBase imp
}
}
+ /**
+ * override setting of children
+ */
+ override protected function addMXMLChildren(comps:Array):void
+ {
+ mxmlContent = comps;
+ }
+
//----------------------------------
// mxmlContent
//----------------------------------
Modified:
incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/comp
onents/SkinnableContainer.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
projects/spark/src/spark/components/SkinnableContainer.as?rev=1418430&r1=141
8429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/frmeworks/projects/spark/src/spark/comp
onents/SkinnableContainer.as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/projects/spark/src/spark/comp
oents/SkinnableContainer.as Fri Dec 7 18:48:26 2012
@@ -672,6 +672,14 @@ public class SkinnableContainer extends
_contentMdified = true;
}
+ /**
+ * override setting of children
+ */
+ override protected function addMXMLChildren(comps:Array):void
+ {
+ mxmlContent = comps;
+ }
+
//----------------------------------
// mxmlContentFactory
//----------------------------------
@@ -873,7 +881,18 @@ public class SkinnableContainer extends
//
//--------------------------------------------------------------------------
- /**
+ private var creatingChildren:Boolean;
+
+ override protected function generateMXMLInstances(document:Object,
data:Array, recursive:Boolean = true):void
+ {
+ // don't generate children during super.createChildren
+ if (creatingChildren)
+ return;
+
+ super.generateMXMLInstances(document, data, recursive);
+ }
+
+ /**
* Create content children, if the <code>creationPolicy</code>
property
* is not equal to <code>none</code>.
*
@@ -884,7 +903,9 @@ public class kinnableContainer extends
*/
override protected funcion createChildren():void
{
- super.createChildren();
+ creatingChildren true;
+ super.createChildren();
+ creatingChilren = false;
// TODO (rfrishbe): When navigator support is added, this is where
we would
// determine if content should be created now, or wait until
@@ -1048,7 +1069,17 @@ public class SkinnableContainer extends
*/
public function createDeferredConten():void
{
- if (!mxmlContentCreated)
+ var children:Array = this.MXMLDescriptor;
+ if (children)
+ {
+ generateMXMLInstances(document, children);
+ mxmlContentCreated = true; // keep the code from
recursing back into here.
+ _deferredContentCreated = true;
+ dispatchEvent(new
FlexEvent(FlexEvent.CONTENT_CREATION_COMPLETE));
+ return;
+ }
+
+ if (!mxmlContentCreated)
{
mxmlContentCreated = true;
Modified:
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/BasicTests-c
onfig.xml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
tests/basicTests/BasicTests-config.xml?rev=1418430&r1=1418429&r2=1418430&vie
w=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/BasicTests-c
onfig.xml (original)
+++
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/BasicTests-c
onfig.xml Fri Dec 7 18:48:26 2012
@@ -96,6 +96,7 @@
From mustella.swc
-->
<symbol>ExitWhenDone</symbol>
+ <symbol>SetShowRTE</symbol>
<symbol>SendFormattedResultsToLog</symbol>
</includes>
</flex-config>
Modified:
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/basicLoader.
as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
tests/basicTests/basicLoader.as?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/basicLoader.
as (original)
+++
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/basicLoader.
as Fri Dec 7 18:48:26 2012
@@ -33,8 +33,8 @@ public class basicLoader extends MovieCl
super();
text = new TextField();
- text.width = stage.stageWidth;
- text.height = stage.stageHeight;
+ text.width = 176;
+ text.height = 81;
var tf:TextFormat;
tf = new TextFormat;
Modified:
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/halo/scripts
/SWFLoaderTestScript.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/frameworks/
tests/basicTests/halo/scripts/SWFLoaderTestScript.mxml?rev=1418430&r1=141842
9&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/halo/scripts
/SWFLoaderTestScript.mxml (original)
+++
incubator/flex/sdk/branches/develop/frameworks/tests/basicTests/halo/scripts
/SWFLoaderTestScript.mxml Fri Dec 7 18:48:26 2012
@@ -51,7 +51,7 @@
</TestCase>
<TestCase testID="SWFLoaderTest1">
<body>
- <AssertPixelValue
target="haloSWFLoaderTests.testLoader" x="10" y="10" value="0x0066CC" />
+ <AssertPixelValue
target="haloSWFLoaderTests.testLoader" x="10" y="10" value="0xFF9933" />
</body>
</TestCase>
</testCases>
Modified:
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/AIR/CompareBit
map.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/as
3/src/mustella/AIR/CompareBitmap.as?rev=1418430&r1=1418429&r2=1418430&view=d
iff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/AIR/CompareBit
map.as (original)
+++
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/AIR/CompareBit
map.as Fri Dec 7 18:48:26 2012
@@ -23,9 +23,13 @@ import flash.events.*;
import flash.filesystem.*;
import flash.net.*;
import flash.text.*;
+import flash.text.engine.*;
+import flash.geom.ColorTransform;
import flash.utils.*;
import flash.filesystem.*;
import flash.geom.*;
+import mx.core.IChildList;
+import mx.core.IRawChildrenContainer;
import mx.core.mx_internal;
use namespace mx_internal;
@@ -55,6 +59,11 @@ use namespace mx_internal;
public class CompareBitmap extends Assert
{
public static var useRemoteDiffer:Boolean = false;
+
+ private static var useDisplayListCompare:Boolean = true;
+
+ private static var identityMatrix:String = new Matrix().toString();
+ private static var identityColorTransform:String = new
ColorTransform().toString();
public static var DEFAULT_MAX_COLOR_VARIANCE:int = 0;
public static var DEFAULT_NUM_COLOR_VARIANCES:int = 0;
@@ -135,6 +144,7 @@ public class CompareBitmap extends Asser
public static var fileSuffix:String = "";
private var reader:Loader;
+ private var xmlreader:URLLoader;
private var writer:URLLoader;
private static var connection:LocalConnection;
@@ -268,7 +278,7 @@ public class CompareBitmap extends Asser
}
}
- writePNG(actualTarget);
+ writeBaselines(actualTarget);
return false;
}
else
@@ -360,6 +370,9 @@ public class CompareBitmap extends Asser
private var MAX_LC:int = 12000;
private var screenBits:BitmapData;
private var baselineBits:BitmapData;
+
+ private var compareVal:Object;
+
public function comparePNG(target:DisplayObject):Boolean
{
if (UnitTester.checkEmbeddedFonts)
@@ -371,6 +384,21 @@ public class CompareBitmap extends Asser
}
}
+ if (useDisplayListCompare)
+ {
+ var s:String =
getDisplayListXML(target).toXMLString();
+ if (s !== xmlreader.data)
+ {
+ testResult.doFail ("compare returned" +
compareVal, absolutePathResult(url) + ".bad.xml");
+
+ if (fileSuffix != "")
+ {
+ writePNG (target);
+ }
+ }
+ return true;
+ }
+
if (!reader.content)
{
testResult.doFail ("baseline image not available");
@@ -384,7 +412,7 @@ public class CompareBitmap extends Asser
baselineBits = new BitmapData(reader.content.width,
reader.content.height);
baselineBits.draw(reader.content, new Matrix());
- var compareVal:Object = baselineBits.compare
(screenBits);
+ compareVal = baselineBits.compare (screenBits);
if (compareVal is BitmapData && numColorVariances) {
compareVal = compareWithVariances(compareVal
as BitmapData)
@@ -392,18 +420,19 @@ public class CompareBitmap extends Asser
if (compareVal != 0)
{
- testResult.doFail ("compare returned" +
compareVal, absolutePathResult(url) + ".bad.png");
-
-
- if (useRemoteDiffer)
- {
- sendImagesToDiffer();
- return false;
- } else if (fileSuffix != "") {
- writePNG (target);
- }
+ var req:URLRequest = new URLRequest();
+
+ trace ("compare returned" + compareVal);
+
+ req.url += ".xml";
+ xmlreader = new URLLoader();
+ xmlreader.addEventListener(Event.COMPLETE,
readXMLCompleteHandler);
+
xmlreader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
readErrorHandler);
+
xmlreader.addEventListener(IOErrorEvent.IO_ERROR, readXMLIOErrorHandler);
+ xmlreader.load (req);
+ return false;
}
- }
+ }
catch (e:Error)
{
testResult.doFail (e.getStackTrace());
@@ -411,6 +440,40 @@ public class CompareBitmap extends Asser
return true;
}
+ private function readXMLCompleteHandler(event:Event):void
+ {
+ var actualTarget:DisplayObject =
DisplayObject(context.stringToObject(target));
+ var s:String =
getDisplayListXML(actualTarget).toXMLString();
+ if (s !== xmlreader.data)
+ {
+ testResult.doFail ("compare returned" + compareVal,
absolutePathResult(url) + ".bad.png");
+
+ if (useRemoteDiffer)
+ {
+ sendImagesToDiffer();
+ }
+ else if (fileSuffix != "")
+ {
+ writeBaselines (actualTarget);
+ }
+ else
+ stepComplete();
+ }
+
+ private function readXMLIOErrorHandler(event:Event):void
+ {
+ if (useRemoteDiffer)
+ {
+ sendImagesToDiffer();
+ }
+ else if (fileSuffix != "")
+ {
+ testResult.doFail ("compare returned" + compareVal,
absolutePathResult(url) + ".bad.png");
+ var actualTarget:DisplayObject =
DisplayObject(context.stringToObject(target));
+ writePNG (actualTarget);
+ }
+ }
+
private function mergeSandboxBitmap(target:DisplayObject, pt:Point,
bm:BitmapData, obj:Object):void
{
var targetSize:Point = getTargetSize(target);
@@ -532,22 +595,17 @@ public class CompareBitmap extends Asser
public function readPNG():void
{
- reader = new Loader();
- reader.contentLoaderInfo.addEventListener(Event.COMPLETE,
readCompleteHandler);
-
reader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
readErrorHandler);
-
reader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
readErrorHandler);
-
var req:URLRequest = new URLRequest();
var ba:ByteArray = null;
var file:File;
-
+
// If iOS and AIR, let's try using file I/O instead of
loader stuff. AIR on devices can be a pain with the url stuff.
if( UnitTester.isApollo && (UnitTester.cv.os.toLowerCase()
== DeviceNames.IOS.toLowerCase()) ){
// Trim the leading ../ if we have it.
if ( url.indexOf ("../") == 0 ){
url = url.substring (3);
}
-
+
file = File.documentsDirectory.resolvePath( url );
if( !file.exists ){
@@ -574,12 +632,18 @@ public class CompareBitmap extends Asser
}
req.url = encodeURI2(base + "/" + req.url);
}
- // req.url = encodeURI2(url);
- // }
+ }
+
+ reader = new Loader();
+ reader.contentLoaderInfo.addEventListener(Event.COMPLETE,
readCompleteHandler);
+
reader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
readErrorHandler);
+
reader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
readErrorHandler);
+ // req.url = encodeURI2(url);
+ // }
+
+ trace ("readPNG:requesting url: " + req.url);
+ reader.load (req);
- trace ("readPNG:requesting url: " + req.url);
- reader.load (req);
- }
}
@@ -624,10 +688,60 @@ public class CompareBitmap extends Asser
}
- public function writePNG(target:DisplayObject):void
+ public function writeBaselines(target:DisplayObject,
writeDisplayList:Boolean = true):void
{
- var ba:ByteArray = getPngByteArray(target, screenBits);
-
+ var req:URLRequest = new URLRequest();
+ writer = new URLLoader();
+ req.method = "POST";
+
+ /**
+ * either we got called here to write new baselines
+ * or to save a .bad.png for investigation
+ * in addition, with failures, we upload baseline and
failure to a server
+ */
+ if (UnitTester.createBitmapReferences)
+ {
+ fileSuffix = "";
+ }
+
+
+ if (writeDisplayList)
+ {
+ var s:String =
getDisplayListXML(target).toXMLString();
+ // request data goes on the URL Request
+ req.data = s;
+
+ req.contentType = "text/xml";
+ if (UnitTester.isApollo)
+ {
+ req.url =
encodeURI2(UnitTester.bitmapServerPrefix + adjustWriteURI(adjustPath(url)))
+ fileSuffix + ".xml";
+ } else
+ {
+ req.url =
encodeURI2(UnitTester.bitmapServerPrefix + absolutePath(url)) + fileSuffix +
".xml";
+ }
+ trace ("writing url: " + req.url);
+ writer.addEventListener(Event.COMPLETE,
writeXMLCompleteHandler);
+
writer.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
writeErrorHandler);
+ writer.addEventListener(IOErrorEvent.IO_ERROR,
writeErrorHandler);
+
+ writer.load (req);
+ }
+ }
+
+ private function writeXMLCompleteHandler(event:Event):void
+ {
+ var actualTarget:DisplayObject =
DisplayObject(context.stringToObject(target));
+ writePNG(actualTarget);
+ }
+
+ private function writePNG(target:DisplayObject):void
+ {
+ var req:URLRequest = new URLRequest();
+ writer = new URLLoader();
+ req.method = "POST";
+
+ var ba:ByteArray = getPngByteArray(target, screenBits);
+ trace ("image size: " + ba.length);
if( UnitTester.createBitmapReferences ){
fileSuffix = "";
@@ -733,8 +847,7 @@ public class CompareBitmap extends Asser
private function writeCompleteHandler(event:Event):void
{
trace("baseline write successful " + event);
- if (UnitTester.createBitmapReferences)
- stepComplete();
+ stepComplete();
}
private function uploadCompleteHandler(event:Event):void
@@ -991,6 +1104,157 @@ public class CompareBitmap extends Asser
}
+
+ /****** DisplayList Comparision ******/
+ protected function getDisplayListProperties(d:DisplayObject,
noMask:Boolean = false):XML
+ {
+ var xml:XML;
+ var n:int;
+ var i:int;
+ var childXML:XML;
+ var s:String = getQualifiedClassName(d);
+ s = s.replace("::", ".");
+ xml = new XML("<" + s + "/>");
+ s = d.transform.concatenatedColorTransform.toString();
+ if (s != identityColorTransform)
+ xml.@concatenatedColorTransform = s;
+ if (d.transform.matrix)
+ {
+ s = d.transform.matrix.toString();
+ if (s != identityMatrix)
+ {
+ if (s.indexOf("(a=1, b=0, c=0, d=1, ") ==
-1)
+ xml.@matrix = s;
+ }
+ }
+ else
+ {
+ s = d.transform.matrix3D.rawData.toString();
+ xml.@matrix3D = s;
+ }
+ if (d.x != 0)
+ xml.@x = d.x;
+ if (d.y != 0)
+ xml.@y = d.y;
+ xml.@width = d.width;
+ xml.@height = d.height;
+ if (xml.visible == false)
+ xml.@visible = "false";
+ if (d.mask && !noMask)
+ {
+ xml.mask = <mask/>;
+ childXML = getDisplayListProperties(d.mask, true);
+ xml.mask.appendChild = childXML;
+ }
+ if (d.scrollRect)
+ {
+ s = d.scrollRect.toString();
+ xml.@scrollRect = s;
+ }
+ if (d.blendMode && d.blendMode != "normal")
+ xml.@blendMode = d.blendMode;
+ if (d.cacheAsBitmap)
+ xml.@cacheAsBitmap = "true";
+ if (d.filters && d.filters.length > 0)
+ {
+ s = d.filters.toString();
+ xml.@filters = s;
+ }
+ if (d.opaqueBackground)
+ xml.@opaqueBackground = "true";
+ if (d.scale9Grid)
+ {
+ s = d.scale9Grid.toString();
+ xml.@scale9Grid = s;
+ }
+ if (d is TextField)
+ {
+ xml.htmlText = TextField(d).htmlText;
+ }
+ if (d is Loader &&
Loader(d).contentLoaderInfo.contentType.indexOf("image") != -1)
+ {
+ s = Loader(d).contentLoaderInfo.url;
+ s = s.substring(s.lastIndexOf("/") + 1);
+ xml.@loaderbitmap = s;
+ }
+ if (d is TextLine)
+ {
+ var tl:TextLine = TextLine(d);
+ xml.@ascent = tl.ascent;
+ xml.@descent = tl.descent;
+ xml.@atomCount = tl.atomCount;
+ xml.@hasGraphicElement = tl.hasGraphicElement;
+ if (tl.textBlock)
+ {
+ var tb:TextBlock = TextLine(d).textBlock;
+ var ce:ContentElement = tb.content;
+ s =
ce.rawText.substr(tl.textBlockBeginIndex, tl.rawTextLength);
+ xml.@text = s;
+ }
+ }
+
+ if (d is IRawChildrenContainer)
+ {
+ var rawChildren:IChildList =
IRawChildrenContainer(d).rawChildren;
+ n = rawChildren.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ childXML =
getDisplayListProperties(rawChildren.getChildAt(i));
+ xml.appendChild(childXML);
+ }
+ }
+ else if (d is DisplayObjectContainer)
+ {
+ var doc:DisplayObjectContainer = d as
DisplayObjectContainer;
+ n = doc.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ childXML =
getDisplayListProperties(doc.getChildAt(i));
+ xml.appendChild(childXML);
+ }
+ }
+ return xml;
+ }
+
+ // scan entire display list, but only dump objects intersecting
target
+ protected function getDisplayListXML(target:DisplayObject):XML
+ {
+ var n:int;
+ var i:int;
+ var child:DisplayObject;
+ var childXML:XML;
+
+ var doc:DisplayObjectContainer =
DisplayObjectContainer(target.root);
+ var xml:XML = <DisplayList />;
+ if (doc is IRawChildrenContainer)
+ {
+ var rawChildren:IChildList =
IRawChildrenContainer(doc).rawChildren;
+ n = rawChildren.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ child = rawChildren.getChildAt(i);
+ if (target.hitTestObject(child))
+ {
+ childXML =
getDisplayListProperties(child);
+ xml.appendChild(childXML);
+ }
+ }
+ }
+ else
+ {
+ n = doc.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ child = doc.getChildAt(i);
+ if (target.hitTestObject(child))
+ {
+ childXML =
getDisplayListProperties(child);
+ xml.appendChild(childXML);
+ }
+ }
+ }
+ return xml;
+ }
}
}
Modified:
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.
as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/as
3/src/mustella/CompareBitmap.as?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.
as (original)
+++
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.
as Fri Dec 7 18:48:26 2012
@@ -24,9 +24,13 @@ import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
+import flash.text.engine.*;
+import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
+import mx.core.IChildList;
+import mx.core.IRawChildrenContainer;
import mx.core.mx_internal;
use namespace mx_internal;
@@ -57,7 +61,10 @@ use namespace mx_internal;
public class CompareBitmap extends Assert
{
public static var useRemoteDiffer:Boolean = false;
-
+
+ private static var identityMatrix:String = new Matrix().toString();
+ private static var identityColorTransform:String = new
ColorTransform().toString();
+
public static var DEFAULT_MAX_COLOR_VARIANCE:int = 0;
public static var DEFAULT_NUM_COLOR_VARIANCES:int = 0;
@@ -136,6 +143,7 @@ public class CompareBitmap extends Asser
public static var fileSuffix:String = "";
private var reader:Loader;
+ private var xmlreader:URLLoader;
private var writer:URLLoader;
private static var connection:LocalConnection;
@@ -275,7 +283,7 @@ public class CompareBitmap extends Asser
}
}
- writePNG(actualTarget);
+ writeBaselines(actualTarget);
return false;
}
else
@@ -352,6 +360,8 @@ public class CompareBitmap extends Asser
private var MAX_LC:int = 12000;
private var screenBits:BitmapData;
private var baselineBits:BitmapData;
+
+ private var compareVal:Object;
public function comparePNG(target:DisplayObject):Boolean
{
@@ -374,7 +384,7 @@ public class CompareBitmap extends Asser
testResult.doFail ("CompareBitmap BIG FAIL! Content
reader is null!");
return true;
}
-
+
getScreenBits(target);
try
@@ -382,30 +392,67 @@ public class CompareBitmap extends Asser
baselineBits = new BitmapData(reader.content.width,
reader.content.height);
baselineBits.draw(reader.content, new Matrix());
- var compareVal:Object = baselineBits.compare
(screenBits);
+ compareVal = baselineBits.compare (screenBits);
if (compareVal is BitmapData && numColorVariances)
compareVal = compareWithVariances(compareVal
as BitmapData)
if (compareVal != 0)
{
- testResult.doFail ("compare returned" +
compareVal, absolutePathResult(url) + ".bad.png");
-
- if (useRemoteDiffer)
- {
- sendImagesToDiffer();
- return false;
- } else if (fileSuffix != "") {
- writePNG (target);
- }
+ var req:URLRequest = new URLRequest();
+
+ trace ("compare returned" + compareVal);
+
+ req.url += ".xml";
+ xmlreader = new URLLoader();
+ xmlreader.addEventListener(Event.COMPLETE,
readXMLCompleteHandler);
+
xmlreader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
readErrorHandler);
+
xmlreader.addEventListener(IOErrorEvent.IO_ERROR, readXMLIOErrorHandler);
+ xmlreader.load (req);
+ return false;
}
- }
+ }
catch (e:Error)
{
testResult.doFail (e.getStackTrace());
}
return true;
}
+
+ private function readXMLCompleteHandler(event:Event):void
+ {
+ var actualTarget:DisplayObject =
DisplayObject(context.stringToObject(target));
+ var s:String =
getDisplayListXML(actualTarget).toXMLString();
+ if (s !== xmlreader.data)
+ {
+ testResult.doFail ("compare returned" + compareVal,
absolutePathResult(url) + ".bad.png");
+
+ if (useRemoteDiffer)
+ {
+ sendImagesToDiffer();
+ }
+ else if (fileSuffix != "")
+ {
+ writeBaselines (actualTarget);
+ }
+ }
+ else
+ stepComplete();
+ }
+
+ private function readXMLIOErrorHandler(event:Event):void
+ {
+ if (useRemoteDiffer)
+ {
+ sendImagesToDiffer();
+ }
+ else if (fileSuffix != "")
+ {
+ testResult.doFail ("compare returned" + compareVal,
absolutePathResult(url) + ".bad.png");
+ var actualTarget:DisplayObject =
DisplayObject(context.stringToObject(target));
+ writePNG (actualTarget);
+ }
+ }
private function mergeSandboxBitmap(target:DisplayObject, pt:Point,
bm:BitmapData, obj:Object):void
{
@@ -501,31 +548,33 @@ public class CompareBitmap extends Asser
public function readPNG():void
{
- reader = new Loader();
var req:URLRequest = new URLRequest();
if (UnitTester.isApollo)
{
req.url = encodeURI2(CompareBitmap.adjustPath
(url));
- } else
- {
- req.url = url;
- var base:String =
normalizeURL(context.application.url);
- base = base.substring(0, base.lastIndexOf("/"));
- while (req.url.indexOf("../") == 0)
- {
- base = base.substring(0,
base.lastIndexOf("/"));
- req.url = req.url.substring(3);
- }
+ }
+ else
+ {
+ req.url = url;
+ var base:String = normalizeURL(context.application.url);
+ base = base.substring(0, base.lastIndexOf("/"));
+ while (req.url.indexOf("../") == 0)
+ {
+ base = base.substring(0, base.lastIndexOf("/"));
+ req.url = req.url.substring(3);
+ }
- req.url = encodeURI2(base + "/" + req.url);
- }
+ req.url = encodeURI2(base + "/" + req.url);
+ }
// req.url = encodeURI2(url);
// }
+ reader = new Loader();
+
trace ("readPNG:requesting url: " + req.url);
- reader.contentLoaderInfo.addEventListener(Event.COMPLETE,
readCompleteHandler);
-
reader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
readErrorHandler);
-
reader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
readErrorHandler);
+ reader.contentLoaderInfo.addEventListener(Event.COMPLETE,
readCompleteHandler);
+
reader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
readErrorHandler);
+ reader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
readErrorHandler);
reader.load (req);
}
@@ -556,27 +605,66 @@ public class CompareBitmap extends Asser
return ba;
}
- public function writePNG(target:DisplayObject):void
+ public function writeBaselines(target:DisplayObject,
writeDisplayList:Boolean = true):void
{
-
- var ba:ByteArray = getPngByteArray(target, screenBits);
- trace ("image size: " + ba.length);
-
-
+ var req:URLRequest = new URLRequest();
+ writer = new URLLoader();
+ req.method = "POST";
+
/**
* either we got called here to write new baselines
- * or to save a .bad.png for investigation
+ * or to save a .bad.png for investigation
* in addition, with failures, we upload baseline and
failure to a server
- */
+ */
if (UnitTester.createBitmapReferences)
{
fileSuffix = "";
}
+
-
- writer = new URLLoader();
+ if (writeDisplayList)
+ {
+ var s:String =
getDisplayListXML(target).toXMLString();
+ // request data goes on the URL Request
+ req.data = s;
+
+ req.contentType = "text/xml";
+ if (UnitTester.isApollo)
+ {
+ req.url =
encodeURI2(UnitTester.bitmapServerPrefix + adjustWriteURI(adjustPath(url)))
+ fileSuffix + ".xml";
+ } else
+ {
+ req.url =
encodeURI2(UnitTester.bitmapServerPrefix + absolutePath(url)) + fileSuffix +
".xml";
+ }
+ trace ("writing url: " + req.url);
+ writer.addEventListener(Event.COMPLETE,
writeXMLCompleteHandler);
+
writer.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
writeErrorHandler);
+ writer.addEventListener(IOErrorEvent.IO_ERROR,
writeErrorHandler);
+
+ writer.load (req);
+ }
+ }
+
+ private function writeXMLCompleteHandler(event:Event):void
+ {
+ var actualTarget:DisplayObject =
DisplayObject(context.stringToObject(target));
+ writePNG(actualTarget);
+ }
+
+ private function writePNG(target:DisplayObject):void
+ {
var req:URLRequest = new URLRequest();
+ writer = new URLLoader();
req.method = "POST";
+
+ var ba:ByteArray = getPngByteArray(target, screenBits);
+ trace ("image size: " + ba.length);
+ // request data goes on the URL Request
+ req.data = ba;
+ // can't send this, don't need to anyway var rhArray:Array =
new Array(new URLRequestHeader("Content-Length", new String(ba.length) ));
+
+ req.contentType = "image/png";
+
if (UnitTester.isApollo)
{
req.url = encodeURI2(UnitTester.bitmapServerPrefix +
adjustWriteURI(adjustPath(url))) + fileSuffix;
@@ -585,16 +673,12 @@ public class CompareBitmap extends Asser
req.url = encodeURI2(UnitTester.bitmapServerPrefix +
absolutePath(url)) + fileSuffix;
}
trace ("writing url: " + req.url);
- writer.addEventListener(Event.COMPLETE,
writeCompleteHandler);
- writer.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
writeErrorHandler);
- writer.addEventListener(IOErrorEvent.IO_ERROR,
writeErrorHandler);
-
- // request data goes on the URL Request
- req.data = ba;
- // can't send this, don't need to anyway var rhArray:Array =
new Array(new URLRequestHeader("Content-Length", new String(ba.length) ));
-
- req.contentType = "image/png";
+ writer.addEventListener(Event.COMPLETE,
writeCompleteHandler);
+ writer.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
writeErrorHandler);
+ writer.addEventListener(IOErrorEvent.IO_ERROR,
writeErrorHandler);
+
writer.load (req);
+
/// If this is about creating bitmaps, skip the upload,
we're done
if (UnitTester.createBitmapReferences || UnitTester.run_id
== "-1" || baselineMissing)
@@ -672,11 +756,8 @@ public class CompareBitmap extends Asser
if( baselineMissing ){
baselineMissing = false;
testResult.doFail( baselineMissingMessage );
- stepComplete();
- }else{
- if (UnitTester.createBitmapReferences)
- stepComplete();
}
+ stepComplete();
}
private function uploadCompleteHandler(event:Event):void
@@ -965,6 +1046,157 @@ public class CompareBitmap extends Asser
}*/
+
+ /****** DisplayList Comparision ******/
+ protected function getDisplayListProperties(d:DisplayObject,
noMask:Boolean = false):XML
+ {
+ var xml:XML;
+ var n:int;
+ var i:int;
+ var childXML:XML;
+ var s:String = getQualifiedClassName(d);
+ s = s.replace("::", ".");
+ xml = new XML("<" + s + "/>");
+ s = d.transform.concatenatedColorTransform.toString();
+ if (s != identityColorTransform)
+ xml.@concatenatedColorTransform = s;
+ if (d.transform.matrix)
+ {
+ s = d.transform.matrix.toString();
+ if (s != identityMatrix)
+ {
+ if (s.indexOf("(a=1, b=0, c=0, d=1, ") ==
-1)
+ xml.@matrix = s;
+ }
+ }
+ else
+ {
+ s = d.transform.matrix3D.rawData.toString();
+ xml.@matrix3D = s;
+ }
+ if (d.x != 0)
+ xml.@x = d.x;
+ if (d.y != 0)
+ xml.@y = d.y;
+ xml.@width = d.width;
+ xml.@height = d.height;
+ if (xml.visible == false)
+ xml.@visible = "false";
+ if (d.mask && !noMask)
+ {
+ xml.mask = <mask/>;
+ childXML = getDisplayListProperties(d.mask, true);
+ xml.mask.appendChild = childXML;
+ }
+ if (d.scrollRect)
+ {
+ s = d.scrollRect.toString();
+ xml.@scrollRect = s;
+ }
+ if (d.blendMode && d.blendMode != "normal")
+ xml.@blendMode = d.blendMode;
+ if (d.cacheAsBitmap)
+ xml.@cacheAsBitmap = "true";
+ if (d.filters && d.filters.length > 0)
+ {
+ s = d.filters.toString();
+ xml.@filters = s;
+ }
+ if (d.opaqueBackground)
+ xml.@opaqueBackground = "true";
+ if (d.scale9Grid)
+ {
+ s = d.scale9Grid.toString();
+ xml.@scale9Grid = s;
+ }
+ if (d is TextField)
+ {
+ xml.htmlText = TextField(d).htmlText;
+ }
+ if (d is Loader &&
Loader(d).contentLoaderInfo.contentType.indexOf("image") != -1)
+ {
+ s = Loader(d).contentLoaderInfo.url;
+ s = s.substring(s.lastIndexOf("/") + 1);
+ xml.@loaderbitmap = s;
+ }
+ if (d is TextLine)
+ {
+ var tl:TextLine = TextLine(d);
+ xml.@ascent = tl.ascent;
+ xml.@descent = tl.descent;
+ xml.@atomCount = tl.atomCount;
+ xml.@hasGraphicElement = tl.hasGraphicElement;
+ if (tl.textBlock)
+ {
+ var tb:TextBlock = TextLine(d).textBlock;
+ var ce:ContentElement = tb.content;
+ s =
ce.rawText.substr(tl.textBlockBeginIndex, tl.rawTextLength);
+ xml.@text = s;
+ }
+ }
+
+ if (d is IRawChildrenContainer)
+ {
+ var rawChildren:IChildList =
IRawChildrenContainer(d).rawChildren;
+ n = rawChildren.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ childXML =
getDisplayListProperties(rawChildren.getChildAt(i));
+ xml.appendChild(childXML);
+ }
+ }
+ else if (d is DisplayObjectContainer)
+ {
+ var doc:DisplayObjectContainer = d as
DisplayObjectContainer;
+ n = doc.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ childXML =
getDisplayListProperties(doc.getChildAt(i));
+ xml.appendChild(childXML);
+ }
+ }
+ return xml;
+ }
+
+ // scan entire display list, but only dump objects intersecting
target
+ protected function getDisplayListXML(target:DisplayObject):XML
+ {
+ var n:int;
+ var i:int;
+ var child:DisplayObject;
+ var childXML:XML;
+
+ var doc:DisplayObjectContainer =
DisplayObjectContainer(target.root);
+ var xml:XML = <DisplayList />;
+ if (doc is IRawChildrenContainer)
+ {
+ var rawChildren:IChildList =
IRawChildrenContainer(doc).rawChildren;
+ n = rawChildren.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ child = rawChildren.getChildAt(i);
+ if (target.hitTestObject(child))
+ {
+ childXML =
getDisplayListProperties(child);
+ xml.appendChild(childXML);
+ }
+ }
+ }
+ else
+ {
+ n = doc.numChildren;
+ for (i = 0; i < n; i++)
+ {
+ child = doc.getChildAt(i);
+ if (target.hitTestObject(child))
+ {
+ childXML =
getDisplayListProperties(child);
+ xml.appendChild(childXML);
+ }
+ }
+ }
+ return xml;
+ }
}
}
Modified:
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/ResetComponent
.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/as
3/src/mustella/ResetComponent.as?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/ResetComponent
.as (original)
+++
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/ResetComponent
.as Fri Dec 7 18:48:26 2012
@@ -48,11 +48,12 @@ public class ResetComponent extends Test
private static var effectsInEffect:QName = new QName(mx_internal,
"effectsInEffect");
private static var activeTweens:QName = new QName(mx_internal,
"activeTweens");
private static var tooltipReset:QName = new QName(mx_internal,
"reset");
+ private static var resetFocusOnCleanup:Boolean = true;
private var actualWaitEvent:String;
private var waited:Boolean = false;
-
+
/**
* Called by the TestCase when it is time to start this step
* fake waitEvent because we don't want to listen to the old one
@@ -328,11 +329,14 @@ public class ResetComponent extends Test
r = root;
r = root["topLevelSystemManager"];
- UnitTester.blockFocusEvents = false;
- r.stage.focus = null;
- UnitTester.blockFocusEvents = true;
-
- n = r.numChildren;
+ if (resetFocusOnCleanup)
+ {
+ UnitTester.blockFocusEvents = false;
+ r.stage.focus = null;
+ UnitTester.blockFocusEvents = true;
+ }
+
+ n = r.numChildren;
for (i = 0; i < n; i++)
{
if (context.knownDisplayObjects[r.getChildAt(i)] == null)
@@ -349,7 +353,7 @@ public class ResetComponent extends Test
n--;
}
}
-
+
r = root;
r = root["topLevelSystemManager"];
r = r.popUpChildren;
Modified:
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/UnitTester.as
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/as
3/src/mustella/UnitTester.as?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/UnitTester.as
(original)
+++
incubator/flex/sdk/branches/develop/mustella/as3/src/mustella/UnitTester.as
Fri Dec 7 18:48:26 2012
@@ -1873,6 +1873,8 @@ public class UnitTester extends EventDis
var tr:TestResult = currentTest.testResult;
if (!tr.hasStatus())
tr.result = TestResult.PASS;
+ if (hasRTE)
+ tr.result = TestResult.FAIL;
tr.endTime = new Date().time;
TestOutput.logResult (tr.toString());
if (hasRTE)
Modified:
incubator/flex/sdk/branches/develop/mustella/java/src/mustella/Runner.java
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/ja
va/src/mustella/Runner.java?rev=1418430&r1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/java/src/mustella/Runner.java
(original)
+++
incubator/flex/sdk/branches/develop/mustella/java/src/mustella/Runner.java
Fri Dec 7 18:48:26 2012
@@ -338,6 +338,7 @@ public class Runner {
}
try {
+ System.out.println ("Step Timeout: " +
System.getProperty ("step_timeout"));
step_timeout = Long.parseLong (System.getProperty
("step_timeout"));
if (step_timeout < 1000)
step_timeout = step_timeout*1000;
@@ -623,7 +624,7 @@ public class Runner {
break;
}
- // System.out.println ("RUNNER HAS THIS TO DO: " +
args[0]);
+ System.out.println ("RUNNER HAS THIS TO DO: " +
args[i]);
seenEnd = false;
@@ -1093,6 +1094,7 @@ public class Runner {
public static String normalizeDirOS(String dir, boolean
apollo_adjust) {
+ System.out.println ("normalizeDirOS: " + dir);
if (dir==null) dir=".";
try {
dir=new File(dir).getCanonicalPath();
@@ -1665,6 +1667,8 @@ public class Runner {
String [] whatever = {""};
lastTestCaseStart = "";
seenEnd = false;
+
+ try { Thread.sleep (1000); } catch
(Exception e) { }
if(!getResultsFromLog)
manageMetaTimer("process start");
Modified:
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/M
ethods/VideoMethodTester.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/te
sts/components/VideoDisplay/Methods/VideoMethodTester.mxml?rev=1418430&r1=14
18429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/M
ethods/VideoMethodTester.mxml (original)
+++
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/M
ethods/VideoMethodTester.mxml Fri Dec 7 18:48:26 2012
@@ -73,7 +73,7 @@
<SetProperty target="vd" propertyName="source"
value="assets/video.flv" waitEvent="ready" waitTarget="vd" />
</setup>
<body>
- <AssertPropertyValue target="vd" propertyName="state"
value="buffering" />
+ <AssertPropertyValue target="vd" propertyName="state"
value="playing" />
<AssertEvent target="vd"
eventName="stateChange" eventClass="mx.events::VideoEvent"
numExpectedEvents="-1" />
<AssertPropertyValue target="vd"
propertyName="state" value="playing" />
<RunCode code="application.vd.pause();"
waitEvent="stateChange" waitTarget="vd" />
Modified:
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/P
roperties/VideoPropertyTester.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/te
sts/components/VideoDisplay/Properties/VideoPropertyTester.mxml?rev=1418430&
r1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/P
roperties/VideoPropertyTester.mxml (original)
+++
incubator/flex/sdk/branches/develop/mustella/tests/components/VideoDisplay/P
roperties/VideoPropertyTester.mxml Fri Dec 7 18:48:26 2012
@@ -75,7 +75,7 @@
<AssertPropertyValue target="vd" propertyName="state"
value="buffering" />
-->
<AssertEvent target="vd" eventName="stateChange"
eventClass="mx.events::VideoEvent" numExpectedEvents="1" />
- <AssertPropertyValue target="vd" propertyName="state"
value="playing" />
+ <AssertPropertyValue target="vd" propertyName="state"
value="loading" />
</body>
</TestCase>
@@ -217,7 +217,7 @@
<AssertPropertyValue target="vd" propertyName="state"
value="buffering" />
-->
<AssertEvent target="vd"
eventName="stateChange" eventClass="mx.events::VideoEvent"
numExpectedEvents="-1" />
- <AssertPropertyValue target="vd" propertyName="state"
value="playing" />
+ <AssertPropertyValue target="vd" propertyName="state"
value="loading" />
<RunCode code="application.vd.pause();"
waitEvent="stateChange" waitTarget="vd" />
<AssertPropertyValue target="vd" propertyName="state"
value="paused" />
<RunCode code="application.vd.play()"
waitEvent="stateChange" waitTarget="vd" />
Modified:
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_gif_runtime.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/te
sts/containers/tabnavigator/SWFs/comps/button_gif_runtime.mxml?rev=1418430&r
1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_gif_runtime.mxml (original)
+++
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_gif_runtime.mxml Fri Dec 7 18:48:26 2012
@@ -18,6 +18,28 @@
-->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
+ <mx:Script>
+ <![CDATA[
+ private function airify(s:String):String
+ {
+ if
(ApplicationDomain.currentDomain.hasDefinition("flash.filesystem.File"))
+ {
+ var c:Class =
Class(ApplicationDomain.currentDomain.getDefinition("flash.filesystem.File")
);
+ var f:Object =
c.applicationDirectory;
+ var p:String = f.nativePath;
+ while (s.indexOf("../") == 0)
+ {
+ var dot:int =
p.lastIndexOf("/");
+ p = p.substr(0, dot);
+ s = s.substr(3);
+ }
+ f.nativePath = p + "/" + s;
+ return f.url;
+ }
+ return s;
+ }
+ ]]>
+ </mx:Script>
<mx:states>
<mx:State name="notBase">
<mx:RemoveChild target="{baseButton}"/>
@@ -25,40 +47,40 @@
<mx:State name="up" />
<mx:State name="over" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonOver.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonOver.gif')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="down" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonDown.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonDown.gif')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="disabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonDisabled.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonDisabled.gif')
}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedUp" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedUp.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedUp.gif
')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedOver" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedOver.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedOver.g
if')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDown" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.g
if')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDisabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.g
if')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
</mx:states>
- <mx:Image id="baseButton"
source="../../../../Assets/Images/ButtonImages/buttonUp.gif"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image id="baseButton"
source="{airify('../../../../Assets/Images/ButtonImages/buttonUp.gif')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:Canvas>
\ No newline at end of file
Modified:
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_jpg_runtime.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/te
sts/containers/tabnavigator/SWFs/comps/button_jpg_runtime.mxml?rev=1418430&r
1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_jpg_runtime.mxml (original)
+++
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_jpg_runtime.mxml Fri Dec 7 18:48:26 2012
@@ -18,6 +18,28 @@
-->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
+ <mx:Script>
+ <![CDATA[
+ private function airify(s:String):String
+ {
+ if
(ApplicationDomain.currentDomain.hasDefinition("flash.filesystem.File"))
+ {
+ var c:Class =
Class(ApplicationDomain.currentDomain.getDefinition("flash.filesystem.File")
);
+ var f:Object =
c.applicationDirectory;
+ var p:String = f.nativePath;
+ while (s.indexOf("../") == 0)
+ {
+ var dot:int =
p.lastIndexOf("/");
+ p = p.substr(0, dot);
+ s = s.substr(3);
+ }
+ f.nativePath = p + "/" + s;
+ return f.url;
+ }
+ return s;
+ }
+ ]]>
+ </mx:Script>
<mx:states>
<mx:State name="notBase">
<mx:RemoveChild target="{baseButton}"/>
@@ -25,39 +47,39 @@
<mx:State name="up" />
<mx:State name="over" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonOver.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonOver.jpg')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="down" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonDown.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonDown.jpg')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="disabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonDisabled.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonDisabled.jpg')
}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedUp" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedUp.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedUp.jpg
')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedOver" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedOver.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedOver.j
pg')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDown" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.j
pg')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDisabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.j
pg')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
</mx:states>
- <mx:Image id="baseButton"
source="../../../../Assets/Images/ButtonImages/buttonUp.jpg"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image id="baseButton"
source="{airify('../../../../Assets/Images/ButtonImages/buttonUp.jpg')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:Canvas>
\ No newline at end of file
Modified:
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_png_runtime.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/te
sts/containers/tabnavigator/SWFs/comps/button_png_runtime.mxml?rev=1418430&r
1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_png_runtime.mxml (original)
+++
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_png_runtime.mxml Fri Dec 7 18:48:26 2012
@@ -18,6 +18,28 @@
-->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
+ <mx:Script>
+ <![CDATA[
+ private function airify(s:String):String
+ {
+ if
(ApplicationDomain.currentDomain.hasDefinition("flash.filesystem.File"))
+ {
+ var c:Class =
Class(ApplicationDomain.currentDomain.getDefinition("flash.filesystem.File")
);
+ var f:Object =
c.applicationDirectory;
+ var p:String = f.nativePath;
+ while (s.indexOf("../") == 0)
+ {
+ var dot:int =
p.lastIndexOf("/");
+ p = p.substr(0, dot);
+ s = s.substr(3);
+ }
+ f.nativePath = p + "/" + s;
+ return f.url;
+ }
+ return s;
+ }
+ ]]>
+ </mx:Script>
<mx:states>
<mx:State name="notBase">
<mx:RemoveChild target="{baseButton}"/>
@@ -25,39 +47,39 @@
<mx:State name="up" />
<mx:State name="over" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonOver.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonOver.png')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="down" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonDown.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonDown.png')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="disabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonDisabled.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonDisabled.png')
}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedUp" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedUp.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedUp.png
')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedOver" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedOver.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedOver.p
ng')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDown" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.p
ng')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDisabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.p
ng')}" maintainAspectRatio="false" width="100%" height="100%"/>
</mx:AddChild>
</mx:State>
</mx:states>
- <mx:Image id="baseButton"
source="../../../../Assets/Images/ButtonImages/buttonUp.png"
maintainAspectRatio="false" width="100%" height="100%"/>
+ <mx:Image id="baseButton"
source="{airify('../../../../Assets/Images/ButtonImages/buttonUp.png')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:Canvas>
\ No newline at end of file
Modified:
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_swf_runtime.mxml
URL:
http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/te
sts/containers/tabnavigator/SWFs/comps/button_swf_runtime.mxml?rev=1418430&r
1=1418429&r2=1418430&view=diff
============================================================================
==
---
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_swf_runtime.mxml (original)
+++
incubator/flex/sdk/branches/develop/mustella/tests/containers/tabnavigator/S
WFs/comps/button_swf_runtime.mxml Fri Dec 7 18:48:26 2012
@@ -18,6 +18,28 @@
-->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
+ <mx:Script>
+ <![CDATA[
+ private function airify(s:String):String
+ {
+ if
(ApplicationDomain.currentDomain.hasDefinition("flash.filesystem.File"))
+ {
+ var c:Class =
Class(ApplicationDomain.currentDomain.getDefinition("flash.filesystem.File")
);
+ var f:Object =
c.applicationDirectory;
+ var p:String = f.nativePath;
+ while (s.indexOf("../") == 0)
+ {
+ var dot:int =
p.lastIndexOf("/");
+ p = p.substr(0, dot);
+ s = s.substr(3);
+ }
+ f.nativePath = p + "/" + s;
+ return f.url;
+ }
+ return s;
+ }
+ ]]>
+ </mx:Script>
<mx:states>
<mx:State name="notBase">
<mx:RemoveChild target="{baseButton}"/>
@@ -25,48 +47,48 @@
<mx:State name="up" />
<mx:State name="over" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="overImage"
source="../../../../Assets/Images/ButtonImages/buttonOver.swf"
+ <mx:Image id="overImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonOver.swf')}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="down" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="downImage"
source="../../../../Assets/Images/ButtonImages/buttonDown.swf"
+ <mx:Image id="downImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonDown.swf')}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="disabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="disabledImage"
source="../../../../Assets/Images/ButtonImages/buttonDisabled.swf"
+ <mx:Image id="disabledImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonDisabled.swf')
}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedUp" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="selectedUpImage"
source="../../../../Assets/Images/ButtonImages/buttonSelectedUp.swf"
+ <mx:Image id="selectedUpImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedUp.swf
')}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedOver" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="selectedOverImage"
source="../../../../Assets/Images/ButtonImages/buttonSelectedOver.swf"
+ <mx:Image id="selectedOverImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedOver.s
wf')}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDown" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="selectedDownImage"
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.swf"
+ <mx:Image id="selectedDownImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.s
wf')}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
<mx:State name="selectedDisabled" basedOn="notBase">
<mx:AddChild creationPolicy="all">
- <mx:Image id="selectedDisabledImage"
source="../../../../Assets/Images/ButtonImages/buttonSelectedDown.swf"
+ <mx:Image id="selectedDisabledImage"
source="{airify('../../../../Assets/Images/ButtonImages/buttonSelectedDown.s
wf')}"
maintainAspectRatio="false" width="100%"
height="100%"/>
</mx:AddChild>
</mx:State>
</mx:states>
- <mx:Image id="baseButton"
source="../../../../Assets/Images/ButtonImages/buttonUp.swf"
+ <mx:Image id="baseButton"
source="{airify('../../../../Assets/Images/ButtonImages/buttonUp.swf')}"
maintainAspectRatio="false" width="100%" height="100%"/>
</mx:Canvas>
\ No newline at end of file
------ End of Forwarded Message