--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -241,17 +241,16 @@ pref("lightweightThemes.update.enabled",
pref("lightweightThemes.getMoreURL", "https://addons.mozilla.org/%LOCALE%/firefox/themes");
pref("lightweightThemes.recommendedThemes", "[{\"id\":\"recommended-1\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/a-web-browser-renaissance/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.header.jpg\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.footer.jpg\",\"textcolor\":\"#000000\",\"accentcolor\":\"#f2d9b1\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.preview.jpg\",\"author\":\"Sean.Martell\",\"version\":\"0\"},{\"id\":\"recommended-2\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/space-fantasy/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.header.jpg\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.footer.jpg\",\"textcolor\":\"#ffffff\",\"accentcolor\":\"#d9d9d9\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.preview.jpg\",\"author\":\"fx5800p\",\"version\":\"1.0\"},{\"id\":\"recommended-3\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/linen-light/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.header.png\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.footer.png\",\"textcolor\":\"#None\",\"accentcolor\":\"#ada8a8\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.icon.png\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.preview.png\",\"author\":\"DVemer\",\"version\":\"1.0\"},{\"id\":\"recommended-4\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/pastel-gradient/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.header.png\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.footer.png\",\"textcolor\":\"#000000\",\"accentcolor\":\"#000000\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.icon.png\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.preview.png\",\"author\":\"darrinhenein\",\"version\":\"1.0\"},{\"id\":\"recommended-5\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/carbon-light/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.header.png\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.footer.png\",\"textcolor\":\"#3b3b3b\",\"accentcolor\":\"#2e2e2e\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.preview.jpg\",\"author\":\"Jaxivo\",\"version\":\"1.0\"}]");
// UI tour experience.
pref("browser.uitour.enabled", true);
pref("browser.uitour.loglevel", "Error");
pref("browser.uitour.requireSecure", true);
pref("browser.uitour.themeOrigin", "https://addons.mozilla.org/%LOCALE%/firefox/themes/");
-pref("browser.uitour.pinnedTabUrl", "https://support.mozilla.org/%LOCALE%/kb/pinned-tabs-keep-favorite-websites-open");
pref("browser.uitour.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/tour/");
pref("browser.customizemode.tip0.shown", false);
pref("browser.customizemode.tip0.learnMoreUrl", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/customize");
pref("keyword.enabled", true);
pref("browser.fixup.domainwhitelist.localhost", true);
--- a/browser/modules/UITour.jsm
+++ b/browser/modules/UITour.jsm
@@ -67,18 +67,16 @@ XPCOMUtils.defineLazyGetter(this, "log",
this.UITour = {
url: null,
seenPageIDs: null,
pageIDSourceTabs: new WeakMap(),
pageIDSourceWindows: new WeakMap(),
/* Map from browser windows to a set of tabs in which a tour is open */
originTabs: new WeakMap(),
- /* Map from browser windows to a set of pinned tabs opened by (a) tour(s) */
- pinnedTabs: new WeakMap(),
urlbarCapture: new WeakMap(),
appMenuOpenForAnnotation: new Set(),
availableTargetsCache: new WeakMap(),
_detachingTab: false,
_annotationPanelMutationObservers: new WeakMap(),
_queuedEvents: [],
_pendingDoc: null,
@@ -496,26 +494,16 @@ this.UITour = {
break;
}
case "resetTheme": {
this.resetTheme();
break;
}
- case "addPinnedTab": {
- this.ensurePinnedTab(window, true);
- break;
- }
-
- case "removePinnedTab": {
- this.removePinnedTab(window);
- break;
- }
-
case "showMenu": {
this.showMenu(window, data.name, () => {
if (typeof data.showCallbackID == "string")
this.sendPageCallback(messageManager, data.showCallbackID);
});
break;
}
@@ -716,26 +704,19 @@ this.UITour = {
if (this.pageIDSourceTabs.has(previousTab)) {
let pageID = this.pageIDSourceTabs.get(previousTab);
this.setExpiringTelemetryBucket(pageID, "inactive");
}
}
let window = aEvent.target.ownerDocument.defaultView;
- let selectedTab = window.gBrowser.selectedTab;
- let pinnedTab = this.pinnedTabs.get(window);
- if (pinnedTab && pinnedTab.tab == selectedTab)
- break;
- let originTabs = this.originTabs.get(window);
- if (originTabs && originTabs.has(selectedTab))
- break;
-
let pendingDoc;
if (this._detachingTab && this._pendingDoc && (pendingDoc = this._pendingDoc.get())) {
+ let selectedTab = window.gBrowser.selectedTab;
if (selectedTab.linkedBrowser.contentDocument == pendingDoc) {
if (!this.originTabs.get(window)) {
this.originTabs.set(window, new Set());
}
this.originTabs.get(window).add(selectedTab);
this.pendingDoc = null;
this._detachingTab = false;
while (this._queuedEvents.length) {
@@ -821,17 +802,16 @@ this.UITour = {
aWindow.PanelUI.panel.removeEventListener("popuphiding", this.hideAppMenuAnnotations);
aWindow.PanelUI.panel.removeEventListener("ViewShowing", this.hideAppMenuAnnotations);
aWindow.PanelUI.panel.removeEventListener("popuphidden", this.onPanelHidden);
let loopPanel = aWindow.document.getElementById("loop-notification-panel");
loopPanel.removeEventListener("popuphidden", this.onPanelHidden);
loopPanel.removeEventListener("popuphiding", this.hideLoopPanelAnnotations);
this.endUrlbarCapture(aWindow);
- this.removePinnedTab(aWindow);
this.resetTheme();
},
getChromeWindow: function(aContentDocument) {
return aContentDocument.defaultView
.window
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
@@ -886,24 +866,16 @@ this.UITour = {
log.debug("getTarget:", aTargetName);
let deferred = Promise.defer();
if (typeof aTargetName != "string" || !aTargetName) {
log.warn("getTarget: Invalid target name specified");
deferred.reject("Invalid target name specified");
return deferred.promise;
}
- if (aTargetName == "pinnedTab") {
- deferred.resolve({
- targetName: aTargetName,
- node: this.ensurePinnedTab(aWindow, aSticky)
- });
- return deferred.promise;
- }
-
if (aTargetName.startsWith(TARGET_SEARCHENGINE_PREFIX)) {
let engineID = aTargetName.slice(TARGET_SEARCHENGINE_PREFIX.length);
return this.getSearchEngineTarget(aWindow, engineID);
}
let targetObject = this.targets.get(aTargetName);
if (!targetObject) {
log.warn("getTarget: The specified target name is not in the allowed set");
@@ -1007,46 +979,16 @@ this.UITour = {
if (data)
LightweightThemeManager.previewTheme(data);
},
resetTheme: function() {
LightweightThemeManager.resetPreview();
},
- ensurePinnedTab: function(aWindow, aSticky = false) {
- let tabInfo = this.pinnedTabs.get(aWindow);
-
- if (tabInfo) {
- tabInfo.sticky = tabInfo.sticky || aSticky;
- } else {
- let url = Services.urlFormatter.formatURLPref("browser.uitour.pinnedTabUrl");
-
- let tab = aWindow.gBrowser.addTab(url);
- aWindow.gBrowser.pinTab(tab);
- tab.addEventListener("TabClose", () => {
- this.pinnedTabs.delete(aWindow);
- });
-
- tabInfo = {
- tab: tab,
- sticky: aSticky
- };
- this.pinnedTabs.set(aWindow, tabInfo);
- }
-
- return tabInfo.tab;
- },
-
- removePinnedTab: function(aWindow) {
- let tabInfo = this.pinnedTabs.get(aWindow);
- if (tabInfo)
- aWindow.gBrowser.removeTab(tabInfo.tab);
- },
-
/**
* @param aChromeWindow The chrome window that the highlight is in. Necessary since some targets
* are in a sub-frame so the defaultView is not the same as the chrome
* window.
* @param aTarget The element to highlight.
* @param aEffect (optional) The effect to use from UITour.highlightEffects or "none".
* @see UITour.highlightEffects
*/
@@ -1138,20 +1080,16 @@ this.UITour = {
}
this._setAppMenuStateForAnnotation(aChromeWindow, "highlight",
this.targetIsInAppMenu(aTarget),
showHighlightPanel.bind(this));
},
hideHighlight: function(aWindow) {
- let tabData = this.pinnedTabs.get(aWindow);
- if (tabData && !tabData.sticky)
- this.removePinnedTab(aWindow);
-
let highlighter = aWindow.document.getElementById("UITourHighlight");
this._removeAnnotationPanelMutationObserver(highlighter.parentElement);
highlighter.parentElement.hidePopup();
highlighter.removeAttribute("active");
this._setAppMenuStateForAnnotation(aWindow, "highlight", false);
this._hideSearchEngineHighlight(aWindow);
},
@@ -1540,20 +1478,17 @@ this.UITour = {
}
let promises = [];
for (let targetName of this.targets.keys()) {
promises.push(this.getTarget(window, targetName));
}
let targetObjects = yield Promise.all(promises);
- let targetNames = [
- "pinnedTab",
- ];
-
+ let targetNames = [];
for (let targetObject of targetObjects) {
if (targetObject.node)
targetNames.push(targetObject.targetName);
}
targetNames = targetNames.concat(
yield this.getAvailableSearchEngineTargets(window)
);
--- a/browser/modules/test/browser_UITour2.js
+++ b/browser/modules/test/browser_UITour2.js
@@ -62,38 +62,16 @@ let tests = [
});
gContentAPI.hideMenu("appMenu");
}, "Info should move to the appMenu button");
});
}, "Info should be shown after showInfo() for fixed menu panel items");
});
}).then(null, Components.utils.reportError);
},
- taskify(function* test_pinnedTab() {
- is(UITour.pinnedTabs.get(window), null, "Should not already have a pinned tab");
-
- yield addPinnedTabPromise();
-
- let tabInfo = UITour.pinnedTabs.get(window);
- isnot(tabInfo, null, "Should have recorded data about a pinned tab after addPinnedTab()");
- isnot(tabInfo.tab, null, "Should have added a pinned tab after addPinnedTab()");
- is(tabInfo.tab.pinned, true, "Tab should be marked as pinned");
-
- let tab = tabInfo.tab;
-
- yield removePinnedTabPromise();
- isnot(gBrowser.tabs[0], tab, "First tab should not be the pinned tab");
- tabInfo = UITour.pinnedTabs.get(window);
- is(tabInfo, null, "Should not have any data about the removed pinned tab after removePinnedTab()");
-
- yield addPinnedTabPromise();
- yield addPinnedTabPromise();
- yield addPinnedTabPromise();
- is(gBrowser.tabs[1].pinned, false, "After multiple calls of addPinnedTab, should still only have one pinned tab");
- }),
taskify(function* test_bookmarks_menu() {
let bookmarksMenuButton = document.getElementById("bookmarks-menu-button");
ise(bookmarksMenuButton.open, false, "Menu should initially be closed");
gContentAPI.showMenu("bookmarks");
yield waitForConditionPromise(() => {
return bookmarksMenuButton.open;
--- a/browser/modules/test/browser_UITour_availableTargets.js
+++ b/browser/modules/test/browser_UITour_availableTargets.js
@@ -32,17 +32,16 @@ let tests = [
"appMenu",
"backForward",
"bookmarks",
"customize",
"help",
"home",
"loop",
"devtools",
- "pinnedTab",
"privateWindow",
"quit",
"search",
"searchIcon",
"urlbar",
...searchEngineTargets(),
...(hasWebIDE ? ["webide"] : [])
]);
@@ -63,17 +62,16 @@ let tests = [
"addons",
"appMenu",
"backForward",
"customize",
"help",
"loop",
"devtools",
"home",
- "pinnedTab",
"privateWindow",
"quit",
"search",
"searchIcon",
"urlbar",
...searchEngineTargets(),
...(hasWebIDE ? ["webide"] : [])
]);
@@ -99,17 +97,16 @@ let tests = [
"appMenu",
"backForward",
"bookmarks",
"customize",
"help",
"home",
"loop",
"devtools",
- "pinnedTab",
"privateWindow",
"quit",
"urlbar",
...(hasWebIDE ? ["webide"] : [])
]);
CustomizableUI.reset();
done();
--- a/browser/modules/test/head.js
+++ b/browser/modules/test/head.js
@@ -142,35 +142,16 @@ function showMenuPromise(name) {
}
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(() => {
@@ -248,18 +229,16 @@ function UITourTest() {
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;
--- a/browser/modules/test/uitour.js
+++ b/browser/modules/test/uitour.js
@@ -175,24 +175,16 @@ if (typeof Mozilla == 'undefined') {
callback(theme);
}
themeIntervalId = setInterval(nextTheme, delay);
nextTheme();
};
- Mozilla.UITour.addPinnedTab = function() {
- _sendEvent('addPinnedTab');
- };
-
- Mozilla.UITour.removePinnedTab = function() {
- _sendEvent('removePinnedTab');
- };
-
Mozilla.UITour.showMenu = function(name, callback) {
var showCallbackID;
if (callback)
showCallbackID = _waitForCallback(callback);
_sendEvent('showMenu', {
name: name,
showCallbackID: showCallbackID,