blob: 2d8182530bbc9500dc6cbba26e828957b5e76d48 [file] [log] [blame]
// Copyright 2021 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 "cc/document_transition/document_transition_shared_element_id.h"
#include <sstream>
#include <string>
#include "base/check_op.h"
#include "base/containers/flat_set.h"
namespace cc {
DocumentTransitionSharedElementId::DocumentTransitionSharedElementId() =
default;
DocumentTransitionSharedElementId::DocumentTransitionSharedElementId(
uint32_t document_tag)
: document_tag_(document_tag) {}
DocumentTransitionSharedElementId::DocumentTransitionSharedElementId(
DocumentTransitionSharedElementId&&) = default;
DocumentTransitionSharedElementId::DocumentTransitionSharedElementId(
const DocumentTransitionSharedElementId&) = default;
DocumentTransitionSharedElementId::~DocumentTransitionSharedElementId() =
default;
void DocumentTransitionSharedElementId::AddIndex(uint32_t index) {
DCHECK_NE(document_tag_, 0u);
element_indices_.insert(index);
}
bool DocumentTransitionSharedElementId::Matches(uint32_t document_tag,
uint32_t index) const {
return document_tag_ == document_tag && element_indices_.count(index) != 0;
}
std::string DocumentTransitionSharedElementId::ToString() const {
std::ostringstream str;
str << "DocumentTransitionSharedElementId{ document_tag: " << document_tag_
<< " element_indices: [";
std::string separator = "";
for (auto index : element_indices_) {
str << separator << index;
separator = ", ";
}
str << "]}";
return str.str();
}
} // namespace cc