Test for Bugzilla Bug 74864: There is additional space not belonged to a table between the table cells.

			
			
			
			

An event generated on the edge of a table cell is not being consumed by the appropriate underlying element. This test verifies that the hittest result on the bottom edge of a table cell returns the proper underlying element.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

PASS successfullyParsed is true

TEST COMPLETE

Executing for element tr1-td1 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr1-td1'
PASS document.elementFromPoint(middleX, edge).id is 'tr2-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr2-td1'
Executing for element tr1-td2 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr1-td1'
PASS document.elementFromPoint(middleX, edge).id is 'tr2-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr2-td1'
Executing for element tr1-td3 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr1-td1'
PASS document.elementFromPoint(middleX, edge).id is 'tr2-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr2-td1'
Executing for element tr1-td4 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr1-td2'
PASS document.elementFromPoint(middleX, edge).id is 'tr2-td2'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr2-td2'
Executing for element tr2-td1 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr2-td1'
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td1'
Executing for element tr2-td2 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr2-td1'
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td1'
Executing for element tr2-td3 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr2-td1'
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td1'
Executing for element tr2-td4 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr2-td2'
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td2'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td2'
Executing for element tr3-td1 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is ''
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td1'
Executing for element tr3-td2 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is ''
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td1'
Executing for element tr3-td3 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is ''
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td1'
Executing for element tr3-td4 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is ''
PASS document.elementFromPoint(middleX, edge).id is 'tr4-td2'
PASS document.elementFromPoint(middleX, edge + 1).id is 'tr4-td2'
Executing for element tr4-td1 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr4-td1'
PASS document.elementFromPoint(middleX, edge).id is ''
PASS document.elementFromPoint(middleX, edge + 1).id is ''
Executing for element tr4-td2 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr4-td2'
PASS document.elementFromPoint(middleX, edge).id is ''
PASS document.elementFromPoint(middleX, edge + 1).id is ''
Executing for element tr4-td3 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is ''
PASS document.elementFromPoint(middleX, edge).id is ''
PASS document.elementFromPoint(middleX, edge + 1).id is ''
Executing for element tr4-td4 on the bottom edge of the table cell:
PASS document.elementFromPoint(middleX, edge - 1).id is 'tr4-td4'
PASS document.elementFromPoint(middleX, edge).id is ''
PASS document.elementFromPoint(middleX, edge + 1).id is ''
PASS successfullyParsed is true

TEST COMPLETE

