Fwd: [jira] [Updated] (FLEX-35321) LayoutManager initializes components which are no longer on stage

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fwd: [jira] [Updated] (FLEX-35321) LayoutManager initializes components which are no longer on stage

Mihai Chira
Hi all, I just want to make sure that my assumptions about LayoutManager
are sound. This behavior (which I would personally catalogue as a bug) is
causing our application some problems: dialogues initialised after they've
been removed from stage, thus triggering their mediators' onRegister method
(via RobotLegs), which try to work with data that's no longer there,
resulting in fatal errors.

Thanks.
---------- Forwarded message ----------
From: "Mihai Chira (JIRA)" <[hidden email]>
Date: 5 Jun 2017 14:00
Subject: [jira] [Updated] (FLEX-35321) LayoutManager initializes components
which are no longer on stage
To: <[hidden email]>
Cc:


     [ https://issues.apache.org/jira/browse/FLEX-35321?page=
com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mihai Chira updated FLEX-35321:
-------------------------------
    Description:
*Scenario A*: during an object's validation cycle some code resulting from
{{validateSize()}}, {{validateProperties()}} or {{validateDisplayList()}}
results in the object's removal from stage.

*Scenario B*: a user performs an action whose effect is the removal of a
component, exactly when that component is being validated in phases
({{LayoutManager.usePhasedInstantiation == true}}, which is to say, in the
span of two-three frames.
(For the unit test that models this scenario.)

----

*Expected behaviour*: {{LayoutManager}} detects the object's removal from
stage, stops validating it, and never sets its {{initialized}} flag to
{{true}}.
*Actual behaviour*: {{LayoutManager}} does not detect the object's removal
from stage, continues validating it, and ends up setting the object's
{{initialized}} flag to {{true}}.
*Unit test*: {{LayoutManager_FLEX_35321_Tests}}.

  was:
*Scenario A*: during an object's validation cycle some code resulting from
{{validateSize()}}, {{validateProperties()}} or {{validateDisplayList()}}
results in the object's removal from stage.

*Scenario B*: a user performs an action whose effect is the removal of a
component, exactly when that component is being validated in phases
({{LayoutManager.usePhasedInstantiation == true}}, which is to say, in the
span of two-three frames.
(For the unit test that models this scenario, see {{LayoutManagerTests}}.)

----

*Expected behaviour*: {{LayoutManager}} detects the object's removal from
stage, stops validating it, and never sets its {{initialized}} flag to
{{true}}.
*Actual behaviour*: {{LayoutManager}} does not detect the object's removal
from stage, continues validating it, and ends up setting the object's
{{initialized}} flag to {{true}}.


> LayoutManager initializes components which are no longer on stage
> -----------------------------------------------------------------
>
>                 Key: FLEX-35321
>                 URL: https://issues.apache.org/jira/browse/FLEX-35321
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Layout - General
>    Affects Versions: Apache Flex 4.16.0
>            Reporter: Mihai Chira
>            Assignee: Mihai Chira
>             Fix For: Apache Flex 4.17.0
>
>
> *Scenario A*: during an object's validation cycle some code resulting
from {{validateSize()}}, {{validateProperties()}} or
{{validateDisplayList()}} results in the object's removal from stage.
> *Scenario B*: a user performs an action whose effect is the removal of a
component, exactly when that component is being validated in phases
({{LayoutManager.usePhasedInstantiation == true}}, which is to say, in the
span of two-three frames.
> (For the unit test that models this scenario.)
> ----
> *Expected behaviour*: {{LayoutManager}} detects the object's removal from
stage, stops validating it, and never sets its {{initialized}} flag to
{{true}}.
> *Actual behaviour*: {{LayoutManager}} does not detect the object's
removal from stage, continues validating it, and ends up setting the
object's {{initialized}} flag to {{true}}.
> *Unit test*: {{LayoutManager_FLEX_35321_Tests}}.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)