зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1611055 - Replace UrlbarProvider subclasses in tests with UrlbarTestUtils.TestProvider. r=harry
Differential Revision: https://phabricator.services.mozilla.com/D61253 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
d15482b6d9
Коммит
f381e0c275
|
@ -389,22 +389,26 @@ class TestProvider extends UrlbarProvider {
|
|||
*
|
||||
* @param {array} results
|
||||
* An array of UrlbarResult objects that will be the provider's results.
|
||||
* @param {string} name
|
||||
* @param {string} [name]
|
||||
* The provider's name. Provider names should be unique.
|
||||
* @param {UrlbarUtils.PROVIDER_TYPE} type
|
||||
* @param {UrlbarUtils.PROVIDER_TYPE} [type]
|
||||
* The provider's type.
|
||||
* @param {number} priority
|
||||
* @param {number} [priority]
|
||||
* The provider's priority. Built-in providers have a priority of zero.
|
||||
* @param {number} addTimeout
|
||||
* @param {number} [addTimeout]
|
||||
* If non-zero, each result will be added on this timeout. If zero, all
|
||||
* results will be added immediately and synchronously.
|
||||
* @param {function} [onCancel]
|
||||
* If given, a function that will be called when the provider's cancelQuery
|
||||
* method is called.
|
||||
*/
|
||||
constructor({
|
||||
results,
|
||||
name = "TestProvider",
|
||||
name = "TestProvider" + Math.floor(Math.random() * 100000),
|
||||
type = UrlbarUtils.PROVIDER_TYPE.PROFILE,
|
||||
priority = 0,
|
||||
addTimeout = 0,
|
||||
onCancel = null,
|
||||
} = {}) {
|
||||
super();
|
||||
this._results = results;
|
||||
|
@ -412,6 +416,7 @@ class TestProvider extends UrlbarProvider {
|
|||
this._type = type;
|
||||
this._priority = priority;
|
||||
this._addTimeout = addTimeout;
|
||||
this._onCancel = onCancel;
|
||||
}
|
||||
get name() {
|
||||
return this._name;
|
||||
|
@ -439,7 +444,11 @@ class TestProvider extends UrlbarProvider {
|
|||
}
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {}
|
||||
cancelQuery(context) {
|
||||
if (this._onCancel) {
|
||||
this._onCancel();
|
||||
}
|
||||
}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,39 +9,8 @@
|
|||
const HELP_URL = "about:mozilla";
|
||||
const TIP_URL = "about:about";
|
||||
|
||||
/**
|
||||
* A test provider.
|
||||
*/
|
||||
class TipTestProvider extends UrlbarProvider {
|
||||
constructor(matches) {
|
||||
super();
|
||||
this._matches = matches;
|
||||
}
|
||||
get name() {
|
||||
return "TipTestProvider";
|
||||
}
|
||||
get type() {
|
||||
return UrlbarUtils.PROVIDER_TYPE.PROFILE;
|
||||
}
|
||||
isActive(context) {
|
||||
return true;
|
||||
}
|
||||
getPriority(context) {
|
||||
return 1;
|
||||
}
|
||||
async startQuery(context, addCallback) {
|
||||
Assert.ok(true, "Tip provider was invoked");
|
||||
this._context = context;
|
||||
for (const match of this._matches) {
|
||||
addCallback(this, match);
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
||||
add_task(async function tipIsSecondResult() {
|
||||
let matches = [
|
||||
let results = [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.URL,
|
||||
UrlbarUtils.RESULT_SOURCE.HISTORY,
|
||||
|
@ -61,7 +30,7 @@ add_task(async function tipIsSecondResult() {
|
|||
),
|
||||
];
|
||||
|
||||
let provider = new TipTestProvider(matches);
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results, priority: 1 });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -155,7 +124,7 @@ add_task(async function tipIsSecondResult() {
|
|||
});
|
||||
|
||||
add_task(async function tipIsOnlyResult() {
|
||||
let matches = [
|
||||
let results = [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.TIP,
|
||||
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
|
@ -170,7 +139,7 @@ add_task(async function tipIsOnlyResult() {
|
|||
),
|
||||
];
|
||||
|
||||
let provider = new TipTestProvider(matches);
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results, priority: 1 });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -237,7 +206,7 @@ add_task(async function tipIsOnlyResult() {
|
|||
});
|
||||
|
||||
add_task(async function tipHasNoHelpButton() {
|
||||
let matches = [
|
||||
let results = [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.URL,
|
||||
UrlbarUtils.RESULT_SOURCE.HISTORY,
|
||||
|
@ -255,7 +224,7 @@ add_task(async function tipHasNoHelpButton() {
|
|||
),
|
||||
];
|
||||
|
||||
let provider = new TipTestProvider(matches);
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results, priority: 1 });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -324,7 +293,7 @@ add_task(async function mouseSelection() {
|
|||
window.windowUtils.disableNonTestMouseEvents(false);
|
||||
});
|
||||
|
||||
let matches = [
|
||||
let results = [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.TIP,
|
||||
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
|
@ -339,7 +308,7 @@ add_task(async function mouseSelection() {
|
|||
),
|
||||
];
|
||||
|
||||
let provider = new TipTestProvider(matches);
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results, priority: 1 });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
// Click the help button.
|
||||
|
@ -383,7 +352,7 @@ add_task(async function mouseSelection() {
|
|||
// Click inside the tip but outside the buttons. Nothing should happen. Make
|
||||
// the result the heuristic to check that the selection on the main button
|
||||
// isn't lost.
|
||||
matches[0].heuristic = true;
|
||||
results[0].heuristic = true;
|
||||
await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
value: "test",
|
||||
window,
|
||||
|
|
|
@ -24,17 +24,19 @@ add_task(async function urlToTip() {
|
|||
]);
|
||||
|
||||
// Add a provider that returns a tip result when the search string is "testx".
|
||||
let provider = new TestProvider([
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.TIP,
|
||||
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
{
|
||||
text: "This is a test tip.",
|
||||
buttonText: "OK",
|
||||
helpUrl: "http://example.com/",
|
||||
}
|
||||
),
|
||||
]);
|
||||
let provider = new UrlbarTestUtils.TestProvider({
|
||||
results: [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.TIP,
|
||||
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
{
|
||||
text: "This is a test tip.",
|
||||
buttonText: "OK",
|
||||
helpUrl: "http://example.com/",
|
||||
}
|
||||
),
|
||||
],
|
||||
});
|
||||
provider.isActive = context => context.searchString == "testx";
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
|
@ -123,17 +125,19 @@ add_task(async function tipToURL() {
|
|||
|
||||
// Add a provider that returns a tip result when the search string is "test"
|
||||
// or "testxx".
|
||||
let provider = new TestProvider([
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.TIP,
|
||||
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
{
|
||||
text: "This is a test tip.",
|
||||
buttonText: "OK",
|
||||
helpUrl: "http://example.com/",
|
||||
}
|
||||
),
|
||||
]);
|
||||
let provider = new UrlbarTestUtils.TestProvider({
|
||||
results: [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.TIP,
|
||||
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
{
|
||||
text: "This is a test tip.",
|
||||
buttonText: "OK",
|
||||
helpUrl: "http://example.com/",
|
||||
}
|
||||
),
|
||||
],
|
||||
});
|
||||
provider.isActive = context =>
|
||||
["test", "testxx"].includes(context.searchString);
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
@ -237,29 +241,3 @@ async function checkResult(index, type, presentElements, absentElements) {
|
|||
Assert.ok(!element, `${name} should be absent`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A test provider.
|
||||
*/
|
||||
class TestProvider extends UrlbarProvider {
|
||||
constructor(results) {
|
||||
super();
|
||||
this._results = results;
|
||||
}
|
||||
get name() {
|
||||
return "TestProvider";
|
||||
}
|
||||
get type() {
|
||||
return UrlbarUtils.PROVIDER_TYPE.PROFILE;
|
||||
}
|
||||
isActive(context) {
|
||||
return true;
|
||||
}
|
||||
async startQuery(context, addCallback) {
|
||||
for (const result of this._results) {
|
||||
addCallback(this, result);
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
|
|
@ -1052,7 +1052,10 @@ async function addTopSite(site) {
|
|||
}
|
||||
|
||||
function registerTipProvider() {
|
||||
let provider = new TipTestProvider(tipMatches);
|
||||
let provider = new UrlbarTestUtils.TestProvider({
|
||||
results: tipMatches,
|
||||
priority: 1,
|
||||
});
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
return provider;
|
||||
}
|
||||
|
@ -1061,36 +1064,6 @@ function unregisterTipProvider(provider) {
|
|||
UrlbarProvidersManager.unregisterProvider(provider);
|
||||
}
|
||||
|
||||
/**
|
||||
* A test tip provider. See browser_tip_selection.js.
|
||||
*/
|
||||
class TipTestProvider extends UrlbarProvider {
|
||||
constructor(matches) {
|
||||
super();
|
||||
this._matches = matches;
|
||||
}
|
||||
get name() {
|
||||
return "TipTestProvider";
|
||||
}
|
||||
get type() {
|
||||
return UrlbarUtils.PROVIDER_TYPE.PROFILE;
|
||||
}
|
||||
isActive(context) {
|
||||
return true;
|
||||
}
|
||||
getPriority(context) {
|
||||
return 1;
|
||||
}
|
||||
async startQuery(context, addCallback) {
|
||||
this._context = context;
|
||||
for (const match of this._matches) {
|
||||
addCallback(this, match);
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
||||
let tipMatches = [
|
||||
new UrlbarResult(
|
||||
UrlbarUtils.RESULT_TYPE.URL,
|
||||
|
|
|
@ -52,7 +52,7 @@ add_task(async function oneTip() {
|
|||
MAX_RESULTS - TIP_SPAN + 1
|
||||
);
|
||||
|
||||
let provider = new TestProvider({ results });
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results, priority: 1 });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
let context = await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -99,7 +99,7 @@ add_task(async function threeTips() {
|
|||
MAX_RESULTS - 3 * (TIP_SPAN - 1)
|
||||
);
|
||||
|
||||
let provider = new TestProvider({ results });
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results, priority: 1 });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
let context = await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -141,7 +141,7 @@ add_task(async function oneTip_nonRestricting() {
|
|||
|
||||
expectedResults = expectedResults.slice(0, MAX_RESULTS - TIP_SPAN + 1);
|
||||
|
||||
let provider = new TestProvider({ results, isRestricting: false });
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
let context = await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -197,7 +197,7 @@ add_task(async function threeTips_nonRestricting() {
|
|||
|
||||
expectedResults = expectedResults.slice(0, MAX_RESULTS - 3 * (TIP_SPAN - 1));
|
||||
|
||||
let provider = new TestProvider({ results, isRestricting: false });
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
|
||||
let context = await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
||||
|
@ -235,34 +235,3 @@ function collectExpectedProperties(actualObj, expectedObj) {
|
|||
}
|
||||
return newActualObj;
|
||||
}
|
||||
|
||||
/**
|
||||
* A test provider.
|
||||
*/
|
||||
class TestProvider extends UrlbarProvider {
|
||||
constructor({ results, isRestricting = true } = {}) {
|
||||
super();
|
||||
this._results = results;
|
||||
this._isRestricting = isRestricting;
|
||||
}
|
||||
get name() {
|
||||
return "TestProvider";
|
||||
}
|
||||
get type() {
|
||||
return UrlbarUtils.PROVIDER_TYPE.PROFILE;
|
||||
}
|
||||
isActive(context) {
|
||||
return true;
|
||||
}
|
||||
getPriority(context) {
|
||||
return this._isRestricting ? 1 : 0;
|
||||
}
|
||||
async startQuery(context, addCallback) {
|
||||
Assert.ok(true, "Tip provider was invoked");
|
||||
for (const result of this._results) {
|
||||
addCallback(this, result);
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,9 @@ add_task(async function suggestedIndex() {
|
|||
);
|
||||
result2.suggestedIndex = 6;
|
||||
|
||||
let provider = new TestProvider([result1, result2]);
|
||||
let provider = new UrlbarTestUtils.TestProvider({
|
||||
results: [result1, result2],
|
||||
});
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
async function clean() {
|
||||
UrlbarProvidersManager.unregisterProvider(provider);
|
||||
|
@ -75,7 +77,7 @@ add_task(async function suggestedIndex_append() {
|
|||
);
|
||||
result.suggestedIndex = 4;
|
||||
|
||||
let provider = new TestProvider([result]);
|
||||
let provider = new UrlbarTestUtils.TestProvider({ results: [result] });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
async function clean() {
|
||||
UrlbarProvidersManager.unregisterProvider(provider);
|
||||
|
@ -110,30 +112,3 @@ add_task(async function suggestedIndex_append() {
|
|||
await clean();
|
||||
await UrlbarTestUtils.promisePopupClose(window);
|
||||
});
|
||||
|
||||
/**
|
||||
* A test provider.
|
||||
*/
|
||||
class TestProvider extends UrlbarProvider {
|
||||
constructor(matches) {
|
||||
super();
|
||||
this._matches = matches;
|
||||
}
|
||||
get name() {
|
||||
return "SuggestedIndexTestProvider";
|
||||
}
|
||||
get type() {
|
||||
return UrlbarUtils.PROVIDER_TYPE.PROFILE;
|
||||
}
|
||||
isActive(context) {
|
||||
return true;
|
||||
}
|
||||
async startQuery(context, addCallback) {
|
||||
this._context = context;
|
||||
for (const match of this._matches) {
|
||||
addCallback(this, match);
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
|
|
@ -107,24 +107,7 @@ function promiseControllerNotification(
|
|||
/**
|
||||
* A basic test provider, returning all the provided matches.
|
||||
*/
|
||||
class TestProvider extends UrlbarProvider {
|
||||
constructor(
|
||||
matches,
|
||||
cancelCallback,
|
||||
type = UrlbarUtils.PROVIDER_TYPE.PROFILE
|
||||
) {
|
||||
super();
|
||||
this._name = "TestProvider" + Math.floor(Math.random() * 100000);
|
||||
this._cancelCallback = cancelCallback;
|
||||
this._matches = matches;
|
||||
this._type = type;
|
||||
}
|
||||
get name() {
|
||||
return this._name;
|
||||
}
|
||||
get type() {
|
||||
return this._type;
|
||||
}
|
||||
class TestProvider extends UrlbarTestUtils.TestProvider {
|
||||
isActive(context) {
|
||||
Assert.ok(context, "context is passed-in");
|
||||
return true;
|
||||
|
@ -137,8 +120,8 @@ class TestProvider extends UrlbarProvider {
|
|||
Assert.ok(context, "context is passed-in");
|
||||
Assert.equal(typeof add, "function", "add is a callback");
|
||||
this._context = context;
|
||||
for (const match of this._matches) {
|
||||
add(this, match);
|
||||
for (const result of this._results) {
|
||||
add(this, result);
|
||||
}
|
||||
}
|
||||
cancelQuery(context) {
|
||||
|
@ -146,25 +129,24 @@ class TestProvider extends UrlbarProvider {
|
|||
if (this._context) {
|
||||
Assert.equal(this._context, context, "cancelQuery: context is the same");
|
||||
}
|
||||
if (this._cancelCallback) {
|
||||
this._cancelCallback();
|
||||
if (this._onCancel) {
|
||||
this._onCancel();
|
||||
}
|
||||
}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to clear the existing providers and register a basic provider
|
||||
* that returns only the results given.
|
||||
*
|
||||
* @param {array} matches The matches for the provider to return.
|
||||
* @param {function} [cancelCallback] Optional, called when the query provider
|
||||
* receives a cancel instruction.
|
||||
* @param {array} results The results for the provider to return.
|
||||
* @param {function} [onCancel] Optional, called when the query provider
|
||||
* receives a cancel instruction.
|
||||
* @param {UrlbarUtils.PROVIDER_TYPE} type The provider type.
|
||||
* @returns {string} name of the registered provider
|
||||
*/
|
||||
function registerBasicTestProvider(matches = [], cancelCallback, type) {
|
||||
let provider = new TestProvider(matches, cancelCallback, type);
|
||||
function registerBasicTestProvider(results = [], onCancel, type) {
|
||||
let provider = new TestProvider({ results, onCancel, type });
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
return provider.name;
|
||||
}
|
||||
|
|
|
@ -24,20 +24,7 @@ let sixthHistogram;
|
|||
/**
|
||||
* A delayed test provider, allowing the query to be delayed for an amount of time.
|
||||
*/
|
||||
class DelayedProvider extends UrlbarProvider {
|
||||
constructor() {
|
||||
super();
|
||||
this._name = "TestProvider" + Math.floor(Math.random() * 100000);
|
||||
}
|
||||
get name() {
|
||||
return this._name;
|
||||
}
|
||||
get type() {
|
||||
return UrlbarUtils.PROVIDER_TYPE.PROFILE;
|
||||
}
|
||||
isActive(context) {
|
||||
return true;
|
||||
}
|
||||
class DelayedProvider extends TestProvider {
|
||||
async startQuery(context, add) {
|
||||
Assert.ok(context, "context is passed-in");
|
||||
Assert.equal(typeof add, "function", "add is a callback");
|
||||
|
@ -46,9 +33,6 @@ class DelayedProvider extends UrlbarProvider {
|
|||
this._resultsAdded = resolve;
|
||||
});
|
||||
}
|
||||
cancelQuery(context) {
|
||||
// Nothing.
|
||||
}
|
||||
async addResults(matches, finish = true) {
|
||||
// startQuery may have not been invoked yet, so wait for it
|
||||
await TestUtils.waitForCondition(
|
||||
|
@ -63,7 +47,6 @@ class DelayedProvider extends UrlbarProvider {
|
|||
this._resultsAdded();
|
||||
}
|
||||
}
|
||||
pickResult(result) {}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -94,7 +77,10 @@ add_task(async function test_n_autocomplete_cancel() {
|
|||
sixthHistogram.clear();
|
||||
|
||||
let providerCanceledDeferred = PromiseUtils.defer();
|
||||
let provider = new TestProvider([], providerCanceledDeferred.resolve);
|
||||
let provider = new TestProvider({
|
||||
results: [],
|
||||
onCancel: providerCanceledDeferred.resolve,
|
||||
});
|
||||
UrlbarProvidersManager.registerProvider(provider);
|
||||
const context = createContext(TEST_URL, { providers: [provider.name] });
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче