2007-03-22 10:30:00 -07:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2012-05-21 04:12:37 -07:00
|
|
|
/* 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/. */
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
This is the focus manager for XUL documents.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef nsXULCommandDispatcher_h__
|
|
|
|
#define nsXULCommandDispatcher_h__
|
|
|
|
|
|
|
|
#include "nsCOMPtr.h"
|
|
|
|
#include "nsIDOMXULCommandDispatcher.h"
|
|
|
|
#include "nsWeakReference.h"
|
|
|
|
#include "nsIDOMNode.h"
|
|
|
|
#include "nsString.h"
|
2007-03-24 03:53:07 -07:00
|
|
|
#include "nsCycleCollectionParticipant.h"
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
class nsIDOMElement;
|
2010-02-20 08:07:03 -08:00
|
|
|
class nsPIWindowRoot;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
class nsXULCommandDispatcher : public nsIDOMXULCommandDispatcher,
|
|
|
|
public nsSupportsWeakReference
|
|
|
|
{
|
2007-03-24 03:53:07 -07:00
|
|
|
public:
|
2014-09-01 17:49:25 -07:00
|
|
|
explicit nsXULCommandDispatcher(nsIDocument* aDocument);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
// nsISupports
|
2007-03-24 03:53:07 -07:00
|
|
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXULCommandDispatcher,
|
|
|
|
nsIDOMXULCommandDispatcher)
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
// nsIDOMXULCommandDispatcher interface
|
|
|
|
NS_DECL_NSIDOMXULCOMMANDDISPATCHER
|
|
|
|
|
2007-03-24 03:53:07 -07:00
|
|
|
void Disconnect();
|
2007-03-22 10:30:00 -07:00
|
|
|
protected:
|
2014-06-24 19:09:15 -07:00
|
|
|
virtual ~nsXULCommandDispatcher();
|
|
|
|
|
2010-02-20 08:07:03 -08:00
|
|
|
already_AddRefed<nsPIWindowRoot> GetWindowRoot();
|
2007-03-24 03:53:07 -07:00
|
|
|
|
2016-01-30 09:05:36 -08:00
|
|
|
nsIContent* GetRootFocusedContentAndWindow(nsPIDOMWindowOuter** aWindow);
|
Bug 178324, refactor focus by moving all focus handling into one place and simplifying it, add many tests, fixes many other bugs too numerous to mention in this small checkin comment, r=josh,smichaud,ere,dbaron,marco,neil,gavin,smaug,sr=smaug (CLOSED TREE)
2009-06-10 11:00:39 -07:00
|
|
|
|
2007-03-24 03:53:07 -07:00
|
|
|
nsCOMPtr<nsIDocument> mDocument;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
class Updater {
|
|
|
|
public:
|
|
|
|
Updater(nsIDOMElement* aElement,
|
|
|
|
const nsAString& aEvents,
|
|
|
|
const nsAString& aTargets)
|
|
|
|
: mElement(aElement),
|
|
|
|
mEvents(aEvents),
|
|
|
|
mTargets(aTargets),
|
2012-07-30 07:20:58 -07:00
|
|
|
mNext(nullptr)
|
2007-03-22 10:30:00 -07:00
|
|
|
{}
|
|
|
|
|
2007-03-24 03:53:07 -07:00
|
|
|
nsCOMPtr<nsIDOMElement> mElement;
|
|
|
|
nsString mEvents;
|
|
|
|
nsString mTargets;
|
|
|
|
Updater* mNext;
|
2007-03-22 10:30:00 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
Updater* mUpdaters;
|
|
|
|
|
2011-09-28 23:19:26 -07:00
|
|
|
bool Matches(const nsString& aList,
|
2007-03-22 10:30:00 -07:00
|
|
|
const nsAString& aElement);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // nsXULCommandDispatcher_h__
|