Remove UITour and customize tips.

This commit is contained in:
Ascrod 2018-05-25 06:53:37 -04:00 committed by Roy Tam
commit dece98a7b5
29 changed files with 1 additions and 3276 deletions

View file

@ -6,14 +6,6 @@
# * permission is an integer between 1 and 15
# See nsPermissionManager.cpp for more...
# UITour
origin uitour 1 https://www.mozilla.org
origin uitour 1 https://self-repair.mozilla.org
origin uitour 1 https://support.mozilla.org
origin uitour 1 https://addons.mozilla.org
origin uitour 1 https://discovery.addons.mozilla.org
origin uitour 1 about:home
# XPInstall
origin install 1 https://addons.mozilla.org
origin install 1 https://testpilot.firefox.com

View file

@ -178,17 +178,6 @@ pref("browser.eme.ui.enabled", true);
pref("browser.eme.ui.enabled", false);
#endif
// 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.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/tour/");
// This is used as a regexp match against the page's URL.
pref("browser.uitour.readerViewTrigger", "^https:\\/\\/www\\.mozilla\\.org\\/[^\\/]+\\/firefox\\/reading\\/start");
// How long to show a Hearbeat survey (two hours, in seconds)
pref("browser.uitour.surveyDuration", 7200);
pref("browser.customizemode.tip0.shown", false);
pref("browser.customizemode.tip0.learnMoreUrl", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/customize");

View file

@ -52,10 +52,6 @@
#else
/>
#endif
<menuitem id="menu_openTour"
oncommand="openTourPage();"
label="&helpShowTour2.label;"
accesskey="&helpShowTour2.accesskey;"/>
<menuitem id="menu_keyboardShortcuts"
oncommand="openHelpLink('keyboard-shortcuts')"
onclick="checkForMiddleClick(this, event);"

View file

@ -226,14 +226,5 @@ var TrackingProtection = {
style: "primary",
},
];
let panelTarget = yield UITour.getTarget(window, "trackingProtection");
UITour.initForBrowser(gBrowser.selectedBrowser, window);
UITour.showInfo(window, panelTarget,
gNavigatorBundle.getString("trackingProtection.intro.title"),
gNavigatorBundle.getFormattedString("trackingProtection.intro.description2",
[brandShortName]),
undefined, buttons,
{ closeButtonCallback: () => this.dontShowIntroPanelAgain() });
}),
};

View file

@ -1152,71 +1152,6 @@ toolbarpaletteitem[place="palette"][hidden] {
display: none;
}
/* UI Tour */
@keyframes uitour-wobble {
from {
transform: rotate(0deg) translateX(3px) rotate(0deg);
}
50% {
transform: rotate(360deg) translateX(3px) rotate(-360deg);
}
to {
transform: rotate(720deg) translateX(0px) rotate(-720deg);
}
}
@keyframes uitour-zoom {
from {
transform: scale(0.8);
}
50% {
transform: scale(1.0);
}
to {
transform: scale(0.8);
}
}
@keyframes uitour-color {
from {
border-color: #5B9CD9;
}
50% {
border-color: #FF0000;
}
to {
border-color: #5B9CD9;
}
}
#UITourHighlightContainer,
#UITourHighlight {
pointer-events: none;
}
#UITourHighlight[active] {
animation-delay: 2s;
animation-fill-mode: forwards;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
#UITourHighlight[active="wobble"] {
animation-name: uitour-wobble;
animation-delay: 0s;
animation-duration: 1.5s;
animation-iteration-count: 1;
}
#UITourHighlight[active="zoom"] {
animation-name: uitour-zoom;
animation-duration: 1s;
}
#UITourHighlight[active="color"] {
animation-name: uitour-color;
animation-duration: 2s;
}
/* Combined context-menu items */
#context-navigation > .menuitem-iconic > .menu-iconic-text,
#context-navigation > .menuitem-iconic > .menu-accel-container {

View file

@ -48,7 +48,6 @@ Cu.import("resource://gre/modules/NotificationDB.jsm");
["Task", "resource://gre/modules/Task.jsm"],
["TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm"],
["Translation", "resource:///modules/translation/Translation.jsm"],
["UITour", "resource:///modules/UITour.jsm"],
["UpdateUtils", "resource://gre/modules/UpdateUtils.jsm"],
["Weave", "resource://services-sync/main.js"],
["fxAccounts", "resource://gre/modules/FxAccounts.jsm"],
@ -989,7 +988,6 @@ var gBrowserInit = {
let mm = window.getGroupMessageManager("browsers");
mm.loadFrameScript("chrome://browser/content/tab-content.js", true);
mm.loadFrameScript("chrome://browser/content/content.js", true);
mm.loadFrameScript("chrome://browser/content/content-UITour.js", true);
mm.loadFrameScript("chrome://global/content/manifestMessages.js", true);
// initialize observers and listeners
@ -4481,7 +4479,6 @@ var XULBrowserWindow = {
gIdentityHandler.onLocationChange();
UITour.onLocationChange(location);
gTabletModePageCounter.inc();

View file

@ -232,42 +232,6 @@
</hbox>
</panel>
<!-- UI tour experience -->
<panel id="UITourTooltip"
type="arrow"
hidden="true"
noautofocus="true"
noautohide="true"
align="start"
orient="vertical"
role="alert">
<vbox>
<hbox id="UITourTooltipBody">
<image id="UITourTooltipIcon"/>
<vbox flex="1">
<hbox id="UITourTooltipTitleContainer">
<label id="UITourTooltipTitle" flex="1"/>
<toolbarbutton id="UITourTooltipClose" class="close-icon"
tooltiptext="&uiTour.infoPanel.close;"/>
</hbox>
<description id="UITourTooltipDescription" flex="1"/>
</vbox>
</hbox>
<hbox id="UITourTooltipButtons" flex="1" align="center"/>
</vbox>
</panel>
<!-- type="default" forces frames to be created so that the panel's size can be determined -->
<panel id="UITourHighlightContainer"
type="default"
hidden="true"
noautofocus="true"
noautohide="true"
flip="none"
consumeoutsideclicks="false"
mousethrough="always">
<box id="UITourHighlight"></box>
</panel>
<menupopup id="toolbar-context-menu"
onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
<menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"

View file

@ -809,13 +809,6 @@ function openFeedbackPage()
openUILinkIn(url, "tab");
}
function openTourPage()
{
let scope = {}
Components.utils.import("resource:///modules/UITour.jsm", scope);
openUILinkIn(scope.UITour.url, "tab");
}
function buildHelpMenu()
{
// Enable/disable the "Report Web Forgery" menu item.

View file

@ -90,7 +90,6 @@ function CustomizeMode(aWindow) {
// to the user when in customizing mode.
this.visiblePalette = this.document.getElementById(kPaletteId);
this.paletteEmptyNotice = this.document.getElementById("customization-empty");
this.tipPanel = this.document.getElementById("customization-tipPanel");
if (Services.prefs.getCharPref("general.skins.selectedSkin") != "classic/1.0") {
let lwthemeButton = this.document.getElementById("customization-lwtheme-button");
lwthemeButton.setAttribute("hidden", "true");
@ -355,7 +354,6 @@ CustomizeMode.prototype = {
this._updateEmptyPaletteNotice();
this._updateLWThemeButtonIcon();
this.maybeShowTip(panelHolder);
this._handler.isEnteringCustomizeMode = false;
panelContents.removeAttribute("customize-transitioning");
@ -400,8 +398,6 @@ CustomizeMode.prototype = {
return;
}
this.hideTip();
this._handler.isExitingCustomizeMode = true;
if (this._enableOutlinesTimeout) {
@ -675,46 +671,6 @@ CustomizeMode.prototype = {
return "url(\"" + aData.headerURL.replace(/"/g, '\\"') + "\")";
},
maybeShowTip: function(aAnchor) {
let shown = false;
const kShownPref = "browser.customizemode.tip0.shown";
try {
shown = Services.prefs.getBoolPref(kShownPref);
} catch (ex) {}
if (shown)
return;
let anchorNode = aAnchor || this.document.getElementById("customization-panelHolder");
let messageNode = this.tipPanel.querySelector(".customization-tipPanel-contentMessage");
if (!messageNode.childElementCount) {
// Put the tip contents in the popup.
let bundle = this.document.getElementById("bundle_browser");
const kLabelClass = "customization-tipPanel-link";
messageNode.innerHTML = bundle.getFormattedString("customizeTips.tip0", [
"<label class=\"customization-tipPanel-em\" value=\"" +
bundle.getString("customizeTips.tip0.hint") + "\"/>",
this.document.getElementById("bundle_brand").getString("brandShortName"),
"<label class=\"" + kLabelClass + " text-link\" value=\"" +
bundle.getString("customizeTips.tip0.learnMore") + "\"/>"
]);
messageNode.querySelector("." + kLabelClass).addEventListener("click", () => {
let url = Services.urlFormatter.formatURLPref("browser.customizemode.tip0.learnMoreUrl");
let browser = this.browser;
browser.selectedTab = browser.addTab(url);
this.hideTip();
});
}
this.tipPanel.hidden = false;
this.tipPanel.openPopup(anchorNode);
Services.prefs.setBoolPref(kShownPref, true);
},
hideTip: function() {
this.tipPanel.hidePopup();
},
_getCustomizableChildForNode: function(aNode) {
// NB: adjusted from _getCustomizableParent to keep that method fast
// (it's used during drags), and avoid multiple DOM loops

View file

@ -367,25 +367,6 @@
</vbox>
</panel>
<panel id="customization-tipPanel"
type="arrow"
flip="none"
side="left"
position="leftcenter topright"
noautohide="true"
hidden="true">
<hbox class="customization-tipPanel-wrapper">
<vbox class="customization-tipPanel-infoBox"/>
<vbox class="customization-tipPanel-content" flex="1">
<description class="customization-tipPanel-contentMessage"/>
<image class="customization-tipPanel-contentImage"/>
</vbox>
<vbox pack="start" align="end" class="customization-tipPanel-closeBox">
<toolbarbutton oncommand="gCustomizeMode.hideTip()" class="close-icon"/>
</vbox>
</hbox>
</panel>
<panel id="panic-button-success-notification"
type="arrow"
position="bottomcenter topright"

View file

@ -21,7 +21,6 @@ DIRS += [
'shell',
'selfsupport',
'syncedtabs',
'uitour',
'translation',
]

View file

@ -62,7 +62,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "AlertsService", "@mozilla.org/alerts-s
["SimpleServiceDiscovery", "resource://gre/modules/SimpleServiceDiscovery.jsm"],
["TabCrashHandler", "resource:///modules/ContentCrashHandlers.jsm"],
["Task", "resource://gre/modules/Task.jsm"],
["UITour", "resource:///modules/UITour.jsm"],
["URLBarZoom", "resource:///modules/URLBarZoom.jsm"],
["UserAgentOverrides", "resource://gre/modules/UserAgentOverrides.jsm"],
["WebChannel", "resource://gre/modules/WebChannel.jsm"],
@ -2847,12 +2846,3 @@ var E10SAccessibilityCheck = {
var components = [BrowserGlue, ContentPermissionPrompt];
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
// Listen for UITour messages.
// Do it here instead of the UITour module itself so that the UITour module is lazy loaded
// when the first message is received.
var globalMM = Cc["@mozilla.org/globalmessagemanager;1"].getService(Ci.nsIMessageListenerManager);
globalMM.addMessageListener("UITour:onPageEvent", function(aMessage) {
UITour.onPageEvent(aMessage, aMessage.data);
});

View file

@ -1,331 +0,0 @@
/* 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/. */
// create namespace
if (typeof Mozilla == 'undefined') {
var Mozilla = {};
}
(function($) {
'use strict';
// create namespace
if (typeof Mozilla.UITour == 'undefined') {
Mozilla.UITour = {};
}
var themeIntervalId = null;
function _stopCyclingThemes() {
if (themeIntervalId) {
clearInterval(themeIntervalId);
themeIntervalId = null;
}
}
function _sendEvent(action, data) {
var event = new CustomEvent('mozUITour', {
bubbles: true,
detail: {
action: action,
data: data || {}
}
});
document.dispatchEvent(event);
}
function _generateCallbackID() {
return Math.random().toString(36).replace(/[^a-z]+/g, '');
}
function _waitForCallback(callback) {
var id = _generateCallbackID();
function listener(event) {
if (typeof event.detail != 'object')
return;
if (event.detail.callbackID != id)
return;
document.removeEventListener('mozUITourResponse', listener);
callback(event.detail.data);
}
document.addEventListener('mozUITourResponse', listener);
return id;
}
var notificationListener = null;
function _notificationListener(event) {
if (typeof event.detail != 'object')
return;
if (typeof notificationListener != 'function')
return;
notificationListener(event.detail.event, event.detail.params);
}
Mozilla.UITour.DEFAULT_THEME_CYCLE_DELAY = 10 * 1000;
Mozilla.UITour.CONFIGNAME_SYNC = 'sync';
Mozilla.UITour.CONFIGNAME_AVAILABLETARGETS = 'availableTargets';
Mozilla.UITour.ping = function(callback) {
var data = {};
if (callback) {
data.callbackID = _waitForCallback(callback);
}
_sendEvent('ping', data);
};
Mozilla.UITour.observe = function(listener, callback) {
notificationListener = listener;
if (listener) {
document.addEventListener('mozUITourNotification',
_notificationListener);
Mozilla.UITour.ping(callback);
} else {
document.removeEventListener('mozUITourNotification',
_notificationListener);
}
};
Mozilla.UITour.registerPageID = function(pageID) {
_sendEvent('registerPageID', {
pageID: pageID
});
};
Mozilla.UITour.showHeartbeat = function(message, thankyouMessage, flowId, engagementURL,
learnMoreLabel, learnMoreURL, options) {
var args = {
message: message,
thankyouMessage: thankyouMessage,
flowId: flowId,
engagementURL: engagementURL,
learnMoreLabel: learnMoreLabel,
learnMoreURL: learnMoreURL,
};
if (options) {
for (var option in options) {
if (!options.hasOwnProperty(option)) {
continue;
}
args[option] = options[option];
}
}
_sendEvent('showHeartbeat', args);
};
Mozilla.UITour.showHighlight = function(target, effect) {
_sendEvent('showHighlight', {
target: target,
effect: effect
});
};
Mozilla.UITour.hideHighlight = function() {
_sendEvent('hideHighlight');
};
Mozilla.UITour.showInfo = function(target, title, text, icon, buttons, options) {
var buttonData = [];
if (Array.isArray(buttons)) {
for (var i = 0; i < buttons.length; i++) {
buttonData.push({
label: buttons[i].label,
icon: buttons[i].icon,
style: buttons[i].style,
callbackID: _waitForCallback(buttons[i].callback)
});
}
}
var closeButtonCallbackID, targetCallbackID;
if (options && options.closeButtonCallback)
closeButtonCallbackID = _waitForCallback(options.closeButtonCallback);
if (options && options.targetCallback)
targetCallbackID = _waitForCallback(options.targetCallback);
_sendEvent('showInfo', {
target: target,
title: title,
text: text,
icon: icon,
buttons: buttonData,
closeButtonCallbackID: closeButtonCallbackID,
targetCallbackID: targetCallbackID
});
};
Mozilla.UITour.hideInfo = function() {
_sendEvent('hideInfo');
};
Mozilla.UITour.previewTheme = function(theme) {
_stopCyclingThemes();
_sendEvent('previewTheme', {
theme: JSON.stringify(theme)
});
};
Mozilla.UITour.resetTheme = function() {
_stopCyclingThemes();
_sendEvent('resetTheme');
};
Mozilla.UITour.cycleThemes = function(themes, delay, callback) {
_stopCyclingThemes();
if (!delay) {
delay = Mozilla.UITour.DEFAULT_THEME_CYCLE_DELAY;
}
function nextTheme() {
var theme = themes.shift();
themes.push(theme);
_sendEvent('previewTheme', {
theme: JSON.stringify(theme),
state: true
});
callback(theme);
}
themeIntervalId = setInterval(nextTheme, delay);
nextTheme();
};
Mozilla.UITour.showMenu = function(name, callback) {
var showCallbackID;
if (callback)
showCallbackID = _waitForCallback(callback);
_sendEvent('showMenu', {
name: name,
showCallbackID: showCallbackID,
});
};
Mozilla.UITour.hideMenu = function(name) {
_sendEvent('hideMenu', {
name: name
});
};
Mozilla.UITour.showNewTab = function() {
_sendEvent('showNewTab');
};
Mozilla.UITour.getConfiguration = function(configName, callback) {
_sendEvent('getConfiguration', {
callbackID: _waitForCallback(callback),
configuration: configName,
});
};
Mozilla.UITour.setConfiguration = function(configName, configValue) {
_sendEvent('setConfiguration', {
configuration: configName,
value: configValue,
});
};
/**
* Request the browser open the Firefox Accounts page.
*
* @param {Object} extraURLCampaignParams - An object containing additional
* paramaters for the URL opened by the browser for reasons of promotional
* campaign tracking. Each attribute of the object must have a name that
* is a string, begins with "utm_" and contains only only alphanumeric
* characters, dashes or underscores. The values may be any string and will
* automatically be encoded.
*/
Mozilla.UITour.showFirefoxAccounts = function(extraURLCampaignParams) {
_sendEvent('showFirefoxAccounts', {
extraURLCampaignParams: JSON.stringify(extraURLCampaignParams),
});
};
Mozilla.UITour.resetFirefox = function() {
_sendEvent('resetFirefox');
};
Mozilla.UITour.addNavBarWidget= function(name, callback) {
_sendEvent('addNavBarWidget', {
name: name,
callbackID: _waitForCallback(callback),
});
};
Mozilla.UITour.setDefaultSearchEngine = function(identifier) {
_sendEvent('setDefaultSearchEngine', {
identifier: identifier,
});
};
Mozilla.UITour.setTreatmentTag = function(name, value) {
_sendEvent('setTreatmentTag', {
name: name,
value: value
});
};
Mozilla.UITour.getTreatmentTag = function(name, callback) {
_sendEvent('getTreatmentTag', {
name: name,
callbackID: _waitForCallback(callback)
});
};
Mozilla.UITour.setSearchTerm = function(term) {
_sendEvent('setSearchTerm', {
term: term
});
};
Mozilla.UITour.openSearchPanel = function(callback) {
_sendEvent('openSearchPanel', {
callbackID: _waitForCallback(callback)
});
};
Mozilla.UITour.forceShowReaderIcon = function() {
_sendEvent('forceShowReaderIcon');
};
Mozilla.UITour.toggleReaderMode = function() {
_sendEvent('toggleReaderMode');
};
Mozilla.UITour.openPreferences = function(pane) {
_sendEvent('openPreferences', {
pane: pane
});
};
/**
* Closes the tab where this code is running. As usual, if the tab is in the
* foreground, the tab that was displayed before is selected.
*
* The last tab in the current window will never be closed, in which case
* this call will have no effect. The calling code is expected to take an
* action after a small timeout in order to handle this case, for example by
* displaying a goodbye message or a button to restart the tour.
*/
Mozilla.UITour.closeTab = function() {
_sendEvent('closeTab');
};
})();
// Make this library Require-able.
if (typeof module !== 'undefined' && module.exports) {
module.exports = Mozilla.UITour;
}

File diff suppressed because it is too large Load diff

View file

@ -1,103 +0,0 @@
/* 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/. */
var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
const PREF_TEST_WHITELIST = "browser.uitour.testingOrigins";
const UITOUR_PERMISSION = "uitour";
var UITourListener = {
handleEvent: function (event) {
if (!Services.prefs.getBoolPref("browser.uitour.enabled")) {
return;
}
if (!this.ensureTrustedOrigin()) {
return;
}
addMessageListener("UITour:SendPageCallback", this);
addMessageListener("UITour:SendPageNotification", this);
sendAsyncMessage("UITour:onPageEvent", {
detail: event.detail,
type: event.type,
pageVisibilityState: content.document.visibilityState,
});
},
isTestingOrigin: function(aURI) {
if (Services.prefs.getPrefType(PREF_TEST_WHITELIST) != Services.prefs.PREF_STRING) {
return false;
}
// Add any testing origins (comma-seperated) to the whitelist for the session.
for (let origin of Services.prefs.getCharPref(PREF_TEST_WHITELIST).split(",")) {
try {
let testingURI = Services.io.newURI(origin, null, null);
if (aURI.prePath == testingURI.prePath) {
return true;
}
} catch (ex) {
Cu.reportError(ex);
}
}
return false;
},
// This function is copied from UITour.jsm.
isSafeScheme: function(aURI) {
let allowedSchemes = new Set(["https", "about"]);
if (!Services.prefs.getBoolPref("browser.uitour.requireSecure"))
allowedSchemes.add("http");
if (!allowedSchemes.has(aURI.scheme))
return false;
return true;
},
ensureTrustedOrigin: function() {
if (content.top != content)
return false;
let uri = content.document.documentURIObject;
if (uri.schemeIs("chrome"))
return true;
if (!this.isSafeScheme(uri))
return false;
let permission = Services.perms.testPermission(uri, UITOUR_PERMISSION);
if (permission == Services.perms.ALLOW_ACTION)
return true;
return this.isTestingOrigin(uri);
},
receiveMessage: function(aMessage) {
switch (aMessage.name) {
case "UITour:SendPageCallback":
this.sendPageEvent("Response", aMessage.data);
break;
case "UITour:SendPageNotification":
this.sendPageEvent("Notification", aMessage.data);
break;
}
},
sendPageEvent: function (type, detail) {
if (!this.ensureTrustedOrigin()) {
return;
}
let doc = content.document;
let eventName = "mozUITour" + type;
let event = new doc.defaultView.CustomEvent(eventName, {
bubbles: true,
detail: Cu.cloneInto(detail, doc.defaultView)
});
doc.dispatchEvent(event);
}
};
addEventListener("mozUITour", UITourListener, false, true);

View file

@ -1,6 +0,0 @@
# 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

View file

@ -1,9 +0,0 @@
# 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_JS_MODULES += [
'UITour.jsm',
]
JAR_MANIFESTS += ['jar.mn']

View file

@ -37,9 +37,6 @@
<!ENTITY helpFeedbackPage.label "Submit Feedback…">
<!ENTITY helpFeedbackPage.accesskey "S">
<!ENTITY helpShowTour2.label "&brandShorterName; Tour">
<!ENTITY helpShowTour2.accesskey "o">
<!ENTITY preferencesCmdMac.label "Preferences…">
<!ENTITY preferencesCmdMac.commandkey ",">

View file

@ -828,8 +828,6 @@ you can use these alternative items. Otherwise, their values should be empty. -
a CSS length value. -->
<!ENTITY pluginNotification.width "28em">
<!ENTITY uiTour.infoPanel.close "Close">
<!ENTITY appMenuSidebars.label "Sidebars">
<!-- LOCALIZATION NOTE: (panicButton.view.mainTimeframeDesc, panicButton.view.5min, panicButton.view.2hr, panicButton.view.day):

View file

@ -606,13 +606,6 @@ flashHang.message = %S changed some Adobe Flash settings to improve performance.
flashHang.helpButton.label = Learn More…
flashHang.helpButton.accesskey = L
# LOCALIZATION NOTE(customizeTips.tip0): %1$S will be replaced with the text defined
# in customizeTips.tip0.hint, %2$S will be replaced with brandShortName, %3$S will
# be replaced with a hyperlink containing the text defined in customizeTips.tip0.learnMore.
customizeTips.tip0 = %1$S: You can customize %2$S to work the way you do. Simply drag any of the above to the menu or toolbar. %3$S about customizing %2$S.
customizeTips.tip0.hint = Hint
customizeTips.tip0.learnMore = Learn more
# LOCALIZATION NOTE (customizeMode.tabTitle): %S is brandShortName
customizeMode.tabTitle = Customize %S

View file

@ -17,8 +17,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
"resource:///modules/RecentWindow.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "CustomizableUI",
"resource:///modules/CustomizableUI.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "UITour",
"resource:///modules/UITour.jsm");
XPCOMUtils.defineLazyGetter(this, "Timer", function() {
let timer = {};
Cu.import("resource://gre/modules/Timer.jsm", timer);
@ -174,11 +172,6 @@ this.BrowserUITelemetry = {
this.getToolbarMeasures.bind(this));
UITelemetry.addSimpleMeasureFunction("contextmenu",
this.getContextMenuInfo.bind(this));
// Ensure that UITour.jsm remains lazy-loaded, yet always registers its
// simple measure function with UITelemetry.
UITelemetry.addSimpleMeasureFunction("UITour",
() => UITour.getTelemetry());
UITelemetry.addSimpleMeasureFunction("syncstate",
this.getSyncState.bind(this));

View file

@ -25,8 +25,6 @@ const PREF_ENABLED = "browser.selfsupport.enabled";
const PREF_URL = "browser.selfsupport.url";
// Unified Telemetry status.
const PREF_TELEMETRY_UNIFIED = "toolkit.telemetry.unified";
// UITour status.
const PREF_UITOUR_ENABLED = "browser.uitour.enabled";
// Controls the interval at which the self support page tries to reload in case of
// errors.
@ -44,8 +42,6 @@ const PREF_LOG_DUMP = PREF_BRANCH_LOG + "dump";
const HTML_NS = "http://www.w3.org/1999/xhtml";
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
const UITOUR_FRAME_SCRIPT = "chrome://browser/content/content-UITour.js";
// Whether the FHR/Telemetry unification features are enabled.
// Changing this pref requires a restart.
const IS_UNIFIED_TELEMETRY = Preferences.get(PREF_TELEMETRY_UNIFIED, false);
@ -90,8 +86,7 @@ var SelfSupportBackendInternal = {
}
// Make sure UITour is enabled.
let uiTourEnabled = Preferences.get(PREF_UITOUR_ENABLED, false);
if (!uiTourEnabled) {
if (true) {
this._log.config("init - Disabling SelfSupport because UITour is disabled.");
return;
}
@ -253,9 +248,6 @@ var SelfSupportBackendInternal = {
// Create the hidden browser.
this._makeHiddenBrowser(url).then(() => {
// Load UITour frame script.
this._browser.messageManager.loadFrameScript(UITOUR_FRAME_SCRIPT, true);
// We need to watch for load errors as well and, in case, try to reload
// the self support page.
const webFlags = Ci.nsIWebProgress.NOTIFY_STATE_WINDOW |

View file

@ -1543,11 +1543,6 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton:not(:h
border-left: 3px solid transparent;
}
/* The :hover:active style from toolkit doesn't seem to work in this panel so just use :active. */
.customization-tipPanel-closeBox > .close-icon:active {
background-image: -moz-image-rect(url("chrome://global/skin/icons/close.svg"), 0, 48, 16, 32);
}
/* End customization mode */
@ -1556,40 +1551,6 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton:not(:h
width: 40px;
}
%include ../shared/UITour.inc.css
#UITourHighlight {
/* Below are some fixes for people without an X compositor on Linux.
This is why we can't have nice things: */
/* Animations don't repaint properly without an X compositor. */
animation-name: none !important;
/* Opacity rounds to 0 or 1 on Linux without an X compositor so make the
background be transparent in that case by having all alpha values < 0.5 */
background-image: radial-gradient(50% 100%, rgba(0,149,220,0.3) 50%, rgba(0,149,220,0.49) 100%);
/* The highlight isn't anti-aliased without an X compositor so make it thicker.
Make it a darker color since we don't have the box-shadow in this case. */
border: 4px solid rgb(0,149,220);
}
#UITourTooltipDescription {
font-size: 1.05rem;
}
#UITourTooltipClose {
margin-inline-end: -4px;
height: 16px;
width: 16px;
}
/**
* Override the --arrowpanel-padding so the background extends
* to the sides and bottom of the panel.
*/
#UITourTooltipButtons {
margin-left: -10px;
margin-bottom: -10px;
}
%include ../shared/contextmenu.inc.css
#context-navigation > .menuitem-iconic > .menu-iconic-left {

View file

@ -3192,24 +3192,6 @@ menulist.translate-infobar-element > .menulist-dropmarker {
}
@media (min-resolution: 2dppx) {
.customization-tipPanel-infoBox {
background-image: url(chrome://browser/skin/customizableui/info-icon-customizeTip@2x.png);
background-size: 25px 25px;
}
.customization-tipPanel-contentImage {
list-style-image: url(chrome://browser/skin/customizableui/customize-illustration@2x.png);
}
.customization-tipPanel-contentImage:-moz-locale-dir(rtl) {
list-style-image: url(chrome://browser/skin/customizableui/customize-illustration-rtl@2x.png);
}
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="left"],
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="right"] {
list-style-image: url("chrome://browser/skin/customizableui/panelarrow-customizeTip@2x.png");
}
.customization-lwtheme-menu-theme[defaulttheme] {
list-style-image: url(chrome://browser/skin/theme-switcher-icon@2x.png);
}
@ -3279,24 +3261,6 @@ menulist.translate-infobar-element > .menulist-dropmarker {
-moz-box-ordinal-group: 0;
}
%include ../shared/UITour.inc.css
#UITourTooltipDescription {
font-size: 1.18rem;
line-height: 2rem;
}
#UITourTooltipClose {
margin-inline-end: -10px;
margin-top: -14px;
}
@media (min-resolution: 2dppx) {
#UITourTooltipClose > .toolbarbutton-icon {
width: 16px;
}
}
%include ../shared/contextmenu.inc.css
#context-navigation > .menuitem-iconic {

View file

@ -1,293 +0,0 @@
%if 0
/* 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/. */
%endif
/* UI Tour */
#UITourHighlightContainer {
-moz-appearance: none;
-moz-window-shadow: none;
border: none;
background-color: transparent;
/* This is a buffer to compensate for the movement in the "wobble" effect,
and for the box-shadow of #UITourHighlight. */
padding: 4px;
}
#UITourHighlight {
background-image: radial-gradient(50% 100%, rgba(0,149,220,0.4) 50%, rgba(0,149,220,0.6) 100%);
border-radius: 40px;
border: 1px solid white;
/* The box-shadow opacity needs to be < 0.5 so it doesn't appear at 100% opacity
on Linux without an X compositor where opacity is either 0 or 1. */
box-shadow: 0 0 3px 0 rgba(0,0,0,0.49);
min-height: 32px;
min-width: 32px;
}
#UITourTooltipBody {
-moz-box-align: start;
}
#UITourTooltipTitleContainer {
-moz-box-align: start;
margin-bottom: 10px;
}
#UITourTooltipIcon {
width: 48px;
height: 48px;
margin-inline-end: 10px;
}
#UITourTooltipTitle,
#UITourTooltipDescription {
max-width: 20rem;
}
#UITourTooltipTitle {
font-size: 1.45rem;
font-weight: bold;
margin: 0;
}
#UITourTooltipDescription {
margin-inline-start: 0;
margin-inline-end: 0;
font-size: 1.15rem;
line-height: 1.8rem;
margin-bottom: 0; /* Override global.css */
}
#UITourTooltipClose {
position: relative;
-moz-appearance: none;
border: none;
background-color: transparent;
min-width: 0;
margin-inline-start: 4px;
margin-top: -2px;
}
#UITourTooltipClose > .toolbarbutton-text {
display: none;
}
#UITourTooltipButtons {
-moz-box-pack: end;
background-color: hsla(210,4%,10%,.07);
border-top: 1px solid hsla(210,4%,10%,.14);
margin: 10px -16px -16px;
padding: 16px;
}
#UITourTooltipButtons > label,
#UITourTooltipButtons > button {
margin: 0 15px;
}
#UITourTooltipButtons > label:first-child,
#UITourTooltipButtons > button:first-child {
margin-inline-start: 0;
}
#UITourTooltipButtons > label:last-child,
#UITourTooltipButtons > button:last-child {
margin-inline-end: 0;
}
#UITourTooltipButtons > button[image] > .button-box > .button-icon {
width: 16px;
height: 16px;
margin-inline-end: 5px;
}
#UITourTooltipButtons > label,
#UITourTooltipButtons > button .button-text {
font-size: 1.15rem;
}
#UITourTooltipButtons > button:not(.button-link) {
-moz-appearance: none;
background-color: rgb(251,251,251);
border-radius: 3px;
border: 1px solid;
border-color: rgb(192,192,192);
color: rgb(71,71,71);
padding: 4px 30px;
transition-property: background-color, border-color;
transition-duration: 150ms;
}
#UITourTooltipButtons > button:not(.button-link):not(:active):hover {
background-color: hsla(210,4%,10%,.15);
border-color: hsla(210,4%,10%,.15);
box-shadow: 0 1px 0 0 hsla(210,4%,10%,.05) inset;
}
#UITourTooltipButtons > label,
#UITourTooltipButtons > button.button-link {
-moz-appearance: none;
background: transparent;
border: none;
box-shadow: none;
color: rgba(0,0,0,0.35);
padding-left: 10px;
padding-right: 10px;
}
#UITourTooltipButtons > button.button-link:hover {
color: black;
}
/* The primary button gets the same color as the customize button. */
#UITourTooltipButtons > button.button-primary {
background-color: rgb(116,191,67);
color: white;
padding-left: 30px;
padding-right: 30px;
}
#UITourTooltipButtons > button.button-primary:not(:active):hover {
background-color: rgb(105,173,61);
}
/* Notification overrides for Heartbeat UI */
notification.heartbeat {
%ifdef XP_MACOSX
background-image: linear-gradient(-179deg, #FBFBFB 0%, #EBEBEB 100%);
%else
background-color: #F1F1F1;
%endif
border-bottom: 1px solid #C1C1C1;
height: 40px;
}
/* In themes/osx/global/notification.css the close icon is inverted because notifications
on OSX are usually dark. Heartbeat is light, so override that behaviour. */
%ifdef XP_MACOSX
notification.heartbeat[type="info"] .close-icon:not(:hover) {
-moz-image-region: rect(0, 16px, 16px, 0px) !important;
}
@media (min-resolution: 2dppx) {
notification.heartbeat[type="info"] .close-icon:not(:hover) {
-moz-image-region: rect(0, 32px, 32px, 0px) !important;
}
}
%endif
@keyframes pulse-onshow {
0% {
opacity: 0;
transform: scale(1.0);
}
25% {
opacity: 1;
transform: scale(1.1);
}
50% {
transform: scale(1.0);
}
75% {
transform: scale(1.1);
}
100% {
transform: scale(1.0);
}
}
@keyframes pulse-twice {
0% {
transform: scale(1.1);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
.messageText.heartbeat {
color: #333333;
text-shadow: none;
margin-inline-start: 0px;
/* The !important is required to override OSX default style. */
margin-inline-end: 12px !important;
}
.messageImage.heartbeat {
width: 24px;
height: 24px;
margin-inline-start: 8px;
margin-inline-end: 8px;
}
.messageImage.heartbeat.pulse-onshow {
animation-name: pulse-onshow;
animation-duration: 1.5s;
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.7,1.8,.9,1.1);
}
.messageImage.heartbeat.pulse-twice {
animation-name: pulse-twice;
animation-duration: 1s;
animation-iteration-count: 2;
animation-timing-function: linear;
}
/* Learn More link styles */
.heartbeat > .text-link {
color: #0095DD;
margin-inline-start: 0px;
}
.heartbeat > .text-link:hover {
color: #008ACB;
text-decoration: none;
}
.heartbeat > .text-link:hover:active {
color: #006B9D;
}
/* Heartbeat UI Rating Star Classes */
.heartbeat > #star-rating-container {
display: -moz-box;
margin-bottom: 4px;
}
.heartbeat > #star-rating-container > #star5 {
-moz-box-ordinal-group: 5;
}
.heartbeat > #star-rating-container > #star4 {
-moz-box-ordinal-group: 4;
}
.heartbeat > #star-rating-container > #star3 {
-moz-box-ordinal-group: 3;
}
.heartbeat > #star-rating-container > #star2 {
-moz-box-ordinal-group: 2;
}
.heartbeat > #star-rating-container > .star-x {
background: url("chrome://browser/skin/heartbeat-star-off.svg");
cursor: pointer;
/* Overrides the margin-inline-end for all platforms defined in the .plain class */
margin-inline-end: 4px !important;
width: 16px;
height: 16px;
}
.heartbeat > #star-rating-container > .star-x:hover,
.heartbeat > #star-rating-container > .star-x:hover ~ .star-x {
background: url("chrome://browser/skin/heartbeat-star-lit.svg");
}

View file

@ -457,5 +457,3 @@ toolbarpaletteitem[place="toolbar"]:not([mousedown="true"]):-moz-focusring {
.customization-lwtheme-menu-footeritem:first-child {
border-inline-end: 1px solid var(--panel-separator-color);
}
%include customizeTip.inc.css

View file

@ -1,77 +0,0 @@
/* 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/. */
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowcontent {
padding: 0;
margin: 0;
min-width: 400px;
max-width: 1000px;
min-height: 200px;
border-radius: 3px;
background-image: linear-gradient(90deg, #a0dfff 0%, #ceeeff 100%);
border: 0px solid rgba(0,148,221,.5);
box-shadow: 0 1px 5px 0 rgba(0,0,0,.5), inset 0 1px 1px 0 #fff;
color: rgb(51,51,51);
}
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowcontent:-moz-locale-dir(rtl) {
background-image: linear-gradient(90deg, #ceeeff 0%, #a0dfff 100%);
}
.customization-tipPanel-infoBox {
margin: 20px 25px 25px;
width: 25px;
background-image: url(chrome://browser/skin/customizableui/info-icon-customizeTip.png);
background-repeat: no-repeat;
}
.customization-tipPanel-content {
margin: 25px 0;
font-size: 12px;
line-height: 18px;
}
.customization-tipPanel-em {
margin: 0;
font-weight: bold;
}
.customization-tipPanel-contentImage {
margin-top: 25px;
list-style-image: url(chrome://browser/skin/customizableui/customize-illustration.png);
min-width: 300px;
max-width: 300px;
min-height: 190px;
max-height: 190px;
display: -moz-box;
}
.customization-tipPanel-contentImage:-moz-locale-dir(rtl) {
list-style-image: url(chrome://browser/skin/customizableui/customize-illustration-rtl.png);
}
.customization-tipPanel-link {
-moz-appearance: none;
background: transparent;
border: none;
box-shadow: none;
color: rgb(25,82,171);
margin: 0;
cursor: pointer;
}
.customization-tipPanel-link > .button-box > .button-text {
margin: 0 !important;
}
.customization-tipPanel-closeBox > .close-icon {
-moz-appearance: none;
border: 0;
margin-inline-end: -25px;
}
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="left"],
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="right"] {
list-style-image: url("chrome://browser/skin/customizableui/panelarrow-customizeTip.png");
}

View file

@ -2431,14 +2431,6 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton {
border-bottom: 1px solid @toolbarShadowColor@;
}
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="left"] {
margin-right: -2px;
}
#customization-tipPanel > .panel-arrowcontainer > .panel-arrowbox > .panel-arrow[side="right"] {
margin-left: -2px;
}
/* End customization mode */
/* Private browsing indicators */
@ -2542,18 +2534,6 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton {
/* End private browsing indicators */
%include ../shared/UITour.inc.css
#UITourTooltipButtons {
/**
* Override the --arrowpanel-padding so the background extends
* to the sides and bottom of the panel.
*/
margin-left: -10px;
margin-right: -10px;
margin-bottom: -10px;
}
%include ../shared/contextmenu.inc.css
#context-navigation {

View file

@ -297,10 +297,6 @@ user_pref("browser.aboutHomeSnippets.updateUrl", "nonexistent://test");
user_pref("browser.newtabpage.directory.source", 'data:application/json,{"testing":1}');
user_pref("browser.newtabpage.directory.ping", "");
// Ensure UITour won't hit the network
user_pref("browser.uitour.pinnedTabUrl", "http://%(server)s/uitour-dummy/pinnedTab");
user_pref("browser.uitour.url", "http://%(server)s/uitour-dummy/tour");
// Tell the search service we are running in the US. This also has the desired
// side-effect of preventing our geoip lookup.
user_pref("browser.search.isUS", true);