| // Copyright 2020 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 THIRD_PARTY_BLINK_RENDERER_CORE_CSS_RESOLVER_CASCADE_ORIGIN_H_ |
| #define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_RESOLVER_CASCADE_ORIGIN_H_ |
| |
| #include <cstdint> |
| |
| namespace blink { |
| |
| // Represents the origin criteria described by css-cascade [1]. |
| // |
| // [1] https://www.w3.org/TR/css-cascade-3/#cascade-origin |
| enum class CascadeOrigin : uint8_t { |
| kNone = 0, |
| kUserAgent = 0b0001, |
| kUser = 0b0010, |
| kAuthor = 0b0011, |
| kAnimation = 0b0100, |
| // The lower four bits of kAuthor, kUser and kUserAgent can be inverted to |
| // efficiently produce a "cascade correct" value when compared with the values |
| // specified in this enum: |
| // |
| // kAuthor important: ~0b0011 == 0b1100 (> kAnimation) |
| // kUser important: ~0b0010 == 0b1101 (> kAuthor important) |
| // kUserAgent important: ~0b0001 == 0b1110 (> kUser important) |
| // |
| // Because kTransition has a higher priority than anything else, it's set to |
| // 0b10000, which is greater than kUserAgent important. Although 0b1111 is |
| // available, we avoid using that such that the fourth bit can be used as |
| // as quick is-important check. |
| kTransition = 0b10000, |
| }; |
| |
| } // namespace blink |
| |
| #endif // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_RESOLVER_CASCADE_ORIGIN_H_ |