1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef URL_URL_CANON_ICU_H_
6#define URL_URL_CANON_ICU_H_
7
8// ICU integration functions.
9
10#include "base/compiler_specific.h"
11#include "url/url_canon.h"
12#include "url/url_export.h"
13
14typedef struct UConverter UConverter;
15
16namespace url {
17
18// An implementation of CharsetConverter that implementations can use to
19// interface the canonicalizer with ICU's conversion routines.
20class URL_EXPORT ICUCharsetConverter : public CharsetConverter {
21 public:
22  // Constructs a converter using an already-existing ICU character set
23  // converter. This converter is NOT owned by this object; the lifetime must
24  // be managed by the creator such that it is alive as long as this is.
25  ICUCharsetConverter(UConverter* converter);
26
27  virtual ~ICUCharsetConverter();
28
29  virtual void ConvertFromUTF16(const base::char16* input,
30                                int input_len,
31                                CanonOutput* output) OVERRIDE;
32
33 private:
34  // The ICU converter, not owned by this class.
35  UConverter* converter_;
36};
37
38}  // namespace url
39
40#endif  // URL_URL_CANON_ICU_H_
41