Страницы: 1
В Firefox2 начали использовать nsIFormHistory2 вместо старого nsIFormHistory. Не могу найти описание методов и полей этого интерфейса. Вначале предположил, что он поддерживает все методы и одно поле старого интерфейса, но потом оказалось, что это не совсем так.
Здесь вот http://www.xulplanet.com/references/xpc … story.html написано про поле rowCount старого интерфейса, у меня расширение перестало работать из-за того, что в nsIFormHistory2 его уже нет.
Может кто-нибудь что-нибудь подсказать?
Отредактировано O.Nick (08-09-2006 17:10:30)
Отсутствует
Копай исходники
Закрой кран
Включи свет ©
Fire! Kill IE is your desire | NULL | NULL
Отсутствует
O.Nick
См. https://bugzilla.mozilla.org/show_bug.cgi?id=325257#c7 и комментарии ниже.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
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 (12-09-2006 21:25:08)
Отсутствует
O.Nick
По приведенной ссылке еще написано, что к новому интерфейсу были адаптированы Googlebar Lite и FireFTP.
Можно поковырять их и посмотреть как у них сделано, либо спросить у авторов расширений (они обычно довольно дружелюбны).
Добавлено Втр 12 Сен 2006 22:42:50 :
O.Nick
Где будет документация по новому интерфейсу?!!
Есть еще http://www.xulplanet.com/forum/
Там спрашивали?
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
По приведенной ссылке еще написано, что к новому интерфейсу были адаптированы 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, большое спасибо за участие!
Отсутствует
Страницы: 1