blob: ea34e3cad1e2872563249e528c944a3f20465290 [file] [log] [blame]
// Copyright 2016 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.
#include "third_party/blink/renderer/core/style/style_non_inherited_variables.h"
#include "third_party/blink/renderer/core/style/data_equivalency.h"
namespace blink {
bool StyleNonInheritedVariables::operator==(
const StyleNonInheritedVariables& other) const {
if (data_.size() != other.data_.size())
return false;
for (const auto& iter : data_) {
scoped_refptr<CSSVariableData> other_data = other.data_.at(iter.key);
if (!DataEquivalent(iter.value, other_data))
return false;
}
return true;
}
CSSVariableData* StyleNonInheritedVariables::GetVariable(
const AtomicString& name) const {
return data_.at(name);
}
void StyleNonInheritedVariables::SetRegisteredVariable(
const AtomicString& name,
const CSSValue* parsed_value) {
needs_resolution_ = true;
registered_data_->Set(name, const_cast<CSSValue*>(parsed_value));
}
void StyleNonInheritedVariables::RemoveVariable(const AtomicString& name) {
data_.Set(name, nullptr);
registered_data_->Set(name, nullptr);
}
StyleNonInheritedVariables::StyleNonInheritedVariables()
: registered_data_(
MakeGarbageCollected<HeapHashMap<AtomicString, Member<CSSValue>>>()),
needs_resolution_(false) {}
StyleNonInheritedVariables::StyleNonInheritedVariables(
StyleNonInheritedVariables& other) {
data_ = other.data_;
registered_data_ =
MakeGarbageCollected<HeapHashMap<AtomicString, Member<CSSValue>>>(
*other.registered_data_);
needs_resolution_ = other.needs_resolution_;
}
HashSet<AtomicString> StyleNonInheritedVariables::GetCustomPropertyNames()
const {
HashSet<AtomicString> names;
for (const auto& pair : data_)
names.insert(pair.key);
return names;
}
} // namespace blink