Skip to content

Commit a8a5447

Browse files
committed
fix toString conversion
1 parent 499b672 commit a8a5447

2 files changed

Lines changed: 25 additions & 14 deletions

File tree

src/main/java/org/htmlunit/javascript/host/intl/Locale.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,7 @@ public static Scriptable jsConstructor(final Context cx, final Scriptable scope,
100100
throw JavaScriptEngine.typeError("Invalid element in locales argument");
101101
}
102102

103-
final String languageTag;
104-
if (args[0] instanceof Locale loc) {
105-
languageTag = loc.toString();
106-
}
107-
else {
108-
languageTag = JavaScriptEngine.toString(args[0]);
109-
}
103+
final String languageTag = JavaScriptEngine.toString(args[0]);
110104
if (languageTag.isEmpty()) {
111105
throw JavaScriptEngine.rangeError("Invalid language tag: ");
112106
}
@@ -123,8 +117,7 @@ public static Scriptable jsConstructor(final Context cx, final Scriptable scope,
123117

124118
// Override by options if present
125119
if (args.length > 1 && !JavaScriptEngine.isUndefined(args[1])) {
126-
locale = overrideExistingWithOptions(locale,
127-
ScriptableObject.ensureScriptableObject(args[1]));
120+
locale = overrideExistingWithOptions(locale, ScriptableObject.ensureScriptableObject(args[1]));
128121
}
129122

130123
final Locale l = new Locale(locale);
@@ -341,10 +334,21 @@ public Locale minimize() {
341334
* @return the locale's Unicode locale identifier string
342335
*/
343336
@JsxFunction(functionName = "toString")
344-
public String js_toString() {
337+
public String jsToString() {
345338
if (locale_ == null) {
346339
return super.toString();
347340
}
348341
return locale_.toLanguageTag();
349342
}
343+
344+
/**
345+
* {@inheritDoc}
346+
*/
347+
@Override
348+
public Object getDefaultValue(final Class<?> hint) {
349+
if (getPrototype() != null && (String.class.equals(hint) || hint == null)) {
350+
return jsToString();
351+
}
352+
return super.getDefaultValue(hint);
353+
}
350354
}

src/test/java/org/htmlunit/javascript/host/intl/LocaleTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,22 +230,28 @@ public void invalidOptions() throws Exception {
230230
*/
231231
@Test
232232
@Alerts({"ja-Jpan-JP-u-ca-japanese-hc-h12",
233+
"xja-Jpan-JP-u-ca-japanese-hc-h12",
233234
"ja-u-ca-japanese-hc-h12",
234235
"ja-Jpan-JP-u-ca-japanese-hc-h12",
235236
"ja-Jpan-JP"})
236-
@HtmlUnitNYI(CHROME = {"ja-Jpan-JP-u-ca-japanese-hc-h12",
237-
"ja-u-ca-japanese-hc-h12",
238-
"ja-JP-u-ca-japanese-hc-h12",
239-
"ja-Jpan-JP"},
237+
@HtmlUnitNYI(
238+
CHROME = {"ja-Jpan-JP-u-ca-japanese-hc-h12",
239+
"xja-Jpan-JP-u-ca-japanese-hc-h12",
240+
"ja-u-ca-japanese-hc-h12",
241+
"ja-JP-u-ca-japanese-hc-h12",
242+
"ja-Jpan-JP"},
240243
EDGE = {"ja-Jpan-JP-u-ca-japanese-hc-h12",
244+
"xja-Jpan-JP-u-ca-japanese-hc-h12",
241245
"ja-u-ca-japanese-hc-h12",
242246
"ja-JP-u-ca-japanese-hc-h12",
243247
"ja-Jpan-JP"},
244248
FF = {"ja-Jpan-JP-u-ca-japanese-hc-h12",
249+
"xja-Jpan-JP-u-ca-japanese-hc-h12",
245250
"ja-u-ca-japanese-hc-h12",
246251
"ja-JP-u-ca-japanese-hc-h12",
247252
"ja-Jpan-JP"},
248253
FF_ESR = {"ja-Jpan-JP-u-ca-japanese-hc-h12",
254+
"xja-Jpan-JP-u-ca-japanese-hc-h12",
249255
"ja-u-ca-japanese-hc-h12",
250256
"ja-JP-u-ca-japanese-hc-h12",
251257
"ja-Jpan-JP"})
@@ -257,6 +263,7 @@ public void minimizeMaximize() throws Exception {
257263
+ " function test() {\n"
258264
+ " var l = new Intl.Locale('ja-Jpan-JP-u-ca-japanese-hc-h12');\n"
259265
+ " log(l.toString());\n"
266+
+ " log('x' + l);\n"
260267
+ " log(l.minimize().toString());\n"
261268
+ " log(new Intl.Locale('ja-u-ca-japanese-hc-h12').maximize().toString());\n"
262269
+ " log(l.baseName);\n"

0 commit comments

Comments
 (0)