// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef URL_URL_CANON_ICU_TEST_HELPERS_H_ #define URL_URL_CANON_ICU_TEST_HELPERS_H_ #include "base/logging.h" #include "third_party/icu/source/common/unicode/ucnv.h" #include "url/url_canon.h" namespace url::test { // Wrapper around a UConverter object that managers creation and destruction. class UConvScoper { public: explicit UConvScoper(const char* charset_name) { UErrorCode err = U_ZERO_ERROR; converter_ = ucnv_open(charset_name, &err); if (!converter_) { LOG(ERROR) << "Failed to open charset " << charset_name << ": " << u_errorName(err); } } ~UConvScoper() { if (converter_) { ucnv_close(converter_.ExtractAsDangling()); } } // Returns the converter object, may be NULL. UConverter* converter() const { return converter_; } private: raw_ptr converter_; }; } // namespace url::test #endif // URL_URL_CANON_ICU_TEST_HELPERS_H_