Opened 8 years ago

Closed 7 years ago

Last modified 7 years ago

#15496 closed defect (wontfix)

TabContainer: ScrollingTabControllerMenuButton freezes in Firefox 4 - 14b8

Reported by: Sotiris Tassis Owned by: bill
Priority: undecided Milestone: future
Component: Dijit Version: 1.7.2
Keywords: Cc:
Blocked By: Blocking:

Description

I recently by accident found an issue of the TabContainer? in Firefox (It exists both in Firefox 12 and in Firefox 13).

I have a TabContainer? and a toolbar with buttons and each button adds a Tab in the TabContainer?. The first tab of the TabContainer? has a Datagrid. Each of the new Tabs has as children, created programmatically, one or more of the following BorderContainers?, ContePanes?, Editors, FilteringSelects?, Uploader and Buttons. I should point out that I do not have parseonLoad: true but false and I call manually the parser.parse when required. I should point out that in the ContentPanes? in the content attribute I put also declarative filteringSelects and ValidationTexts? and Uploader I hope that is not a problem.

Everything is working great in all browsers even in IE9 besides one thing in Firefox. When I create many new tabs and the ScrollingTabController? gets created (The left/right and dropdown arrows of the tabstrip) when I use the ScrollingTabControllerMenuButton? (the down arrow at the far right) the TabContainer? behaves wrongly and eventually freezes. Firebug shows weird errors when I select different tabs via this menu of the tab strip. Errors of the buttons that I have in these tabs and eventually freezes and does not change tabs, weird errors mentioning StackController? or ScrollingTabController?

[ e.g.

button is undefined

if(this._selectedTab === button.domNode){ StackController?.js (line 222) ]

different each time...

This weird behavior only happens in Firefox. IE9 and Chrome do not have any issue at all!

I attach a file with the functions that I have to add a new Tab so as to recreate the issue

Attachments (5)

AddTab_functions.txt (11.6 KB) - added by Sotiris Tassis 8 years ago.
The file has the functions to recreate the bug
TabContainer_testcase.html (16.2 KB) - added by Sotiris Tassis 8 years ago.
SelfContained? Test Case
corruptedId1.gif (38.1 KB) - added by bill 8 years ago.
firebug screenshot, id of pane is corrupted
corruptedId2.gif (39.0 KB) - added by bill 8 years ago.
another firebug screenshot
t6.html (2.3 KB) - added by bill 8 years ago.
reduced test case

Download all attachments as: .zip

Change History (19)

Changed 8 years ago by Sotiris Tassis

Attachment: AddTab_functions.txt added

The file has the functions to recreate the bug

comment:1 Changed 8 years ago by bill

Component: GeneralDijit
Owner: set to Sotiris Tassis
Status: newpending

Thanks for the report and the code snippet, but please attach a full test case, i.e. an HTML file that we can load in the browser and use to reproduce then problem.

Thanks!

comment:2 Changed 8 years ago by Sotiris Tassis

Status: pendingnew

Attachment (TabContainer_testcase.html) added by ticket reporter.

comment:3 in reply to:  1 Changed 8 years ago by Sotiris Tassis

Replying to bill:

Thanks for the report and the code snippet, but please attach a full test case, i.e. an HTML file that we can load in the browser and use to reproduce then problem.

Thanks!

I have attached the html page-test case. how do I assign it to someone?

comment:4 Changed 8 years ago by bill

Status: newpending

Thanks, that's a bit better but when I run it nothing shows up on the screen; presumably because it can't find demo.css or Style.css. Can you make a self-contained test case that isn't depending on other files (besides the dojo files themselves)?

Changed 8 years ago by Sotiris Tassis

Attachment: TabContainer_testcase.html added

SelfContained? Test Case

comment:5 Changed 8 years ago by Sotiris Tassis

Status: pendingnew

Attachment (TabContainer_testcase.html) added by ticket reporter.

comment:6 in reply to:  4 Changed 8 years ago by Sotiris Tassis

Replying to bill:

Thanks, that's a bit better but when I run it nothing shows up on the screen; presumably because it can't find demo.css or Style.css. Can you make a self-contained test case that isn't depending on other files (besides the dojo files themselves)?

I believe the new test case is self contained. At this html page you will see that the tabs are created normally and when you have many tabs and are able to use the ScrollTabController? Menu button it will work and sometimes it will FREEZE to a specific tab and after a while it will work again. You have to use it a lot to end up to the error case. This is a simple example based on my case which is a little more complex, and in which this freezing causes other on() functions to tabs to fail. Hope you can find a solution. Thank you

comment:7 Changed 8 years ago by bill

Owner: changed from Sotiris Tassis to bill
Status: newassigned
Summary: ScrollingTabControllerMenuButton freezes TabContainer in FirefoxTabContainer: ScrollingTabControllerMenuButton freezes in Firefox

OK, yes, thanks, the test case runs and I can reproduce a problem where selecting items in the menu doesn't select the tabs. It's a pretty complicated test case where each tab has an editor and a bunch of other stuff but I'll take a look.

Changed 8 years ago by bill

Attachment: corruptedId1.gif added

firebug screenshot, id of pane is corrupted

Changed 8 years ago by bill

Attachment: corruptedId2.gif added

another firebug screenshot

comment:8 Changed 8 years ago by bill

OK, well I see a weird issue where the id's of your panes are getting corrupted. See attached screenshots from firebug.

I also see some weirdness in your code where you call the parser on pre-existing widgets, ex:

registry.byId("contentTabs").addChild(editorLayout);
parser.parse(editorLayout);
registry.byId("contentTabs").selectChild(editorLayout);

Note sure if that's related. (I'm trying to reduce down your test case.)

Changed 8 years ago by bill

Attachment: t6.html added

reduced test case

comment:9 Changed 8 years ago by bill

From monitoring the names in the console

setInterval(
  function(){
     console.log(contentTabs.getChildren().map(function(f){ return f.id; }).join(", "));
  },
  1000);

... I can see when the get corrupted, sometimes from merely opening and closing the menu without doing anything. Likely this is a regression in firefox, maybe some kind of corruption with garbage collection, that dojo won't be able to fix, but we can submit a bug report to them.

comment:10 Changed 8 years ago by bill

Milestone: tbdfuture

comment:11 Changed 8 years ago by bill

FYI, they are planning on fixing this in the next firefox release.

In the meantime I'd suggest working around the problem by setting useMenu=false on your TabContainer (at least for when the browser is firefox).

comment:12 Changed 7 years ago by bill

Resolution: wontfix
Status: assignedclosed
Summary: TabContainer: ScrollingTabControllerMenuButton freezes in FirefoxTabContainer: ScrollingTabControllerMenuButton freezes in Firefox 4 - 15

OK, they've fixed the firefox code and it will be rolled out in Firefox 16. So I'm going to close this ticket. Not sure which status to use as we don't have a "fixed upstream" category.

comment:13 Changed 7 years ago by bill

Summary: TabContainer: ScrollingTabControllerMenuButton freezes in Firefox 4 - 15TabContainer: ScrollingTabControllerMenuButton freezes in Firefox 4 - 15b8

Actually, looks like they are further backporting the fix, their ticket now says:

  • status-firefox-esr10: affected → fixed
  • status-firefox14: affected → fixed
  • status-firefox15: affected → fixed

So I guess it will be fixed in the FF14 GA (it's beta now), and some patch release to ESR10.

comment:14 Changed 7 years ago by bill

Summary: TabContainer: ScrollingTabControllerMenuButton freezes in Firefox 4 - 15b8TabContainer: ScrollingTabControllerMenuButton freezes in Firefox 4 - 14b8
Note: See TracTickets for help on using tickets.