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
•