Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№108-09-2006 17:09:14

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Где взять описание nsIFormHistory2 ?

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

Отредактировано O.Nick (08-09-2006 17:10:30)

Отсутствует

 

№208-09-2006 18:13:54

INFOMAN
Телепаты в отпуске
 
Группа: Extensions
Откуда: Кишинев
Зарегистрирован: 31-12-2005
Сообщений: 1099
Веб-сайт

Re: Где взять описание nsIFormHistory2 ?

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


Закрой кран
Включи свет ©
Fire! Kill IE is your desire | NULL | NULL

Отсутствует

 

№309-09-2006 03:26:58

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: Где взять описание nsIFormHistory2 ?

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.

Отсутствует

 

№412-09-2006 21:24:44

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Re: Где взять описание nsIFormHistory2 ?

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)

Отсутствует

 

№512-09-2006 22:40:37

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: Где взять описание nsIFormHistory2 ?

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.

Отсутствует

 

№613-09-2006 10:41:45

O.Nick
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 19-05-2005
Сообщений: 106
Веб-сайт

Re: Где взять описание nsIFormHistory2 ?

По приведенной ссылке еще написано, что к новому интерфейсу были адаптированы 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, большое спасибо за участие!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]