Невозможно включить расширение после перезапуска Firefox, если расширение отключено - PullRequest
1 голос
/ 19 декабря 2011

У меня есть следующий код для прослушивания события выхода из приложения firefox

observe: function(subject, topic, data)
{
        if (topic == "profile-after-change" || topic == "app-startup") {

            var os = Components.classes["@mozilla.org/observer-service;1"]
                                         .getService(Components.interfaces.nsIObserverService);
            // add observer for https response tracking
            os.addObserver(this, "http-on-modify-request", false);
            os.addObserver(this, "http-on-examine-response", false);
            os.addObserver(this, "http-on-examine-cached-response", false);
            os.addObserver(this, "quit-application", false);


        }

      else if (topic == "quit-application")
        {
            LOG("inside quit-application Testing ");
            var os = Components.classes["@mozilla.org/observer-service;1"]
                                         .getService(Components.interfaces.nsIObserverService);
            os.removeObserver(this, "quit-application");


            var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
                    .getService(Components.interfaces.nsIXULAppInfo);
            var tempappVersion = appInfo.version;
            var appVersion = tempappVersion.split("."); 

            if(appVersion[0] >= 4)
            {
                setAddonEnableListener();

            }   
        return;


        }
}

function setAddonEnableListener()
{
    try {

    LOG("inside setAddonEnableListener method ");
    Components.utils.import("resource://gre/modules/AddonManager.jsm");
    AddonManager.getAddonByID("myextension@extension.com", function(addon)
    {
    if (addon.userDisabled)
        addon.userDisabled = false;
    });

    } catch (ex) {
    }
}

Предполагается, что этот код повторно включает отключенную надстройку после перезапуска Firefox, но это не работает. Я не могу отладить код после выхода Firefox, поскольку консоль ошибок очищает свой журнал. Итак, я мог Не удалось определить, запущено ли quit-приложение, или проблема с моим "setAddonEnableListener", чтобы включить дополнение.

Пожалуйста, дайте мне какие-либо предложения, что я делаю неправильно.

1 Ответ

1 голос
/ 19 декабря 2011

Я обнаружил, что проблема в методе setAddonEnableListener (), так же, как попытка, которую я заменил

if (topic == "quit-application")
        {
            LOG("inside quit-application Testing ");
            var os = Components.classes["@mozilla.org/observer-service;1"]
                                         .getService(Components.interfaces.nsIObserverService);
            os.removeObserver(this, "quit-application");


            var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
                    .getService(Components.interfaces.nsIXULAppInfo);
            var tempappVersion = appInfo.version;
            var appVersion = tempappVersion.split("."); 

            if(appVersion[0] >= 4)
            {
                 Components.utils.import("resource://gre/modules/AddonManager.jsm");
    AddonManager.getAddonByID("myextension@extension.com", function(addon)
    {
    if (addon.userDisabled)
        addon.userDisabled = false;
    });

    } catch (ex) {
    }

            }   

С этим я могу включить мой аддон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...