diff -r 000000000000 -r 6474c204b198 dom/base/nsWindowRoot.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/base/nsWindowRoot.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 3; 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 nsWindowRoot_h__ +#define nsWindowRoot_h__ + +class nsPIDOMWindow; +class nsIDOMEventListener; +class nsIDOMEvent; + +namespace mozilla { +class EventChainPostVisitor; +class EventChainPreVisitor; +} // namespace mozilla + +#include "mozilla/Attributes.h" +#include "mozilla/EventListenerManager.h" +#include "nsIDOMEventTarget.h" +#include "nsPIWindowRoot.h" +#include "nsCycleCollectionParticipant.h" +#include "nsAutoPtr.h" + +class nsWindowRoot : public nsPIWindowRoot +{ +public: + nsWindowRoot(nsPIDOMWindow* aWindow); + virtual ~nsWindowRoot(); + + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_NSIDOMEVENTTARGET + + virtual mozilla::EventListenerManager* + GetExistingListenerManager() const MOZ_OVERRIDE; + virtual mozilla::EventListenerManager* + GetOrCreateListenerManager() MOZ_OVERRIDE; + + using mozilla::dom::EventTarget::RemoveEventListener; + virtual void AddEventListener(const nsAString& aType, + mozilla::dom::EventListener* aListener, + bool aUseCapture, + const mozilla::dom::Nullable& aWantsUntrusted, + mozilla::ErrorResult& aRv) MOZ_OVERRIDE; + + // nsPIWindowRoot + + virtual nsPIDOMWindow* GetWindow() MOZ_OVERRIDE; + + virtual nsresult GetControllers(nsIControllers** aResult) MOZ_OVERRIDE; + virtual nsresult GetControllerForCommand(const char * aCommand, + nsIController** _retval) MOZ_OVERRIDE; + + virtual nsIDOMNode* GetPopupNode() MOZ_OVERRIDE; + virtual void SetPopupNode(nsIDOMNode* aNode) MOZ_OVERRIDE; + + virtual void SetParentTarget(mozilla::dom::EventTarget* aTarget) MOZ_OVERRIDE + { + mParent = aTarget; + } + virtual mozilla::dom::EventTarget* GetParentTarget() MOZ_OVERRIDE { return mParent; } + virtual nsIDOMWindow* GetOwnerGlobal() MOZ_OVERRIDE; + + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsWindowRoot, + nsIDOMEventTarget) + +protected: + // Members + nsCOMPtr mWindow; + // We own the manager, which owns event listeners attached to us. + nsRefPtr mListenerManager; // [Strong] + nsCOMPtr mPopupNode; // [OWNER] + + nsCOMPtr mParent; +}; + +extern already_AddRefed +NS_NewWindowRoot(nsPIDOMWindow* aWindow); + +#endif