blob: 66687e28852d00b9c5b86283b60dda2aaf3288e3 [file] [log] [blame]
// Copyright 2015 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/animation/property_handle.h"
#include "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h"
namespace blink {
bool PropertyHandle::operator==(const PropertyHandle& other) const {
if (handle_type_ != other.handle_type_)
return false;
switch (handle_type_) {
case kHandleCSSProperty:
case kHandlePresentationAttribute:
return css_property_ == other.css_property_;
case kHandleCSSCustomProperty:
return property_name_ == other.property_name_;
case kHandleSVGAttribute:
return svg_attribute_ == other.svg_attribute_;
default:
return true;
}
}
unsigned PropertyHandle::GetHash() const {
switch (handle_type_) {
case kHandleCSSProperty:
return static_cast<int>(css_property_->PropertyID());
case kHandleCSSCustomProperty:
return AtomicStringHash::GetHash(property_name_);
case kHandlePresentationAttribute:
return -static_cast<int>(css_property_->PropertyID());
case kHandleSVGAttribute:
return QualifiedNameHash::GetHash(*svg_attribute_);
default:
NOTREACHED();
return 0;
}
}
} // namespace blink