Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Loading several screens simultaneously in Chrome fails

    Hi,

    It seems like there is an issue in Chrome when loading several screen fragments (component XML) at the same time. I.e like this:
    Code:
    public void onModuleLoad() {	
    	RPCManager.loadScreen("LayoutTest", new LoadScreenCallback() {
    		
    		@Override
    		public void execute() {
    			final VLayout layout = (VLayout) Canvas.getById("VLayout0");
    			RPCManager.loadScreen("One", new LoadScreenCallback() {
    				@Override
    				public void execute() {
    					ToolStrip one = (ToolStrip) Canvas.getById("One");
    					layout.addMember(one);
    				}
    			}, new String[]{RPCManager.ALL_GLOBALS});
    			
    			RPCManager.loadScreen("Two", new LoadScreenCallback() {
    				@Override
    				public void execute() {
    					ToolStrip two = (ToolStrip) Canvas.getById("Two");
    					layout.addMember(two);
    				}
    			}, new String[]{RPCManager.ALL_GLOBALS});
    		}
    		
    	}, new String[]{RPCManager.ALL_GLOBALS});
    }
    LayoutTest.ui.xml:
    Code:
    <isomorphicXML xmlns:fmt="WEB-INF/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
    
    <VLayout ID="VLayout0" autoDraw="false"></VLayout>
    
    <DataView ID="DataView0" width="100%" height="100%" overflow="hidden" autoDraw="true">
        <members><Canvas ref="VLayout0"/>
        </members>
        <modulesDir>modules/</modulesDir>
    </DataView>
    </isomorphicXML>
    One.ui.xml
    Code:
    <isomorphicXML xmlns:fmt="WEB-INF/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
    <ToolStrip ID="One" autoDraw="false"></ToolStrip>
    </isomorphicXML>
    Two.ui.xml:
    Code:
    <isomorphicXML xmlns:fmt="WEB-INF/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
    <ToolStrip ID="Two" autoDraw="false"></ToolStrip>
    </isomorphicXML>
    This works fine in FF.
    In Chrome, when loading screen two, the Canvas.getById("Two"); in the execute() method always returns null (detected via debug mode). The screen loading order does not matter, the respective last method always fails.

    The Screen-Loader's RPC response is identical in both cases.

    Is this a known limitation of Chrome, a bug, or a minor thing that can be alleviated somehow?

    SmartClient Version: v8.3p_2013-06-29/PowerEdition Deployment (built 2013-06-29)

    Chrome 27.0.1453.116 m

    Thanks,
    fatzopilot

    #2
    We weren't able to reproduce this issue.

    We took your screens and logic and added them to the built-in-ds sample project in the latest 8.3 and 9.0 builds, and there was no issue with Canvas.getById() for the second screen in Chrome.

    Comment


      #3
      Hi,

      I'm sorry, yes, it works form me as well with two screens. Seems like I oversimplified the case and it did not work for some reason (i.e. with just two screens).
      However, if a third screen is added, e.g. Three.ui.xml it "safely fails" in Chrome.

      Thanks,
      fatzopilot

      SmartClient Version: v8.3p_2013-07-03/PowerEdition Deployment (built 2013-07-03)

      Comment


        #4
        Can you show the modified code? And have you tried running this in a standard environment like the builtinDS sample project?

        We've already had one "no repro" here so we want to make sure the environment matches exactly. Running inside a complete application you've built could introduce lots of other possible causes.

        Comment


          #5
          Hi,

          I've created a modified built-in-ds project (stripped down to minimize the size, so you have to run the GWT-compile first) that just needs to be run: https://dl.dropboxusercontent.com/u/18305668/built-in-ds.zip

          Regards,
          fatzopilot

          Comment

          Working...
          X