Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / dom / StyleChangeReason.h
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.
4
5 #ifndef StyleChangeReason_h
6 #define StyleChangeReason_h
7
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"
13
14 namespace blink {
15
16 class QualifiedName;
17 namespace TraceEvent {
18 class ConvertableToTraceFormat;
19 }
20
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[];
52 }
53 typedef const char StyleChangeReasonString[];
54
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;
61
62 void init();
63 }
64
65 // |StyleChangeReasonForTracing| is used to trace the reason a
66 // |Node::setNeedsStyleRecalc| call was made to show it in DevTools or in
67 // about:tracing.
68 // |StyleChangeReasonForTracing| is strictly only for the tracing purpose as
69 // described above. Blink logic must not depend on this value.
70 class StyleChangeReasonForTracing {
71 public:
72     static StyleChangeReasonForTracing create(StyleChangeReasonString reasonString)
73     {
74         return StyleChangeReasonForTracing(reasonString, nullAtom);
75     }
76
77     static StyleChangeReasonForTracing createWithExtraData(StyleChangeReasonString reasonString, const AtomicString& extraData)
78     {
79         return StyleChangeReasonForTracing(reasonString, extraData);
80     }
81
82     static StyleChangeReasonForTracing fromAttribute(const QualifiedName& attributeName)
83     {
84         return StyleChangeReasonForTracing(StyleChangeReason::Attribute, attributeName.localName());
85     }
86
87     String reasonString() const { return String(m_reason); }
88     const AtomicString& extraData() const { return m_extraData; }
89
90 private:
91     StyleChangeReasonForTracing(StyleChangeReasonString reasonString, const AtomicString& extraData)
92         : m_reason(reasonString)
93         , m_extraData(extraData)
94     {
95     }
96
97     // disable comparisons
98     void operator==(const StyleChangeReasonForTracing&) const { }
99     void operator!=(const StyleChangeReasonForTracing&) const { }
100
101     const char* m_reason;
102     AtomicString m_extraData;
103 };
104
105 } // namespace blink
106
107 #endif // StyleChangeReason_h