Calendar Picker: Localize numbers in a calendar picker
authortkent@chromium.org <tkent@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Aug 2012 03:54:03 +0000 (03:54 +0000)
committertkent@chromium.org <tkent@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Aug 2012 03:54:03 +0000 (03:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=93704

Reviewed by Hajime Morita.

.:

* ManualTests/forms/calendar-picker.html:
Add a mock pagePopupController.localizeNumberString().

Source/WebCore:

Because Number.toLocaleString() of V8 returns no localized
numbers, we provide a localization function via
PagePopupController.

No new tests. We have no ways to change the locale in layout tests.

* Resources/pagepopups/calendarPicker.js:
(localizeNumber): Added. A wrapper for pagePopupController.localizeNumberString().
(formatJapaneseImperialEra): Use localizeNumber().
(formatYearMonth): ditto.
(DaysTable.prototype._renderMonth): ditto.
* page/PagePopupController.cpp:
(WebCore::PagePopupController::localizeNumberString):
Added. Just calls WebCore::convertToLocalizedNumber().
* page/PagePopupController.h:
(PagePopupController): Declare localizeNumberString().
* page/PagePopupController.idl: Add localizeNumberString().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@125741 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
ManualTests/forms/calendar-picker.html
Source/WebCore/ChangeLog
Source/WebCore/Resources/pagepopups/calendarPicker.js
Source/WebCore/page/PagePopupController.cpp
Source/WebCore/page/PagePopupController.h
Source/WebCore/page/PagePopupController.idl

index 5d74235..4f975c5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-08-15  Kent Tamura  <tkent@chromium.org>
+
+        Calendar Picker: Localize numbers in a calendar picker
+        https://bugs.webkit.org/show_bug.cgi?id=93704
+
+        Reviewed by Hajime Morita.
+
+        * ManualTests/forms/calendar-picker.html:
+        Add a mock pagePopupController.localizeNumberString().
+
 2012-08-15  Ryosuke Niwa  <rniwa@webkit.org>
 
         Update manual tests and comments to refer to TestRunner instead of LayoutTestController
index d212a78..438eb6f 100644 (file)
@@ -93,6 +93,11 @@ function openCalendar(args) {
             window.log('number=' + numValue + ', string="' + stringValue + '"');
             if (numValue == 0)
                 window.document.getElementById('date').value = stringValue;
+        },
+        localizeNumberString: function(numString) {
+            if (typeof numString == "number")
+                return numString.toLocaleString();
+            return numString.toString();
         }
     }
 
index d852031..607dd69 100644 (file)
@@ -1,3 +1,28 @@
+2012-08-15  Kent Tamura  <tkent@chromium.org>
+
+        Calendar Picker: Localize numbers in a calendar picker
+        https://bugs.webkit.org/show_bug.cgi?id=93704
+
+        Reviewed by Hajime Morita.
+
+        Because Number.toLocaleString() of V8 returns no localized
+        numbers, we provide a localization function via
+        PagePopupController.
+
+        No new tests. We have no ways to change the locale in layout tests.
+
+        * Resources/pagepopups/calendarPicker.js:
+        (localizeNumber): Added. A wrapper for pagePopupController.localizeNumberString().
+        (formatJapaneseImperialEra): Use localizeNumber().
+        (formatYearMonth): ditto.
+        (DaysTable.prototype._renderMonth): ditto.
+        * page/PagePopupController.cpp:
+        (WebCore::PagePopupController::localizeNumberString):
+        Added. Just calls WebCore::convertToLocalizedNumber().
+        * page/PagePopupController.h:
+        (PagePopupController): Declare localizeNumberString().
+        * page/PagePopupController.idl: Add localizeNumberString().
+
 2012-08-15  MORITA Hajime  <morrita@google.com>
 
         Regression(121518) TextFieldDecorationElement formatting is broken.
index ccc4b8d..4ace4d3 100644 (file)
@@ -97,6 +97,14 @@ function getLanguage() {
     return result[1];
 }
 
+/**
+ * @param {!number} number
+ * @return {!string}
+ */
+function localizeNumber(number) {
+    return window.pagePopupController.localizeNumberString(number);
+}
+
 /*
  * @const
  * @type {number}
@@ -114,17 +122,17 @@ function formatJapaneseImperialEra(year, month) {
     if (year > ImperialEraLimit)
         return "";
     if (year > 1989)
-        return "(平成" + (year - 1988) + "年)";
+        return "(平成" + localizeNumber(year - 1988) + "年)";
     if (year == 1989)
         return "(平成元年)";
     if (year >= 1927)
-        return "(昭和" + (year - 1925) + "年)";
+        return "(昭和" + localizeNumber(year - 1925) + "年)";
     if (year > 1912)
-        return "(大正" + (year - 1911) + "年)";
+        return "(大正" + localizeNumber(year - 1911) + "年)";
     if (year == 1912 && month >= 7)
         return "(大正元年)";
     if (year > 1868)
-        return "(明治" + (year - 1867) + "年)";
+        return "(明治" + localizeNumber(year - 1867) + "年)";
     if (year == 1868)
         return "(明治元年)";
     return "";
@@ -136,8 +144,7 @@ function formatJapaneseImperialEra(year, month) {
  * @return {!string}
  */
 function formatYearMonth(year, month) {
-    // FIXME: Need localized number?
-    var yearString = String(year);
+    var yearString = localizeNumber(year);
     var monthString = global.params.monthLabels[month];
     switch (getLanguage()) {
     case "eu":
@@ -857,8 +864,7 @@ DaysTable.prototype._renderMonth = function(year, month) {
             var iterMonth = dayIterator.getUTCMonth();
             var time = dayIterator.getTime();
             var element = this._days[w][d];
-            // FIXME: Need localized number?
-            element.innerText = String(dayIterator.getUTCDate());
+            element.innerText = localizeNumber(dayIterator.getUTCDate());
             element.className = ClassNames.Day;
             element.dataset.submitValue = serializeDate(iterYear, iterMonth, dayIterator.getUTCDate());
             if (outOfRange(time))
index 824f6df..8ee3653 100644 (file)
@@ -32,6 +32,7 @@
 #include "PagePopupController.h"
 
 #if ENABLE(PAGE_POPUP)
+#include "LocalizedNumber.h"
 #include "PagePopupClient.h"
 
 namespace WebCore {
@@ -52,5 +53,10 @@ void PagePopupController::setValueAndClosePopup(int numValue, const String& stri
     m_popupClient->setValueAndClosePopup(numValue, stringValue);
 }
 
+String PagePopupController::localizeNumberString(const String& numberString)
+{
+    return convertToLocalizedNumber(numberString);
+}
+
 }
 #endif
index 1ec7287..d0dd5c1 100644 (file)
@@ -44,6 +44,7 @@ class PagePopupController : public RefCounted<PagePopupController> {
 public:
     static PassRefPtr<PagePopupController> create(PagePopupClient*);
     void setValueAndClosePopup(int numValue, const String& stringValue);
+    String localizeNumberString(const String&);
 
 private:
     explicit PagePopupController(PagePopupClient*);
index 6e0a49d..d0669ef 100644 (file)
@@ -33,5 +33,6 @@ module window {
         Conditional=PAGE_POPUP
     ] PagePopupController {
         void setValueAndClosePopup(in long numberValue, in DOMString stringValue);
+        DOMString localizeNumberString(in DOMString numberString);
     };
 }