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

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

Issue 2005433002: [Origin Trials] Install origin trial bindings on V8 context conditionally (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@track-ef-install
Patch Set: Fix multiple definition of signature; addressing nits Created 4 years, 6 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
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 11 matching lines...) Expand all
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "bindings/core/v8/V8DOMConfiguration.h" 29 #include "bindings/core/v8/V8DOMConfiguration.h"
30 30
31 #include "bindings/core/v8/V8ObjectConstructor.h" 31 #include "bindings/core/v8/V8ObjectConstructor.h"
32 #include "bindings/core/v8/V8PerContextData.h"
32 #include "platform/TraceEvent.h" 33 #include "platform/TraceEvent.h"
33 34
34 namespace blink { 35 namespace blink {
35 36
36 namespace { 37 namespace {
37 38
38 void installAttributeInternal(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate > instanceTemplate, v8::Local<v8::ObjectTemplate> prototypeTemplate, const V8DOM Configuration::AttributeConfiguration& attribute, const DOMWrapperWorld& world) 39 void installAttributeInternal(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate > instanceTemplate, v8::Local<v8::ObjectTemplate> prototypeTemplate, const V8DOM Configuration::AttributeConfiguration& attribute, const DOMWrapperWorld& world)
39 { 40 {
40 if (attribute.exposeConfiguration == V8DOMConfiguration::OnlyExposedToPrivat eScript 41 if (attribute.exposeConfiguration == V8DOMConfiguration::OnlyExposedToPrivat eScript
41 && !world.isPrivateScriptIsolatedWorld()) 42 && !world.isPrivateScriptIsolatedWorld())
(...skipping 19 matching lines...) Expand all
61 NOTREACHED(); 62 NOTREACHED();
62 } 63 }
63 64
64 void installAttributeInternal(v8::Isolate* isolate, v8::Local<v8::Object> instan ce, v8::Local<v8::Object> prototype, const V8DOMConfiguration::AttributeConfigur ation& attribute, const DOMWrapperWorld& world) 65 void installAttributeInternal(v8::Isolate* isolate, v8::Local<v8::Object> instan ce, v8::Local<v8::Object> prototype, const V8DOMConfiguration::AttributeConfigur ation& attribute, const DOMWrapperWorld& world)
65 { 66 {
66 if (attribute.exposeConfiguration == V8DOMConfiguration::OnlyExposedToPrivat eScript 67 if (attribute.exposeConfiguration == V8DOMConfiguration::OnlyExposedToPrivat eScript
67 && !world.isPrivateScriptIsolatedWorld()) 68 && !world.isPrivateScriptIsolatedWorld())
68 return; 69 return;
69 70
70 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name); 71 v8::Local<v8::Name> name = v8AtomicString(isolate, attribute.name);
71 v8::Local<v8::Value> data = v8::External::New(isolate, const_cast<WrapperTyp eInfo*>(attribute.data)); 72
73 // This method is only being used for installing interfaces which are
74 // enabled through origin trials. Assert here that it is being called with
75 // an attribute configuration for a constructor.
76 // TODO(iclelland): Relax this constraint and allow arbitrary data-type
77 // properties to be added here.
78 DCHECK_EQ(&v8ConstructorAttributeGetter, attribute.getter);
79
80 V8PerContextData* perContextData = V8PerContextData::from(isolate->GetCurren tContext());
81 v8::Local<v8::Function> data = perContextData->constructorForType(attribute. data);
72 82
73 DCHECK(attribute.propertyLocationConfiguration); 83 DCHECK(attribute.propertyLocationConfiguration);
74 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInstance ) 84 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInstance )
75 v8CallOrCrash(instance->DefineOwnProperty(isolate->GetCurrentContext(), name, data, static_cast<v8::PropertyAttribute>(attribute.attribute))); 85 v8CallOrCrash(instance->DefineOwnProperty(isolate->GetCurrentContext(), name, data, static_cast<v8::PropertyAttribute>(attribute.attribute)));
76 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnPrototyp e) 86 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnPrototyp e)
77 v8CallOrCrash(prototype->DefineOwnProperty(isolate->GetCurrentContext(), name, data, static_cast<v8::PropertyAttribute>(attribute.attribute))); 87 v8CallOrCrash(prototype->DefineOwnProperty(isolate->GetCurrentContext(), name, data, static_cast<v8::PropertyAttribute>(attribute.attribute)));
78 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInterfac e) 88 if (attribute.propertyLocationConfiguration & V8DOMConfiguration::OnInterfac e)
79 NOTREACHED(); 89 NOTREACHED();
80 } 90 }
81 91
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 data->setInterfaceTemplate(world, wrapperTypeInfo, result); 363 data->setInterfaceTemplate(world, wrapperTypeInfo, result);
354 return result; 364 return result;
355 } 365 }
356 366
357 void V8DOMConfiguration::setClassString(v8::Isolate* isolate, v8::Local<v8::Obje ctTemplate> objectTemplate, const char* classString) 367 void V8DOMConfiguration::setClassString(v8::Isolate* isolate, v8::Local<v8::Obje ctTemplate> objectTemplate, const char* classString)
358 { 368 {
359 objectTemplate->Set(v8::Symbol::GetToStringTag(isolate), v8AtomicString(isol ate, classString), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnu m)); 369 objectTemplate->Set(v8::Symbol::GetToStringTag(isolate), v8AtomicString(isol ate, classString), static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnu m));
360 } 370 }
361 371
362 } // namespace blink 372 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp ('k') | third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698