Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Side by Side Diff: include/v8.h

Issue 2311873002: [api] Add interceptor for getOwnPropertyDescriptor(). (Closed)
Patch Set: Rename and comments. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/api.cc » ('j') | src/objects.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** \mainpage V8 API Reference Guide 5 /** \mainpage V8 API Reference Guide
6 * 6 *
7 * V8 is Google's open source JavaScript engine. 7 * V8 is Google's open source JavaScript engine.
8 * 8 *
9 * This set of documents provides reference material generated from the 9 * This set of documents provides reference material generated from the
10 * V8 header file, include/v8.h. 10 * V8 header file, include/v8.h.
(...skipping 4694 matching lines...) Expand 10 before | Expand all | Expand 10 after
4705 * isolate, receiver, return value, or whether running in `'use strict'` mode. 4705 * isolate, receiver, return value, or whether running in `'use strict'` mode.
4706 * See `PropertyCallbackInfo`. 4706 * See `PropertyCallbackInfo`.
4707 * 4707 *
4708 * See also `ObjectTemplate::SetNamedPropertyHandler`. 4708 * See also `ObjectTemplate::SetNamedPropertyHandler`.
4709 */ 4709 */
4710 typedef void (*GenericNamedPropertyDefinerCallback)( 4710 typedef void (*GenericNamedPropertyDefinerCallback)(
4711 Local<Name> key, const PropertyDescriptor& desc, 4711 Local<Name> key, const PropertyDescriptor& desc,
4712 const PropertyCallbackInfo<Value>& info); 4712 const PropertyCallbackInfo<Value>& info);
4713 4713
4714 /** 4714 /**
4715 * Interceptor for getOwnPropertyDescriptor requests on an object.
4716 *
4717 * Use `info.GetReturnValue().Set()` to set the return value of the
4718 * intercepted request. The return value must be an object that
4719 * can be converted to a PropertyDescriptor, e.g., a `v8::value` returned from
4720 * `v8::Object::getOwnPropertyDescriptor`.
4721 *
4722 * \param property The name of the property for which the request was
4723 * intercepted.
4724 * \info Information about the intercepted request, such as
4725 * isolate, receiver, return value, or whether running in `'use strict'` mode.
4726 * See `PropertyCallbackInfo`.
4727 *
4728 * \note If GetOwnPropertyDescriptor is intercepted, it will
4729 * always return true, i.e., indicate that the property was found.
4730 *
4731 * See also `ObjectTemplate::SetNamedPropertyHandler`.
4732 */
4733 typedef void (*GenericNamedPropertyDescriptorCallback)(
4734 Local<Name> property, const PropertyCallbackInfo<Value>& info);
4735
4736 /**
4715 * Returns the value of the property if the getter intercepts the 4737 * Returns the value of the property if the getter intercepts the
4716 * request. Otherwise, returns an empty handle. 4738 * request. Otherwise, returns an empty handle.
4717 */ 4739 */
4718 typedef void (*IndexedPropertyGetterCallback)( 4740 typedef void (*IndexedPropertyGetterCallback)(
4719 uint32_t index, 4741 uint32_t index,
4720 const PropertyCallbackInfo<Value>& info); 4742 const PropertyCallbackInfo<Value>& info);
4721 4743
4722 4744
4723 /** 4745 /**
4724 * Returns the value if the setter intercepts the request. 4746 * Returns the value if the setter intercepts the request.
(...skipping 28 matching lines...) Expand all
4753 * Returns an array containing the indices of the properties the 4775 * Returns an array containing the indices of the properties the
4754 * indexed property getter intercepts. 4776 * indexed property getter intercepts.
4755 */ 4777 */
4756 typedef void (*IndexedPropertyEnumeratorCallback)( 4778 typedef void (*IndexedPropertyEnumeratorCallback)(
4757 const PropertyCallbackInfo<Array>& info); 4779 const PropertyCallbackInfo<Array>& info);
4758 4780
4759 typedef void (*IndexedPropertyDefinerCallback)( 4781 typedef void (*IndexedPropertyDefinerCallback)(
4760 uint32_t index, const PropertyDescriptor& desc, 4782 uint32_t index, const PropertyDescriptor& desc,
4761 const PropertyCallbackInfo<Value>& info); 4783 const PropertyCallbackInfo<Value>& info);
4762 4784
4785 typedef void (*IndexedPropertyDescriptorCallback)(
4786 uint32_t index, const PropertyCallbackInfo<Value>& info);
4787
4763 /** 4788 /**
4764 * Access type specification. 4789 * Access type specification.
4765 */ 4790 */
4766 enum AccessType { 4791 enum AccessType {
4767 ACCESS_GET, 4792 ACCESS_GET,
4768 ACCESS_SET, 4793 ACCESS_SET,
4769 ACCESS_HAS, 4794 ACCESS_HAS,
4770 ACCESS_DELETE, 4795 ACCESS_DELETE,
4771 ACCESS_KEYS 4796 ACCESS_KEYS
4772 }; 4797 };
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
5015 GenericNamedPropertyDeleterCallback deleter = 0, 5040 GenericNamedPropertyDeleterCallback deleter = 0,
5016 GenericNamedPropertyEnumeratorCallback enumerator = 0, 5041 GenericNamedPropertyEnumeratorCallback enumerator = 0,
5017 Local<Value> data = Local<Value>(), 5042 Local<Value> data = Local<Value>(),
5018 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) 5043 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
5019 : getter(getter), 5044 : getter(getter),
5020 setter(setter), 5045 setter(setter),
5021 query(query), 5046 query(query),
5022 deleter(deleter), 5047 deleter(deleter),
5023 enumerator(enumerator), 5048 enumerator(enumerator),
5024 definer(0), 5049 definer(0),
5050 descriptor(0),
5025 data(data), 5051 data(data),
5026 flags(flags) {} 5052 flags(flags) {}
5027 5053
5028 NamedPropertyHandlerConfiguration( 5054 NamedPropertyHandlerConfiguration(
5029 GenericNamedPropertyGetterCallback getter, 5055 GenericNamedPropertyGetterCallback getter,
5030 GenericNamedPropertySetterCallback setter, 5056 GenericNamedPropertySetterCallback setter,
5031 GenericNamedPropertyQueryCallback query, 5057 GenericNamedPropertyDescriptorCallback descriptor,
5032 GenericNamedPropertyDeleterCallback deleter, 5058 GenericNamedPropertyDeleterCallback deleter,
5033 GenericNamedPropertyEnumeratorCallback enumerator, 5059 GenericNamedPropertyEnumeratorCallback enumerator,
5034 GenericNamedPropertyDefinerCallback definer, 5060 GenericNamedPropertyDefinerCallback definer,
5035 Local<Value> data = Local<Value>(), 5061 Local<Value> data = Local<Value>(),
5036 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) 5062 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
5037 : getter(getter), 5063 : getter(getter),
5038 setter(setter), 5064 setter(setter),
5039 query(query), 5065 query(0),
5040 deleter(deleter), 5066 deleter(deleter),
5041 enumerator(enumerator), 5067 enumerator(enumerator),
5042 definer(definer), 5068 definer(definer),
5069 descriptor(descriptor),
5043 data(data), 5070 data(data),
5044 flags(flags) {} 5071 flags(flags) {}
5045 5072
5046 GenericNamedPropertyGetterCallback getter; 5073 GenericNamedPropertyGetterCallback getter;
5047 GenericNamedPropertySetterCallback setter; 5074 GenericNamedPropertySetterCallback setter;
5048 GenericNamedPropertyQueryCallback query; 5075 GenericNamedPropertyQueryCallback query;
5049 GenericNamedPropertyDeleterCallback deleter; 5076 GenericNamedPropertyDeleterCallback deleter;
5050 GenericNamedPropertyEnumeratorCallback enumerator; 5077 GenericNamedPropertyEnumeratorCallback enumerator;
5051 GenericNamedPropertyDefinerCallback definer; 5078 GenericNamedPropertyDefinerCallback definer;
5079 GenericNamedPropertyDescriptorCallback descriptor;
5052 Local<Value> data; 5080 Local<Value> data;
5053 PropertyHandlerFlags flags; 5081 PropertyHandlerFlags flags;
5054 }; 5082 };
5055 5083
5056 5084
5057 struct IndexedPropertyHandlerConfiguration { 5085 struct IndexedPropertyHandlerConfiguration {
5058 IndexedPropertyHandlerConfiguration( 5086 IndexedPropertyHandlerConfiguration(
5059 /** Note: getter is required **/ 5087 /** Note: getter is required **/
5060 IndexedPropertyGetterCallback getter = 0, 5088 IndexedPropertyGetterCallback getter = 0,
5061 IndexedPropertySetterCallback setter = 0, 5089 IndexedPropertySetterCallback setter = 0,
5062 IndexedPropertyQueryCallback query = 0, 5090 IndexedPropertyQueryCallback query = 0,
5063 IndexedPropertyDeleterCallback deleter = 0, 5091 IndexedPropertyDeleterCallback deleter = 0,
5064 IndexedPropertyEnumeratorCallback enumerator = 0, 5092 IndexedPropertyEnumeratorCallback enumerator = 0,
5065 Local<Value> data = Local<Value>(), 5093 Local<Value> data = Local<Value>(),
5066 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) 5094 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
5067 : getter(getter), 5095 : getter(getter),
5068 setter(setter), 5096 setter(setter),
5069 query(query), 5097 query(query),
5070 deleter(deleter), 5098 deleter(deleter),
5071 enumerator(enumerator), 5099 enumerator(enumerator),
5072 definer(0), 5100 definer(0),
5101 descriptor(0),
5073 data(data), 5102 data(data),
5074 flags(flags) {} 5103 flags(flags) {}
5075 5104
5076 IndexedPropertyHandlerConfiguration( 5105 IndexedPropertyHandlerConfiguration(
5077 IndexedPropertyGetterCallback getter, 5106 IndexedPropertyGetterCallback getter,
5078 IndexedPropertySetterCallback setter, IndexedPropertyQueryCallback query, 5107 IndexedPropertySetterCallback setter,
5108 IndexedPropertyDescriptorCallback descriptor,
5079 IndexedPropertyDeleterCallback deleter, 5109 IndexedPropertyDeleterCallback deleter,
5080 IndexedPropertyEnumeratorCallback enumerator, 5110 IndexedPropertyEnumeratorCallback enumerator,
5081 IndexedPropertyDefinerCallback definer, 5111 IndexedPropertyDefinerCallback definer,
5082 Local<Value> data = Local<Value>(), 5112 Local<Value> data = Local<Value>(),
5083 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) 5113 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
5084 : getter(getter), 5114 : getter(getter),
5085 setter(setter), 5115 setter(setter),
5086 query(query), 5116 query(0),
5087 deleter(deleter), 5117 deleter(deleter),
5088 enumerator(enumerator), 5118 enumerator(enumerator),
5089 definer(definer), 5119 definer(definer),
5120 descriptor(descriptor),
5090 data(data), 5121 data(data),
5091 flags(flags) {} 5122 flags(flags) {}
5092 5123
5093 IndexedPropertyGetterCallback getter; 5124 IndexedPropertyGetterCallback getter;
5094 IndexedPropertySetterCallback setter; 5125 IndexedPropertySetterCallback setter;
5095 IndexedPropertyQueryCallback query; 5126 IndexedPropertyQueryCallback query;
5096 IndexedPropertyDeleterCallback deleter; 5127 IndexedPropertyDeleterCallback deleter;
5097 IndexedPropertyEnumeratorCallback enumerator; 5128 IndexedPropertyEnumeratorCallback enumerator;
5098 IndexedPropertyDefinerCallback definer; 5129 IndexedPropertyDefinerCallback definer;
5130 IndexedPropertyDescriptorCallback descriptor;
5099 Local<Value> data; 5131 Local<Value> data;
5100 PropertyHandlerFlags flags; 5132 PropertyHandlerFlags flags;
5101 }; 5133 };
5102 5134
5103 5135
5104 /** 5136 /**
5105 * An ObjectTemplate is used to create objects at runtime. 5137 * An ObjectTemplate is used to create objects at runtime.
5106 * 5138 *
5107 * Properties added to an ObjectTemplate are added to each object 5139 * Properties added to an ObjectTemplate are added to each object
5108 * created from the ObjectTemplate. 5140 * created from the ObjectTemplate.
(...skipping 4324 matching lines...) Expand 10 before | Expand all | Expand 10 after
9433 */ 9465 */
9434 9466
9435 9467
9436 } // namespace v8 9468 } // namespace v8
9437 9469
9438 9470
9439 #undef TYPE_CHECK 9471 #undef TYPE_CHECK
9440 9472
9441 9473
9442 #endif // INCLUDE_V8_H_ 9474 #endif // INCLUDE_V8_H_
OLDNEW
« no previous file with comments | « no previous file | src/api.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698