В Firefox2 начали использовать nsIFormHistory2 вместо старого nsIFormHistory. Не могу найти описание методов и полей этого интерфейса. Вначале предположил, что он поддерживает все методы и одно поле старого интерфейса, но потом оказалось, что это не совсем так.
Здесь вот http://www.xulplanet.com/references/xpc … story.html написано про поле rowCount старого интерфейса, у меня расширение перестало работать из-за того, что в nsIFormHistory2 его уже нет.
Может кто-нибудь что-нибудь подсказать?

Копай исходники

O.Nick
См. https://bugzilla.mozilla.org/show_bug.cgi?id=325257#c7 и комментарии ниже.

Unghost, по приведенной ссылке написано, что все ограничилось простым переименовыванием nsIFormHistory в nsIFormHistory2, но это не так. Выкачал исходники firefox-1.5.0.6 и firefox-2.0b2, во второй бете в файле nsFormHistory.cpp нет функции из firefox-1.5.0.6:

Выделить код

Код:

nsFormHistory::GetRowCount(PRUint32 *aRowCount)
{
  nsresult rv = OpenDatabase(); // lazily ensure that the database is open
  NS_ENSURE_SUCCESS(rv, rv);

  mdb_err err = mTable->GetCount(mEnv, aRowCount);
  NS_ENSURE_TRUE(!err, NS_ERROR_FAILURE);
  
  return NS_OK;
}

Я подозреваю, что из-за этого нет поля rowCount, описанного в интерфейсе nsIFormHistory на XULPlanet:
http://www.xulplanet.com/references/xpcomref/ifaces/nsIFormHistory.html

Кроме этого, из нового интерфейса исчезли методы
GetEntryAt(PRUint32 aIndex, nsAString &aName, nsAString &aValue)
GetNameAt(PRUint32 aIndex, nsAString &aName)
GetValueAt(PRUint32 aIndex, nsAString &aValue)
RemoveEntryAt(PRUint32 index)

Появилось поле HasEntries и заготовка метода:
nsFormHistory::RemoveEntry(const nsAString &aName, const nsAString &aValue)
{
  return NS_ERROR_NOT_IMPLEMENTED;
}

Остались неизменны:
AddEntry(const nsAString &aName, const nsAString &aValue)
EntryExists(const nsAString &aName, const nsAString &aValue, PRBool *_retval)
NameExists(const nsAString &aName, PRBool *_retval)
RemoveEntriesForName(const nsAString &aName)
RemoveAllEntries()

Попробую обойтись EntryExists ...
Где будет документация по новому интерфейсу?!!

O.Nick
По приведенной ссылке еще написано, что к новому интерфейсу были адаптированы Googlebar Lite и FireFTP.
Можно поковырять их и посмотреть как у них сделано, либо спросить у авторов расширений (они обычно довольно дружелюбны).

Добавлено Втр 12 Сен 2006 22:42:50 :
O.Nick

Где будет документация по новому интерфейсу?!!

Есть еще http://www.xulplanet.com/forum/
Там спрашивали?

По приведенной ссылке еще написано, что к новому интерфейсу были адаптированы Googlebar Lite  и FireFTP

"Адаптация" заключается в замене

Выделить код

Код:

var FORM_HISTORY =
Components.classes['@mozilla.org/satchel/form-history;1'].getService(Components.interfaces.nsIFormHistory);

на

Выделить код

Код:

var FORM_HISTORY =
Components.classes['@mozilla.org/satchel/form-history;1'].getService(Components.interfaces.nsIFormHistory2
|| Components.interfaces.nsIFormHistory);

Мне бы это не помогло.
Нашел у себя непаханное поле для оптимизации - перестал использовать поле rowCount, начал юзать функцию entryExists - все заработало. INFOMAN, Unghost, большое спасибо за участие!