зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1202372 - remove the UITour dead code related to the old searchbar UI, r=MattN.
This commit is contained in:
Родитель
e6743e5288
Коммит
696f2789fb
|
@ -220,12 +220,6 @@ this.UITour = {
|
||||||
query: "#searchbar",
|
query: "#searchbar",
|
||||||
widgetName: "search-container",
|
widgetName: "search-container",
|
||||||
}],
|
}],
|
||||||
["searchProvider", {
|
|
||||||
query: (aDocument) => {
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
widgetName: "search-container",
|
|
||||||
}],
|
|
||||||
["searchIcon", {
|
["searchIcon", {
|
||||||
query: (aDocument) => {
|
query: (aDocument) => {
|
||||||
let searchbar = aDocument.getElementById("searchbar");
|
let searchbar = aDocument.getElementById("searchbar");
|
||||||
|
@ -987,11 +981,6 @@ this.UITour = {
|
||||||
return deferred.promise;
|
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);
|
let targetObject = this.targets.get(aTargetName);
|
||||||
if (!targetObject) {
|
if (!targetObject) {
|
||||||
log.warn("getTarget: The specified target name is not in the allowed set");
|
log.warn("getTarget: The specified target name is not in the allowed set");
|
||||||
|
@ -1331,18 +1320,6 @@ this.UITour = {
|
||||||
*/
|
*/
|
||||||
showHighlight: function(aChromeWindow, aTarget, aEffect = "none") {
|
showHighlight: function(aChromeWindow, aTarget, aEffect = "none") {
|
||||||
function showHighlightPanel() {
|
function showHighlightPanel() {
|
||||||
if (aTarget.targetName.startsWith(TARGET_SEARCHENGINE_PREFIX)) {
|
|
||||||
// This won't affect normal higlights done via the panel, so we need to
|
|
||||||
// manually hide those.
|
|
||||||
this.hideHighlight(aChromeWindow);
|
|
||||||
aTarget.node.setAttribute("_moz-menuactive", true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Conversely, highlights for search engines are highlighted via CSS
|
|
||||||
// rather than a panel, so need to be manually removed.
|
|
||||||
this._hideSearchEngineHighlight(aChromeWindow);
|
|
||||||
|
|
||||||
let highlighter = aChromeWindow.document.getElementById("UITourHighlight");
|
let highlighter = aChromeWindow.document.getElementById("UITourHighlight");
|
||||||
|
|
||||||
let effect = aEffect;
|
let effect = aEffect;
|
||||||
|
@ -1419,24 +1396,6 @@ this.UITour = {
|
||||||
highlighter.removeAttribute("active");
|
highlighter.removeAttribute("active");
|
||||||
|
|
||||||
this._setAppMenuStateForAnnotation(aWindow, "highlight", false);
|
this._setAppMenuStateForAnnotation(aWindow, "highlight", false);
|
||||||
this._hideSearchEngineHighlight(aWindow);
|
|
||||||
},
|
|
||||||
|
|
||||||
_hideSearchEngineHighlight: function(aWindow) {
|
|
||||||
// We special case highlighting items in the search engines dropdown,
|
|
||||||
// so just blindly remove any highlight there.
|
|
||||||
let searchMenuBtn = null;
|
|
||||||
try {
|
|
||||||
searchMenuBtn = this.targets.get("searchProvider").query(aWindow.document);
|
|
||||||
} catch (e) { /* This is ok to fail. */ }
|
|
||||||
if (searchMenuBtn) {
|
|
||||||
let searchPopup = aWindow.document
|
|
||||||
.getAnonymousElementByAttribute(searchMenuBtn,
|
|
||||||
"anonid",
|
|
||||||
"searchbar-popup");
|
|
||||||
for (let menuItem of searchPopup.children)
|
|
||||||
menuItem.removeAttribute("_moz-menuactive");
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1558,11 +1517,6 @@ this.UITour = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Due to a platform limitation, we can't anchor a panel to an element in a
|
|
||||||
// <menupopup>. So we can't support showing info panels for search engines.
|
|
||||||
if (aAnchor.targetName.startsWith(TARGET_SEARCHENGINE_PREFIX))
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._setAppMenuStateForAnnotation(aChromeWindow, "info",
|
this._setAppMenuStateForAnnotation(aChromeWindow, "info",
|
||||||
this.targetIsInAppMenu(aAnchor),
|
this.targetIsInAppMenu(aAnchor),
|
||||||
showInfoPanel.bind(this, this._correctAnchor(aAnchor.node)));
|
showInfoPanel.bind(this, this._correctAnchor(aAnchor.node)));
|
||||||
|
@ -1670,10 +1624,6 @@ this.UITour = {
|
||||||
});
|
});
|
||||||
panel.addEventListener("popuphidden", this.onPanelHidden);
|
panel.addEventListener("popuphidden", this.onPanelHidden);
|
||||||
panel.addEventListener("popuphiding", this.hideLoopPanelAnnotations);
|
panel.addEventListener("popuphiding", this.hideLoopPanelAnnotations);
|
||||||
} else if (aMenuName == "searchEngines") {
|
|
||||||
this.getTarget(aWindow, "searchProvider").then(target => {
|
|
||||||
openMenuButton(target.node);
|
|
||||||
}).catch(log.error);
|
|
||||||
} else if (aMenuName == "pocket") {
|
} else if (aMenuName == "pocket") {
|
||||||
this.getTarget(aWindow, "pocket").then(Task.async(function* onPocketTarget(target) {
|
this.getTarget(aWindow, "pocket").then(Task.async(function* onPocketTarget(target) {
|
||||||
let widgetGroupWrapper = CustomizableUI.getWidget(target.widgetName);
|
let widgetGroupWrapper = CustomizableUI.getWidget(target.widgetName);
|
||||||
|
@ -1735,9 +1685,6 @@ this.UITour = {
|
||||||
} else if (aMenuName == "loop") {
|
} else if (aMenuName == "loop") {
|
||||||
let panel = aWindow.document.getElementById("loop-notification-panel");
|
let panel = aWindow.document.getElementById("loop-notification-panel");
|
||||||
panel.hidePopup();
|
panel.hidePopup();
|
||||||
} else if (aMenuName == "searchEngines") {
|
|
||||||
let menuBtn = this.targets.get("searchProvider").query(aWindow.document);
|
|
||||||
closeMenuButton(menuBtn);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1882,17 +1829,22 @@ this.UITour = {
|
||||||
gettingStartedSeen: Services.prefs.getBoolPref("loop.gettingStarted.seen"),
|
gettingStartedSeen: Services.prefs.getBoolPref("loop.gettingStarted.seen"),
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case "search":
|
||||||
case "selectedSearchEngine":
|
case "selectedSearchEngine":
|
||||||
Services.search.init(rv => {
|
Services.search.init(rv => {
|
||||||
let engine;
|
let data;
|
||||||
if (Components.isSuccessCode(rv)) {
|
if (Components.isSuccessCode(rv)) {
|
||||||
engine = Services.search.defaultEngine;
|
let engines = Services.search.getVisibleEngines();
|
||||||
|
data = {
|
||||||
|
searchEngineIdentifier: Services.search.defaultEngine.identifier,
|
||||||
|
engines: [TARGET_SEARCHENGINE_PREFIX + engine.identifier
|
||||||
|
for (engine of engines)
|
||||||
|
if (engine.identifier)]
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
engine = { identifier: "" };
|
data = {engines: [], searchEngineIdentifier: ""};
|
||||||
}
|
}
|
||||||
this.sendPageCallback(aMessageManager, aCallbackID, {
|
this.sendPageCallback(aMessageManager, aCallbackID, data);
|
||||||
searchEngineIdentifier: engine.identifier
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "sync":
|
case "sync":
|
||||||
|
@ -1950,10 +1902,6 @@ this.UITour = {
|
||||||
targetNames.push(targetObject.targetName);
|
targetNames.push(targetObject.targetName);
|
||||||
}
|
}
|
||||||
|
|
||||||
targetNames = targetNames.concat(
|
|
||||||
yield this.getAvailableSearchEngineTargets(window)
|
|
||||||
);
|
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
targets: targetNames,
|
targets: targetNames,
|
||||||
};
|
};
|
||||||
|
@ -2060,55 +2008,6 @@ this.UITour = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
getAvailableSearchEngineTargets(aWindow) {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
this.getTarget(aWindow, "search").then(searchTarget => {
|
|
||||||
if (!searchTarget.node || this.targetIsInAppMenu(searchTarget))
|
|
||||||
return resolve([]);
|
|
||||||
|
|
||||||
Services.search.init(() => {
|
|
||||||
let engines = Services.search.getVisibleEngines();
|
|
||||||
resolve([TARGET_SEARCHENGINE_PREFIX + engine.identifier
|
|
||||||
for (engine of engines)
|
|
||||||
if (engine.identifier)]);
|
|
||||||
});
|
|
||||||
}).catch(() => resolve([]));
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// We only allow matching based on a search engine's identifier - this gives
|
|
||||||
// us a non-changing ID and guarentees we only match against app-provided
|
|
||||||
// engines.
|
|
||||||
getSearchEngineTarget(aWindow, aIdentifier) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
Task.spawn(function*() {
|
|
||||||
let searchTarget = yield this.getTarget(aWindow, "search");
|
|
||||||
// We're not supporting having the searchbar in the app-menu, because
|
|
||||||
// popups within popups gets crazy. This restriction should be lifted
|
|
||||||
// once bug 988151 is implemented, as the page can then be responsible
|
|
||||||
// for opening each menu when appropriate.
|
|
||||||
if (!searchTarget.node || this.targetIsInAppMenu(searchTarget))
|
|
||||||
return reject("Search engine not available");
|
|
||||||
|
|
||||||
yield Services.search.init();
|
|
||||||
|
|
||||||
let searchPopup = searchTarget.node._popup;
|
|
||||||
for (let engineNode of searchPopup.children) {
|
|
||||||
let engine = engineNode.engine;
|
|
||||||
if (engine && engine.identifier == aIdentifier) {
|
|
||||||
return resolve({
|
|
||||||
targetName: TARGET_SEARCHENGINE_PREFIX + engine.identifier,
|
|
||||||
node: engineNode,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reject("Search engine not available");
|
|
||||||
}.bind(this)).catch(() => {
|
|
||||||
reject("Search engine not available");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
notify(eventName, params) {
|
notify(eventName, params) {
|
||||||
let winEnum = Services.wm.getEnumerator("navigator:browser");
|
let winEnum = Services.wm.getEnumerator("navigator:browser");
|
||||||
while (winEnum.hasMoreElements()) {
|
while (winEnum.hasMoreElements()) {
|
||||||
|
|
|
@ -216,56 +216,6 @@ var tests = [
|
||||||
gContentAPI.showHighlight("urlbar");
|
gContentAPI.showHighlight("urlbar");
|
||||||
waitForElementToBeVisible(highlight, checkDefaultEffect, "Highlight should be shown after showHighlight()");
|
waitForElementToBeVisible(highlight, checkDefaultEffect, "Highlight should be shown after showHighlight()");
|
||||||
},
|
},
|
||||||
function test_highlight_search_engine(done) {
|
|
||||||
let highlight = document.getElementById("UITourHighlight");
|
|
||||||
gContentAPI.showHighlight("urlbar");
|
|
||||||
waitForElementToBeVisible(highlight, () => {
|
|
||||||
|
|
||||||
let searchbar = document.getElementById("searchbar");
|
|
||||||
done();
|
|
||||||
return; // The oneoffui removes the menu that's being tested here.
|
|
||||||
|
|
||||||
gContentAPI.showMenu("searchEngines", function() {
|
|
||||||
isnot(searchbar, null, "Should have found searchbar");
|
|
||||||
let searchPopup = document.getAnonymousElementByAttribute(searchbar,
|
|
||||||
"anonid",
|
|
||||||
"searchbar-popup");
|
|
||||||
isnot(searchPopup, null, "Should have found search popup");
|
|
||||||
|
|
||||||
function getEngineNode(identifier) {
|
|
||||||
let engineNode = null;
|
|
||||||
for (let node of searchPopup.children) {
|
|
||||||
if (node.engine.identifier == identifier) {
|
|
||||||
engineNode = node;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
isnot(engineNode, null, "Should have found search engine node in popup");
|
|
||||||
return engineNode;
|
|
||||||
}
|
|
||||||
let googleEngineNode = getEngineNode("google");
|
|
||||||
let bingEngineNode = getEngineNode("bing");
|
|
||||||
|
|
||||||
gContentAPI.showHighlight("searchEngine-google");
|
|
||||||
waitForCondition(() => googleEngineNode.getAttribute("_moz-menuactive") == "true", function() {
|
|
||||||
is_element_hidden(highlight, "Highlight panel should be hidden by highlighting search engine");
|
|
||||||
|
|
||||||
gContentAPI.showHighlight("searchEngine-bing");
|
|
||||||
waitForCondition(() => bingEngineNode.getAttribute("_moz-menuactive") == "true", function() {
|
|
||||||
isnot(googleEngineNode.getAttribute("_moz-menuactive"), "true", "Previous engine should no longer be highlighted");
|
|
||||||
|
|
||||||
gContentAPI.hideHighlight();
|
|
||||||
waitForCondition(() => bingEngineNode.getAttribute("_moz-menuactive") != "true", function() {
|
|
||||||
gContentAPI.hideMenu("searchEngines");
|
|
||||||
waitForCondition(() => searchPopup.state == "closed", function() {
|
|
||||||
done();
|
|
||||||
}, "Search dropdown should close");
|
|
||||||
}, "Menu item should get attribute removed");
|
|
||||||
}, "Menu item should get attribute to make it look active");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function test_highlight_effect_unsupported(done) {
|
function test_highlight_effect_unsupported(done) {
|
||||||
function checkUnsupportedEffect() {
|
function checkUnsupportedEffect() {
|
||||||
is(highlight.getAttribute("active"), "none", "No effect should be used when an unsupported effect is requested");
|
is(highlight.getAttribute("active"), "none", "No effect should be used when an unsupported effect is requested");
|
||||||
|
@ -367,7 +317,7 @@ var tests = [
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function test_select_search_engine(done) {
|
function test_search(done) {
|
||||||
Services.search.init(rv => {
|
Services.search.init(rv => {
|
||||||
if (!Components.isSuccessCode(rv)) {
|
if (!Components.isSuccessCode(rv)) {
|
||||||
ok(false, "search service init failed: " + rv);
|
ok(false, "search service init failed: " + rv);
|
||||||
|
@ -375,9 +325,21 @@ var tests = [
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let defaultEngine = Services.search.defaultEngine;
|
let defaultEngine = Services.search.defaultEngine;
|
||||||
gContentAPI.getConfiguration("availableTargets", data => {
|
gContentAPI.getConfiguration("search", data => {
|
||||||
let searchEngines = data.targets.filter(t => t.startsWith("searchEngine-"));
|
let visibleEngines = Services.search.getVisibleEngines();
|
||||||
let someOtherEngineID = searchEngines.filter(t => t != "searchEngine-" + defaultEngine.identifier)[0];
|
let expectedEngines = ["searchEngine-" + engine.identifier
|
||||||
|
for (engine of visibleEngines)
|
||||||
|
if (engine.identifier)];
|
||||||
|
|
||||||
|
let engines = data.engines;
|
||||||
|
ok(Array.isArray(engines), "data.engines should be an array");
|
||||||
|
is(engines.sort().toString(), expectedEngines.sort().toString(),
|
||||||
|
"Engines should be as expected");
|
||||||
|
|
||||||
|
is(data.searchEngineIdentifier, defaultEngine.identifier,
|
||||||
|
"the searchEngineIdentifier property should contain the defaultEngine's identifier");
|
||||||
|
|
||||||
|
let someOtherEngineID = data.engines.filter(t => t != "searchEngine-" + defaultEngine.identifier)[0];
|
||||||
someOtherEngineID = someOtherEngineID.replace(/^searchEngine-/, "");
|
someOtherEngineID = someOtherEngineID.replace(/^searchEngine-/, "");
|
||||||
|
|
||||||
let observe = function (subject, topic, verb) {
|
let observe = function (subject, topic, verb) {
|
||||||
|
|
|
@ -34,13 +34,6 @@ function test() {
|
||||||
UITourTest();
|
UITourTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
function searchEngineTargets() {
|
|
||||||
let engines = Services.search.getVisibleEngines();
|
|
||||||
return ["searchEngine-" + engine.identifier
|
|
||||||
for (engine of engines)
|
|
||||||
if (engine.identifier)];
|
|
||||||
}
|
|
||||||
|
|
||||||
var tests = [
|
var tests = [
|
||||||
function test_availableTargets(done) {
|
function test_availableTargets(done) {
|
||||||
gContentAPI.getConfiguration("availableTargets", (data) => {
|
gContentAPI.getConfiguration("availableTargets", (data) => {
|
||||||
|
@ -63,7 +56,6 @@ var tests = [
|
||||||
"searchIcon",
|
"searchIcon",
|
||||||
"trackingProtection",
|
"trackingProtection",
|
||||||
"urlbar",
|
"urlbar",
|
||||||
...searchEngineTargets(),
|
|
||||||
...(hasWebIDE ? ["webide"] : [])
|
...(hasWebIDE ? ["webide"] : [])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -96,7 +88,6 @@ var tests = [
|
||||||
"searchIcon",
|
"searchIcon",
|
||||||
"trackingProtection",
|
"trackingProtection",
|
||||||
"urlbar",
|
"urlbar",
|
||||||
...searchEngineTargets(),
|
|
||||||
...(hasWebIDE ? ["webide"] : [])
|
...(hasWebIDE ? ["webide"] : [])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -114,7 +105,7 @@ var tests = [
|
||||||
// Make sure the callback still fires with the other available targets.
|
// Make sure the callback still fires with the other available targets.
|
||||||
CustomizableUI.removeWidgetFromArea("search-container");
|
CustomizableUI.removeWidgetFromArea("search-container");
|
||||||
gContentAPI.getConfiguration("availableTargets", (data) => {
|
gContentAPI.getConfiguration("availableTargets", (data) => {
|
||||||
// Default minus "search" and "searchProvider" and "searchIcon"
|
// Default minus "search" and "searchIcon"
|
||||||
ok_targets(data, [
|
ok_targets(data, [
|
||||||
"accountStatus",
|
"accountStatus",
|
||||||
"addons",
|
"addons",
|
||||||
|
|
Загрузка…
Ссылка в новой задаче