Skip to content

Commit a214244

Browse files
committed
Bug 1425217 - Remove Encoding::ForName. r=hsivonen
MozReview-Commit-ID: JzJ2VYGRzf0 --HG-- extra : rebase_source : 38207daa923175d90b0319dae7e166164835af97
1 parent 8af5435 commit a214244

File tree

3 files changed

+0
-227
lines changed

3 files changed

+0
-227
lines changed

intl/Encoding.h

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ class Encoder;
3535

3636
extern "C" {
3737

38-
mozilla::Encoding const*
39-
mozilla_encoding_for_name(uint8_t const* name, size_t name_len);
40-
4138
nsresult
4239
mozilla_encoding_decode_to_nsstring(mozilla::Encoding const** encoding,
4340
uint8_t const* src,
@@ -258,23 +255,6 @@ class Encoding final
258255
return MakeTuple(encoding, len);
259256
}
260257

261-
/**
262-
* If the argument matches exactly (case-sensitively; no whitespace
263-
* removal performed) the name of an encoding, returns
264-
* `const Encoding*` representing that encoding. Otherwise `MOZ_CRASH`es.
265-
*
266-
* The motivating use case for this method is interoperability with
267-
* legacy Gecko code that represents encodings as name string instead of
268-
* type-safe `Encoding` objects. Using this method for other purposes is
269-
* most likely the wrong thing to do.
270-
*/
271-
static inline NotNull<const mozilla::Encoding*> ForName(
272-
Span<const char> aName)
273-
{
274-
return WrapNotNull(mozilla_encoding_for_name(
275-
reinterpret_cast<const uint8_t*>(aName.Elements()), aName.Length()));
276-
}
277-
278258
/**
279259
* Writes the name of this encoding into `aName`.
280260
*

intl/encoding_glue/src/lib.rs

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ extern crate nsstring;
1616
extern crate nserror;
1717

1818
use std::slice;
19-
use std::cmp::Ordering;
2019
use encoding_rs::*;
2120
use nsstring::*;
2221
use nserror::*;
@@ -53,113 +52,6 @@ macro_rules! try_dst_set_len {
5352
)
5453
}
5554

56-
static ENCODINGS_SORTED_BY_NAME: [&'static Encoding; 39] = [&GBK_INIT,
57-
&BIG5_INIT,
58-
&IBM866_INIT,
59-
&EUC_JP_INIT,
60-
&KOI8_R_INIT,
61-
&EUC_KR_INIT,
62-
&KOI8_U_INIT,
63-
&GB18030_INIT,
64-
&UTF_16BE_INIT,
65-
&UTF_16LE_INIT,
66-
&SHIFT_JIS_INIT,
67-
&MACINTOSH_INIT,
68-
&ISO_8859_2_INIT,
69-
&ISO_8859_3_INIT,
70-
&ISO_8859_4_INIT,
71-
&ISO_8859_5_INIT,
72-
&ISO_8859_6_INIT,
73-
&ISO_8859_7_INIT,
74-
&ISO_8859_8_INIT,
75-
&ISO_8859_10_INIT,
76-
&ISO_8859_13_INIT,
77-
&ISO_8859_14_INIT,
78-
&WINDOWS_874_INIT,
79-
&ISO_8859_15_INIT,
80-
&ISO_8859_16_INIT,
81-
&ISO_2022_JP_INIT,
82-
&REPLACEMENT_INIT,
83-
&WINDOWS_1250_INIT,
84-
&WINDOWS_1251_INIT,
85-
&WINDOWS_1252_INIT,
86-
&WINDOWS_1253_INIT,
87-
&WINDOWS_1254_INIT,
88-
&WINDOWS_1255_INIT,
89-
&WINDOWS_1256_INIT,
90-
&WINDOWS_1257_INIT,
91-
&WINDOWS_1258_INIT,
92-
&ISO_8859_8_I_INIT,
93-
&X_MAC_CYRILLIC_INIT,
94-
&X_USER_DEFINED_INIT];
95-
96-
/// If the argument matches exactly (case-sensitively; no whitespace
97-
/// removal performed) the name of an encoding, returns
98-
/// `const Encoding*` representing that encoding. Otherwise panics.
99-
///
100-
/// The motivating use case for this function is interoperability with
101-
/// legacy Gecko code that represents encodings as name string instead of
102-
/// type-safe `Encoding` objects. Using this function for other purposes is
103-
/// most likely the wrong thing to do.
104-
///
105-
/// `name` must be non-`NULL` even if `name_len` is zero. When `name_len`
106-
/// is zero, it is OK for `name` to be something non-dereferencable,
107-
/// such as `0x1`. This is required due to Rust's optimization for slices
108-
/// within `Option`.
109-
///
110-
/// # Panics
111-
///
112-
/// Panics if the argument is not the name of an encoding.
113-
///
114-
/// # Undefined behavior
115-
///
116-
/// UB ensues if `name` and `name_len` don't designate a valid memory block
117-
/// of if `name` is `NULL`.
118-
#[no_mangle]
119-
pub unsafe extern "C" fn mozilla_encoding_for_name(name: *const u8, name_len: usize) -> *const Encoding {
120-
let name_slice = ::std::slice::from_raw_parts(name, name_len);
121-
encoding_for_name(name_slice)
122-
}
123-
124-
/// If the argument matches exactly (case-sensitively; no whitespace
125-
/// removal performed) the name of an encoding, returns
126-
/// `&'static Encoding` representing that encoding. Otherwise panics.
127-
///
128-
/// The motivating use case for this method is interoperability with
129-
/// legacy Gecko code that represents encodings as name string instead of
130-
/// type-safe `Encoding` objects. Using this method for other purposes is
131-
/// most likely the wrong thing to do.
132-
///
133-
/// Available via the C wrapper.
134-
///
135-
/// # Panics
136-
///
137-
/// Panics if the argument is not the name of an encoding.
138-
#[cfg_attr(feature = "cargo-clippy", allow(match_wild_err_arm))]
139-
pub fn encoding_for_name(name: &[u8]) -> &'static Encoding {
140-
// The length of `"UTF-8"` is unique, so it's easy to check the most
141-
// common case first.
142-
if name.len() == 5 {
143-
assert_eq!(name, b"UTF-8", "Bogus encoding name");
144-
return UTF_8;
145-
}
146-
match ENCODINGS_SORTED_BY_NAME.binary_search_by(
147-
|probe| {
148-
let bytes = probe.name().as_bytes();
149-
let c = bytes.len().cmp(&name.len());
150-
if c != Ordering::Equal {
151-
return c;
152-
}
153-
let probe_iter = bytes.iter().rev();
154-
let candidate_iter = name.iter().rev();
155-
probe_iter.cmp(candidate_iter)
156-
}
157-
) {
158-
Ok(i) => ENCODINGS_SORTED_BY_NAME[i],
159-
Err(_) => panic!("Bogus encoding name"),
160-
}
161-
}
162-
16355
#[no_mangle]
16456
pub unsafe extern "C" fn mozilla_encoding_decode_to_nsstring(encoding: *mut *const Encoding,
16557
src: *const u8,

intl/gtest/TestEncoding.cpp

Lines changed: 0 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -25,105 +25,6 @@ ENCODING_TEST(ForLabel)
2525
ASSERT_EQ(Encoding::ForLabel(label), EUC_JP_ENCODING);
2626
}
2727

28-
ENCODING_TEST(ForName)
29-
{
30-
nsAutoCString encoding("GBK");
31-
ASSERT_EQ(Encoding::ForName(encoding), GBK_ENCODING);
32-
encoding.AssignLiteral("Big5");
33-
ASSERT_EQ(Encoding::ForName(encoding), BIG5_ENCODING);
34-
encoding.AssignLiteral("UTF-8");
35-
ASSERT_EQ(Encoding::ForName(encoding), UTF_8_ENCODING);
36-
encoding.AssignLiteral("IBM866");
37-
ASSERT_EQ(Encoding::ForName(encoding), IBM866_ENCODING);
38-
encoding.AssignLiteral("EUC-JP");
39-
ASSERT_EQ(Encoding::ForName(encoding), EUC_JP_ENCODING);
40-
encoding.AssignLiteral("KOI8-R");
41-
ASSERT_EQ(Encoding::ForName(encoding), KOI8_R_ENCODING);
42-
encoding.AssignLiteral("EUC-KR");
43-
ASSERT_EQ(Encoding::ForName(encoding), EUC_KR_ENCODING);
44-
encoding.AssignLiteral("KOI8-U");
45-
ASSERT_EQ(Encoding::ForName(encoding), KOI8_U_ENCODING);
46-
encoding.AssignLiteral("gb18030");
47-
ASSERT_EQ(Encoding::ForName(encoding), GB18030_ENCODING);
48-
encoding.AssignLiteral("UTF-16BE");
49-
ASSERT_EQ(Encoding::ForName(encoding), UTF_16BE_ENCODING);
50-
encoding.AssignLiteral("UTF-16LE");
51-
ASSERT_EQ(Encoding::ForName(encoding), UTF_16LE_ENCODING);
52-
encoding.AssignLiteral("Shift_JIS");
53-
ASSERT_EQ(Encoding::ForName(encoding), SHIFT_JIS_ENCODING);
54-
encoding.AssignLiteral("macintosh");
55-
ASSERT_EQ(Encoding::ForName(encoding), MACINTOSH_ENCODING);
56-
encoding.AssignLiteral("ISO-8859-2");
57-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_2_ENCODING);
58-
encoding.AssignLiteral("ISO-8859-3");
59-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_3_ENCODING);
60-
encoding.AssignLiteral("ISO-8859-4");
61-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_4_ENCODING);
62-
encoding.AssignLiteral("ISO-8859-5");
63-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_5_ENCODING);
64-
encoding.AssignLiteral("ISO-8859-6");
65-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_6_ENCODING);
66-
encoding.AssignLiteral("ISO-8859-7");
67-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_7_ENCODING);
68-
encoding.AssignLiteral("ISO-8859-8");
69-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_8_ENCODING);
70-
encoding.AssignLiteral("ISO-8859-10");
71-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_10_ENCODING);
72-
encoding.AssignLiteral("ISO-8859-13");
73-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_13_ENCODING);
74-
encoding.AssignLiteral("ISO-8859-14");
75-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_14_ENCODING);
76-
encoding.AssignLiteral("windows-874");
77-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_874_ENCODING);
78-
encoding.AssignLiteral("ISO-8859-15");
79-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_15_ENCODING);
80-
encoding.AssignLiteral("ISO-8859-16");
81-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_16_ENCODING);
82-
encoding.AssignLiteral("ISO-2022-JP");
83-
ASSERT_EQ(Encoding::ForName(encoding), ISO_2022_JP_ENCODING);
84-
encoding.AssignLiteral("replacement");
85-
ASSERT_EQ(Encoding::ForName(encoding), REPLACEMENT_ENCODING);
86-
encoding.AssignLiteral("windows-1250");
87-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1250_ENCODING);
88-
encoding.AssignLiteral("windows-1251");
89-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1251_ENCODING);
90-
encoding.AssignLiteral("windows-1252");
91-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1252_ENCODING);
92-
encoding.AssignLiteral("windows-1253");
93-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1253_ENCODING);
94-
encoding.AssignLiteral("windows-1254");
95-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1254_ENCODING);
96-
encoding.AssignLiteral("windows-1255");
97-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1255_ENCODING);
98-
encoding.AssignLiteral("windows-1256");
99-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1256_ENCODING);
100-
encoding.AssignLiteral("windows-1257");
101-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1257_ENCODING);
102-
encoding.AssignLiteral("windows-1258");
103-
ASSERT_EQ(Encoding::ForName(encoding), WINDOWS_1258_ENCODING);
104-
encoding.AssignLiteral("ISO-8859-8-I");
105-
ASSERT_EQ(Encoding::ForName(encoding), ISO_8859_8_I_ENCODING);
106-
encoding.AssignLiteral("x-mac-cyrillic");
107-
ASSERT_EQ(Encoding::ForName(encoding), X_MAC_CYRILLIC_ENCODING);
108-
encoding.AssignLiteral("x-user-defined");
109-
ASSERT_EQ(Encoding::ForName(encoding), X_USER_DEFINED_ENCODING);
110-
}
111-
112-
// Test disabled pending bug 1393711
113-
#if 0
114-
ENCODING_TEST(BogusName)
115-
{
116-
nsAutoCString encoding("utf-8");
117-
ASSERT_DEATH_IF_SUPPORTED(Encoding::ForName(encoding), "Bogus encoding name");
118-
encoding.AssignLiteral("ISO-8859-1");
119-
ASSERT_DEATH_IF_SUPPORTED(Encoding::ForName(encoding), "Bogus encoding name");
120-
encoding.AssignLiteral("gbk");
121-
ASSERT_DEATH_IF_SUPPORTED(Encoding::ForName(encoding), "Bogus encoding name");
122-
encoding.AssignLiteral(" UTF-8 ");
123-
ASSERT_DEATH_IF_SUPPORTED(Encoding::ForName(encoding), "Bogus encoding name");
124-
}
125-
#endif
126-
12728
ENCODING_TEST(ForBOM)
12829
{
12930
nsAutoCString data("\xEF\xBB\xBF\x61");

0 commit comments

Comments
 (0)