Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4384)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/CurrencyStringFormatter.java

Issue 2246923006: Show no fractions for JPY currency. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/android/junit/src/org/chromium/chrome/browser/payments/CurrencyStringFormatterTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/payments/CurrencyStringFormatter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/CurrencyStringFormatter.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/CurrencyStringFormatter.java
index 9a8eb409f93444fa77323776d246dd071df90d54..524d852de5ba0adf1f2b8ffb244449073a877a03 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/CurrencyStringFormatter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/CurrencyStringFormatter.java
@@ -36,13 +36,20 @@ public class CurrencyStringFormatter {
private final String mCurrencySymbol;
/**
+ * The number of digits after the decimal separator for the currency specified on the bill. For
+ * example, 2 for "USD" and 0 for "JPY".
+ */
+ private final int mDefaultFractionDigits;
+
+ /**
* The number grouping separator for the current locale. For example, "," in US. 3-digit groups
* are assumed.
*/
private final char mGroupingSeparator;
/**
- * The decimal separator for the current locale. For example, "." in US and "," in France.
+ * The monetary decimal separator for the current locale. For example, "." in US and "," in
+ * France.
*/
private final char mMonetaryDecimalSeparator;
@@ -62,13 +69,17 @@ public class CurrencyStringFormatter {
mAmountCurrencyCodePattern = Pattern.compile(AMOUNT_CURRENCY_CODE_PATTERN);
String currencySymbol;
+ int defaultFractionDigits;
try {
- currencySymbol = Currency.getInstance(currencyCode).getSymbol();
+ Currency currency = Currency.getInstance(currencyCode);
+ currencySymbol = currency.getSymbol();
+ defaultFractionDigits = currency.getDefaultFractionDigits();
} catch (IllegalArgumentException e) {
// The spec does not limit the currencies to official ISO 4217 currency code list, which
// is used by java.util.Currency. For example, "BTX" (bitcoin) is not an official ISO
// 4217 currency code, but is allowed by the spec.
currencySymbol = currencyCode;
+ defaultFractionDigits = 0;
}
// If the currency symobl is the same as the currency code, do not display it as part of the
@@ -76,6 +87,8 @@ public class CurrencyStringFormatter {
// information.
mCurrencySymbol = currencySymbol.equals(currencyCode) ? "" : currencySymbol;
+ mDefaultFractionDigits = defaultFractionDigits;
+
// Use the symbols from user's current locale. For example, use "," for decimal separator in
// France, even if paying in "USD".
DecimalFormatSymbols symbols = new DecimalFormatSymbols(userLocale);
@@ -132,17 +145,16 @@ public class CurrencyStringFormatter {
result.insert(i, mGroupingSeparator);
}
- result.append(mMonetaryDecimalSeparator);
-
String decimals = m.group(DIGITS_AFTER_PERIOD_GROUP);
- int numberOfDecimals = 0;
- if (decimals != null) {
- numberOfDecimals = decimals.length();
- result.append(decimals);
- }
+ int numberOfDecimals = decimals == null ? 0 : decimals.length();
+
+ if (numberOfDecimals > 0 || mDefaultFractionDigits > 0) {
+ result.append(mMonetaryDecimalSeparator);
+ if (null != decimals) result.append(decimals);
- for (int i = numberOfDecimals; i < 2; i++) {
- result.append("0");
+ for (int i = numberOfDecimals; i < mDefaultFractionDigits; i++) {
+ result.append("0");
+ }
}
return result.toString();
« no previous file with comments | « no previous file | chrome/android/junit/src/org/chromium/chrome/browser/payments/CurrencyStringFormatterTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698