| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ios/chrome/browser/sessions/model/proto_util.h" |
| |
| #include "third_party/protobuf/src/google/protobuf/message_lite.h" |
| |
| namespace ios::proto { |
| namespace { |
| |
| // Equality operator for `google::protobuf::RepeatedPtrField<T>` for use |
| // in tests. |
| template <typename T> |
| bool operator==(const google::protobuf::RepeatedPtrField<T>& lhs, |
| const google::protobuf::RepeatedPtrField<T>& rhs) { |
| auto lhs_iter = lhs.begin(); |
| auto rhs_iter = rhs.begin(); |
| const auto lhs_end = lhs.end(); |
| const auto rhs_end = rhs.end(); |
| for (; lhs_iter != lhs_end && rhs_iter != rhs_end; ++lhs_iter, ++rhs_iter) { |
| if (*lhs_iter != *rhs_iter) { |
| return false; |
| } |
| } |
| |
| return lhs_iter == lhs_end && rhs_iter == rhs_end; |
| } |
| |
| // Inequality operator for `google::protobuf::RepeatedPtrField<T>` for use |
| // in tests. |
| template <typename T> |
| bool operator!=(const google::protobuf::RepeatedPtrField<T>& lhs, |
| const google::protobuf::RepeatedPtrField<T>& rhs) { |
| return !(lhs == rhs); |
| } |
| |
| } // namespace |
| |
| bool operator==(const WebStateListStorage& lhs, |
| const WebStateListStorage& rhs) { |
| if (lhs.active_index() != rhs.active_index()) { |
| return false; |
| } |
| |
| if (lhs.pinned_item_count() != rhs.pinned_item_count()) { |
| return false; |
| } |
| |
| if (lhs.items() != rhs.items()) { |
| return false; |
| } |
| |
| return true; |
| } |
| |
| bool operator!=(const WebStateListStorage& lhs, |
| const WebStateListStorage& rhs) { |
| return !(lhs == rhs); |
| } |
| |
| bool operator==(const WebStateListItemStorage& lhs, |
| const WebStateListItemStorage& rhs) { |
| if (lhs.identifier() != rhs.identifier()) { |
| return false; |
| } |
| |
| if (lhs.opener() != rhs.opener()) { |
| return false; |
| } |
| |
| return true; |
| } |
| |
| bool operator!=(const WebStateListItemStorage& lhs, |
| const WebStateListItemStorage& rhs) { |
| return !(lhs == rhs); |
| } |
| |
| bool operator==(const OpenerStorage& lhs, const OpenerStorage& rhs) { |
| if (lhs.index() != rhs.index()) { |
| return false; |
| } |
| |
| if (lhs.navigation_index() != rhs.navigation_index()) { |
| return false; |
| } |
| |
| return true; |
| } |
| |
| bool operator!=(const OpenerStorage& lhs, const OpenerStorage& rhs) { |
| return !(lhs == rhs); |
| } |
| |
| } // namespace ios::proto |