80 lines
3 KiB
Text
80 lines
3 KiB
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
/**
|
|
* IDN (Internationalized Domain Name) support. Provides facilities
|
|
* for manipulating IDN hostnames according to UTS #46 as parametrized
|
|
* by the WHATWG URL Standard.
|
|
*
|
|
* UTS #46: https://www.unicode.org/reports/tr46/
|
|
*
|
|
* URL Standard: https://url.spec.whatwg.org/
|
|
*/
|
|
|
|
[scriptable, uuid(a592a60e-3621-4f19-a318-2bf233cfad3e)]
|
|
interface nsIIDNService : nsISupports
|
|
{
|
|
/**
|
|
* The UTS #46 ToASCII operation as parametrized by the WHATWG URL Standard
|
|
*
|
|
* Use this function to prepare a host name for network protocols.
|
|
*
|
|
* Do not try to optimize and avoid calling this function if you already
|
|
* have ASCII. This function optimizes internally, and calling it is
|
|
* required for correctness!
|
|
*
|
|
* The function is available to C++ callers as `NS_DomainToASCII`.
|
|
*
|
|
* Rust callers that don't happen to be using XPCOM strings are better
|
|
* off using the `idna` crate directly.
|
|
*/
|
|
ACString domainToASCII(in AUTF8String input);
|
|
|
|
/**
|
|
* Legacy variant of `domainToASCII` that allows allows any ASCII character that has a glyph.
|
|
*
|
|
* The function is available to C++ callers as `NS_DomainToASCIIAllowAnyGlyphfulASCII`.
|
|
*/
|
|
ACString convertUTF8toACE(in AUTF8String input);
|
|
|
|
/**
|
|
* The UTS #46 ToUnicode operation as parametrized by the WHATWG URL Standard,
|
|
* except potentially misleading labels are treated according to ToASCII instead.
|
|
*
|
|
* Use this function to prepare a host name for display to the user.
|
|
*
|
|
* The function is available to C++ callers as `NS_DomainToDisplay`.
|
|
*
|
|
* Rust callers that don't happen to be using XPCOM strings are better
|
|
* off using the `idna` crate directly. (See `idna_glue` for what policy
|
|
* closure to use.)
|
|
*/
|
|
AUTF8String domainToDisplay(in AUTF8String input);
|
|
|
|
/**
|
|
* Legacy variant of `domainToDisplay` that allows allows any ASCII character that has a glyph.
|
|
*
|
|
* The function is available to C++ callers as `NS_DomainToDisplayAllowAnyGlyphfulASCII`.
|
|
*/
|
|
AUTF8String convertToDisplayIDN(in AUTF8String input);
|
|
|
|
/**
|
|
* The UTS #46 ToUnicode operation as parametrized by the WHATWG URL Standard,
|
|
* except allows any ASCII character that has a glyph.
|
|
*
|
|
* It's most likely INCORRECT to call this function, and `domainToDisplay`
|
|
* should typically be called instead. Please avoid adding new callers, so
|
|
* that this conversion could be removed entirely!
|
|
*
|
|
* There is no `domainToUnicode` to discourage new callers.
|
|
*
|
|
* The function is available to C++ callers as `NS_DomainToUnicodeAllowAnyGlyphfulASCII`.
|
|
*
|
|
* Rust callers that don't happen to be using XPCOM strings are better
|
|
* off using the `idna` crate directly.
|
|
*/
|
|
AUTF8String convertACEtoUTF8(in ACString input);
|
|
};
|