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

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp

Issue 2571063002: Remove Blink-in-JS (Closed)
Patch Set: Created 4 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 25 matching lines...) Expand all
36 namespace blink { 36 namespace blink {
37 37
38 namespace { 38 namespace {
39 39
40 void installAttributeInternal( 40 void installAttributeInternal(
41 v8::Isolate* isolate, 41 v8::Isolate* isolate,
42 v8::Local<v8::ObjectTemplate> instanceTemplate, 42 v8::Local<v8::ObjectTemplate> instanceTemplate,
43 v8::Local<v8::ObjectTemplate> prototypeTemplate, 43 v8::Local<v8::ObjectTemplate> prototypeTemplate,
44 const V8DOMConfiguration::AttributeConfiguration& attribute, 44 const V8DOMConfiguration::AttributeConfiguration& attribute,
45 const DOMWrapperWorld& world) { 45 const DOMWrapperWorld& world) {
46 if (attribute.exposeConfiguration ==
47 V8DOMConfiguration::OnlyExposedToPrivateScript &&
48 !world.isPrivateScriptIsolatedWorld())
49 return;
50
51 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name); 46 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name);
52 v8::AccessorNameGetterCallback getter = attribute.getter; 47 v8::AccessorNameGetterCallback getter = attribute.getter;
53 v8::AccessorNameSetterCallback setter = attribute.setter; 48 v8::AccessorNameSetterCallback setter = attribute.setter;
54 if (world.isMainWorld()) { 49 if (world.isMainWorld()) {
55 if (attribute.getterForMainWorld) 50 if (attribute.getterForMainWorld)
56 getter = attribute.getterForMainWorld; 51 getter = attribute.getterForMainWorld;
57 if (attribute.setterForMainWorld) 52 if (attribute.setterForMainWorld)
58 setter = attribute.setterForMainWorld; 53 setter = attribute.setterForMainWorld;
59 } 54 }
60 v8::Local<v8::Value> data = 55 v8::Local<v8::Value> data =
(...skipping 15 matching lines...) Expand all
76 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInterface) 71 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInterface)
77 NOTREACHED(); 72 NOTREACHED();
78 } 73 }
79 74
80 void installAttributeInternal( 75 void installAttributeInternal(
81 v8::Isolate* isolate, 76 v8::Isolate* isolate,
82 v8::Local<v8::Object> instance, 77 v8::Local<v8::Object> instance,
83 v8::Local<v8::Object> prototype, 78 v8::Local<v8::Object> prototype,
84 const V8DOMConfiguration::AttributeConfiguration& attribute, 79 const V8DOMConfiguration::AttributeConfiguration& attribute,
85 const DOMWrapperWorld& world) { 80 const DOMWrapperWorld& world) {
86 if (attribute.exposeConfiguration ==
87 V8DOMConfiguration::OnlyExposedToPrivateScript &&
88 !world.isPrivateScriptIsolatedWorld())
89 return;
90
91 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name); 81 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name);
92 82
93 // This method is only being used for installing interfaces which are 83 // This method is only being used for installing interfaces which are
94 // enabled through origin trials. Assert here that it is being called with 84 // enabled through origin trials. Assert here that it is being called with
95 // an attribute configuration for a constructor. 85 // an attribute configuration for a constructor.
96 // TODO(iclelland): Relax this constraint and allow arbitrary data-type 86 // TODO(iclelland): Relax this constraint and allow arbitrary data-type
97 // properties to be added here. 87 // properties to be added here.
98 DCHECK_EQ(&v8ConstructorAttributeGetter, attribute.getter); 88 DCHECK_EQ(&v8ConstructorAttributeGetter, attribute.getter);
99 89
100 V8PerContextData* perContextData = 90 V8PerContextData* perContextData =
(...skipping 17 matching lines...) Expand all
118 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInterface) 108 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInterface)
119 NOTREACHED(); 109 NOTREACHED();
120 } 110 }
121 111
122 void installLazyDataAttributeInternal( 112 void installLazyDataAttributeInternal(
123 v8::Isolate* isolate, 113 v8::Isolate* isolate,
124 v8::Local<v8::ObjectTemplate> instanceTemplate, 114 v8::Local<v8::ObjectTemplate> instanceTemplate,
125 v8::Local<v8::ObjectTemplate> prototypeTemplate, 115 v8::Local<v8::ObjectTemplate> prototypeTemplate,
126 const V8DOMConfiguration::AttributeConfiguration& attribute, 116 const V8DOMConfiguration::AttributeConfiguration& attribute,
127 const DOMWrapperWorld& world) { 117 const DOMWrapperWorld& world) {
128 if (attribute.exposeConfiguration ==
129 V8DOMConfiguration::OnlyExposedToPrivateScript &&
130 !world.isPrivateScriptIsolatedWorld())
131 return;
132
133 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name); 118 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name);
134 v8::AccessorNameGetterCallback getter = attribute.getter; 119 v8::AccessorNameGetterCallback getter = attribute.getter;
135 DCHECK(!attribute.setter); 120 DCHECK(!attribute.setter);
136 DCHECK(!attribute.getterForMainWorld); 121 DCHECK(!attribute.getterForMainWorld);
137 DCHECK(!attribute.setterForMainWorld); 122 DCHECK(!attribute.setterForMainWorld);
138 v8::Local<v8::Value> data = 123 v8::Local<v8::Value> data =
139 v8::External::New(isolate, const_cast<WrapperTypeInfo*>(attribute.data)); 124 v8::External::New(isolate, const_cast<WrapperTypeInfo*>(attribute.data));
140 DCHECK(static_cast<v8::AccessControl>(attribute.settings) == v8::DEFAULT); 125 DCHECK(static_cast<v8::AccessControl>(attribute.settings) == v8::DEFAULT);
141 126
142 DCHECK(attribute.propertyLocationConfiguration); 127 DCHECK(attribute.propertyLocationConfiguration);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 204
220 template <class ObjectOrTemplate, class FunctionOrTemplate> 205 template <class ObjectOrTemplate, class FunctionOrTemplate>
221 void installAccessorInternal( 206 void installAccessorInternal(
222 v8::Isolate* isolate, 207 v8::Isolate* isolate,
223 v8::Local<ObjectOrTemplate> instanceOrTemplate, 208 v8::Local<ObjectOrTemplate> instanceOrTemplate,
224 v8::Local<ObjectOrTemplate> prototypeOrTemplate, 209 v8::Local<ObjectOrTemplate> prototypeOrTemplate,
225 v8::Local<FunctionOrTemplate> interfaceOrTemplate, 210 v8::Local<FunctionOrTemplate> interfaceOrTemplate,
226 v8::Local<v8::Signature> signature, 211 v8::Local<v8::Signature> signature,
227 const V8DOMConfiguration::AccessorConfiguration& accessor, 212 const V8DOMConfiguration::AccessorConfiguration& accessor,
228 const DOMWrapperWorld& world) { 213 const DOMWrapperWorld& world) {
229 if (accessor.exposeConfiguration ==
230 V8DOMConfiguration::OnlyExposedToPrivateScript &&
231 !world.isPrivateScriptIsolatedWorld())
232 return;
233
234 v8::Local<v8::Name> name = v8AtomicString(isolate, accessor.name); 214 v8::Local<v8::Name> name = v8AtomicString(isolate, accessor.name);
235 v8::FunctionCallback getterCallback = accessor.getter; 215 v8::FunctionCallback getterCallback = accessor.getter;
236 v8::FunctionCallback setterCallback = accessor.setter; 216 v8::FunctionCallback setterCallback = accessor.setter;
237 V8DOMConfiguration::CachedAccessorCallback cachedAccessorCallback = nullptr; 217 V8DOMConfiguration::CachedAccessorCallback cachedAccessorCallback = nullptr;
238 if (world.isMainWorld()) { 218 if (world.isMainWorld()) {
239 if (accessor.getterForMainWorld) 219 if (accessor.getterForMainWorld)
240 getterCallback = accessor.getterForMainWorld; 220 getterCallback = accessor.getterForMainWorld;
241 if (accessor.setterForMainWorld) 221 if (accessor.setterForMainWorld)
242 setterCallback = accessor.setterForMainWorld; 222 setterCallback = accessor.setterForMainWorld;
243 cachedAccessorCallback = accessor.cachedAccessorCallback; 223 cachedAccessorCallback = accessor.cachedAccessorCallback;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 } 324 }
345 325
346 template <class Configuration> 326 template <class Configuration>
347 void installMethodInternal(v8::Isolate* isolate, 327 void installMethodInternal(v8::Isolate* isolate,
348 v8::Local<v8::ObjectTemplate> instanceTemplate, 328 v8::Local<v8::ObjectTemplate> instanceTemplate,
349 v8::Local<v8::ObjectTemplate> prototypeTemplate, 329 v8::Local<v8::ObjectTemplate> prototypeTemplate,
350 v8::Local<v8::FunctionTemplate> interfaceTemplate, 330 v8::Local<v8::FunctionTemplate> interfaceTemplate,
351 v8::Local<v8::Signature> signature, 331 v8::Local<v8::Signature> signature,
352 const Configuration& method, 332 const Configuration& method,
353 const DOMWrapperWorld& world) { 333 const DOMWrapperWorld& world) {
354 if (method.exposeConfiguration ==
355 V8DOMConfiguration::OnlyExposedToPrivateScript &&
356 !world.isPrivateScriptIsolatedWorld())
357 return;
358
359 v8::Local<v8::Name> name = method.methodName(isolate); 334 v8::Local<v8::Name> name = method.methodName(isolate);
360 v8::FunctionCallback callback = method.callbackForWorld(world); 335 v8::FunctionCallback callback = method.callbackForWorld(world);
361 // Promise-returning functions need to return a reject promise when 336 // Promise-returning functions need to return a reject promise when
362 // an exception occurs. This includes a case that the receiver object is not 337 // an exception occurs. This includes a case that the receiver object is not
363 // of the type. So, we disable the type check of the receiver object on V8 338 // of the type. So, we disable the type check of the receiver object on V8
364 // side so that V8 won't throw. Instead, we do the check on Blink side and 339 // side so that V8 won't throw. Instead, we do the check on Blink side and
365 // convert an exception to a reject promise. 340 // convert an exception to a reject promise.
366 if (method.holderCheckConfiguration == V8DOMConfiguration::DoNotCheckHolder) 341 if (method.holderCheckConfiguration == V8DOMConfiguration::DoNotCheckHolder)
367 signature = v8::Local<v8::Signature>(); 342 signature = v8::Local<v8::Signature>();
368 343
(...skipping 28 matching lines...) Expand all
397 } 372 }
398 373
399 void installMethodInternal( 374 void installMethodInternal(
400 v8::Isolate* isolate, 375 v8::Isolate* isolate,
401 v8::Local<v8::Object> instance, 376 v8::Local<v8::Object> instance,
402 v8::Local<v8::Object> prototype, 377 v8::Local<v8::Object> prototype,
403 v8::Local<v8::Function> interface, 378 v8::Local<v8::Function> interface,
404 v8::Local<v8::Signature> signature, 379 v8::Local<v8::Signature> signature,
405 const V8DOMConfiguration::MethodConfiguration& method, 380 const V8DOMConfiguration::MethodConfiguration& method,
406 const DOMWrapperWorld& world) { 381 const DOMWrapperWorld& world) {
407 if (method.exposeConfiguration ==
408 V8DOMConfiguration::OnlyExposedToPrivateScript &&
409 !world.isPrivateScriptIsolatedWorld())
410 return;
411
412 v8::Local<v8::Name> name = method.methodName(isolate); 382 v8::Local<v8::Name> name = method.methodName(isolate);
413 v8::FunctionCallback callback = method.callbackForWorld(world); 383 v8::FunctionCallback callback = method.callbackForWorld(world);
414 // Promise-returning functions need to return a reject promise when 384 // Promise-returning functions need to return a reject promise when
415 // an exception occurs. This includes a case that the receiver object is not 385 // an exception occurs. This includes a case that the receiver object is not
416 // of the type. So, we disable the type check of the receiver object on V8 386 // of the type. So, we disable the type check of the receiver object on V8
417 // side so that V8 won't throw. Instead, we do the check on Blink side and 387 // side so that V8 won't throw. Instead, we do the check on Blink side and
418 // convert an exception to a reject promise. 388 // convert an exception to a reject promise.
419 if (method.holderCheckConfiguration == V8DOMConfiguration::DoNotCheckHolder) 389 if (method.holderCheckConfiguration == V8DOMConfiguration::DoNotCheckHolder)
420 signature = v8::Local<v8::Signature>(); 390 signature = v8::Local<v8::Signature>();
421 391
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 void V8DOMConfiguration::setClassString( 652 void V8DOMConfiguration::setClassString(
683 v8::Isolate* isolate, 653 v8::Isolate* isolate,
684 v8::Local<v8::ObjectTemplate> objectTemplate, 654 v8::Local<v8::ObjectTemplate> objectTemplate,
685 const char* classString) { 655 const char* classString) {
686 objectTemplate->Set( 656 objectTemplate->Set(
687 v8::Symbol::GetToStringTag(isolate), v8AtomicString(isolate, classString), 657 v8::Symbol::GetToStringTag(isolate), v8AtomicString(isolate, classString),
688 static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum)); 658 static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum));
689 } 659 }
690 660
691 } // namespace blink 661 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698