diff options
author | Christian Persch <chpe@src.gnome.org> | 2007-09-28 23:17:21 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2007-09-28 23:17:21 +0800 |
commit | 9ed7fe2fa947377e603168dd4e4fe02f87daa3c4 (patch) | |
tree | 6974b3d3ecc57b1a1642d47716f0e34cc14d5333 /embed | |
parent | 0ab8d7a8cc5ba8bf9ccf805a0a16111049d79c5b (diff) | |
download | gsoc2013-epiphany-9ed7fe2fa947377e603168dd4e4fe02f87daa3c4.tar.gz gsoc2013-epiphany-9ed7fe2fa947377e603168dd4e4fe02f87daa3c4.tar.zst gsoc2013-epiphany-9ed7fe2fa947377e603168dd4e4fe02f87daa3c4.zip |
Add app lifecycle helper class.
svn path=/trunk/; revision=7503
Diffstat (limited to 'embed')
-rw-r--r-- | embed/xulrunner/utils/Makefile.am | 2 | ||||
-rw-r--r-- | embed/xulrunner/utils/ggeAutoSurvivalArea.cpp | 42 | ||||
-rw-r--r-- | embed/xulrunner/utils/ggeAutoSurvivalArea.h | 44 |
3 files changed, 88 insertions, 0 deletions
diff --git a/embed/xulrunner/utils/Makefile.am b/embed/xulrunner/utils/Makefile.am index ef773f3fb..781735962 100644 --- a/embed/xulrunner/utils/Makefile.am +++ b/embed/xulrunner/utils/Makefile.am @@ -13,6 +13,8 @@ libephyxulrunnerutils_la_SOURCES = \ EphyUtils.h \ GeckoUtils.cpp \ GeckoUtils.h \ + ggeAutoSurvivalArea.cpp \ + ggeAutoSurvivalArea.h \ $(NULL) libephyxulrunnerutils_la_CPPFLAGS = \ diff --git a/embed/xulrunner/utils/ggeAutoSurvivalArea.cpp b/embed/xulrunner/utils/ggeAutoSurvivalArea.cpp new file mode 100644 index 000000000..0344edabe --- /dev/null +++ b/embed/xulrunner/utils/ggeAutoSurvivalArea.cpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2007 Christian Persch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include <xpcom-config.h> +#include <config.h> + +#include <nsIAppStartup.h> +#include <nsIServiceManager.h> +#include <nsServiceManagerUtils.h> +#include <nsXPFEComponentsCID.h> + +#include "ggeAutoSurvivalArea.h" + +ggeAutoSurvivalArea::ggeAutoSurvivalArea() + : mAppStartup (do_GetService (NS_APPSTARTUP_CONTRACTID)) +{ + if (mAppStartup) { + mAppStartup->EnterLastWindowClosingSurvivalArea (); + } +} + +ggeAutoSurvivalArea::~ggeAutoSurvivalArea() +{ + if (mAppStartup) { + mAppStartup->ExitLastWindowClosingSurvivalArea (); + } +} diff --git a/embed/xulrunner/utils/ggeAutoSurvivalArea.h b/embed/xulrunner/utils/ggeAutoSurvivalArea.h new file mode 100644 index 000000000..10b9a07e5 --- /dev/null +++ b/embed/xulrunner/utils/ggeAutoSurvivalArea.h @@ -0,0 +1,44 @@ +/* + * Copyright © 2007 Christian Persch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef GGE_AUTOSURVIVALAREA_H +#define GGE_AUTOSURVIVALAREA_H + +#include <nsCOMPtr.h> + +class nsIAppStartup; + +/** + * ggeAutoSurvivalArea: + * + * A helper class that has to be used whenever a window being open + * should prevent the application from shutting down. (Only needed for + * non-DOM windows.) + * Use on the stack or on the heap. + */ + +class ggeAutoSurvivalArea { + public: + ggeAutoSurvivalArea (); + ~ggeAutoSurvivalArea (); + + private: + nsCOMPtr<nsIAppStartup> mAppStartup; +}; + +#endif /* !GGE_AUTOSURVIVALAREA_H */ |