Bug 1148220 - Marionette's in_app restart has to send 'quit-application-requested' observer notification. r=automatedtester

MozReview-Commit-ID: 3IAtFFeyJWa

--HG--
extra : rebase_source : 41889aa72afc1cfcb8c3702069a805637a1d96b3
This commit is contained in:
Henrik Skupin 2016-09-26 15:25:05 +02:00
Родитель 608368610f
Коммит 27d984735c
2 изменённых файлов: 15 добавлений и 12 удалений

Просмотреть файл

@ -1041,11 +1041,24 @@ class Marionette(object):
of the application. Possible values here correspond
to constants in nsIAppStartup: http://mzl.la/1X0JZsC.
"""
flags = set(["eForceQuit"])
flags = set([])
if shutdown_flags:
flags.add(shutdown_flags)
self._send_message("quitApplication", {"flags": list(flags)})
# Trigger a 'quit-application-requested' observer notification so that
# components can safely shutdown before quitting the application.
with self.using_context("chrome"):
canceled = self.execute_script("""
Components.utils.import("resource://gre/modules/Services.jsm");
let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].
createInstance(Components.interfaces.nsISupportsPRBool);
Services.obs.notifyObservers(cancelQuit, "quit-application-requested", null);
return cancelQuit.data;
""")
if canceled:
raise errors.MarionetteException("Something canceled the quit application request")
self._send_message("quitApplication", {"flags": list(flags)})
self.delete_session(in_app=True)
@do_process_check

Просмотреть файл

@ -71,16 +71,6 @@ class BaseFirefoxTestCase(unittest.TestCase, Puppeteer):
:param flags: Specific restart flags for Firefox
"""
# TODO: Bug 1148220 Marionette's in_app restart has to send 'quit-application-requested'
# observer notification before an in_app restart
with self.marionette.using_context('chrome'):
self.marionette.execute_script("""
Components.utils.import("resource://gre/modules/Services.jsm");
let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
.createInstance(Components.interfaces.nsISupportsPRBool);
Services.obs.notifyObservers(cancelQuit, "quit-application-requested", null);
""")
if kwargs.get('clean'):
self.marionette.restart(clean=True)
else: