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

Unified Diff: Source/bindings/core/v8/V8DOMConfiguration.cpp

Issue 413393003: Blink-in-JS: Implement internal APIs exposed only to private scripts (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/bindings/core/v8/V8DOMConfiguration.h ('k') | Source/bindings/scripts/v8_attributes.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/core/v8/V8DOMConfiguration.cpp
diff --git a/Source/bindings/core/v8/V8DOMConfiguration.cpp b/Source/bindings/core/v8/V8DOMConfiguration.cpp
index 33d4e8aca01b103e71b30c02bf1a5d370a7970e0..a27f8525427c0b3cb460bccf410a5031700896b1 100644
--- a/Source/bindings/core/v8/V8DOMConfiguration.cpp
+++ b/Source/bindings/core/v8/V8DOMConfiguration.cpp
@@ -42,11 +42,14 @@ void V8DOMConfiguration::installAttributes(v8::Handle<v8::ObjectTemplate> instan
void V8DOMConfiguration::installAccessors(v8::Handle<v8::ObjectTemplate> prototype, v8::Handle<v8::Signature> signature, const AccessorConfiguration* accessors, size_t accessorCount, v8::Isolate* isolate)
{
- bool isMainWorld = DOMWrapperWorld::current(isolate).isMainWorld();
+ DOMWrapperWorld& world = DOMWrapperWorld::current(isolate);
for (size_t i = 0; i < accessorCount; ++i) {
+ if (accessors[i].exposeConfiguration == OnlyExposedToPrivateScript && !world.isPrivateScriptIsolatedWorld())
+ continue;
+
v8::FunctionCallback getterCallback = accessors[i].getter;
v8::FunctionCallback setterCallback = accessors[i].setter;
- if (isMainWorld) {
+ if (world.isMainWorld()) {
if (accessors[i].getterForMainWorld)
getterCallback = accessors[i].getterForMainWorld;
if (accessors[i].setterForMainWorld)
@@ -100,10 +103,13 @@ void V8DOMConfiguration::installConstants(v8::Handle<v8::FunctionTemplate> funct
void V8DOMConfiguration::installMethods(v8::Handle<v8::ObjectTemplate> prototype, v8::Handle<v8::Signature> signature, v8::PropertyAttribute attributes, const MethodConfiguration* callbacks, size_t callbackCount, v8::Isolate* isolate)
{
- bool isMainWorld = DOMWrapperWorld::current(isolate).isMainWorld();
+ DOMWrapperWorld& world = DOMWrapperWorld::current(isolate);
for (size_t i = 0; i < callbackCount; ++i) {
+ if (callbacks[i].exposeConfiguration == OnlyExposedToPrivateScript && !world.isPrivateScriptIsolatedWorld())
+ continue;
+
v8::FunctionCallback callback = callbacks[i].callback;
- if (isMainWorld && callbacks[i].callbackForMainWorld)
+ if (world.isMainWorld() && callbacks[i].callbackForMainWorld)
callback = callbacks[i].callbackForMainWorld;
v8::Local<v8::FunctionTemplate> functionTemplate = v8::FunctionTemplate::New(isolate, callback, v8Undefined(), signature, callbacks[i].length);
functionTemplate->RemovePrototype();
« no previous file with comments | « Source/bindings/core/v8/V8DOMConfiguration.h ('k') | Source/bindings/scripts/v8_attributes.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698