Add CefBaseTime and use it instead of CefTime (see issue #2935)

This commit is contained in:
Dmitry Azaraev
2022-05-31 23:28:43 +03:00
committed by Marshall Greenblatt
parent 987b932a19
commit 27d3089804
58 changed files with 502 additions and 228 deletions

View File

@@ -1284,7 +1284,7 @@ CefRefPtr<CefV8Value> CefV8Value::CreateDouble(double value) {
}
// static
CefRefPtr<CefV8Value> CefV8Value::CreateDate(const CefTime& value) {
CefRefPtr<CefV8Value> CefV8Value::CreateDate(CefBaseTime value) {
CEF_V8_REQUIRE_ISOLATE_RETURN(nullptr);
v8::Isolate* isolate = GetIsolateManager()->isolate();
CefRefPtr<CefV8ValueImpl> impl = new CefV8ValueImpl(isolate);
@@ -1522,8 +1522,8 @@ void CefV8ValueImpl::InitFromV8Value(v8::Local<v8::Context> context,
InitDouble(value->ToNumber(context).ToLocalChecked()->Value());
} else if (value->IsDate()) {
// Convert from milliseconds to seconds.
InitDate(
CefTime(value->ToNumber(context).ToLocalChecked()->Value() / 1000));
InitDate(base::Time::FromJsTime(
value->ToNumber(context).ToLocalChecked()->Value()));
} else if (value->IsString()) {
CefString rv;
GetCefString(context->GetIsolate(),
@@ -1568,7 +1568,7 @@ void CefV8ValueImpl::InitDouble(double value) {
double_value_ = value;
}
void CefV8ValueImpl::InitDate(const CefTime& value) {
void CefV8ValueImpl::InitDate(CefBaseTime value) {
DCHECK_EQ(type_, TYPE_INVALID);
type_ = TYPE_DATE;
date_value_ = value;
@@ -1614,7 +1614,8 @@ v8::Local<v8::Value> CefV8ValueImpl::GetV8Value(bool should_persist) {
case TYPE_DATE:
// Convert from seconds to milliseconds.
return v8::Date::New(isolate_->GetCurrentContext(),
CefTime(date_value_).GetDoubleT() * 1000)
static_cast<base::Time>(CefBaseTime(date_value_))
.ToJsTimeIgnoringNull())
.ToLocalChecked();
case TYPE_STRING:
return GetV8String(isolate_, CefString(&string_value_));
@@ -1732,8 +1733,7 @@ bool CefV8ValueImpl::IsSame(CefRefPtr<CefV8Value> that) {
case TYPE_DOUBLE:
return (double_value_ == thatValue->double_value_);
case TYPE_DATE:
return (CefTime(date_value_).GetTimeT() ==
CefTime(thatValue->date_value_).GetTimeT());
return (date_value_.val == thatValue->date_value_.val);
case TYPE_STRING:
return (CefString(&string_value_) ==
CefString(&thatValue->string_value_));
@@ -1780,11 +1780,11 @@ double CefV8ValueImpl::GetDoubleValue() {
return 0.;
}
CefTime CefV8ValueImpl::GetDateValue() {
CEF_V8_REQUIRE_ISOLATE_RETURN(CefTime(0.));
CefBaseTime CefV8ValueImpl::GetDateValue() {
CEF_V8_REQUIRE_ISOLATE_RETURN(CefBaseTime());
if (type_ == TYPE_DATE)
return date_value_;
return CefTime(0.);
return CefBaseTime();
}
CefString CefV8ValueImpl::GetStringValue() {

View File

@@ -216,7 +216,7 @@ class CefV8ValueImpl : public CefV8Value {
void InitInt(int32 value);
void InitUInt(uint32 value);
void InitDouble(double value);
void InitDate(const CefTime& value);
void InitDate(CefBaseTime value);
void InitString(CefString& value);
void InitObject(v8::Local<v8::Value> value, CefTrackNode* tracker);
@@ -242,7 +242,7 @@ class CefV8ValueImpl : public CefV8Value {
int32 GetIntValue() override;
uint32 GetUIntValue() override;
double GetDoubleValue() override;
CefTime GetDateValue() override;
CefBaseTime GetDateValue() override;
CefString GetStringValue() override;
bool IsUserCreated() override;
bool HasException() override;
@@ -346,7 +346,7 @@ class CefV8ValueImpl : public CefV8Value {
int32 int_value_;
uint32 uint_value_;
double double_value_;
cef_time_t date_value_;
cef_basetime_t date_value_;
cef_string_t string_value_;
};