| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script src="resources/common.js"></script> |
| </head> |
| <body> |
| <input id="search_input" type="search" /> |
| <div id="console"> |
| <p> |
| This tests the behavior of a cancel button in search input forms. |
| </p> |
| </div> |
| <script> |
| function click(position) { |
| if (!eventSender) |
| return; |
| eventSender.mouseMoveTo(position.x, position.y); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(position.x, position.y); |
| eventSender.mouseUp(); |
| eventSender.leapForward(1000); |
| } |
| |
| function keydown(character) { |
| if (!eventSender) |
| return; |
| eventSender.keyDown(character); |
| eventSender.leapForward(1000); |
| } |
| |
| function setInputAttributes(input, value, disabled, readonly) { |
| input.value = value; |
| input.disabled = disabled; |
| input.readOnly = !!readonly; |
| } |
| |
| if (window.testRunner) { |
| var input = $("search_input"); |
| var cancelButtonPosition = searchCancelButtonPosition(input); |
| var middleButtonPosition = {}; |
| middleButtonPosition.x = input.offsetLeft + input.offsetWidth / 2; |
| middleButtonPosition.y = input.offsetTop + input.offsetHeight / 2; |
| var enabled = false; |
| var disabled = true; |
| var readonly = true; |
| |
| debug("Test on the input form with disabled=false and readonly=false"); |
| |
| setInputAttributes(input, "foo", enabled); |
| debug("Click the cancel button:"); |
| click(cancelButtonPosition); |
| shouldBe('input.value', '""'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"b"'); |
| |
| setInputAttributes(input, "foo", enabled); |
| debug("Click the center of the form:"); |
| click(middleButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foob"'); |
| |
| debug(""); |
| debug("Test on the input form with disabled=false and readonly=true"); |
| |
| setInputAttributes(input, "foo", enabled, readonly); |
| debug("Click the cancel button:"); |
| click(cancelButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foo"'); |
| |
| setInputAttributes(input, "foo", enabled, readonly); |
| debug("Click the center of the form:"); |
| click(middleButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foo"'); |
| |
| debug(""); |
| debug("Test on the input form with disabled=true and readonly=false"); |
| |
| setInputAttributes(input, "foo", disabled); |
| debug("Click the cancel button:"); |
| click(cancelButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foo"'); |
| |
| setInputAttributes(input, "foo", disabled); |
| debug("Click the center of the form:"); |
| click(middleButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foo"'); |
| |
| debug(""); |
| debug("Test on the input form with disabled=true and readonly=true"); |
| |
| setInputAttributes(input, "foo", disabled, readonly); |
| debug("Click the cancel button:"); |
| click(cancelButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foo"'); |
| |
| setInputAttributes(input, "foo", disabled, readonly); |
| debug("Click the center of the form:"); |
| click(middleButtonPosition); |
| shouldBe('input.value', '"foo"'); |
| debug("... and then input one character:"); |
| keydown("b"); |
| shouldBe('input.value', '"foo"'); |
| |
| debug(""); |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |