Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit 9bbe7f8

Browse files
committed
Add is_wasm and is_module options to V8\ScriptOriginOptions and V8\ScriptOrigin
1 parent aa27d85 commit 9bbe7f8

11 files changed

+190
-50
lines changed

src/php_v8_script_origin.cc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,28 @@ static PHP_METHOD(V8ScriptOrigin, __construct) {
145145
zend_long script_id = static_cast<zend_long>(v8::Message::kNoScriptIdInfo);
146146
zend_string *source_map_url = NULL;
147147
zend_bool resource_is_opaque = '\0';
148+
zend_bool is_wasm = '\0';
149+
zend_bool is_module = '\0';
148150

149151
zval options_zv;
150152

151-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|SllblSb",
153+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|SllblSbbb",
152154
&resource_name,
153155
&resource_line_offset,
154156
&resource_column_offset,
155157
&resource_is_shared_cross_origin,
156158
&script_id,
157159
&source_map_url,
158-
&resource_is_opaque) == FAILURE) {
160+
&resource_is_opaque,
161+
&is_wasm,
162+
&is_module) == FAILURE) {
159163
return;
160164
}
161165

162166
v8::ScriptOriginOptions options(static_cast<bool>(resource_is_shared_cross_origin),
163-
static_cast<bool>(resource_is_opaque));
167+
static_cast<bool>(resource_is_opaque),
168+
static_cast<bool>(is_wasm),
169+
static_cast<bool>(is_module));
164170

165171
php_v8_create_script_origin_options(&options_zv, options);
166172

src/php_v8_script_origin_options.cc

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,19 @@ void php_v8_create_script_origin_options(zval * return_value, v8::ScriptOriginOp
2626

2727
zend_update_property_bool(this_ce, return_value, ZEND_STRL("is_shared_cross_origin"), static_cast<zend_bool>(options.IsSharedCrossOrigin()));
2828
zend_update_property_bool(this_ce, return_value, ZEND_STRL("is_opaque"), static_cast<zend_bool>(options.IsOpaque()));
29+
zend_update_property_bool(this_ce, return_value, ZEND_STRL("is_wasm"), static_cast<zend_bool>(options.IsWasm()));
30+
zend_update_property_bool(this_ce, return_value, ZEND_STRL("is_module"), static_cast<zend_bool>(options.IsModule()));
2931
}
3032

3133

3234
static PHP_METHOD(V8ScriptOriginOptions, __construct) {
3335
zend_bool is_shared_cross_origin = '\0';
3436
zend_bool is_opaque = '\0';
37+
zend_bool is_wasm = '\0';
38+
zend_bool is_module = '\0';
3539

36-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|bb",
37-
&is_shared_cross_origin, &is_opaque) == FAILURE) {
40+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|bbbb",
41+
&is_shared_cross_origin, &is_opaque, &is_wasm, &is_module) == FAILURE) {
3842
return;
3943
}
4044

@@ -63,10 +67,32 @@ static PHP_METHOD(V8ScriptOriginOptions, IsOpaque) {
6367
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("is_opaque"), 0, &rv), 1, 0);
6468
}
6569

70+
static PHP_METHOD(V8ScriptOriginOptions, IsWasm) {
71+
zval rv;
72+
73+
if (zend_parse_parameters_none() == FAILURE) {
74+
return;
75+
}
76+
77+
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("is_wasm"), 0, &rv), 1, 0);
78+
}
79+
80+
static PHP_METHOD(V8ScriptOriginOptions, IsModule) {
81+
zval rv;
82+
83+
if (zend_parse_parameters_none() == FAILURE) {
84+
return;
85+
}
86+
87+
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("is_module"), 0, &rv), 1, 0);
88+
}
89+
6690

6791
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_script_origin_options___construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
6892
ZEND_ARG_TYPE_INFO(0, is_shared_cross_origin, _IS_BOOL, 0)
6993
ZEND_ARG_TYPE_INFO(0, is_opaque, _IS_BOOL, 0)
94+
ZEND_ARG_TYPE_INFO(0, is_wasm, _IS_BOOL, 0)
95+
ZEND_ARG_TYPE_INFO(0, is_module, _IS_BOOL, 0)
7096
ZEND_END_ARG_INFO()
7197

7298

@@ -76,12 +102,20 @@ ZEND_END_ARG_INFO()
76102
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_script_origin_options_IsOpaque, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
77103
ZEND_END_ARG_INFO()
78104

105+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_script_origin_options_IsWasm, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
106+
ZEND_END_ARG_INFO()
107+
108+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_script_origin_options_IsModule, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
109+
ZEND_END_ARG_INFO()
110+
79111

80112
static const zend_function_entry php_v8_script_origin_options_methods[] = {
81113
PHP_ME(V8ScriptOriginOptions, __construct, arginfo_v8_script_origin_options___construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
82114

83115
PHP_ME(V8ScriptOriginOptions, IsSharedCrossOrigin, arginfo_v8_script_origin_options_IsSharedCrossOrigin, ZEND_ACC_PUBLIC)
84116
PHP_ME(V8ScriptOriginOptions, IsOpaque, arginfo_v8_script_origin_options_IsOpaque, ZEND_ACC_PUBLIC)
117+
PHP_ME(V8ScriptOriginOptions, IsWasm, arginfo_v8_script_origin_options_IsWasm, ZEND_ACC_PUBLIC)
118+
PHP_ME(V8ScriptOriginOptions, IsModule, arginfo_v8_script_origin_options_IsModule, ZEND_ACC_PUBLIC)
85119

86120
PHP_FE_END
87121
};
@@ -94,6 +128,8 @@ PHP_MINIT_FUNCTION(php_v8_script_origin_options) {
94128

95129
zend_declare_property_bool(this_ce, ZEND_STRL("is_shared_cross_origin"), static_cast<zend_bool>(false), ZEND_ACC_PRIVATE);
96130
zend_declare_property_bool(this_ce, ZEND_STRL("is_opaque"), static_cast<zend_bool>(false), ZEND_ACC_PRIVATE);
131+
zend_declare_property_bool(this_ce, ZEND_STRL("is_wasm"), static_cast<zend_bool>(false), ZEND_ACC_PRIVATE);
132+
zend_declare_property_bool(this_ce, ZEND_STRL("is_module"), static_cast<zend_bool>(false), ZEND_ACC_PRIVATE);
97133

98134
return SUCCESS;
99135
}

stubs/src/ScriptOrigin.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,24 @@ class ScriptOrigin
5555
* @param int $script_id
5656
* @param string $source_map_url
5757
* @param bool $resource_is_opaque
58+
* @param bool $is_wasm
59+
* @param bool $is_module
5860
*/
5961
public function __construct(string $resource_name,
6062
int $resource_line_offset = Message::kNoLineNumberInfo,
6163
int $resource_column_offset = Message::kNoColumnInfo,
6264
bool $resource_is_shared_cross_origin = false,
6365
int $script_id = Message::kNoScriptIdInfo,
6466
string $source_map_url = '',
65-
bool $resource_is_opaque = false)
67+
bool $resource_is_opaque = false,
68+
bool $is_wasm = false,
69+
bool $is_module = false)
6670
{
6771
$this->resource_name = $resource_name;
6872
$this->resource_line_offset = $resource_line_offset;
6973
$this->resource_column_offset = $resource_column_offset;
7074

71-
$this->options = new ScriptOriginOptions($resource_is_shared_cross_origin, $resource_is_opaque);
75+
$this->options = new ScriptOriginOptions($resource_is_shared_cross_origin, $resource_is_opaque, $is_wasm, $is_module);
7276

7377
$this->script_id = $script_id;
7478
$this->source_map_url = $source_map_url;

stubs/src/ScriptOriginOptions.php

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,33 +22,69 @@
2222
class ScriptOriginOptions
2323
{
2424
/**
25-
* @var bool|bool
25+
* @var bool
2626
*/
2727
private $is_shared_cross_origin;
2828
/**
29-
* @var bool|bool
29+
* @var bool
3030
*/
3131
private $is_opaque;
32+
/**
33+
* @var bool
34+
*/
35+
private $is_wasm;
36+
/**
37+
* @var bool
38+
*/
39+
private $is_module;
3240

3341
/**
34-
* @param bool $is_embedder_debug_script
3542
* @param bool $is_shared_cross_origin
3643
* @param bool $is_opaque
44+
* @param bool $is_wasm
45+
* @param bool $is_module
3746
*/
3847
public function __construct(bool $is_shared_cross_origin = false,
39-
bool $is_opaque = false)
48+
bool $is_opaque = false,
49+
bool $is_wasm = false,
50+
bool $is_module = false
51+
)
4052
{
4153
$this->is_shared_cross_origin = $is_shared_cross_origin;
4254
$this->is_opaque = $is_opaque;
55+
$this->is_wasm = $is_wasm;
56+
$this->is_module = $is_module;
4357
}
4458

59+
/**
60+
* @return bool
61+
*/
4562
public function IsSharedCrossOrigin() : bool
4663
{
4764
return $this->is_shared_cross_origin;
4865
}
4966

67+
/**
68+
* @return bool
69+
*/
5070
public function IsOpaque() : bool
5171
{
5272
return $this->is_opaque;
5373
}
74+
75+
/**
76+
* @return bool
77+
*/
78+
public function isIsWasm(): bool
79+
{
80+
return $this->is_wasm;
81+
}
82+
83+
/**
84+
* @return bool
85+
*/
86+
public function isIsModule(): bool
87+
{
88+
return $this->is_module;
89+
}
5490
}

tests/V8Exception_CreateMessage.phpt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,15 @@ V8\Message->GetScriptOrigin():
9393
["resource_column_offset":"V8\ScriptOrigin":private]=>
9494
int(0)
9595
["options":"V8\ScriptOrigin":private]=>
96-
object(V8\ScriptOriginOptions)#18 (2) {
96+
object(V8\ScriptOriginOptions)#18 (4) {
9797
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
9898
bool(false)
9999
["is_opaque":"V8\ScriptOriginOptions":private]=>
100100
bool(false)
101+
["is_wasm":"V8\ScriptOriginOptions":private]=>
102+
bool(false)
103+
["is_module":"V8\ScriptOriginOptions":private]=>
104+
bool(false)
101105
}
102106
["script_id":"V8\ScriptOrigin":private]=>
103107
int(%d)
@@ -127,11 +131,15 @@ V8\Message->GetScriptOrigin():
127131
["resource_column_offset":"V8\ScriptOrigin":private]=>
128132
int(0)
129133
["options":"V8\ScriptOrigin":private]=>
130-
object(V8\ScriptOriginOptions)#35 (2) {
134+
object(V8\ScriptOriginOptions)#35 (4) {
131135
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
132136
bool(false)
133137
["is_opaque":"V8\ScriptOriginOptions":private]=>
134138
bool(false)
139+
["is_wasm":"V8\ScriptOriginOptions":private]=>
140+
bool(false)
141+
["is_module":"V8\ScriptOriginOptions":private]=>
142+
bool(false)
135143
}
136144
["script_id":"V8\ScriptOrigin":private]=>
137145
int(%d)

tests/V8FunctionObject.phpt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,15 @@ v8Tests\TrackingDtors\FunctionObject(V8\FunctionObject)->GetScriptOrigin():
184184
["resource_column_offset":"V8\ScriptOrigin":private]=>
185185
int(0)
186186
["options":"V8\ScriptOrigin":private]=>
187-
object(V8\ScriptOriginOptions)#134 (2) {
187+
object(V8\ScriptOriginOptions)#134 (4) {
188188
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
189189
bool(false)
190190
["is_opaque":"V8\ScriptOriginOptions":private]=>
191191
bool(false)
192+
["is_wasm":"V8\ScriptOriginOptions":private]=>
193+
bool(false)
194+
["is_module":"V8\ScriptOriginOptions":private]=>
195+
bool(false)
192196
}
193197
["script_id":"V8\ScriptOrigin":private]=>
194198
int(0)

tests/V8Message.phpt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,15 @@ object(V8\Message)#8 (12) {
7373
["resource_column_offset":"V8\ScriptOrigin":private]=>
7474
int(0)
7575
["options":"V8\ScriptOrigin":private]=>
76-
object(V8\ScriptOriginOptions)#5 (2) {
76+
object(V8\ScriptOriginOptions)#5 (4) {
7777
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
7878
bool(false)
7979
["is_opaque":"V8\ScriptOriginOptions":private]=>
8080
bool(false)
81+
["is_wasm":"V8\ScriptOriginOptions":private]=>
82+
bool(false)
83+
["is_module":"V8\ScriptOriginOptions":private]=>
84+
bool(false)
8185
}
8286
["script_id":"V8\ScriptOrigin":private]=>
8387
int(0)
@@ -179,11 +183,15 @@ object(V8\Message)#9 (12) {
179183
["resource_column_offset":"V8\ScriptOrigin":private]=>
180184
int(0)
181185
["options":"V8\ScriptOrigin":private]=>
182-
object(V8\ScriptOriginOptions)#5 (2) {
186+
object(V8\ScriptOriginOptions)#5 (4) {
183187
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
184188
bool(false)
185189
["is_opaque":"V8\ScriptOriginOptions":private]=>
186190
bool(false)
191+
["is_wasm":"V8\ScriptOriginOptions":private]=>
192+
bool(false)
193+
["is_module":"V8\ScriptOriginOptions":private]=>
194+
bool(false)
187195
}
188196
["script_id":"V8\ScriptOrigin":private]=>
189197
int(0)

tests/V8Script.phpt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,15 @@ object(V8\Script)#7 (4) {
123123
["resource_column_offset":"V8\ScriptOrigin":private]=>
124124
int(0)
125125
["options":"V8\ScriptOrigin":private]=>
126-
object(V8\ScriptOriginOptions)#10 (2) {
126+
object(V8\ScriptOriginOptions)#10 (4) {
127127
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
128128
bool(false)
129129
["is_opaque":"V8\ScriptOriginOptions":private]=>
130130
bool(false)
131+
["is_wasm":"V8\ScriptOriginOptions":private]=>
132+
bool(false)
133+
["is_module":"V8\ScriptOriginOptions":private]=>
134+
bool(false)
131135
}
132136
["script_id":"V8\ScriptOrigin":private]=>
133137
int(0)

tests/V8ScriptOrigin.phpt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,15 @@ object(V8\ScriptOrigin)#2 (6) {
6767
["resource_column_offset":"V8\ScriptOrigin":private]=>
6868
int(0)
6969
["options":"V8\ScriptOrigin":private]=>
70-
object(V8\ScriptOriginOptions)#3 (2) {
70+
object(V8\ScriptOriginOptions)#3 (4) {
7171
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
7272
bool(false)
7373
["is_opaque":"V8\ScriptOriginOptions":private]=>
7474
bool(false)
75+
["is_wasm":"V8\ScriptOriginOptions":private]=>
76+
bool(false)
77+
["is_module":"V8\ScriptOriginOptions":private]=>
78+
bool(false)
7579
}
7680
["script_id":"V8\ScriptOrigin":private]=>
7781
int(0)

0 commit comments

Comments
 (0)