xpfe/appshell/src/nsAppShellService.h
author Masayuki Nakano <masayuki@d-toybox.com>
Tue, 22 Oct 2013 22:27:34 +0900
changeset 166502 64a6e6020d05c4eab0d85926b8617e9b0dbf5c64
parent 133711 a77f4a65262762942dfb2607786d4b39f3bf0d08
child 207519 ad9adc4900df4d6d257cfc3118d9889138b5ca1d
permissions -rw-r--r--
Bug 602787 part.2 Don't implement nsIWidgetListener in its header file r=roc

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef __nsAppShellService_h
#define __nsAppShellService_h

#include "nsIAppShellService.h"
#include "nsIObserver.h"

//Interfaces Needed
#include "nsWebShellWindow.h"
#include "nsStringFwd.h"
#include "nsAutoPtr.h"
#include "mozilla/Attributes.h"

// {0099907D-123C-4853-A46A-43098B5FB68C}
#define NS_APPSHELLSERVICE_CID \
{ 0x99907d, 0x123c, 0x4853, { 0xa4, 0x6a, 0x43, 0x9, 0x8b, 0x5f, 0xb6, 0x8c } }

class nsAppShellService MOZ_FINAL : public nsIAppShellService,
                                    public nsIObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIAPPSHELLSERVICE
  NS_DECL_NSIOBSERVER

  nsAppShellService();

protected:
  ~nsAppShellService();

  nsresult CreateHiddenWindowHelper(bool aIsPrivate);
  void EnsurePrivateHiddenWindow();

  nsresult JustCreateTopWindow(nsIXULWindow *aParent,
                               nsIURI *aUrl, 
                               uint32_t aChromeMask,
                               int32_t aInitialWidth, int32_t aInitialHeight,
                               bool aIsHiddenWindow,
                               nsWebShellWindow **aResult);
  uint32_t CalculateWindowZLevel(nsIXULWindow *aParent, uint32_t aChromeMask);

  nsRefPtr<nsWebShellWindow>  mHiddenWindow;
  nsRefPtr<nsWebShellWindow>  mHiddenPrivateWindow;
  bool                        mXPCOMWillShutDown;
  bool                        mXPCOMShuttingDown;
  uint16_t                    mModalWindowCount;
  bool                        mApplicationProvidedHiddenWindow;
};

#endif