diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-12-10 16:19:40 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-12-10 16:01:50 +0000 |
commit | 51f6c2793adab2d864b3d2b360000ef8db1d3e92 (patch) | |
tree | 835b3b4446b012c75e80177cef9fbe6972cc7dbe /chromium/v8/src/objects/js-date-time-format.h | |
parent | 6036726eb981b6c4b42047513b9d3f4ac865daac (diff) | |
download | qtwebengine-chromium-51f6c2793adab2d864b3d2b360000ef8db1d3e92.tar.gz |
BASELINE: Update Chromium to 71.0.3578.93
Change-Id: I6a32086c33670e1b033f8b10e6bf1fd4da1d105d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/v8/src/objects/js-date-time-format.h')
-rw-r--r-- | chromium/v8/src/objects/js-date-time-format.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/chromium/v8/src/objects/js-date-time-format.h b/chromium/v8/src/objects/js-date-time-format.h new file mode 100644 index 00000000000..ae2aa36a97d --- /dev/null +++ b/chromium/v8/src/objects/js-date-time-format.h @@ -0,0 +1,100 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef V8_INTL_SUPPORT +#error Internationalization is expected to be enabled. +#endif // V8_INTL_SUPPORT + +#ifndef V8_OBJECTS_JS_DATE_TIME_FORMAT_H_ +#define V8_OBJECTS_JS_DATE_TIME_FORMAT_H_ + +#include "src/isolate.h" +#include "src/objects/managed.h" + +// Has to be the last include (doesn't have include guards): +#include "src/objects/object-macros.h" + +namespace U_ICU_NAMESPACE { +class Locale; +class SimpleDateFormat; +} + +namespace v8 { +namespace internal { + +class JSDateTimeFormat : public JSObject { + public: + V8_WARN_UNUSED_RESULT static MaybeHandle<JSDateTimeFormat> Initialize( + Isolate* isolate, Handle<JSDateTimeFormat> date_time_format, + Handle<Object> locales, Handle<Object> options); + + V8_WARN_UNUSED_RESULT static MaybeHandle<JSObject> ResolvedOptions( + Isolate* isolate, Handle<JSDateTimeFormat> date_time_format); + + // ecma402/#sec-unwrapdatetimeformat + V8_WARN_UNUSED_RESULT static MaybeHandle<JSDateTimeFormat> + UnwrapDateTimeFormat(Isolate* isolate, Handle<JSReceiver> format_holder); + + // Convert the options to ICU DateTimePatternGenerator skeleton. + static Maybe<std::string> OptionsToSkeleton(Isolate* isolate, + Handle<JSReceiver> options); + + // Return the time zone id which match ICU's expectation of title casing + // return empty string when error. + static std::string CanonicalizeTimeZoneID(Isolate* isolate, + const std::string& input); + + // ecma402/#sec-datetime-format-functions + // DateTime Format Functions + V8_WARN_UNUSED_RESULT static MaybeHandle<String> DateTimeFormat( + Isolate* isolate, Handle<JSDateTimeFormat> date_time_format, + Handle<Object> date); + + V8_WARN_UNUSED_RESULT static MaybeHandle<Object> FormatToParts( + Isolate* isolate, Handle<JSDateTimeFormat> date_time_format, + double date_value); + + // ecma-402/#sec-todatetimeoptions + enum class RequiredOption { kDate, kTime, kAny }; + enum class DefaultsOption { kDate, kTime, kAll }; + V8_WARN_UNUSED_RESULT static MaybeHandle<JSObject> ToDateTimeOptions( + Isolate* isolate, Handle<Object> input_options, RequiredOption required, + DefaultsOption defaults); + + V8_WARN_UNUSED_RESULT static MaybeHandle<String> ToLocaleDateTime( + Isolate* isolate, Handle<Object> date, Handle<Object> locales, + Handle<Object> options, RequiredOption required, DefaultsOption defaults, + const char* service); + + DECL_CAST(JSDateTimeFormat) + +// Layout description. +#define JS_DATE_TIME_FORMAT_FIELDS(V) \ + V(kICULocaleOffset, kPointerSize) \ + V(kICUSimpleDateFormatOffset, kPointerSize) \ + V(kBoundFormatOffset, kPointerSize) \ + /* Total size. */ \ + V(kSize, 0) + + DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, + JS_DATE_TIME_FORMAT_FIELDS) +#undef JS_DATE_TIME_FORMAT_FIELDS + + DECL_ACCESSORS(icu_locale, Managed<icu::Locale>) + DECL_ACCESSORS(icu_simple_date_format, Managed<icu::SimpleDateFormat>) + DECL_ACCESSORS(bound_format, Object) + + DECL_PRINTER(JSDateTimeFormat) + DECL_VERIFIER(JSDateTimeFormat) + + private: + DISALLOW_IMPLICIT_CONSTRUCTORS(JSDateTimeFormat); +}; + +} // namespace internal +} // namespace v8 + +#include "src/objects/object-macros-undef.h" + +#endif // V8_OBJECTS_JS_DATE_TIME_FORMAT_H_ |