blob: 9c5a11351acc018021be1cf96fe7a57ceeb8144e [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef StyleChangeReason_h
#define StyleChangeReason_h
#include "core/dom/QualifiedName.h"
#include "wtf/text/AtomicString.h"
#include "wtf/text/WTFString.h"
namespace blink {
class QualifiedName;
namespace StyleChangeReason {
extern const char ActiveStylesheetsUpdate[];
extern const char Animation[];
extern const char Attribute[];
extern const char CleanupPlaceholderStyles[];
extern const char CompositorProxy[];
extern const char ControlValue[];
extern const char Control[];
extern const char DeclarativeContent[];
extern const char DesignMode[];
extern const char FontSizeChange[];
extern const char Fonts[];
extern const char FullScreen[];
extern const char Inline[];
extern const char InlineCSSStyleMutated[];
extern const char Inspector[];
extern const char Language[];
extern const char LinkColorChange[];
extern const char PlatformColorChange[];
extern const char PropagateInheritChangeToDistributedNodes[];
extern const char PropertyRegistration[];
extern const char PropertyUnregistration[];
extern const char PseudoClass[];
extern const char SVGContainerSizeChange[];
extern const char SVGCursor[];
extern const char Settings[];
extern const char Shadow[];
extern const char StyleInvalidator[];
extern const char StyleSheetChange[];
extern const char ViewportUnits[];
extern const char VisitedLink[];
extern const char VisuallyOrdered[];
extern const char WritingModeChange[];
extern const char Zoom[];
} // namespace StyleChangeReason
typedef const char StyleChangeReasonString[];
namespace StyleChangeExtraData {
extern const AtomicString& Active;
extern const AtomicString& Disabled;
extern const AtomicString& Drag;
extern const AtomicString& Focus;
extern const AtomicString& Hover;
extern const AtomicString& Past;
extern const AtomicString& Unresolved;
void init();
}
// |StyleChangeReasonForTracing| is used to trace the reason a
// |Node::setNeedsStyleRecalc| call was made to show it in DevTools or in
// about:tracing.
// |StyleChangeReasonForTracing| is strictly only for the tracing purpose as
// described above. Blink logic must not depend on this value.
class StyleChangeReasonForTracing {
DISALLOW_NEW();
public:
static StyleChangeReasonForTracing create(
StyleChangeReasonString reasonString) {
return StyleChangeReasonForTracing(reasonString, nullAtom);
}
static StyleChangeReasonForTracing createWithExtraData(
StyleChangeReasonString reasonString,
const AtomicString& extraData) {
return StyleChangeReasonForTracing(reasonString, extraData);
}
static StyleChangeReasonForTracing fromAttribute(
const QualifiedName& attributeName) {
return StyleChangeReasonForTracing(StyleChangeReason::Attribute,
attributeName.localName());
}
String reasonString() const { return String(m_reason); }
const AtomicString& getExtraData() const { return m_extraData; }
private:
StyleChangeReasonForTracing(StyleChangeReasonString reasonString,
const AtomicString& extraData)
: m_reason(reasonString), m_extraData(extraData) {}
// disable comparisons
void operator==(const StyleChangeReasonForTracing&) const {}
void operator!=(const StyleChangeReasonForTracing&) const {}
const char* m_reason;
AtomicString m_extraData;
};
} // namespace blink
#endif // StyleChangeReason_h