Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.

r=dietrich
This commit is contained in:
Marco Bonardo 2012-02-07 15:59:07 +01:00
Родитель 9aec0fff08
Коммит f5ceac8dc9
3 изменённых файлов: 68 добавлений и 2 удалений

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

@ -298,7 +298,7 @@ let PlacesDBUtils = {
let tasks = new Tasks(aTasks);
tasks.log("> Coherence check");
let stmts = this._getBoundCoherenceStatements();
let stmts = PlacesDBUtils._getBoundCoherenceStatements();
DBConn.executeAsync(stmts, stmts.length, {
handleError: PlacesDBUtils._handleError,
handleResult: function () {},
@ -1016,6 +1016,22 @@ let PlacesDBUtils = {
PlacesDBUtils._executeTasks(tasks);
},
/**
* Runs a list of tasks, notifying log messages to the callback.
*
* @param aTasks
* Array of tasks to be executed, in form of pointers to methods in
* this module.
* @param [optional] aCallback
* Callback to be invoked when done. It will receive an array of
* log messages. If not specified the log will be printed to the
* Error Console.
*/
runTasks: function PDBU_runTasks(aTasks, aCallback) {
let tasks = new Tasks(aTasks);
tasks.callback = aCallback;
PlacesDBUtils._executeTasks(tasks);
}
};
/**
@ -1030,7 +1046,10 @@ function Tasks(aTasks)
if (Array.isArray(aTasks)) {
this._list = aTasks.slice(0, aTasks.length);
}
else if (typeof(aTasks) == "object" && aTasks instanceof Tasks) {
// This supports passing in a Tasks-like object, with a "list" property,
// for compatibility reasons.
else if (typeof(aTasks) == "object" &&
(Tasks instanceof Tasks || "list" in aTasks)) {
this._list = aTasks.list;
this._log = aTasks.messages;
this.callback = aTasks.callback;

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

@ -0,0 +1,46 @@
/* 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/. */
/**
* Test preventive maintenance runTasks.
*/
// Include PlacesDBUtils module.
Components.utils.import("resource://gre/modules/PlacesDBUtils.jsm");
function run_test() {
do_test_pending();
PlacesDBUtils.runTasks([PlacesDBUtils.reindex], function(aLog) {
let sections = [];
let positives = [];
let negatives = [];
let infos = [];
aLog.forEach(function (aMsg) {
print (aMsg);
switch (aMsg.substr(0, 1)) {
case "+":
positives.push(aMsg);
break;
case "-":
negatives.push(aMsg);
break;
case ">":
sections.push(aMsg);
break;
default:
infos.push(aMsg);
}
});
print("Check that we have run all sections.");
do_check_eq(sections.length, 1);
print("Check that we have no negatives.");
do_check_false(!!negatives.length);
print("Check that we have positives.");
do_check_true(!!positives.length);
do_test_finished();
});
}

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

@ -112,6 +112,7 @@ skip-if = os == "android"
# Bug 676989: test hangs consistently on Android
skip-if = os == "android"
[test_preventive_maintenance_console.js]
[test_preventive_maintenance_runTasks.js]
[test_removeVisitsByTimeframe.js]
# Bug 676989: test hangs consistently on Android
skip-if = os == "android"