blob: 5b8e5a20dabc3961c45741767315ee717fa5effe [file] [log] [blame]
// Copyright 2017 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_BASE_TIMEZONE_CACHE_H_
#define V8_BASE_TIMEZONE_CACHE_H_
namespace v8 {
namespace base {
class TimezoneCache {
public:
// Short name of the local timezone (e.g., EST)
virtual const char* LocalTimezone(double time_ms) = 0;
// ES #sec-daylight-saving-time-adjustment
// Daylight Saving Time Adjustment
virtual double DaylightSavingsOffset(double time_ms) = 0;
// ES #sec-local-time-zone-adjustment
// Local Time Zone Adjustment
//
// https://github.com/tc39/ecma262/pull/778
virtual double LocalTimeOffset(double time_ms, bool is_utc) = 0;
/**
* Time zone redetection indicator for Clear function.
*
* kSkip indicates host time zone doesn't have to be redetected.
* kRedetect indicates host time zone should be redetected, and used to set
* the default time zone.
*
* The host time zone detection may require file system access or similar
* operations unlikely to be available inside a sandbox. If v8 is run inside a
* sandbox, the host time zone has to be detected outside the sandbox
* separately.
*/
enum class TimeZoneDetection { kSkip, kRedetect };
// Called when the local timezone changes
virtual void Clear(TimeZoneDetection time_zone_detection) = 0;
// Called when tearing down the isolate
virtual ~TimezoneCache() = default;
};
} // namespace base
} // namespace v8
#endif // V8_BASE_TIMEZONE_CACHE_H_