diff options
Diffstat (limited to 'dom/xul/templates/nsXULContentUtils.h')
-rw-r--r-- | dom/xul/templates/nsXULContentUtils.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/dom/xul/templates/nsXULContentUtils.h b/dom/xul/templates/nsXULContentUtils.h new file mode 100644 index 000000000..c106fd91e --- /dev/null +++ b/dom/xul/templates/nsXULContentUtils.h @@ -0,0 +1,149 @@ +/* -*- 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. + + */ + +#ifndef nsXULContentUtils_h__ +#define nsXULContentUtils_h__ + +#include "nsISupports.h" + +class nsIAtom; +class nsIContent; +class nsIDocument; +class nsIRDFNode; +class nsIRDFResource; +class nsIRDFLiteral; +class nsIRDFService; +class nsIDateTimeFormat; +class nsICollation; + +// errors to pass to LogTemplateError +#define ERROR_TEMPLATE_INVALID_QUERYPROCESSOR \ + "querytype attribute doesn't specify a valid query processor" +#define ERROR_TEMPLATE_INVALID_QUERYSET \ + "unexpected <queryset> element" +#define ERROR_TEMPLATE_NO_MEMBERVAR \ + "no member variable found. Action body should have an element with uri attribute" +#define ERROR_TEMPLATE_WHERE_NO_SUBJECT \ + "<where> element is missing a subject attribute" +#define ERROR_TEMPLATE_WHERE_NO_RELATION \ + "<where> element is missing a rel attribute" +#define ERROR_TEMPLATE_WHERE_NO_VALUE \ + "<where> element is missing a value attribute" +#define ERROR_TEMPLATE_WHERE_NO_VAR \ + "<where> element must have at least one variable as a subject or value" +#define ERROR_TEMPLATE_BINDING_BAD_SUBJECT \ + "<binding> requires a variable for its subject attribute" +#define ERROR_TEMPLATE_BINDING_BAD_PREDICATE \ + "<binding> element is missing a predicate attribute" +#define ERROR_TEMPLATE_BINDING_BAD_OBJECT \ + "<binding> requires a variable for its object attribute" +#define ERROR_TEMPLATE_CONTENT_NOT_FIRST \ + "expected <content> to be first" +#define ERROR_TEMPLATE_MEMBER_NOCONTAINERVAR \ + "<member> requires a variable for its container attribute" +#define ERROR_TEMPLATE_MEMBER_NOCHILDVAR \ + "<member> requires a variable for its child attribute" +#define ERROR_TEMPLATE_TRIPLE_NO_VAR \ + "<triple> should have at least one variable as a subject or object" +#define ERROR_TEMPLATE_TRIPLE_BAD_SUBJECT \ + "<triple> requires a variable for its subject attribute" +#define ERROR_TEMPLATE_TRIPLE_BAD_PREDICATE \ + "<triple> should have a non-variable value as a predicate" +#define ERROR_TEMPLATE_TRIPLE_BAD_OBJECT \ + "<triple> requires a variable for its object attribute" +#define ERROR_TEMPLATE_MEMBER_UNBOUND \ + "neither container or child variables of <member> has a value" +#define ERROR_TEMPLATE_TRIPLE_UNBOUND \ + "neither subject or object variables of <triple> has a value" +#define ERROR_TEMPLATE_BAD_XPATH \ + "XPath expression in query could not be parsed" +#define ERROR_TEMPLATE_BAD_ASSIGN_XPATH \ + "XPath expression in <assign> could not be parsed" +#define ERROR_TEMPLATE_BAD_BINDING_XPATH \ + "XPath expression in <binding> could not be parsed" +#define ERROR_TEMPLATE_STORAGE_BAD_URI \ + "only profile: or file URI are allowed" +#define ERROR_TEMPLATE_STORAGE_CANNOT_OPEN_DATABASE \ + "cannot open given database" +#define ERROR_TEMPLATE_STORAGE_BAD_QUERY \ + "syntax error in the SQL query" +#define ERROR_TEMPLATE_STORAGE_UNKNOWN_QUERY_PARAMETER \ + "the given named parameter is unknown in the SQL query" +#define ERROR_TEMPLATE_STORAGE_WRONG_TYPE_QUERY_PARAMETER \ + "the type of a query parameter is wrong" +#define ERROR_TEMPLATE_STORAGE_QUERY_PARAMETER_NOT_BOUND \ + "a query parameter cannot be bound to the SQL query" + +class nsXULContentUtils +{ +protected: + static nsIRDFService* gRDF; + static nsIDateTimeFormat* gFormat; + static nsICollation *gCollation; + + static bool gDisableXULCache; + + static int + DisableXULCacheChangedCallback(const char* aPrefName, void* aClosure); + +public: + static nsresult + Init(); + + static nsresult + Finish(); + + static nsresult + FindChildByTag(nsIContent *aElement, + int32_t aNameSpaceID, + nsIAtom* aTag, + nsIContent **aResult); + + static nsresult + FindChildByResource(nsIContent* aElement, + nsIRDFResource* aResource, + nsIContent** aResult); + + static nsresult + GetTextForNode(nsIRDFNode* aNode, nsAString& aResult); + + static nsresult + GetResource(int32_t aNameSpaceID, nsIAtom* aAttribute, nsIRDFResource** aResult); + + static nsresult + GetResource(int32_t aNameSpaceID, const nsAString& aAttribute, nsIRDFResource** aResult); + + static nsresult + SetCommandUpdater(nsIDocument* aDocument, nsIContent* aElement); + + /** + * Log a message to the error console + */ + static void + LogTemplateError(const char* aMsg); + + static nsIRDFService* + RDFService() + { + return gRDF; + } + + static nsICollation* + GetCollation(); + +#define XUL_RESOURCE(ident, uri) static nsIRDFResource* ident +#define XUL_LITERAL(ident, val) static nsIRDFLiteral* ident +#include "nsXULResourceList.h" +#undef XUL_RESOURCE +#undef XUL_LITERAL +}; + +#endif // nsXULContentUtils_h__ |