browser_waitForFocus.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. const gBaseURL = "https://example.com/browser/testing/mochitest/tests/browser/";
  2. function *promiseTabLoadEvent(tab, url)
  3. {
  4. return new Promise(function (resolve, reject) {
  5. function handleLoadEvent(event) {
  6. if (event.originalTarget != tab.linkedBrowser.contentDocument ||
  7. event.target.location.href == "about:blank" ||
  8. (url && event.target.location.href != url)) {
  9. return;
  10. }
  11. tab.linkedBrowser.removeEventListener("load", handleLoadEvent, true);
  12. resolve(event);
  13. }
  14. tab.linkedBrowser.addEventListener("load", handleLoadEvent, true, true);
  15. if (url)
  16. tab.linkedBrowser.loadURI(url);
  17. });
  18. }
  19. // Load a new blank tab
  20. add_task(function *() {
  21. yield BrowserTestUtils.openNewForegroundTab(gBrowser);
  22. gURLBar.focus();
  23. let browser = gBrowser.selectedBrowser;
  24. yield SimpleTest.promiseFocus(browser.contentWindowAsCPOW, true);
  25. is(document.activeElement, browser, "Browser is focused when about:blank is loaded");
  26. gBrowser.removeCurrentTab();
  27. gURLBar.focus();
  28. });
  29. // Load a tab with a subframe inside it and wait until the subframe is focused
  30. add_task(function *() {
  31. let tab = gBrowser.addTab();
  32. gBrowser.selectedTab = tab;
  33. let browser = gBrowser.getBrowserForTab(tab);
  34. yield promiseTabLoadEvent(tab, gBaseURL + "waitForFocusPage.html");
  35. yield SimpleTest.promiseFocus(browser.contentWindowAsCPOW);
  36. is(document.activeElement, browser, "Browser is focused when page is loaded");
  37. yield SimpleTest.promiseFocus(browser.contentWindowAsCPOW.frames[0]);
  38. is(browser.contentWindowAsCPOW.document.activeElement.localName, "iframe", "Child iframe is focused");
  39. gBrowser.removeCurrentTab();
  40. });
  41. // Pass a browser to promiseFocus
  42. add_task(function *() {
  43. yield BrowserTestUtils.openNewForegroundTab(gBrowser, gBaseURL + "waitForFocusPage.html");
  44. gURLBar.focus();
  45. yield SimpleTest.promiseFocus(gBrowser.selectedBrowser);
  46. is(document.activeElement, gBrowser.selectedBrowser, "Browser is focused when promiseFocus is passed a browser");
  47. gBrowser.removeCurrentTab();
  48. });