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 StyleWillChangeData_h
6#define StyleWillChangeData_h
7
8#include "core/CSSPropertyNames.h"
9#include "core/CSSValueKeywords.h"
10#include "wtf/PassRefPtr.h"
11#include "wtf/RefCounted.h"
12#include "wtf/Vector.h"
13
14namespace blink {
15
16class StyleWillChangeData : public RefCounted<StyleWillChangeData> {
17public:
18    static PassRefPtr<StyleWillChangeData> create() { return adoptRef(new StyleWillChangeData); }
19    PassRefPtr<StyleWillChangeData> copy() const { return adoptRef(new StyleWillChangeData(*this)); }
20
21    bool operator==(const StyleWillChangeData& o) const
22    {
23        return m_properties == o.m_properties && m_contents == o.m_contents && m_scrollPosition == o.m_scrollPosition;
24    }
25
26    bool operator!=(const StyleWillChangeData& o) const
27    {
28        return !(*this == o);
29    }
30
31    Vector<CSSPropertyID> m_properties;
32    unsigned m_contents : 1;
33    unsigned m_scrollPosition : 1;
34
35private:
36    StyleWillChangeData();
37    StyleWillChangeData(const StyleWillChangeData&);
38};
39
40} // namespace blink
41
42#endif // StyleWillChangeData_h
43