| <!DOCTYPE html> <!-- webkit-test-runner [ ContactPickerAPIEnabled=true ] --> |
| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| <script src="../resources/ui-helper.js"></script> |
| </head> |
| <script> |
| jsTestIsAsync = true; |
| finishedContactSelection = false; |
| |
| const addressBook = [ |
| { |
| "name": ["Person A"], |
| "email": ["person.a@webkit.org"], |
| "tel": ["555-5555"] |
| }, |
| { |
| "name": ["Person B"], |
| "email": ["person.b@webkit.org", "person.b.alt@webkit.org"], |
| }, |
| { |
| "name": ["Person C"], |
| "tel": ["777-7777"], |
| } |
| ]; |
| |
| async function runTest() |
| { |
| description("This test verifies that navigator.contacts.select succeeds after another call to navigator.contacts.select was completed.\n"); |
| |
| const contactsButton = document.getElementById("contacts"); |
| contactsButton.addEventListener("click", async () => { |
| if (finishedContactSelection) { |
| debug("\nPerforming second contacts request.") |
| } else { |
| debug("Performing first contacts request.") |
| } |
| |
| const request = navigator.contacts.select(["name", "email", "tel"]); |
| |
| await UIHelper.waitForContactPickerToShow(); |
| UIHelper.dismissContactPickerWithContacts(addressBook); |
| await UIHelper.waitForContactPickerToHide(); |
| |
| [contact1, contact2, contact3] = await request; |
| |
| shouldBeTrue("areArraysEqual(contact1.name, addressBook[0].name)"); |
| shouldBeTrue("areArraysEqual(contact1.email, addressBook[0].email)"); |
| shouldBeTrue("areArraysEqual(contact1.tel, addressBook[0].tel)"); |
| |
| shouldBeTrue("areArraysEqual(contact2.name, addressBook[1].name)"); |
| shouldBeTrue("areArraysEqual(contact2.email, addressBook[1].email)"); |
| shouldBeEqualToNumber("contact2.tel.length", 0); |
| |
| shouldBeTrue("areArraysEqual(contact3.name, addressBook[2].name)"); |
| shouldBeEqualToNumber("contact3.email.length", 0); |
| shouldBeTrue("areArraysEqual(contact3.tel, addressBook[2].tel)"); |
| |
| if (finishedContactSelection) { |
| finishJSTest(); |
| } else { |
| finishedContactSelection = true; |
| } |
| }); |
| |
| await UIHelper.activateElement(contactsButton); |
| await new Promise(resolve => shouldBecomeEqual("finishedContactSelection", "true", resolve)); |
| await UIHelper.activateElement(contactsButton); |
| } |
| </script> |
| <body onload=runTest()> |
| <button id="contacts">Show contacts</button> |
| </body> |
| </html> |