dom/xslt/xpath/XPathEvaluator.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #ifndef mozilla_dom_XPathEvaluator_h
     7 #define mozilla_dom_XPathEvaluator_h
     9 #include "nsIDOMXPathEvaluator.h"
    10 #include "nsIWeakReference.h"
    11 #include "nsAutoPtr.h"
    12 #include "nsString.h"
    13 #include "mozilla/Attributes.h"
    14 #include "mozilla/ErrorResult.h"
    15 #include "nsIDocument.h"
    17 class nsINode;
    18 class txResultRecycler;
    20 namespace mozilla {
    21 namespace dom {
    23 class GlobalObject;
    25 /**
    26  * A class for evaluating an XPath expression string
    27  */
    28 class XPathEvaluator MOZ_FINAL : public nsIDOMXPathEvaluator
    29 {
    30 public:
    31     XPathEvaluator(nsIDocument* aDocument = nullptr);
    33     NS_DECL_ISUPPORTS
    35     // nsIDOMXPathEvaluator interface
    36     NS_DECL_NSIDOMXPATHEVALUATOR
    38     // WebIDL API
    39     JSObject* WrapObject(JSContext* aCx);
    40     nsIDocument* GetParentObject()
    41     {
    42         nsCOMPtr<nsIDocument> doc = do_QueryReferent(mDocument);
    43         return doc;
    44     }
    45     static already_AddRefed<XPathEvaluator>
    46         Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
    47     already_AddRefed<nsIDOMXPathExpression>
    48         CreateExpression(const nsAString& aExpression,
    49                          nsIDOMXPathNSResolver* aResolver,
    50                          ErrorResult& rv);
    51     already_AddRefed<nsIDOMXPathNSResolver>
    52         CreateNSResolver(nsINode* aNodeResolver, ErrorResult& rv);
    53     already_AddRefed<nsISupports>
    54         Evaluate(const nsAString& aExpression, nsINode* aContextNode,
    55                  nsIDOMXPathNSResolver* aResolver, uint16_t aType,
    56                  nsISupports* aResult, ErrorResult& rv);
    57 private:
    58     nsWeakPtr mDocument;
    59     nsRefPtr<txResultRecycler> mRecycler;
    60 };
    62 inline nsISupports*
    63 ToSupports(XPathEvaluator* e)
    64 {
    65     return static_cast<nsIDOMXPathEvaluator*>(e);
    66 }
    68 /* d0a75e02-b5e7-11d5-a7f2-df109fb8a1fc */
    69 #define TRANSFORMIIX_XPATH_EVALUATOR_CID   \
    70 { 0xd0a75e02, 0xb5e7, 0x11d5, { 0xa7, 0xf2, 0xdf, 0x10, 0x9f, 0xb8, 0xa1, 0xfc } }
    72 } // namespace dom
    73 } // namespace mozilla
    75 #endif /* mozilla_dom_XPathEvaluator_h */

mercurial