Closed
Bug 308292
Opened 19 years ago
Closed 18 years ago
listbox.insertItemAt throws exception
Categories
(Core :: XUL, defect)
Core
XUL
Tracking
()
RESOLVED
FIXED
People
(Reporter: surkov, Assigned: enndeakin)
Details
Attachments
(2 files)
619 bytes,
application/vnd.mozilla.xul+xml
|
Details | |
2.84 KB,
patch
|
neil
:
review+
neil
:
superreview+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 listbox.insertItemAt(0) throws exception: Error: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIListBoxObject.getItemAtIndex]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://global/content/bindings/listbox.xml :: getItemAtIndex :: line 481" data: no] Source File: chrome://global/content/bindings/listbox.xml Line: 481 It can be fixed as: <method name="getItemAtIndex"> <parameter name="index"/> <body> try{ return this.listBoxObject.getItemAtIndex(index); } catch(e){ return null; } </body> </method> I guess if getItemAtIndex() of listbox will not fire exception on invalid index then it will be at one's ease. If you aren't agree with such approach then you can change insertItemAtIndex() by the next way: var XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var item = document.createElementNS(XULNS, "listitem"); item.setAttribute("label", label); item.setAttribute("value", value); // begin original code var before = this.getItemAtIndex(index); //end // begin proposed code var before; try{ before=this.getItemAtIndex(index); } catch(e){} // end if (before) this.insertBefore(item, before); else this.appendChild(item); return item; Reproducible: Always
This issue happens on my systems using 1.5b2 and SwitchProxy when adding a list of proxy servers. I have applied this patch and it does stop the SwitchProxy from exiting after the exception. Switch proxy will load the list and work normally after the patch is applied. I have Venkman's Javascript Debugger and am willing to help look into the issue further anyone would like help.
Comment 2•18 years ago
|
||
Yes this bug occurs if you "insertItemAt(0)" when the there are no items in the listbox. This test case will: - alert an exception at first attempt to insertItemAt(0), - append an item to the listbox and then - successfully insertItemAt(0) on second attempt I expect the toolkit to automatically appendItem when the listbox is empty Tested on Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0
Reporter | ||
Comment 3•18 years ago
|
||
I assume this bug will be fixed in bug 298371. At least current patch fixes this problem.
Comment 4•18 years ago
|
||
Interestingly the default views (content and builder) also throw range exceptions. Should we just range-check in listbox.xml::getItemAtIndex?
Assignee | ||
Comment 5•18 years ago
|
||
I coincidently ran into this issue a few days ago while writing some listbox tests. I'd like to make getIndexOfItem/getItemAtIndex consistently either throw exceptions or not throw exceptions when its used. Personally, I think just returning -1 or null is better, although less DOM-API like. I hope also to add these two functions to nsIDOMXULSelectControlElement, so would like to define their behaviour.
Updated•18 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Windows 2000 → All
QA Contact: jrgmorrison → xptoolkit.widgets
Hardware: PC → All
Assignee | ||
Comment 6•18 years ago
|
||
Make them return -1/null like other selectable elements.
Assignee: jag → enndeakin
Status: NEW → ASSIGNED
Attachment #255230 -
Flags: superreview?(neil)
Attachment #255230 -
Flags: review?(neil)
Updated•18 years ago
|
Attachment #255230 -
Flags: superreview?(neil)
Attachment #255230 -
Flags: superreview+
Attachment #255230 -
Flags: review?(neil)
Attachment #255230 -
Flags: review+
Assignee | ||
Updated•18 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•