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

Unified Diff: src/js/i18n.js

Issue 1973183002: Override Date.prototype.to*String with Intl.DateTimeFormat.format Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebased Created 3 years, 11 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 | src/runtime/runtime-i18n.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/js/i18n.js
diff --git a/src/js/i18n.js b/src/js/i18n.js
index 18d13db9a2c2f96e88f2c96305486ec7cb933cc9..92c9a80a0b7b5ed4264738e2c7f5001f97a4b1ba 100644
--- a/src/js/i18n.js
+++ b/src/js/i18n.js
@@ -1959,7 +1959,10 @@ var savedObjects = {
'numberformat': GlobalIntlNumberFormat,
'dateformatall': GlobalIntlDateTimeFormat,
'dateformatdate': GlobalIntlDateTimeFormat,
- 'dateformattime': GlobalIntlDateTimeFormat
+ 'dateformattime': GlobalIntlDateTimeFormat,
+ 'datetostring': GlobalIntlDateTimeFormat,
+ 'datetodatestring': GlobalIntlDateTimeFormat,
+ 'datetotimestring': GlobalIntlDateTimeFormat,
};
@@ -1971,12 +1974,18 @@ var defaultObjects = {
'dateformatall': UNDEFINED,
'dateformatdate': UNDEFINED,
'dateformattime': UNDEFINED,
+ 'datetostring': UNDEFINED,
+ 'datetodatestring': UNDEFINED,
+ 'datetotimestring': UNDEFINED,
};
function clearDefaultObjects() {
defaultObjects['dateformatall'] = UNDEFINED;
defaultObjects['dateformatdate'] = UNDEFINED;
defaultObjects['dateformattime'] = UNDEFINED;
+ defaultObjects['datetostring'] = UNDEFINED;
+ defaultObjects['datetodatestring'] = UNDEFINED;
+ defaultObjects['datetotimestring'] = UNDEFINED;
}
var date_cache_version = 0;
@@ -1993,11 +2002,14 @@ function checkDateCacheCurrent() {
/**
* Returns cached or newly created instance of a given service.
- * We cache only default instances (where no locales or options are provided).
+ * We cache only default instances (where no locales or options are provided)
+ * or overrides of Date.prototype.to{,Date,Time}String for which useCached
+ * is defined.
*/
-function cachedOrNewService(service, locales, options, defaults) {
+function cachedOrNewService(service, locales, options, defaults, useCached) {
var useOptions = (IS_UNDEFINED(defaults)) ? options : defaults;
- if (IS_UNDEFINED(locales) && IS_UNDEFINED(options)) {
+ if (!IS_UNDEFINED(useCached) ||
+ (IS_UNDEFINED(locales) && IS_UNDEFINED(options))) {
checkDateCacheCurrent();
if (IS_UNDEFINED(defaultObjects[service])) {
defaultObjects[service] = new savedObjects[service](locales, useOptions);
@@ -2139,7 +2151,8 @@ OverrideFunction(GlobalNumber.prototype, 'toLocaleString', function() {
/**
* Returns actual formatted date or fails if date parameter is invalid.
*/
-function toLocaleDateTime(date, locales, options, required, defaults, service) {
+function toLocaleDateTime(date, locales, options, required, defaults, service,
+ useCached) {
if (!(date instanceof GlobalDate)) {
throw %make_type_error(kMethodInvokedOnWrongType, "Date");
}
@@ -2150,7 +2163,7 @@ function toLocaleDateTime(date, locales, options, required, defaults, service) {
var internalOptions = toDateTimeOptions(options, required, defaults);
var dateFormat =
- cachedOrNewService(service, locales, options, internalOptions);
+ cachedOrNewService(service, locales, options, internalOptions, useCached);
return formatDate(dateFormat, date);
}
@@ -2169,6 +2182,18 @@ OverrideFunction(GlobalDate.prototype, 'toLocaleString', function() {
}
);
+OverrideFunction(GlobalDate.prototype, 'toString', function() {
+ var options = {
+ weekday: "short", month: "short", year: "numeric", day: "2-digit",
+ hour: "2-digit", minute: "2-digit", second: "2-digit",
+ timeZoneName: "short", hour12: false,
+ };
+
+ return toLocaleDateTime(
+ this, "en-US", options, 'any', 'all', 'datetostring', true);
+ }
+);
+
/**
* Formats a Date object (this) using locale and options values.
@@ -2183,6 +2208,15 @@ OverrideFunction(GlobalDate.prototype, 'toLocaleDateString', function() {
}
);
+OverrideFunction(GlobalDate.prototype, 'toDateString', function() {
+ var options = { weekday: "short", month: "short", year: "numeric",
+ day: "2-digit",};
+
+ return toLocaleDateTime(
+ this, "en-US", options, 'date', 'date', 'datetodatestring', true);
+ }
+);
+
/**
* Formats a Date object (this) using locale and options values.
@@ -2198,9 +2232,17 @@ OverrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() {
);
%FunctionRemovePrototype(FormatDateToParts);
-
utils.Export(function(to) {
to.FormatDateToParts = FormatDateToParts;
});
+OverrideFunction(GlobalDate.prototype, 'toTimeString', function() {
+ var options = { hour: "2-digit", minute: "2-digit", second: "2-digit",
+ timeZoneName: "short", hour12: false};
+
+ return toLocaleDateTime(
+ this, "en-US", options, 'time', 'time', 'datetotimestring', true);
+ }
+);
+
})
« no previous file with comments | « no previous file | src/runtime/runtime-i18n.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698