Skip to content

Commit 56b1d9d

Browse files
committed
Deprecate FunctionCallbackInfo::Holder
Use FunctionCallbackInfo::This instead. See http://crbug.com/333672197.
1 parent 8428aa5 commit 56b1d9d

File tree

4 files changed

+45
-26
lines changed

4 files changed

+45
-26
lines changed

nan_callbacks_12_inl.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,19 @@ class FunctionCallbackInfo {
111111
}
112112
#endif
113113
inline v8::Local<v8::Value> Data() const { return data_; }
114-
inline v8::Local<v8::Object> Holder() const { return info_.Holder(); }
114+
inline v8::Local<v8::Object> Holder() const {
115+
#if defined(V8_MAJOR_VERSION) && \
116+
(V8_MAJOR_VERSION > 12 || \
117+
(V8_MAJOR_VERSION == 12 && \
118+
(defined(V8_MINOR_VERSION) && \
119+
(V8_MINOR_VERSION > 5 || \
120+
(V8_MINOR_VERSION == 5 && defined(V8_BUILD_NUMBER) && \
121+
V8_BUILD_NUMBER >= 214)))))
122+
return info_.This();
123+
#else
124+
return info_.Holder();
125+
#endif
126+
}
115127
inline bool IsConstructCall() const { return info_.IsConstructCall(); }
116128
inline int Length() const { return info_.Length(); }
117129
inline v8::Local<v8::Value> operator[](int i) const { return info_[i]; }

nan_callbacks_pre_12_inl.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,9 @@ class FunctionCallbackInfo {
140140
return args_.Callee();
141141
}
142142
inline v8::Local<v8::Value> Data() const { return data_; }
143-
inline v8::Local<v8::Object> Holder() const { return args_.Holder(); }
143+
inline v8::Local<v8::Object> Holder() const {
144+
return args_.Holder();
145+
}
144146
inline bool IsConstructCall() const { return args_.IsConstructCall(); }
145147
inline int Length() const { return args_.Length(); }
146148
inline v8::Local<v8::Value> operator[](int i) const { return args_[i]; }

test/js/accessors-test.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const test = require('tap').test
1111
, bindings = require('bindings')({ module_root: testRoot, bindings: 'accessors' });
1212

1313
test('accessors', function (t) {
14-
t.plan(7)
14+
t.plan(9)
1515
var settergetter = bindings.create()
1616
t.equal(settergetter.prop1, 'this is property 1')
1717
t.ok(settergetter.prop2 === '')
@@ -28,5 +28,8 @@ test('accessors', function (t) {
2828
t.equal(derived.prop1, 'this is property 1')
2929
derived.prop2 = 'setting a new value'
3030
t.equal(derived.prop2, 'setting a new value')
31-
t.equal(settergetter.prop2, 'setting a new value')
31+
t.equal(settergetter.prop2, 'setting a value')
32+
settergetter.prop2 = 'setting another value'
33+
t.equal(settergetter.prop2, 'setting another value')
34+
t.equal(derived.prop2, 'setting a new value')
3235
})

test/js/methodswithdata-test.js

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,30 @@ const test = require('tap').test
1111
, bindings = require('bindings')({ module_root: testRoot, bindings: 'methodswithdata' })
1212

1313
test('SetMethod with data', function (t) {
14-
t.plan(1);
15-
t.ok(bindings.testWithData());
14+
t.plan(1);
15+
t.ok(bindings.testWithData());
1616
});
1717

1818
test('accessors with data', function (t) {
19-
t.plan(7)
20-
var settergetter = bindings.create()
21-
t.equal(settergetter.prop1, 'this is property 1')
22-
t.ok(settergetter.prop2 === '')
23-
settergetter.prop2 = 'setting a value'
24-
t.equal(settergetter.prop2, 'setting a value')
25-
t.equal(settergetter.log(),
26-
'New()\n' +
27-
'Prop1:GETTER(this is property 1)\n' +
28-
'Prop2:GETTER()\n' +
29-
'Prop2:SETTER(setting a value)\n' +
30-
'Prop2:GETTER(setting a value)\n'
31-
)
32-
var derived = Object.create(settergetter)
33-
t.equal(derived.prop1, 'this is property 1')
34-
derived.prop2 = 'setting a new value'
35-
t.equal(derived.prop2, 'setting a new value')
36-
t.equal(settergetter.prop2, 'setting a new value')
37-
})
38-
19+
t.plan(9)
20+
var settergetter = bindings.create()
21+
t.equal(settergetter.prop1, 'this is property 1')
22+
t.ok(settergetter.prop2 === '')
23+
settergetter.prop2 = 'setting a value'
24+
t.equal(settergetter.prop2, 'setting a value')
25+
t.equal(settergetter.log(),
26+
'New()\n' +
27+
'Prop1:GETTER(this is property 1)\n' +
28+
'Prop2:GETTER()\n' +
29+
'Prop2:SETTER(setting a value)\n' +
30+
'Prop2:GETTER(setting a value)\n'
31+
)
32+
var derived = Object.create(settergetter)
33+
t.equal(derived.prop1, 'this is property 1')
34+
derived.prop2 = 'setting a new value'
35+
t.equal(derived.prop2, 'setting a new value')
36+
t.equal(settergetter.prop2, 'setting a value')
37+
settergetter.prop2 = 'setting another value'
38+
t.equal(settergetter.prop2, 'setting another value')
39+
t.equal(derived.prop2, 'setting a new value')
40+
})

0 commit comments

Comments
 (0)