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:
Drew Willcoxon 2020-01-30 18:08:51 +00:00
Родитель d15482b6d9
Коммит f381e0c275
8 изменённых файлов: 77 добавлений и 236 удалений

Просмотреть файл

@ -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] });