1 // Copyright 2020 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 THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_NAME_OR_KEYWORD_H_ 6 #define THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_NAME_OR_KEYWORD_H_ 7 8 #include "third_party/blink/renderer/core/core_export.h" 9 #include "third_party/blink/renderer/core/css_value_keywords.h" 10 #include "third_party/blink/renderer/core/style/style_name.h" 11 12 namespace blink { 13 14 class CORE_EXPORT StyleNameOrKeyword { 15 public: StyleNameOrKeyword(StyleName name)16 explicit StyleNameOrKeyword(StyleName name) 17 : keyword_(CSSValueID::kInvalid), name_(name) {} StyleNameOrKeyword(CSSValueID keyword)18 explicit StyleNameOrKeyword(CSSValueID keyword) : keyword_(keyword) { 19 DCHECK_NE(keyword, CSSValueID::kInvalid); 20 } 21 IsKeyword()22 bool IsKeyword() const { return keyword_ != CSSValueID::kInvalid; } 23 GetKeyword()24 CSSValueID GetKeyword() const { 25 DCHECK(IsKeyword()); 26 return keyword_; 27 } 28 GetName()29 const StyleName& GetName() const { 30 DCHECK(!IsKeyword()); 31 return name_; 32 } 33 34 bool operator==(const StyleNameOrKeyword& other) const { 35 return keyword_ == other.keyword_ && name_ == other.name_; 36 } 37 bool operator!=(const StyleNameOrKeyword& other) const { 38 return !(*this == other); 39 } 40 41 private: 42 CSSValueID keyword_; 43 StyleName name_; 44 }; 45 46 } // namespace blink 47 48 #endif // THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_NAME_OR_KEYWORD_H_ 49