jpm run показывает демо ActionButton, но jpm xpi не
Я скопировал самое первое демо, добавил свои собственные значки, больше ничего. Протестировал это используя jpm run
, работает отлично, кнопки появляются на панели навигации, могут быть настроены и перемещаться, нажатие кнопки открывает вкладку к mozilla.org, как и ожидалось, отлично.
jpm xpi
, установка генерирует два сообщения об ошибках, так же, как упомянуто в аналогичном вопросе, но в отличие от этого вопроса, значок не будет отображаться где-либо в интерфейсе.
Однако, если я выйду, перезапустите браузер с -jsconsole
Я не получаю это сообщение об ошибке, но все равно не получаю нигде кнопки.
Это сообщение об ошибке сбивает с толку, поскольку все, что оно упоминает, является низкоуровневым и не имеет никакого отношения к какому-либо очень основному высокоуровневому коду, который я ввел.
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/< :: line 667" data: no]
PopupNotifications_refreshPanel/<()
PopupNotifications.jsm:667
forEach()
self-hosted
PopupNotifications_refreshPanel()
PopupNotifications.jsm:616
PopupNotifications_showPanel()
PopupNotifications.jsm:728
PopupNotifications_update()
PopupNotifications.jsm:844
PopupNotifications_show()
PopupNotifications.jsm:394
gXPInstallObserver.showInstallConfirmation()
browser-addons.js:206
gXPInstallObserver.observe/showNotification()
browser-addons.js:383
gXPInstallObserver.observe()
browser-addons.js:399
notifyObservers()
amWebInstallListener.js:51
Installer.prototype.checkAllDownloaded()
amWebInstallListener.js:171
Installer()
amWebInstallListener.js:81
extWebInstallListener.prototype.onWebInstallRequested()
amWebInstallListener.js:335
buildNextInstall()
extensions.js:1276
gViewController.commands.cmd_installFromFile.doCommand/buildNextInstall/<()
extensions.js:1286
safeCall()
AddonManager.jsm:179
AddonManagerInternal.getInstallForFile/<.nextObject/<()
AddonManager.jsm:1955
this.XPIProvider.getInstallForFile/<()
XPIProvider.jsm:3872
makeSafe/<()
XPIProvider.jsm:1982
AddonInstall.prototype.initLocalInstall/</<()
XPIProvider.jsm:5306
makeSafe/<()
XPIProviderUtils.js:168
completeAddon()
XPIProviderUtils.js:157
getAddon()
AddonRepository.jsm:583
this.AddonRepository.getCachedAddonByID<()
AddonRepository.jsm:595
next()
self-hosted
TaskImpl_run()
Task.jsm:319
TaskImpl()
Task.jsm:280
createAsyncFunction/asyncFunction()
Task.jsm:254
getRepositoryAddon()
XPIProviderUtils.js:159
this.XPIDatabase.getAddon/<()
XPIProviderUtils.js:1119
Handler.prototype.process()
Promise-backend.js:937
this.PromiseWalker.walkerLoop()
Promise-backend.js:816
bound ()
self-hosted
bound bound ()
self-hosted
(unknown)
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/< :: line 667" data: no]
PopupNotifications_refreshPanel/<()
PopupNotifications.jsm:667
forEach()
self-hosted
PopupNotifications_refreshPanel()
PopupNotifications.jsm:616
PopupNotifications_showPanel()
PopupNotifications.jsm:728
PopupNotifications_update()
PopupNotifications.jsm:844
PopupNotifications_show()
PopupNotifications.jsm:394
gXPInstallObserver.observe()
browser-addons.js:432
notifyObservers()
amWebInstallListener.js:51
Installer.prototype.checkAllInstalled()
amWebInstallListener.js:230
Installer.prototype.onInstallEnded()
amWebInstallListener.js:270
AddonManagerInternal.callInstallListeners()
AddonManager.jsm:1716
this.AddonManagerPrivate.callInstallListeners()
AddonManager.jsm:2976
AddonInstall.prototype.startInstall/<()
XPIProvider.jsm:6212
InterpretGeneratorResume()
self-hosted
next()
self-hosted
TaskImpl_run()
Task.jsm:319
bound TaskImpl_run()
self-hosted
Handler.prototype.process()
Promise-backend.js:937
this.PromiseWalker.walkerLoop()
Promise-backend.js:816
bound ()
self-hosted
bound bound ()
self-hosted
(unknown)
Есть упоминание в about:config
@ browser.uiCustomization.state
(или в user.pref
) о том, где должен находиться значок, но на самом деле это НЕ ТАМ. Заметка \"action-button--GUID-mozilla-link\"
ниже. Эта ошибка происходит в 49.0a1 ночью, но не в 50.0a1 ночью, так что, возможно, она была исправлена?
user_pref("browser.uiCustomization.state", "{\"placements\":{\"PanelUI-contents\":[\"edit-controls\",\"zoom-controls\",\"new-window-button\",\"e10s-button\",\"privatebrowsing-button\",\"save-page-button\",\"print-button\",\"history-panelmenu\",\"fullscreen-button\",\"find-button\",\"preferences-button\",\"add-ons-button\",\"developer-button\",\"sync-button\",\"bookmarks-menu-button\",\"home-button\",\"loop-button\",\"pocket-button\"],\"addon-bar\":[\"addonbar-closebutton\",\"status-bar\"],\"PersonalToolbar\":[\"personal-bookmarks\"],\"nav-bar\":[\"urlbar-container\",\"search-container\",\"downloads-button\",\"action-button--GUID-mozilla-link\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"toolbar-menubar\":[\"menubar-items\"]},\"seen\":[\"loop-button\",\"pocket-button\",\"developer-button\",\"action-button--GUID-mozilla-link\"],\"dirtyAreaCache\":[\"nav-bar\",\"PanelUI-contents\",\"addon-bar\",\"PersonalToolbar\",\"TabsToolbar\",\"toolbar-menubar\"],\"currentVersion\":6,\"newElementCount\":173}");
После сравнения 49.0a1 с 50.0a1 и обеспечения того, чтобы все значки кнопок были в одном и том же порядке, единственное отличие состоит в том, что 49.0a1 имеет newElementCount = 173
и 50.0a1 имеет newElementCount = 0
,
После настройки -> сброс в 49.0a1 кнопка "Демонстрационное действие" несколько "появляется" в "Дополнительные инструменты и функции", но только в виде текстовой метки. Значок не виден. Невозможно перемещать кнопку "должным образом", так как нажатие и перетаскивание / наведение / указатель позиции, в которой она будет находиться, является неправильным, а когда ее уронили, она приземлилась "никуда", исчезла из пользовательского интерфейса, однако пользовательские настройки остаются в силе.