script: Make root_from_handle_value a safe function by accepting SafeJSContext (#39193)

Change from unsafe pointer of root_from_handle_value  to SafeJSContext. 

#39131

---------

Signed-off-by: JasonHonKL <j2004nol@gmail.com>
Signed-off-by: Jason <jason@198-61-252-113-on-nets.com>
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Jason <jason@198-61-252-113-on-nets.com>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
JasonHonKL 2025-09-09 12:26:02 -07:00 committed by GitHub
parent 721fc01c30
commit 839878c743
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 48 additions and 51 deletions

View file

@ -295,70 +295,57 @@ pub(crate) fn evaluate_key_path_on_value(
// If value is a Blob and identifier is "size"
if identifier == "size" {
unsafe {
if let Ok(blob) = root_from_handlevalue::<Blob>(current_value.handle(), *cx)
{
// Let value be a Number equal to values size.
blob.Size().safe_to_jsval(cx, current_value.handle_mut());
if let Ok(blob) = root_from_handlevalue::<Blob>(current_value.handle(), cx) {
// Let value be a Number equal to values size.
blob.Size().safe_to_jsval(cx, current_value.handle_mut());
continue;
}
continue;
}
}
// If value is a Blob and identifier is "type"
if identifier == "type" {
unsafe {
if let Ok(blob) = root_from_handlevalue::<Blob>(current_value.handle(), *cx)
{
// Let value be a String equal to values type.
blob.Type().safe_to_jsval(cx, current_value.handle_mut());
if let Ok(blob) = root_from_handlevalue::<Blob>(current_value.handle(), cx) {
// Let value be a String equal to values type.
blob.Type().safe_to_jsval(cx, current_value.handle_mut());
continue;
}
continue;
}
}
// If value is a File and identifier is "name"
if identifier == "name" {
unsafe {
if let Ok(file) = root_from_handlevalue::<File>(current_value.handle(), *cx)
{
// Let value be a String equal to values name.
file.name().safe_to_jsval(cx, current_value.handle_mut());
if let Ok(file) = root_from_handlevalue::<File>(current_value.handle(), cx) {
// Let value be a String equal to values name.
file.name().safe_to_jsval(cx, current_value.handle_mut());
continue;
}
continue;
}
}
// If value is a File and identifier is "lastModified"
if identifier == "lastModified" {
unsafe {
if let Ok(file) = root_from_handlevalue::<File>(current_value.handle(), *cx)
{
// Let value be a Number equal to values lastModified.
file.LastModified()
.safe_to_jsval(cx, current_value.handle_mut());
if let Ok(file) = root_from_handlevalue::<File>(current_value.handle(), cx) {
// Let value be a Number equal to values lastModified.
file.LastModified()
.safe_to_jsval(cx, current_value.handle_mut());
continue;
}
continue;
}
}
// If value is a File and identifier is "lastModifiedDate"
if identifier == "lastModifiedDate" {
unsafe {
if let Ok(file) = root_from_handlevalue::<File>(current_value.handle(), *cx)
{
// Let value be a new Date object with [[DateValue]] internal slot equal to values lastModified.
let time = ClippedTime {
t: file.LastModified() as f64,
};
if let Ok(file) = root_from_handlevalue::<File>(current_value.handle(), cx) {
// Let value be a new Date object with [[DateValue]] internal slot equal to values lastModified.
let time = ClippedTime {
t: file.LastModified() as f64,
};
unsafe {
NewDateObject(*cx, time).safe_to_jsval(cx, current_value.handle_mut());
continue;
}
continue;
}
}