| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google, Inc. | 2 * Copyright (C) 2013 Google, Inc. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #include "core/xml/DocumentXPathEvaluator.h" | 26 #include "core/xml/DocumentXPathEvaluator.h" |
| 27 | 27 |
| 28 #include "bindings/core/v8/ExceptionState.h" | 28 #include "bindings/core/v8/ExceptionState.h" |
| 29 #include "core/xml/XPathExpression.h" | 29 #include "core/xml/XPathExpression.h" |
| 30 #include "core/xml/XPathResult.h" | 30 #include "core/xml/XPathResult.h" |
| 31 | 31 |
| 32 namespace blink { | 32 namespace blink { |
| 33 | 33 |
| 34 DocumentXPathEvaluator::DocumentXPathEvaluator() {} | 34 DocumentXPathEvaluator::DocumentXPathEvaluator(Document& document) |
| 35 : Supplement<Document>(document) {} |
| 35 | 36 |
| 36 DocumentXPathEvaluator& DocumentXPathEvaluator::from( | 37 DocumentXPathEvaluator& DocumentXPathEvaluator::from(Document& document) { |
| 37 Supplementable<Document>& document) { | |
| 38 DocumentXPathEvaluator* cache = static_cast<DocumentXPathEvaluator*>( | 38 DocumentXPathEvaluator* cache = static_cast<DocumentXPathEvaluator*>( |
| 39 Supplement<Document>::from(document, supplementName())); | 39 Supplement<Document>::from(document, supplementName())); |
| 40 if (!cache) { | 40 if (!cache) { |
| 41 cache = new DocumentXPathEvaluator; | 41 cache = new DocumentXPathEvaluator(document); |
| 42 Supplement<Document>::provideTo(document, supplementName(), cache); | 42 Supplement<Document>::provideTo(document, supplementName(), cache); |
| 43 } | 43 } |
| 44 return *cache; | 44 return *cache; |
| 45 } | 45 } |
| 46 | 46 |
| 47 XPathExpression* DocumentXPathEvaluator::createExpression( | 47 XPathExpression* DocumentXPathEvaluator::createExpression( |
| 48 Supplementable<Document>& document, | 48 Document& document, |
| 49 const String& expression, | 49 const String& expression, |
| 50 XPathNSResolver* resolver, | 50 XPathNSResolver* resolver, |
| 51 ExceptionState& exceptionState) { | 51 ExceptionState& exceptionState) { |
| 52 DocumentXPathEvaluator& suplement = from(document); | 52 DocumentXPathEvaluator& suplement = from(document); |
| 53 if (!suplement.m_xpathEvaluator) | 53 if (!suplement.m_xpathEvaluator) |
| 54 suplement.m_xpathEvaluator = XPathEvaluator::create(); | 54 suplement.m_xpathEvaluator = XPathEvaluator::create(); |
| 55 return suplement.m_xpathEvaluator->createExpression(expression, resolver, | 55 return suplement.m_xpathEvaluator->createExpression(expression, resolver, |
| 56 exceptionState); | 56 exceptionState); |
| 57 } | 57 } |
| 58 | 58 |
| 59 XPathNSResolver* DocumentXPathEvaluator::createNSResolver( | 59 XPathNSResolver* DocumentXPathEvaluator::createNSResolver(Document& document, |
| 60 Supplementable<Document>& document, | 60 Node* nodeResolver) { |
| 61 Node* nodeResolver) { | |
| 62 DocumentXPathEvaluator& suplement = from(document); | 61 DocumentXPathEvaluator& suplement = from(document); |
| 63 if (!suplement.m_xpathEvaluator) | 62 if (!suplement.m_xpathEvaluator) |
| 64 suplement.m_xpathEvaluator = XPathEvaluator::create(); | 63 suplement.m_xpathEvaluator = XPathEvaluator::create(); |
| 65 return suplement.m_xpathEvaluator->createNSResolver(nodeResolver); | 64 return suplement.m_xpathEvaluator->createNSResolver(nodeResolver); |
| 66 } | 65 } |
| 67 | 66 |
| 68 XPathResult* DocumentXPathEvaluator::evaluate( | 67 XPathResult* DocumentXPathEvaluator::evaluate(Document& document, |
| 69 Supplementable<Document>& document, | 68 const String& expression, |
| 70 const String& expression, | 69 Node* contextNode, |
| 71 Node* contextNode, | 70 XPathNSResolver* resolver, |
| 72 XPathNSResolver* resolver, | 71 unsigned short type, |
| 73 unsigned short type, | 72 const ScriptValue&, |
| 74 const ScriptValue&, | 73 ExceptionState& exceptionState) { |
| 75 ExceptionState& exceptionState) { | |
| 76 DocumentXPathEvaluator& suplement = from(document); | 74 DocumentXPathEvaluator& suplement = from(document); |
| 77 if (!suplement.m_xpathEvaluator) | 75 if (!suplement.m_xpathEvaluator) |
| 78 suplement.m_xpathEvaluator = XPathEvaluator::create(); | 76 suplement.m_xpathEvaluator = XPathEvaluator::create(); |
| 79 return suplement.m_xpathEvaluator->evaluate( | 77 return suplement.m_xpathEvaluator->evaluate( |
| 80 expression, contextNode, resolver, type, ScriptValue(), exceptionState); | 78 expression, contextNode, resolver, type, ScriptValue(), exceptionState); |
| 81 } | 79 } |
| 82 | 80 |
| 83 DEFINE_TRACE(DocumentXPathEvaluator) { | 81 DEFINE_TRACE(DocumentXPathEvaluator) { |
| 84 visitor->trace(m_xpathEvaluator); | 82 visitor->trace(m_xpathEvaluator); |
| 85 Supplement<Document>::trace(visitor); | 83 Supplement<Document>::trace(visitor); |
| 86 } | 84 } |
| 87 | 85 |
| 88 } // namespace blink | 86 } // namespace blink |
| OLD | NEW |