| // Copyright 2013 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_H_ |
| #define URL_URL_CANON_ICU_H_ |
| |
| // ICU integration functions. |
| |
| #include "base/compiler_specific.h" |
| #include "polyfills/base/component_export.h" |
| #include "base/memory/raw_ptr.h" |
| #include "url/url_canon.h" |
| |
| typedef struct UConverter UConverter; |
| |
| namespace url { |
| |
| // An implementation of CharsetConverter that implementations can use to |
| // interface the canonicalizer with ICU's conversion routines. |
| class COMPONENT_EXPORT(URL) ICUCharsetConverter : public CharsetConverter { |
| public: |
| // Constructs a converter using an already-existing ICU character set |
| // converter. This converter is NOT owned by this object; the lifetime must |
| // be managed by the creator such that it is alive as long as this is. |
| ICUCharsetConverter(UConverter* converter); |
| |
| ~ICUCharsetConverter() override; |
| |
| void ConvertFromUTF16(const char16_t* input, |
| int input_len, |
| CanonOutput* output) override; |
| |
| private: |
| // The ICU converter, not owned by this class. |
| raw_ptr<UConverter> converter_; |
| }; |
| |
| } // namespace url |
| |
| #endif // URL_URL_CANON_ICU_H_ |