2016-04-27 8 views
1

私はFirefox 38から46にアップグレードしましたが、このスクリプトはFirefoxをシャットダウンして再起動するはずですが、アップグレード後はシャットダウンするだけであるため、正しく動作しません。Javascript Firefox再起動

const nsIAppStartup = Components.interfaces.nsIAppStartup; 

// Notify all windows that an application quit has been requested. 
var os = Components.classes["@mozilla.org/observer-service;1"] 
    .getService(Components.interfaces.nsIObserverService); 
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"] 
    .createInstance(Components.interfaces.nsISupportsPRBool); 
os.notifyObservers(cancelQuit, "quit-application-requested", null); 

// Something aborted the quit process. 
if (cancelQuit.data) 
    return; 

// Notify all windows that an application quit has been granted. 
os.notifyObservers(null, "quit-application-granted", null); 

// Enumerate all windows and call shutdown handlers 
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] 
    .getService(Components.interfaces.nsIWindowMediator); 
var windows = wm.getEnumerator(null); 
while (windows.hasMoreElements()) { 
    var win = windows.getNext(); 
    if (("tryToClose" in win) && !win.tryToClose()) 
     return; 
} 
Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup) 
    .quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit); 

答えて

0

オブザーバーを通知する責任 quit-application-grantedの一部の使用を破ったのFirefox 45で導入されたバグ、(例えばアドオンまたは スクリプト)は、ブラウザがシャットダウンしようとしていることがありました。

48歳以上で修正する必要があります。認知シャットダウン パフォーマンスを向上させるために、前に私たちは窓を閉めた

を、私たち:修正で

チェンジ:詳細については、参照してください。あたりのほとんどのタブのセッションアクティビティの最後の〜2秒で、 が出なくなる可能性がある状態になりますウィンドウ。これは、セッション更新 メッセージリスナーを削除して、flushを解決したためです。 domwindowclosed通知がウィンドウに対して発生すると、約束します。

ウィンドウを非表示にすると、メッセージが正しく表示されるのを待つことができます。

多くはである何、私たちも、私たちがフラッシュした 後にウィンドウの状態を収集していなかったので、我々はは常には、ウィンドウごとにセッション状態の2秒程度(最悪 場合)行方不明になっています。このアドレスは です。

- Bug 1284687 - Hide windows on shutdown while persisting session instead of closing them