mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 19:25:43 +00:00
3c230cf25e
Create a "commandset" custom element that performs the job of adding and removing command updaters that XULDocument use to do. Previously, the "commandupdater" attribute was allowed on any element, but in tree it is only every used on "commandset" elements. MozReview-Commit-ID: HUXMG9kx4ft
89 lines
2.2 KiB
C++
89 lines
2.2 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* 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/. */
|
|
|
|
|
|
/*
|
|
|
|
A package of routines shared by the XUL content code.
|
|
|
|
*/
|
|
|
|
#include "mozilla/ArrayUtils.h"
|
|
|
|
#include "nsCollationCID.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsIContent.h"
|
|
#include "nsICollation.h"
|
|
#include "nsIDocument.h"
|
|
#include "nsIDOMXULCommandDispatcher.h"
|
|
#include "nsIServiceManager.h"
|
|
#include "nsXULContentUtils.h"
|
|
#include "nsLayoutCID.h"
|
|
#include "nsString.h"
|
|
#include "nsGkAtoms.h"
|
|
#include "XULDocument.h"
|
|
|
|
using namespace mozilla;
|
|
using dom::XULDocument;
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
nsICollation *nsXULContentUtils::gCollation;
|
|
|
|
//------------------------------------------------------------------------
|
|
// Constructors n' stuff
|
|
//
|
|
|
|
nsresult
|
|
nsXULContentUtils::Finish()
|
|
{
|
|
NS_IF_RELEASE(gCollation);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
nsICollation*
|
|
nsXULContentUtils::GetCollation()
|
|
{
|
|
if (!gCollation) {
|
|
nsCOMPtr<nsICollationFactory> colFactory =
|
|
do_CreateInstance(NS_COLLATIONFACTORY_CONTRACTID);
|
|
if (colFactory) {
|
|
DebugOnly<nsresult> rv = colFactory->CreateCollation(&gCollation);
|
|
NS_ASSERTION(NS_SUCCEEDED(rv),
|
|
"couldn't create collation instance");
|
|
} else
|
|
NS_ERROR("couldn't create instance of collation factory");
|
|
}
|
|
|
|
return gCollation;
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
//
|
|
|
|
nsresult
|
|
nsXULContentUtils::FindChildByTag(nsIContent* aElement,
|
|
int32_t aNameSpaceID,
|
|
nsAtom* aTag,
|
|
Element** aResult)
|
|
{
|
|
for (nsIContent* child = aElement->GetFirstChild();
|
|
child;
|
|
child = child->GetNextSibling()) {
|
|
|
|
if (child->IsElement() &&
|
|
child->NodeInfo()->Equals(aTag, aNameSpaceID)) {
|
|
NS_ADDREF(*aResult = child->AsElement());
|
|
return NS_OK;
|
|
}
|
|
}
|
|
|
|
*aResult = nullptr;
|
|
return NS_RDF_NO_VALUE; // not found
|
|
}
|