Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set sw=2 ts=2 et tw=78: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #include "nsISupports.h"
8 : #include "nsISupportsImpl.h"
9 : #include "nsIParser.h"
10 : #include "CNavDTD.h"
11 : #include "nsIHTMLContentSink.h"
12 :
13 5 : NS_IMPL_ISUPPORTS(CNavDTD, nsIDTD);
14 :
15 1 : CNavDTD::CNavDTD()
16 : {
17 1 : }
18 :
19 2 : CNavDTD::~CNavDTD()
20 : {
21 3 : }
22 :
23 : NS_IMETHODIMP
24 1 : CNavDTD::WillBuildModel(const CParserContext& aParserContext,
25 : nsITokenizer* aTokenizer,
26 : nsIContentSink* aSink)
27 : {
28 1 : return NS_OK;
29 : }
30 :
31 : NS_IMETHODIMP
32 1 : CNavDTD::BuildModel(nsITokenizer* aTokenizer,
33 : nsIContentSink* aSink)
34 : {
35 : // NB: It is important to throw STOPPARSING if the sink is the wrong type in
36 : // order to make sure nsParser cleans up properly after itself.
37 2 : nsCOMPtr<nsIHTMLContentSink> sink = do_QueryInterface(aSink);
38 1 : if (!sink) {
39 0 : return NS_ERROR_HTMLPARSER_STOPPARSING;
40 : }
41 :
42 1 : nsresult rv = sink->OpenContainer(nsIHTMLContentSink::eHTML);
43 1 : NS_ENSURE_SUCCESS(rv, rv);
44 1 : rv = sink->OpenContainer(nsIHTMLContentSink::eBody);
45 1 : NS_ENSURE_SUCCESS(rv, rv);
46 :
47 1 : rv = sink->CloseContainer(nsIHTMLContentSink::eBody);
48 1 : MOZ_ASSERT(NS_SUCCEEDED(rv));
49 1 : rv = sink->CloseContainer(nsIHTMLContentSink::eHTML);
50 1 : MOZ_ASSERT(NS_SUCCEEDED(rv));
51 :
52 1 : return NS_OK;
53 : }
54 :
55 : NS_IMETHODIMP
56 1 : CNavDTD::DidBuildModel(nsresult anErrorCode)
57 : {
58 1 : return NS_OK;
59 : }
60 :
61 : NS_IMETHODIMP_(void)
62 0 : CNavDTD::Terminate()
63 : {
64 0 : }
65 :
66 :
67 : NS_IMETHODIMP_(int32_t)
68 4 : CNavDTD::GetType()
69 : {
70 4 : return NS_IPARSER_FLAG_HTML;
71 : }
72 :
73 : NS_IMETHODIMP_(nsDTDMode)
74 1 : CNavDTD::GetMode() const
75 : {
76 1 : return eDTDMode_quirks;
77 : }
78 :
79 : NS_IMETHODIMP_(bool)
80 0 : CNavDTD::CanContain(int32_t aParent,int32_t aChild) const
81 : {
82 0 : MOZ_CRASH("nobody calls this");
83 : return false;
84 : }
85 :
86 : NS_IMETHODIMP_(bool)
87 0 : CNavDTD::IsContainer(int32_t aTag) const
88 : {
89 0 : MOZ_CRASH("nobody calls this");
90 : return false;
91 : }
|