author | Blair McBride <bmcbride@mozilla.com> |
Tue, 06 Jan 2015 19:13:46 +1300 | |
changeset 222230 | 1f6ca2c7d05a89a27e8b22df0bfc19953cb8857b |
parent 222229 | 9477cb31bf80a66b74c27a3848891f1f13a4667f |
child 222231 | f9d665c7c6675bacf91613bca0c7e8de2a24df87 |
push id | 28060 |
push user | ryanvm@gmail.com |
push date | Tue, 06 Jan 2015 16:02:34 +0000 |
treeherder | mozilla-central@b42615e51c81 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | MattN |
bugs | 1098071 |
milestone | 37.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/base/jar.mn +++ b/browser/base/jar.mn @@ -72,17 +72,16 @@ browser.jar: content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js) content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml) * content/browser/browser.css (content/browser.css) * content/browser/browser.js (content/browser.js) * content/browser/browser.xul (content/browser.xul) * content/browser/browser-tabPreviews.xml (content/browser-tabPreviews.xml) * content/browser/chatWindow.xul (content/chatWindow.xul) content/browser/content.js (content/content.js) - content/browser/content-UITour.js (content/content-UITour.js) content/browser/defaultthemes/1.footer.jpg (content/defaultthemes/1.footer.jpg) content/browser/defaultthemes/1.header.jpg (content/defaultthemes/1.header.jpg) content/browser/defaultthemes/1.icon.jpg (content/defaultthemes/1.icon.jpg) content/browser/defaultthemes/1.preview.jpg (content/defaultthemes/1.preview.jpg) content/browser/defaultthemes/2.footer.jpg (content/defaultthemes/2.footer.jpg) content/browser/defaultthemes/2.header.jpg (content/defaultthemes/2.header.jpg) content/browser/defaultthemes/2.icon.jpg (content/defaultthemes/2.icon.jpg) content/browser/defaultthemes/2.preview.jpg (content/defaultthemes/2.preview.jpg)
--- a/browser/components/moz.build +++ b/browser/components/moz.build @@ -6,27 +6,28 @@ DIRS += [ 'about', 'customizableui', 'dirprovider', 'downloads', 'feeds', 'loop', + 'migration', 'places', 'preferences', 'privatebrowsing', 'search', 'sessionstore', 'shell', 'selfsupport', 'sidebar', 'tabview', + 'uitour', 'translation', - 'migration', ] DIRS += ['build'] XPIDL_SOURCES += [ 'nsIBrowserGlue.idl', 'nsIBrowserHandler.idl', ]
rename from browser/base/content/content-UITour.js rename to browser/components/uitour/content-UITour.js --- a/browser/base/content/content-UITour.js +++ b/browser/components/uitour/content-UITour.js @@ -1,8 +1,12 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public +* License, v. 2.0. If a copy of the MPL was not distributed with this +* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + let {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; const PREF_TEST_WHITELIST = "browser.uitour.testingOrigins"; const UITOUR_PERMISSION = "uitour"; let UITourListener = { handleEvent: function (event) { if (!Services.prefs.getBoolPref("browser.uitour.enabled")) {
new file mode 100644 --- /dev/null +++ b/browser/components/uitour/jar.mn @@ -0,0 +1,6 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +browser.jar: + content/browser/content-UITour.js
new file mode 100644 --- /dev/null +++ b/browser/components/uitour/moz.build @@ -0,0 +1,13 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +EXTRA_PP_JS_MODULES += [ + 'UITour.jsm', +] + +JAR_MANIFESTS += ['jar.mn'] + +BROWSER_CHROME_MANIFESTS += [ + 'test/browser.ini', +]
new file mode 100644 --- /dev/null +++ b/browser/components/uitour/test/browser.ini @@ -0,0 +1,34 @@ +[DEFAULT] +support-files = + head.js + image.png + uitour.html + ../UITour-lib.js + +[browser_UITour.js] +skip-if = os == "linux" || e10s # Intermittent failures, bug 951965 +[browser_UITour2.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour3.js] +skip-if = os == "linux" || e10s # Linux: Bug 986760, Bug 989101; e10s: Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour_availableTargets.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour_detach_tab.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour_annotation_size_attributes.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly. +[browser_UITour_loop.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly. +[browser_UITour_modalDialog.js] +run-if = os == "mac" # modal dialog disabling only working on OS X +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour_observe.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly. +[browser_UITour_panel_close_annotation.js] +skip-if = true # Disabled due to frequent failures, bugs 1026310 and 1032137 +[browser_UITour_registerPageID.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour_sync.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly +[browser_UITour_resetProfile.js] +skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly
rename from browser/modules/test/browser_UITour.js rename to browser/components/uitour/test/browser_UITour.js
rename from browser/modules/test/browser_UITour2.js rename to browser/components/uitour/test/browser_UITour2.js
rename from browser/modules/test/browser_UITour3.js rename to browser/components/uitour/test/browser_UITour3.js
rename from browser/modules/test/browser_UITour_annotation_size_attributes.js rename to browser/components/uitour/test/browser_UITour_annotation_size_attributes.js
rename from browser/modules/test/browser_UITour_availableTargets.js rename to browser/components/uitour/test/browser_UITour_availableTargets.js
rename from browser/modules/test/browser_UITour_detach_tab.js rename to browser/components/uitour/test/browser_UITour_detach_tab.js
rename from browser/modules/test/browser_UITour_loop.js rename to browser/components/uitour/test/browser_UITour_loop.js
rename from browser/modules/test/browser_UITour_modalDialog.js rename to browser/components/uitour/test/browser_UITour_modalDialog.js
rename from browser/modules/test/browser_UITour_observe.js rename to browser/components/uitour/test/browser_UITour_observe.js
rename from browser/modules/test/browser_UITour_panel_close_annotation.js rename to browser/components/uitour/test/browser_UITour_panel_close_annotation.js
rename from browser/modules/test/browser_UITour_registerPageID.js rename to browser/components/uitour/test/browser_UITour_registerPageID.js
rename from browser/modules/test/browser_UITour_resetProfile.js rename to browser/components/uitour/test/browser_UITour_resetProfile.js
rename from browser/modules/test/browser_UITour_sync.js rename to browser/components/uitour/test/browser_UITour_sync.js
copy from browser/modules/test/head.js copy to browser/components/uitour/test/head.js --- a/browser/modules/test/head.js +++ b/browser/components/uitour/test/head.js @@ -1,15 +1,13 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ +Cu.import("resource://gre/modules/Promise.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "UITour", + "resource:///modules/UITour.jsm"); -Cu.import("resource://gre/modules/Promise.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "UITour", - "resource:///modules/UITour.jsm"); -Cu.import("resource://gre/modules/Task.jsm"); const SINGLE_TRY_TIMEOUT = 100; const NUMBER_OF_TRIES = 30; function waitForConditionPromise(condition, timeoutMsg, tryCount=NUMBER_OF_TRIES) { let defer = Promise.defer(); let tries = 0; function checkCondition() {
rename from browser/modules/test/uitour.html rename to browser/components/uitour/test/uitour.html --- a/browser/modules/test/uitour.html +++ b/browser/components/uitour/test/uitour.html @@ -1,14 +1,14 @@ <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>UITour test</title> - <script type="application/javascript" src="uitour.js"> + <script type="application/javascript" src="UITour-lib.js"> </script> <script type="application/javascript"> var callbackResult, callbackData; function makeCallback(name) { return (function(data) { callbackResult = name; callbackData = data; });
--- a/browser/modules/moz.build +++ b/browser/modules/moz.build @@ -45,17 +45,16 @@ if CONFIG['NIGHTLY_BUILD']: EXTRA_JS_MODULES += [ 'SignInToWebsite.jsm', ] EXTRA_PP_JS_MODULES += [ 'AboutHome.jsm', 'PluginContent.jsm', 'RecentWindow.jsm', - 'UITour.jsm', 'webrtcUI.jsm', ] EXTRA_PP_COMPONENTS += [ 'browsermodules.manifest', ] if CONFIG['MOZILLA_OFFICIAL']:
--- a/browser/modules/test/browser.ini +++ b/browser/modules/test/browser.ini @@ -1,48 +1,19 @@ [DEFAULT] support-files = head.js - image.png - uitour.* [browser_BrowserUITelemetry_buckets.js] [browser_ContentSearch.js] skip-if = e10s support-files = contentSearch.js contentSearchBadImage.xml contentSearchSuggestions.sjs contentSearchSuggestions.xml [browser_NetworkPrioritizer.js] skip-if = e10s # Bug 666804 - Support NetworkPrioritizer in e10s [browser_SignInToWebsite.js] skip-if = e10s # Bug 941426 - SignIntoWebsite.jsm not e10s friendly -[browser_UITour.js] -skip-if = os == "linux" || e10s # Intermittent failures, bug 951965 -[browser_UITour2.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour3.js] -skip-if = os == "linux" || e10s # Linux: Bug 986760, Bug 989101; e10s: Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour_availableTargets.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour_detach_tab.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour_annotation_size_attributes.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly. -[browser_UITour_loop.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly. -[browser_UITour_modalDialog.js] -run-if = os == "mac" # modal dialog disabling only working on OS X -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour_observe.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly. -[browser_UITour_panel_close_annotation.js] -skip-if = true # Disabled due to frequent failures, bugs 1026310 and 1032137 -[browser_UITour_registerPageID.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour_sync.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly -[browser_UITour_resetProfile.js] -skip-if = e10s # Bug 941428 - UITour.jsm not e10s friendly [browser_taskbar_preview.js] run-if = os == "win" skip-if = e10s # Bug 666808 - AeroPeek support for e10s
--- a/browser/modules/test/head.js +++ b/browser/modules/test/head.js @@ -1,15 +1,9 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - Cu.import("resource://gre/modules/Promise.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "UITour", - "resource:///modules/UITour.jsm"); -Cu.import("resource://gre/modules/Task.jsm"); const SINGLE_TRY_TIMEOUT = 100; const NUMBER_OF_TRIES = 30; function waitForConditionPromise(condition, timeoutMsg, tryCount=NUMBER_OF_TRIES) { let defer = Promise.defer(); let tries = 0; function checkCondition() { @@ -32,245 +26,8 @@ function waitForConditionPromise(conditi return defer.promise; } function waitForCondition(condition, nextTest, errorMsg) { waitForConditionPromise(condition, errorMsg).then(nextTest, (reason) => { ok(false, reason + (reason.stack ? "\n" + e.stack : "")); }); } - -/** - * Wrapper to partially transition tests to Task. - */ -function taskify(fun) { - return (done) => { - return Task.spawn(fun).then(done, (reason) => { - ok(false, reason); - done(); - }); - } -} - -function is_hidden(element) { - var style = element.ownerDocument.defaultView.getComputedStyle(element, ""); - if (style.display == "none") - return true; - if (style.visibility != "visible") - return true; - if (style.display == "-moz-popup") - return ["hiding","closed"].indexOf(element.state) != -1; - - // Hiding a parent element will hide all its children - if (element.parentNode != element.ownerDocument) - return is_hidden(element.parentNode); - - return false; -} - -function is_visible(element) { - var style = element.ownerDocument.defaultView.getComputedStyle(element, ""); - if (style.display == "none") - return false; - if (style.visibility != "visible") - return false; - if (style.display == "-moz-popup" && element.state != "open") - return false; - - // Hiding a parent element will hide all its children - if (element.parentNode != element.ownerDocument) - return is_visible(element.parentNode); - - return true; -} - -function is_element_visible(element, msg) { - isnot(element, null, "Element should not be null, when checking visibility"); - ok(is_visible(element), msg); -} - -function waitForElementToBeVisible(element, nextTest, msg) { - waitForCondition(() => is_visible(element), - () => { - ok(true, msg); - nextTest(); - }, - "Timeout waiting for visibility: " + msg); -} - -function waitForElementToBeHidden(element, nextTest, msg) { - waitForCondition(() => is_hidden(element), - () => { - ok(true, msg); - nextTest(); - }, - "Timeout waiting for invisibility: " + msg); -} - -function elementVisiblePromise(element, msg) { - return waitForConditionPromise(() => is_visible(element), "Timeout waiting for visibility: " + msg); -} - -function elementHiddenPromise(element, msg) { - return waitForConditionPromise(() => is_hidden(element), "Timeout waiting for invisibility: " + msg); -} - -function waitForPopupAtAnchor(popup, anchorNode, nextTest, msg) { - waitForCondition(() => is_visible(popup) && popup.popupBoxObject.anchorNode == anchorNode, - () => { - ok(true, msg); - is_element_visible(popup, "Popup should be visible"); - nextTest(); - }, - "Timeout waiting for popup at anchor: " + msg); -} - -function hideInfoPromise(...args) { - let popup = document.getElementById("UITourTooltip"); - gContentAPI.hideInfo.apply(gContentAPI, args); - return promisePanelElementHidden(window, popup); -} - -function showInfoPromise(...args) { - let popup = document.getElementById("UITourTooltip"); - gContentAPI.showInfo.apply(gContentAPI, args); - return promisePanelElementShown(window, popup); -} - -function showMenuPromise(name) { - return new Promise(resolve => { - gContentAPI.showMenu(name, () => resolve()); - }); -} - -function waitForCallbackResultPromise() { - return waitForConditionPromise(() => { - return gContentWindow.callbackResult; - }, "callback should be called"); -} - -function addPinnedTabPromise() { - gContentAPI.addPinnedTab(); - return waitForConditionPromise(() => { - let tabInfo = UITour.pinnedTabs.get(window); - if (!tabInfo) { - return false; - } - return tabInfo.tab.pinned; - }); -} - -function removePinnedTabPromise() { - gContentAPI.removePinnedTab(); - return waitForConditionPromise(() => { - let tabInfo = UITour.pinnedTabs.get(window); - return tabInfo == null; - }); -} - -function promisePanelShown(win) { - let panelEl = win.PanelUI.panel; - return promisePanelElementShown(win, panelEl); -} - -function promisePanelElementEvent(win, aPanel, aEvent) { - let deferred = Promise.defer(); - let timeoutId = win.setTimeout(() => { - deferred.reject("Panel did not show within 5 seconds."); - }, 5000); - aPanel.addEventListener(aEvent, function onPanelEvent(e) { - aPanel.removeEventListener(aEvent, onPanelEvent); - win.clearTimeout(timeoutId); - deferred.resolve(); - }); - return deferred.promise; -} - -function promisePanelElementShown(win, aPanel) { - return promisePanelElementEvent(win, aPanel, "popupshown"); -} - -function promisePanelElementHidden(win, aPanel) { - return promisePanelElementEvent(win, aPanel, "popuphidden"); -} - -function is_element_hidden(element, msg) { - isnot(element, null, "Element should not be null, when checking visibility"); - ok(is_hidden(element), msg); -} - -function loadUITourTestPage(callback, host = "https://example.com/") { - if (gTestTab) - gBrowser.removeTab(gTestTab); - - let url = getRootDirectory(gTestPath) + "uitour.html"; - url = url.replace("chrome://mochitests/content/", host); - - gTestTab = gBrowser.addTab(url); - gBrowser.selectedTab = gTestTab; - - gTestTab.linkedBrowser.addEventListener("load", function onLoad() { - gTestTab.linkedBrowser.removeEventListener("load", onLoad, true); - - gContentWindow = Components.utils.waiveXrays(gTestTab.linkedBrowser.contentDocument.defaultView); - gContentAPI = gContentWindow.Mozilla.UITour; - - waitForFocus(callback, gContentWindow); - }, true); -} - -function UITourTest() { - Services.prefs.setBoolPref("browser.uitour.enabled", true); - let testUri = Services.io.newURI("http://example.com", null, null); - Services.perms.add(testUri, "uitour", Services.perms.ALLOW_ACTION); - - waitForExplicitFinish(); - - registerCleanupFunction(function() { - delete window.UITour; - delete window.UITourMetricsProvider; - delete window.gContentWindow; - delete window.gContentAPI; - if (gTestTab) - gBrowser.removeTab(gTestTab); - delete window.gTestTab; - Services.prefs.clearUserPref("browser.uitour.enabled", true); - Services.perms.remove("example.com", "uitour"); - }); - - function done() { - executeSoon(() => { - if (gTestTab) - gBrowser.removeTab(gTestTab); - gTestTab = null; - - let highlight = document.getElementById("UITourHighlightContainer"); - is_element_hidden(highlight, "Highlight should be closed/hidden after UITour tab is closed"); - - let tooltip = document.getElementById("UITourTooltip"); - is_element_hidden(tooltip, "Tooltip should be closed/hidden after UITour tab is closed"); - - ok(!PanelUI.panel.hasAttribute("noautohide"), "@noautohide on the menu panel should have been cleaned up"); - ok(!PanelUI.panel.hasAttribute("panelopen"), "The panel shouldn't have @panelopen"); - isnot(PanelUI.panel.state, "open", "The panel shouldn't be open"); - is(document.getElementById("PanelUI-menu-button").hasAttribute("open"), false, "Menu button should know that the menu is closed"); - - is(UITour.pinnedTabs.get(window), null, "Any pinned tab should be closed after UITour tab is closed"); - - executeSoon(nextTest); - }); - } - - function nextTest() { - if (tests.length == 0) { - finish(); - return; - } - let test = tests.shift(); - info("Starting " + test.name); - waitForFocus(function() { - loadUITourTestPage(function() { - test(done); - }); - }); - } - nextTest(); -}