| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| <script src="../../forms/resources/common.js"></script> |
| <script src="../../forms/resources/common-wheel-event.js"></script> |
| <script src="../../forms/resources/picker-common.js"></script> |
| <script src="resources/suggestion-picker-common.js"></script> |
| </head> |
| <body style="background-color: #bbbbbb;"> |
| <p id="description"></p> |
| <div id="console"></div> |
| <input type=month id=month value="2012-12" list=suggestions> |
| <datalist id=suggestions> |
| <option label="This Month">2012-01</option> |
| <option>2012-02</option> |
| <option>2012-03</option> |
| <option>2012-04</option> |
| <option>2012-05</option> |
| <option>2012-06</option> |
| <option>2012-07</option> |
| <option>2012-08</option> |
| <option>2012-09</option> |
| <option>2012-10</option> |
| <option>2012-11</option> |
| <option>2012-12</option> |
| <option>2013-01</option> |
| <option>2013-02</option> |
| <option>2013-03</option> |
| <option>2013-04</option> |
| <option>2013-05</option> |
| <option>2013-06</option> |
| <option>2013-07</option> |
| <option>2013-08</option> |
| <option>2013-09</option> |
| <option>2013-10</option> |
| <option>2013-11</option> |
| <option>2013-12</option> |
| <option>2014-01</option> |
| <option>2014-02</option> |
| <option>2014-03</option> |
| <option>2014-04</option> |
| <option>2014-05</option> |
| <option>2014-06</option> |
| <option>2014-07</option> |
| <option>2014-08</option> |
| <option>2014-09</option> |
| <option>2014-10</option> |
| <option>2014-11</option> |
| <option>2014-12</option> |
| <option>2015-01</option> |
| <option>2015-02</option> |
| <option>2015-03</option> |
| <option>2015-04</option> |
| <option>2015-05</option> |
| <option>2015-06</option> |
| <option>2015-07</option> |
| <option>2015-08</option> |
| <option>2015-09</option> |
| <option>2015-10</option> |
| <option>2015-11</option> |
| <option>2015-12</option> |
| <option>2012-00</option> <!--invalid--> |
| <option>2012-01-01</option> <!--invalid--> |
| <option>foo</option> <!--invalid--> |
| </datalist> |
| <script> |
| debug('Check that page popup doesn\'t exist at first.'); |
| shouldBeNull('$("mock-page-popup")'); |
| |
| openPicker($('month'), test1); |
| |
| function test1() { |
| debug('Check that page popup exists.'); |
| shouldBeEqualToString('popupWindow.pagePopupController.toString()', '[object PagePopupController]'); |
| |
| debug('Check that hovering over an entry highlights it.'); |
| hoverOverElement(popupWindow.document.querySelector(".suggestion-list-entry:nth-child(2)")); |
| shouldBeEqualToString('highlightedEntry()', '2012-02'); |
| |
| debug('Check that moving the mouse outside the popup de-highlights entries.'); |
| hoverOverElement(document.getElementById('description')); |
| shouldBeNull('highlightedEntry()'); |
| |
| debug('Check that mouse click closes the popup and sets the value.'); |
| clickElement(popupWindow.document.querySelector(".suggestion-list-entry:nth-child(3)")); |
| waitUntilClosing(test1AfterClosing); |
| } |
| |
| function test1AfterClosing() { |
| shouldBeNull('$("mock-page-popup")'); |
| shouldBeEqualToString('document.getElementById("month").value', '2012-03'); |
| |
| openPicker($('month'), test2); |
| } |
| |
| var scrollTopBeforeWheelEvent = 0; |
| var scrollTopAfterWheelEvent = 0; |
| var suggestionList; |
| |
| function test2() { |
| suggestionList = popupWindow.document.getElementsByClassName("suggestion-list")[0]; |
| |
| debug('Check that you can scroll using the mouse wheel.'); |
| |
| function finishTest() { |
| popupWindow.focus(); |
| eventSender.keyDown('escape'); |
| waitUntilClosing(test2AfterClosing); |
| } |
| |
| function scrollUp() { |
| scrollTopBeforeWheelEvent = suggestionList.scrollTop; |
| dispatchWheelEvent(suggestionList, 0, 100); |
| shouldBecomeEqual('scrollTopBeforeWheelEvent > suggestionList.scrollTop', 'true', finishTest) |
| } |
| |
| function scrollDown() { |
| scrollTopBeforeWheelEvent = suggestionList.scrollTop; |
| dispatchWheelEvent(suggestionList, 0, -100); |
| shouldBecomeEqual('scrollTopBeforeWheelEvent < suggestionList.scrollTop', 'true', scrollUp); |
| } |
| |
| scrollDown(); |
| } |
| |
| function test2AfterClosing() { |
| shouldBeNull('$("mock-page-popup")'); |
| |
| openPicker($('month'), test3); |
| } |
| |
| function test3() { |
| debug('Check that you can scroll using the scroll bar.'); |
| |
| var suggestionList = popupWindow.document.getElementsByClassName("suggestion-list")[0]; |
| var suggestionListOffset = cumulativeOffset(suggestionList); |
| var scrollbarCenterX = suggestionListOffset[0] + suggestionList.offsetWidth - popupWindow.getScrollbarWidth() / 2; |
| |
| scrollTopBeforeWheelEvent = suggestionList.scrollTop; |
| eventSender.mouseMoveTo(scrollbarCenterX, suggestionListOffset[1] + 20); // 20 is the height of the up arrow button plus a few pixels |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(scrollbarCenterX, suggestionListOffset[1] + suggestionList.offsetHeight); |
| eventSender.mouseUp(); |
| scrollTopAfterWheelEvent = suggestionList.scrollTop; |
| shouldBeTrue('scrollTopBeforeWheelEvent < scrollTopAfterWheelEvent'); |
| |
| finishJSTest(); |
| } |
| |
| </script> |
| </body> |
| </html> |