Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: sky/engine/core/html/parser/HTMLElementStack.cpp

Issue 1215103007: Remove remaining HTML elements (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27 #include "sky/engine/core/html/parser/HTMLElementStack.h"
28
29 #include "sky/engine/core/dom/Element.h"
30 #include "sky/engine/core/html/HTMLElement.h"
31
32 namespace blink {
33
34 HTMLElementStack::ElementRecord::ElementRecord(PassRefPtr<ContainerNode> node, P assOwnPtr<ElementRecord> next)
35 : m_node(node)
36 , m_next(next)
37 {
38 ASSERT(m_node);
39 }
40
41 HTMLElementStack::ElementRecord::~ElementRecord()
42 {
43 }
44
45 HTMLElementStack::HTMLElementStack()
46 : m_rootNode(nullptr)
47 , m_stackDepth(0)
48 , m_preserveWhiteSpaceCount(0)
49 {
50 }
51
52 HTMLElementStack::~HTMLElementStack()
53 {
54 }
55
56 void HTMLElementStack::popAll()
57 {
58 m_rootNode = nullptr;
59 m_stackDepth = 0;
60 m_preserveWhiteSpaceCount = 0;
61 while (m_top)
62 m_top = m_top->releaseNext();
63 }
64
65 void HTMLElementStack::pop()
66 {
67 popCommon();
68 }
69
70 void HTMLElementStack::popUntil(Element* element)
71 {
72 while (top() != element)
73 pop();
74 }
75
76 void HTMLElementStack::popUntilPopped(Element* element)
77 {
78 popUntil(element);
79 pop();
80 }
81
82 void HTMLElementStack::pushRootNode(PassRefPtr<ContainerNode> root)
83 {
84 ASSERT(!m_top);
85 ASSERT(!m_rootNode);
86 m_rootNode = root.get();
87 pushCommon(root);
88 }
89
90 void HTMLElementStack::push(PassRefPtr<ContainerNode> node)
91 {
92 ASSERT(m_rootNode);
93 pushCommon(node);
94 }
95
96 HTMLElementStack::ElementRecord* HTMLElementStack::topRecord() const
97 {
98 ASSERT(m_top);
99 return m_top.get();
100 }
101
102 void HTMLElementStack::pushCommon(PassRefPtr<ContainerNode> node)
103 {
104 ASSERT(m_rootNode);
105
106 if (isHTMLTElement(node))
107 ++m_preserveWhiteSpaceCount;
108 m_stackDepth++;
109 m_top = adoptPtr(new ElementRecord(node, m_top.release()));
110 }
111
112 void HTMLElementStack::popCommon()
113 {
114 if (isHTMLTElement(topNode())) {
115 ASSERT(m_preserveWhiteSpaceCount);
116 --m_preserveWhiteSpaceCount;
117 }
118 m_top = m_top->releaseNext();
119 m_stackDepth--;
120 }
121
122 #ifndef NDEBUG
123
124 void HTMLElementStack::show()
125 {
126 for (ElementRecord* record = m_top.get(); record; record = record->next())
127 record->element()->showNode();
128 }
129
130 #endif
131
132 }
OLDNEW
« no previous file with comments | « sky/engine/core/html/parser/HTMLElementStack.h ('k') | sky/engine/core/html/parser/HTMLEntityParser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698