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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutCounter.h

Issue 2754653002: Cleanup anonymous text objects that pass the document as a node. (Closed)
Patch Set: Cleanup anonymous text objects that pass the document as a node. Created 3 years, 9 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
1 /* 1 /*
2 * Copyright (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 2 * Copyright (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
3 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 10 matching lines...) Expand all
21 21
22 #ifndef LayoutCounter_h 22 #ifndef LayoutCounter_h
23 #define LayoutCounter_h 23 #define LayoutCounter_h
24 24
25 #include "core/layout/LayoutText.h" 25 #include "core/layout/LayoutText.h"
26 #include "core/style/CounterContent.h" 26 #include "core/style/CounterContent.h"
27 27
28 namespace blink { 28 namespace blink {
29 29
30 class CounterNode; 30 class CounterNode;
31 class PseudoElement;
31 32
32 // LayoutCounter is used to represent the text of a counter. 33 // LayoutCounter is used to represent the text of a counter.
33 // See http://www.w3.org/TR/CSS21/generate.html#counters 34 // See http://www.w3.org/TR/CSS21/generate.html#counters
34 // 35 //
35 // Counters are always generated content ("content: counter(a)") thus this 36 // Counters are always generated content ("content: counter(a)") thus this
36 // LayoutObject is always anonymous. 37 // LayoutObject is always anonymous.
37 // 38 //
38 // CounterNodes is where the logic for knowing the value of a counter is. 39 // CounterNodes is where the logic for knowing the value of a counter is.
39 // LayoutCounter makes sure the CounterNodes tree is consistent with the 40 // LayoutCounter makes sure the CounterNodes tree is consistent with the
40 // style. It then just queries CounterNodes for their values. 41 // style. It then just queries CounterNodes for their values.
41 // 42 //
42 // CounterNodes are rare so they are stored in a map instead of growing 43 // CounterNodes are rare so they are stored in a map instead of growing
43 // LayoutObject. counterMaps() (in LayoutCounter.cpp) keeps the association 44 // LayoutObject. counterMaps() (in LayoutCounter.cpp) keeps the association
44 // between LayoutObject and CounterNodes. To avoid unneeded hash-lookups in the 45 // between LayoutObject and CounterNodes. To avoid unneeded hash-lookups in the
45 // common case where there is no CounterNode, LayoutObject also keeps track of 46 // common case where there is no CounterNode, LayoutObject also keeps track of
46 // whether it has at least one CounterNode in the hasCounterNodeMap bit. 47 // whether it has at least one CounterNode in the hasCounterNodeMap bit.
47 // 48 //
48 // Keeping the map up to date is the reason why LayoutObjects need to call into 49 // Keeping the map up to date is the reason why LayoutObjects need to call into
49 // LayoutCounter during their lifetime (see the static functions below). 50 // LayoutCounter during their lifetime (see the static functions below).
50 class LayoutCounter final : public LayoutText { 51 class LayoutCounter final : public LayoutText {
51 public: 52 public:
52 LayoutCounter(Document*, const CounterContent&); 53 LayoutCounter(PseudoElement&, const CounterContent&);
53 ~LayoutCounter() override; 54 ~LayoutCounter() override;
54 55
55 // These functions are static so that any LayoutObject can call them. 56 // These functions are static so that any LayoutObject can call them.
56 // The reason is that any LayoutObject in the tree can have a CounterNode 57 // The reason is that any LayoutObject in the tree can have a CounterNode
57 // without a LayoutCounter (e.g. by specifying 'counter-increment' without 58 // without a LayoutCounter (e.g. by specifying 'counter-increment' without
58 // a "content: counter(a)" directive)). 59 // a "content: counter(a)" directive)).
59 static void destroyCounterNodes(LayoutObject&); 60 static void destroyCounterNodes(LayoutObject&);
60 static void destroyCounterNode(LayoutObject&, const AtomicString& identifier); 61 static void destroyCounterNode(LayoutObject&, const AtomicString& identifier);
61 static void layoutObjectSubtreeAttached(LayoutObject*); 62 static void layoutObjectSubtreeAttached(LayoutObject*);
62 static void layoutObjectSubtreeWillBeDetached(LayoutObject*); 63 static void layoutObjectSubtreeWillBeDetached(LayoutObject*);
(...skipping 29 matching lines...) Expand all
92 93
93 } // namespace blink 94 } // namespace blink
94 95
95 #ifndef NDEBUG 96 #ifndef NDEBUG
96 // Outside the WebCore namespace for ease of invocation from gdb. 97 // Outside the WebCore namespace for ease of invocation from gdb.
97 void showCounterLayoutTree(const blink::LayoutObject*, 98 void showCounterLayoutTree(const blink::LayoutObject*,
98 const char* counterName = nullptr); 99 const char* counterName = nullptr);
99 #endif 100 #endif
100 101
101 #endif // LayoutCounter_h 102 #endif // LayoutCounter_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/PseudoElement.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutCounter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698