После обновления Firefox с версии 22 до версии 23.0.1 следующий код расширения (JS) перестал работать:

provider = Components.classes["@mozilla.org/geolocation;1"].getService(Components.interfaces.nsIDOMGeoGeolocation);

выдает ошибку:
Component returned failure code: 0x80570018 (NS_ERROR_XPC_BAD_IID) [nsIJSCID.getService]"  nsresult: "0x80570018 (NS_ERROR_XPC_BAD_IID)"  location: ...

Проверено на нескольких компьютерах. Сразу после обновления код перестает работать.

Есть идеи?

----
И еще один момент. В 23 версии все http запросы из расширения сопровождаются вот такой записью в логе:
Invalid chrome URI: /a

хотя запрос проходит нормально.

Тема перенесена из форума «Firefox» в форум «Разработка».

pssupport
Полагаю из-за Bug 850442 - Convert Geolocation to WebIDL
Также см. https://github.com/mozilla/r2d2b2g/pull/438

Спасибо большое!

banbot пишет

Также см. https://github.com/mozilla/r2d2b2g/pull/438

Это то, что нужно.

Если кто то столкнется, решение:
Разработчиками было принято решение сделать интерфейс nsIDOMGeoGeolocation недоступным для скриптов, поэтому с 23 версии обращаться из JS к нему нельзя. Взамен нужно использовать интерфейс nsISupports.

Вот такой код работает нормально на 23 версии и младше:

Выделить код

Код:

provider = Components.classes["@mozilla.org/geolocation;1"].getService(Components.interfaces.nsISupports);

Единственное, разработчикам не мешало бы это добавить в документацию:
https://developer.mozilla.org/ms/docs/Using_geolocation