| OLD | NEW | 
|     1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |     1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 
|     2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |     2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 
|     3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> |     3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> | 
|     4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> |     4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> | 
|     5 # Copyright (C) 2006 Apple Computer, Inc. |     5 # Copyright (C) 2006 Apple Computer, Inc. | 
|     6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. |     6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. | 
|     7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |     7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 
|     8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. |     8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. | 
|     9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |     9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 
|    10 # Copyright (C) 2012 Ericsson AB. All rights reserved. |    10 # Copyright (C) 2012 Ericsson AB. All rights reserved. | 
| (...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1203     my $functionLength = GetFunctionLength($function); |  1203     my $functionLength = GetFunctionLength($function); | 
|  1204     my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate()
      )->rawTemplate(&" . $v8ClassName . "::wrapperTypeInfo, currentWorldType))"; |  1204     my $signature = "v8::Signature::New(V8PerIsolateData::from(info.GetIsolate()
      )->rawTemplate(&" . $v8ClassName . "::wrapperTypeInfo, currentWorldType))"; | 
|  1205     if ($function->extendedAttributes->{"DoNotCheckSignature"}) { |  1205     if ($function->extendedAttributes->{"DoNotCheckSignature"}) { | 
|  1206         $signature = "v8::Local<v8::Signature>()"; |  1206         $signature = "v8::Local<v8::Signature>()"; | 
|  1207     } |  1207     } | 
|  1208  |  1208  | 
|  1209     my $newTemplateParams = "${implClassName}V8Internal::${funcName}MethodCallba
      ck${forMainWorldSuffix}, v8Undefined(), $signature"; |  1209     my $newTemplateParams = "${implClassName}V8Internal::${funcName}MethodCallba
      ck${forMainWorldSuffix}, v8Undefined(), $signature"; | 
|  1210  |  1210  | 
|  1211     AddToImplIncludes("bindings/v8/BindingSecurity.h"); |  1211     AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 
|  1212     $implementation{nameSpaceInternal}->add(<<END); |  1212     $implementation{nameSpaceInternal}->add(<<END); | 
|  1213 static void ${funcName}AttributeGetter${forMainWorldSuffix}(const v8::PropertyCa
      llbackInfo<v8::Value>& info) |  1213 static void ${funcName}OriginSafeMethodGetter${forMainWorldSuffix}(const v8::Pro
      pertyCallbackInfo<v8::Value>& info) | 
|  1214 { |  1214 { | 
|  1215     // This is only for getting a unique pointer which we can pass to privateTem
      plate. |  1215     // This is only for getting a unique pointer which we can pass to privateTem
      plate. | 
|  1216     static int privateTemplateUniqueKey; |  1216     static int privateTemplateUniqueKey; | 
|  1217     WrapperWorldType currentWorldType = worldType(info.GetIsolate()); |  1217     WrapperWorldType currentWorldType = worldType(info.GetIsolate()); | 
|  1218     V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |  1218     V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 
|  1219     v8::Handle<v8::FunctionTemplate> privateTemplate = data->privateTemplate(cur
      rentWorldType, &privateTemplateUniqueKey, $newTemplateParams, $functionLength); |  1219     v8::Handle<v8::FunctionTemplate> privateTemplate = data->privateTemplate(cur
      rentWorldType, &privateTemplateUniqueKey, $newTemplateParams, $functionLength); | 
|  1220  |  1220  | 
|  1221     v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
      v8ClassName}::GetTemplate(info.GetIsolate(), currentWorldType)); |  1221     v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
      v8ClassName}::GetTemplate(info.GetIsolate(), currentWorldType)); | 
|  1222     if (holder.IsEmpty()) { |  1222     if (holder.IsEmpty()) { | 
|  1223         // can only reach here by 'object.__proto__.func', and it should passed |  1223         // can only reach here by 'object.__proto__.func', and it should passed | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  1237     if (!hiddenValue.IsEmpty()) { |  1237     if (!hiddenValue.IsEmpty()) { | 
|  1238         v8SetReturnValue(info, hiddenValue); |  1238         v8SetReturnValue(info, hiddenValue); | 
|  1239         return; |  1239         return; | 
|  1240     } |  1240     } | 
|  1241  |  1241  | 
|  1242     v8SetReturnValue(info, privateTemplate->GetFunction()); |  1242     v8SetReturnValue(info, privateTemplate->GetFunction()); | 
|  1243 } |  1243 } | 
|  1244  |  1244  | 
|  1245 END |  1245 END | 
|  1246     $implementation{nameSpaceInternal}->add(<<END); |  1246     $implementation{nameSpaceInternal}->add(<<END); | 
|  1247 static void ${funcName}AttributeGetterCallback${forMainWorldSuffix}(v8::Local<v8
      ::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |  1247 static void ${funcName}OriginSafeMethodGetterCallback${forMainWorldSuffix}(v8::L
      ocal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 
|  1248 { |  1248 { | 
|  1249     TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |  1249     TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 
|  1250     ${implClassName}V8Internal::${funcName}AttributeGetter${forMainWorldSuffix}(
      info); |  1250     ${implClassName}V8Internal::${funcName}OriginSafeMethodGetter${forMainWorldS
      uffix}(info); | 
|  1251     TRACE_EVENT_SET_SAMPLING_STATE("V8", "Execution"); |  1251     TRACE_EVENT_SET_SAMPLING_STATE("V8", "Execution"); | 
|  1252 } |  1252 } | 
|  1253  |  1253  | 
|  1254 END |  1254 END | 
|  1255 } |  1255 } | 
|  1256  |  1256  | 
|  1257 sub GenerateDomainSafeFunctionSetter |  1257 sub GenerateDomainSafeFunctionSetter | 
|  1258 { |  1258 { | 
|  1259     my $interface = shift; |  1259     my $interface = shift; | 
|  1260  |  1260  | 
|  1261     my $implClassName = GetImplName($interface); |  1261     my $implClassName = GetImplName($interface); | 
|  1262     my $v8ClassName = GetV8ClassName($interface); |  1262     my $v8ClassName = GetV8ClassName($interface); | 
|  1263  |  1263  | 
|  1264     AddToImplIncludes("bindings/v8/BindingSecurity.h"); |  1264     AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 
|  1265     AddToImplIncludes("bindings/v8/ExceptionState.h"); |  1265     AddToImplIncludes("bindings/v8/ExceptionState.h"); | 
|  1266     $implementation{nameSpaceInternal}->add(<<END); |  1266     $implementation{nameSpaceInternal}->add(<<END); | 
|  1267 static void ${implClassName}DomainSafeFunctionSetter(v8::Local<v8::String> name,
       v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |  1267 static void ${implClassName}OriginSafeMethodSetter(v8::Local<v8::String> name, v
      8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 
|  1268 { |  1268 { | 
|  1269     v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
      v8ClassName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate()))); |  1269     v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
      v8ClassName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate()))); | 
|  1270     if (holder.IsEmpty()) |  1270     if (holder.IsEmpty()) | 
|  1271         return; |  1271         return; | 
|  1272     ${implClassName}* imp = ${v8ClassName}::toNative(holder); |  1272     ${implClassName}* imp = ${v8ClassName}::toNative(holder); | 
|  1273     ExceptionState exceptionState(info.Holder(), info.GetIsolate()); |  1273     ExceptionState exceptionState(info.Holder(), info.GetIsolate()); | 
|  1274     if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), exceptionState)
      ) { |  1274     if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), exceptionState)
      ) { | 
|  1275         exceptionState.throwIfNeeded(); |  1275         exceptionState.throwIfNeeded(); | 
|  1276         return; |  1276         return; | 
|  1277     } |  1277     } | 
| (...skipping 2045 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3323         $conditional4 = "if (${runtimeEnabledFunction}())\n        "; |  3323         $conditional4 = "if (${runtimeEnabledFunction}())\n        "; | 
|  3324     } |  3324     } | 
|  3325     if ($attrExt->{"PerContextEnabled"}) { |  3325     if ($attrExt->{"PerContextEnabled"}) { | 
|  3326         # Only call Set()/SetAccessor() if this method should be enabled |  3326         # Only call Set()/SetAccessor() if this method should be enabled | 
|  3327         my $contextEnabledFunction = GetContextEnabledFunctionName($function); |  3327         my $contextEnabledFunction = GetContextEnabledFunctionName($function); | 
|  3328         $conditional4 = "if (${contextEnabledFunction}(impl->document()))\n     
         "; |  3328         $conditional4 = "if (${contextEnabledFunction}(impl->document()))\n     
         "; | 
|  3329     } |  3329     } | 
|  3330     $conditional8 = $conditional4 . "    " if $conditional4 ne ""; |  3330     $conditional8 = $conditional4 . "    " if $conditional4 ne ""; | 
|  3331  |  3331  | 
|  3332     if ($interface->extendedAttributes->{"CheckSecurity"} && $attrExt->{"DoNotCh
      eckSecurity"}) { |  3332     if ($interface->extendedAttributes->{"CheckSecurity"} && $attrExt->{"DoNotCh
      eckSecurity"}) { | 
|  3333         my $setter = $attrExt->{"ReadOnly"} ? "0" : "${implClassName}V8Internal:
      :${implClassName}DomainSafeFunctionSetter"; |  3333         my $setter = $attrExt->{"ReadOnly"} ? "0" : "${implClassName}V8Internal:
      :${implClassName}OriginSafeMethodSetter"; | 
|  3334         # Functions that are marked DoNotCheckSecurity are always readable but i
      f they are changed |  3334         # Functions that are marked DoNotCheckSecurity are always readable but i
      f they are changed | 
|  3335         # and then accessed on a different domain we do not return the underlyin
      g value but instead |  3335         # and then accessed on a different domain we do not return the underlyin
      g value but instead | 
|  3336         # return a new copy of the original function. This is achieved by storin
      g the changed value |  3336         # return a new copy of the original function. This is achieved by storin
      g the changed value | 
|  3337         # as hidden property. |  3337         # as hidden property. | 
|  3338         $code .= <<END; |  3338         $code .= <<END; | 
|  3339  |  3339  | 
|  3340     // $commentInfo |  3340     // $commentInfo | 
|  3341 END |  3341 END | 
|  3342         if ($function->extendedAttributes->{"PerWorldBindings"}) { |  3342         if ($function->extendedAttributes->{"PerWorldBindings"}) { | 
|  3343             $code .= <<END; |  3343             $code .= <<END; | 
|  3344     if (currentWorldType == MainWorld) { |  3344     if (currentWorldType == MainWorld) { | 
|  3345         ${conditional8}$template->SetAccessor(v8::String::NewSymbol("$name"), ${
      implClassName}V8Internal::${name}AttributeGetterCallbackForMainWorld, ${setter},
       v8Undefined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($property_a
      ttributes)); |  3345         ${conditional8}$template->SetAccessor(v8::String::NewSymbol("$name"), ${
      implClassName}V8Internal::${name}OriginSafeMethodGetterCallbackForMainWorld, ${s
      etter}, v8Undefined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($pro
      perty_attributes)); | 
|  3346     } else { |  3346     } else { | 
|  3347         ${conditional8}$template->SetAccessor(v8::String::NewSymbol("$name"), ${
      implClassName}V8Internal::${name}AttributeGetterCallback, ${setter}, v8Undefined
      (), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($property_attributes)); |  3347         ${conditional8}$template->SetAccessor(v8::String::NewSymbol("$name"), ${
      implClassName}V8Internal::${name}OriginSafeMethodGetterCallback, ${setter}, v8Un
      defined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($property_attrib
      utes)); | 
|  3348     } |  3348     } | 
|  3349 END |  3349 END | 
|  3350         } else { |  3350         } else { | 
|  3351             $code .= "    ${conditional4}$template->SetAccessor(v8::String::NewS
      ymbol(\"$name\"), ${implClassName}V8Internal::${name}AttributeGetterCallback, ${
      setter}, v8Undefined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribute>($pr
      operty_attributes));\n"; |  3351             $code .= "    ${conditional4}$template->SetAccessor(v8::String::NewS
      ymbol(\"$name\"), ${implClassName}V8Internal::${name}OriginSafeMethodGetterCallb
      ack, ${setter}, v8Undefined(), v8::ALL_CAN_READ, static_cast<v8::PropertyAttribu
      te>($property_attributes));\n"; | 
|  3352         } |  3352         } | 
|  3353  |  3353  | 
|  3354         return $code; |  3354         return $code; | 
|  3355     } |  3355     } | 
|  3356  |  3356  | 
|  3357     my $signature = "defaultSignature"; |  3357     my $signature = "defaultSignature"; | 
|  3358     if ($attrExt->{"DoNotCheckSignature"} || $function->isStatic) { |  3358     if ($attrExt->{"DoNotCheckSignature"} || $function->isStatic) { | 
|  3359        $signature = "v8::Local<v8::Signature>()"; |  3359        $signature = "v8::Local<v8::Signature>()"; | 
|  3360     } |  3360     } | 
|  3361  |  3361  | 
| (...skipping 2961 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  6323     my $interface = shift; |  6323     my $interface = shift; | 
|  6324  |  6324  | 
|  6325     return 1 if $interface->extendedAttributes->{"CustomToV8"}; |  6325     return 1 if $interface->extendedAttributes->{"CustomToV8"}; | 
|  6326     return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; |  6326     return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; | 
|  6327     return 1 if InheritsInterface($interface, "Document"); |  6327     return 1 if InheritsInterface($interface, "Document"); | 
|  6328  |  6328  | 
|  6329     return 0; |  6329     return 0; | 
|  6330 } |  6330 } | 
|  6331  |  6331  | 
|  6332 1; |  6332 1; | 
| OLD | NEW |