| // Copyright 2013 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. |
| |
| #ifndef URL_URL_CANON_ICU_H_ |
| #define URL_URL_CANON_ICU_H_ |
| |
| // ICU integration functions. |
| |
| #include "base/compiler_specific.h" |
| #include "url/url_canon.h" |
| #include "url/url_export.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 URL_EXPORT 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 base::char16* input, |
| int input_len, |
| CanonOutput* output) override; |
| |
| private: |
| // The ICU converter, not owned by this class. |
| UConverter* converter_; |
| }; |
| |
| } // namespace url |
| |
| #endif // URL_URL_CANON_ICU_H_ |