• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
2 // reserved. Use of this source code is governed by a BSD-style license that
3 // can be found in the LICENSE file.
4 
5 #ifndef CEF_LIBCEF_BROWSER_XML_READER_IMPL_H_
6 #define CEF_LIBCEF_BROWSER_XML_READER_IMPL_H_
7 #pragma once
8 
9 #include <libxml/xmlreader.h>
10 #include <sstream>
11 
12 #include "base/threading/platform_thread.h"
13 #include "include/cef_xml_reader.h"
14 
15 // Implementation of CefXmlReader
16 class CefXmlReaderImpl : public CefXmlReader {
17  public:
18   CefXmlReaderImpl();
19   ~CefXmlReaderImpl() override;
20 
21   // Initialize the reader context.
22   bool Initialize(CefRefPtr<CefStreamReader> stream,
23                   EncodingType encodingType,
24                   const CefString& URI);
25 
26   bool MoveToNextNode() override;
27   bool Close() override;
28   bool HasError() override;
29   CefString GetError() override;
30   NodeType GetType() override;
31   int GetDepth() override;
32   CefString GetLocalName() override;
33   CefString GetPrefix() override;
34   CefString GetQualifiedName() override;
35   CefString GetNamespaceURI() override;
36   CefString GetBaseURI() override;
37   CefString GetXmlLang() override;
38   bool IsEmptyElement() override;
39   bool HasValue() override;
40   CefString GetValue() override;
41   bool HasAttributes() override;
42   size_t GetAttributeCount() override;
43   CefString GetAttribute(int index) override;
44   CefString GetAttribute(const CefString& qualifiedName) override;
45   CefString GetAttribute(const CefString& localName,
46                          const CefString& namespaceURI) override;
47   CefString GetInnerXml() override;
48   CefString GetOuterXml() override;
49   int GetLineNumber() override;
50   bool MoveToAttribute(int index) override;
51   bool MoveToAttribute(const CefString& qualifiedName) override;
52   bool MoveToAttribute(const CefString& localName,
53                        const CefString& namespaceURI) override;
54   bool MoveToFirstAttribute() override;
55   bool MoveToNextAttribute() override;
56   bool MoveToCarryingElement() override;
57 
58   // Add another line to the error string.
59   void AppendError(const CefString& error_str);
60 
61   // Verify that the reader exists and is being accessed from the correct
62   // thread.
63   bool VerifyContext();
64 
65  protected:
66   base::PlatformThreadId supported_thread_id_;
67   CefRefPtr<CefStreamReader> stream_;
68   xmlTextReaderPtr reader_;
69   std::stringstream error_buf_;
70 
71   IMPLEMENT_REFCOUNTING(CefXmlReaderImpl);
72 };
73 
74 #endif  // CEF_LIBCEF_BROWSER_XML_READER_IMPL_H_
75