// 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_
