Получить все записи для данного имени в истории форм Firefox - PullRequest
0 голосов
/ 26 декабря 2011

Есть ли способ узнать все элементы данного имени в истории формы. В моем аддоне Firefox я добавляю некоторые элементы в историю форм под определенным именем, чтобы не сказать «search-description».

Теперь я хочу получить все элементы, которые я добавил под этим именем. Я вижу, что могу получить объект истории:

this.Ci = Components.interfaces;
this.Cc = Components.classes;
var historyObj = this.Cc["@mozilla.org/satchel/form-history;1"].getService(this.Ci.nsIFormHistory2 || this.Ci.nsIFormHistory);

Но интерфейсы nsIFormHistory или nsIFormHistory2 не имеют никакой функции, такой как:

getAllEntries(name)

Кто-нибудь может мне помочь в этом?

1 Ответ

0 голосов
/ 27 декабря 2011

Обычно для запроса используется свойство nsIFormHistory2.DBConnection, вы обращаетесь к таблице SQLite напрямую. Примерно так (не проверено):

var completionListener =
{
  handleCompletion: function(reason) {},
  handleError: function(error) {},
  handleResult: function(result)
  {
    var values = [];
    while (true)
    {
      var row = result.getNextRow();
      if (!row)
        break;
      values.push(row.getResultByName("value"));
    }
    alert("Autocomplete values: " + values);
  }
};
var query = "SELECT value " +
            "FROM moz_formhistory " +
            "WHERE fieldname='search-description'";
var statement = historyObj.DBConnection.createAsyncStatement(query);
historyObj.DBConnection.executeAsync([statement], 1, completionListener);

Обратите внимание, что здесь рекомендуется использовать асинхронный API, запрос к базе данных может занять некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...