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

Side by Side Diff: third_party/WebKit/Source/core/dom/PseudoElementData.h

Issue 1943803002: Move PseudoElements storage to their own object. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated as per review comments Created 4 years, 7 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 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef PseudoElementData_h
6 #define PseudoElementData_h
7
8 #include "platform/heap/Handle.h"
9
10 namespace blink {
11
12 class PseudoElementData : public GarbageCollectedFinalized<PseudoElementData> {
sof 2016/05/06 05:22:15 You can use GarbageCollected<> now + make the clas
ramya.v 2016/05/06 06:16:06 Done.
13 WTF_MAKE_NONCOPYABLE(PseudoElementData);
14 public:
15 static PseudoElementData* create();
16 void setPseudoElement(PseudoId, PseudoElement*);
17 PseudoElement* pseudoElement(PseudoId) const;
18 bool hasPseudoElements() const;
19 DEFINE_INLINE_TRACE()
20 {
21 visitor->trace(m_generatedBefore);
22 visitor->trace(m_generatedAfter);
23 visitor->trace(m_generatedFirstLetter);
24 visitor->trace(m_backdrop);
25 }
26 private:
27 PseudoElementData() = default;
28 Member<PseudoElement> m_generatedBefore;
29 Member<PseudoElement> m_generatedAfter;
30 Member<PseudoElement> m_generatedFirstLetter;
31 Member<PseudoElement> m_backdrop;
32 };
33
34 inline PseudoElementData* PseudoElementData::create()
35 {
36 return new PseudoElementData();
37 }
38
39 inline bool PseudoElementData::hasPseudoElements() const
40 {
41 return m_generatedBefore || m_generatedAfter || m_backdrop || m_generatedFir stLetter;
42 }
43
44 inline void PseudoElementData::setPseudoElement(PseudoId pseudoId, PseudoElement * element)
45 {
46 switch (pseudoId) {
47 case PseudoIdBefore:
48 if (m_generatedBefore)
49 m_generatedBefore->dispose();
50 m_generatedBefore = element;
51 break;
52 case PseudoIdAfter:
53 if (m_generatedAfter)
54 m_generatedAfter->dispose();
55 m_generatedAfter = element;
56 break;
57 case PseudoIdBackdrop:
58 if (m_backdrop)
59 m_backdrop->dispose();
60 m_backdrop = element;
61 break;
62 case PseudoIdFirstLetter:
63 if (m_generatedFirstLetter)
64 m_generatedFirstLetter->dispose();
65 m_generatedFirstLetter = element;
66 break;
67 default:
68 ASSERT_NOT_REACHED();
69 }
70 }
71
72 inline PseudoElement* PseudoElementData::pseudoElement(PseudoId pseudoId) const
73 {
74 switch (pseudoId) {
75 case PseudoIdBefore:
76 return m_generatedBefore.get();
sof 2016/05/06 05:22:15 The uses of get() are redundant, let's remove them
ramya.v 2016/05/06 06:16:06 Done.
77 case PseudoIdAfter:
78 return m_generatedAfter.get();
79 case PseudoIdBackdrop:
80 return m_backdrop.get();
81 case PseudoIdFirstLetter:
82 return m_generatedFirstLetter.get();
83 default:
84 return nullptr;
85 }
86 }
87
88 } // namespace blink
89
90 #endif
sof 2016/05/06 05:22:15 // PseudoElementData_h
ramya.v 2016/05/06 06:16:06 Done.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698