1 // Copyright 2014 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.
5 #ifndef StyleChangeReason_h
6 #define StyleChangeReason_h
8 #include "core/dom/QualifiedName.h"
9 #include "wtf/NullPtr.h"
10 #include "wtf/PassRefPtr.h"
11 #include "wtf/text/AtomicString.h"
12 #include "wtf/text/WTFString.h"
17 namespace TraceEvent {
18 class ConvertableToTraceFormat;
21 namespace StyleChangeReason {
22 extern const char ActiveStylesheetsUpdate[];
23 extern const char Animation[];
24 extern const char Attribute[];
25 extern const char ControlValue[];
26 extern const char Control[];
27 extern const char DesignMode[];
28 extern const char Drag[];
29 extern const char FontSizeChange[];
30 extern const char Fonts[];
31 extern const char FullScreen[];
32 extern const char Inline[];
33 extern const char Inspector[];
34 extern const char Language[];
35 extern const char LinkColorChange[];
36 extern const char PlatformColorChange[];
37 extern const char PropagateInheritChangeToDistributedNodes[];
38 extern const char PseudoClass[];
39 extern const char SVGContainerSizeChange[];
40 extern const char SVGCursor[];
41 extern const char SVGFilterLayerUpdate[];
42 extern const char Shadow[];
43 extern const char SiblingSelector[];
44 extern const char StyleInvalidator[];
45 extern const char StyleSheetChange[];
46 extern const char Validate[];
47 extern const char ViewportUnits[];
48 extern const char VisitedLink[];
49 extern const char VisuallyOrdered[];
50 extern const char WritingModeChange[];
51 extern const char Zoom[];
53 typedef const char StyleChangeReasonString[];
55 namespace StyleChangeExtraData {
56 extern const AtomicString& Active;
57 extern const AtomicString& Disabled;
58 extern const AtomicString& Focus;
59 extern const AtomicString& Hover;
60 extern const AtomicString& Unresolved;
65 // |StyleChangeReasonForTracing| is used to trace the reason a
66 // |Node::setNeedsStyleRecalc| call was made to show it in DevTools or in
68 // |StyleChangeReasonForTracing| is strictly only for the tracing purpose as
69 // described above. Blink logic must not depend on this value.
70 class StyleChangeReasonForTracing {
72 static StyleChangeReasonForTracing create(StyleChangeReasonString reasonString)
74 return StyleChangeReasonForTracing(reasonString, nullAtom);
77 static StyleChangeReasonForTracing createWithExtraData(StyleChangeReasonString reasonString, const AtomicString& extraData)
79 return StyleChangeReasonForTracing(reasonString, extraData);
82 static StyleChangeReasonForTracing fromAttribute(const QualifiedName& attributeName)
84 return StyleChangeReasonForTracing(StyleChangeReason::Attribute, attributeName.localName());
87 String reasonString() const { return String(m_reason); }
88 const AtomicString& extraData() const { return m_extraData; }
91 StyleChangeReasonForTracing(StyleChangeReasonString reasonString, const AtomicString& extraData)
92 : m_reason(reasonString)
93 , m_extraData(extraData)
97 // disable comparisons
98 void operator==(const StyleChangeReasonForTracing&) const { }
99 void operator!=(const StyleChangeReasonForTracing&) const { }
101 const char* m_reason;
102 AtomicString m_extraData;
107 #endif // StyleChangeReason_h