| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 | 68 |
| 69 namespace WebCore { | 69 namespace WebCore { |
| 70 const WrapperTypeInfo V8TestInterfaceCheckSecurity::wrapperTypeInfo = { gin::kEm
bedderBlink, V8TestInterfaceCheckSecurity::domTemplate, V8TestInterfaceCheckSecu
rity::derefObject, 0, 0, 0, V8TestInterfaceCheckSecurity::installPerContextEnabl
edMethods, 0, WrapperTypeObjectPrototype, false }; | 70 const WrapperTypeInfo V8TestInterfaceCheckSecurity::wrapperTypeInfo = { gin::kEm
bedderBlink, V8TestInterfaceCheckSecurity::domTemplate, V8TestInterfaceCheckSecu
rity::derefObject, 0, 0, 0, V8TestInterfaceCheckSecurity::installPerContextEnabl
edMethods, 0, WrapperTypeObjectPrototype, false }; |
| 71 | 71 |
| 72 namespace TestInterfaceCheckSecurityV8Internal { | 72 namespace TestInterfaceCheckSecurityV8Internal { |
| 73 | 73 |
| 74 template <typename T> void V8_USE(T) { } | 74 template <typename T> void V8_USE(T) { } |
| 75 | 75 |
| 76 static void longAttributeAttributeGetter(const v8::PropertyCallbackInfo<v8::Valu
e>& info) | 76 static void longAttributeAttributeGetter(const v8::PropertyCallbackInfo<v8::Valu
e>& info) |
| 77 { | 77 { |
| 78 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 78 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 79 v8SetReturnValueInt(info, imp->longAttribute()); | 79 v8SetReturnValueInt(info, impl->longAttribute()); |
| 80 } | 80 } |
| 81 | 81 |
| 82 static void longAttributeAttributeGetterCallback(v8::Local<v8::String>, const v8
::PropertyCallbackInfo<v8::Value>& info) | 82 static void longAttributeAttributeGetterCallback(v8::Local<v8::String>, const v8
::PropertyCallbackInfo<v8::Value>& info) |
| 83 { | 83 { |
| 84 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 84 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 85 TestInterfaceCheckSecurityV8Internal::longAttributeAttributeGetter(info); | 85 TestInterfaceCheckSecurityV8Internal::longAttributeAttributeGetter(info); |
| 86 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 86 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 87 } | 87 } |
| 88 | 88 |
| 89 static void doNotCheckSecurityLongAttributeAttributeGetter(const v8::PropertyCal
lbackInfo<v8::Value>& info) | 89 static void doNotCheckSecurityLongAttributeAttributeGetter(const v8::PropertyCal
lbackInfo<v8::Value>& info) |
| 90 { | 90 { |
| 91 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 91 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 92 v8SetReturnValueInt(info, imp->doNotCheckSecurityLongAttribute()); | 92 v8SetReturnValueInt(info, impl->doNotCheckSecurityLongAttribute()); |
| 93 } | 93 } |
| 94 | 94 |
| 95 static void doNotCheckSecurityLongAttributeAttributeGetterCallback(v8::Local<v8:
:String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 95 static void doNotCheckSecurityLongAttributeAttributeGetterCallback(v8::Local<v8:
:String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 96 { | 96 { |
| 97 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 97 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 98 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityLongAttributeAttribu
teGetter(info); | 98 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityLongAttributeAttribu
teGetter(info); |
| 99 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 99 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 100 } | 100 } |
| 101 | 101 |
| 102 static void doNotCheckSecurityLongAttributeAttributeSetter(v8::Local<v8::Value>
jsValue, const v8::PropertyCallbackInfo<void>& info) | 102 static void doNotCheckSecurityLongAttributeAttributeSetter(v8::Local<v8::Value>
jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 103 { | 103 { |
| 104 ExceptionState exceptionState(ExceptionState::SetterContext, "doNotCheckSecu
rityLongAttribute", "TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate
()); | 104 ExceptionState exceptionState(ExceptionState::SetterContext, "doNotCheckSecu
rityLongAttribute", "TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate
()); |
| 105 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 105 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 106 V8TRYCATCH_EXCEPTION_VOID(int, cppValue, toInt32(jsValue, exceptionState), e
xceptionState); | 106 V8TRYCATCH_EXCEPTION_VOID(int, cppValue, toInt32(jsValue, exceptionState), e
xceptionState); |
| 107 imp->setDoNotCheckSecurityLongAttribute(cppValue); | 107 impl->setDoNotCheckSecurityLongAttribute(cppValue); |
| 108 } | 108 } |
| 109 | 109 |
| 110 static void doNotCheckSecurityLongAttributeAttributeSetterCallback(v8::Local<v8:
:String>, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& in
fo) | 110 static void doNotCheckSecurityLongAttributeAttributeSetterCallback(v8::Local<v8:
:String>, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& in
fo) |
| 111 { | 111 { |
| 112 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); | 112 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); |
| 113 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityLongAttributeAttribu
teSetter(jsValue, info); | 113 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityLongAttributeAttribu
teSetter(jsValue, info); |
| 114 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 114 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 115 } | 115 } |
| 116 | 116 |
| 117 static void doNotCheckSecurityReadonlyLongAttributeAttributeGetter(const v8::Pro
pertyCallbackInfo<v8::Value>& info) | 117 static void doNotCheckSecurityReadonlyLongAttributeAttributeGetter(const v8::Pro
pertyCallbackInfo<v8::Value>& info) |
| 118 { | 118 { |
| 119 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 119 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 120 v8SetReturnValueInt(info, imp->doNotCheckSecurityReadonlyLongAttribute()); | 120 v8SetReturnValueInt(info, impl->doNotCheckSecurityReadonlyLongAttribute()); |
| 121 } | 121 } |
| 122 | 122 |
| 123 static void doNotCheckSecurityReadonlyLongAttributeAttributeGetterCallback(v8::L
ocal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 123 static void doNotCheckSecurityReadonlyLongAttributeAttributeGetterCallback(v8::L
ocal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 124 { | 124 { |
| 125 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 125 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 126 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadonlyLongAttribut
eAttributeGetter(info); | 126 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadonlyLongAttribut
eAttributeGetter(info); |
| 127 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 127 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 128 } | 128 } |
| 129 | 129 |
| 130 static void doNotCheckSecurityOnSetterLongAttributeAttributeGetter(const v8::Pro
pertyCallbackInfo<v8::Value>& info) | 130 static void doNotCheckSecurityOnSetterLongAttributeAttributeGetter(const v8::Pro
pertyCallbackInfo<v8::Value>& info) |
| 131 { | 131 { |
| 132 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 132 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 133 v8SetReturnValueInt(info, imp->doNotCheckSecurityOnSetterLongAttribute()); | 133 v8SetReturnValueInt(info, impl->doNotCheckSecurityOnSetterLongAttribute()); |
| 134 } | 134 } |
| 135 | 135 |
| 136 static void doNotCheckSecurityOnSetterLongAttributeAttributeGetterCallback(v8::L
ocal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 136 static void doNotCheckSecurityOnSetterLongAttributeAttributeGetterCallback(v8::L
ocal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 137 { | 137 { |
| 138 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 138 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 139 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityOnSetterLongAttribut
eAttributeGetter(info); | 139 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityOnSetterLongAttribut
eAttributeGetter(info); |
| 140 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 140 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 141 } | 141 } |
| 142 | 142 |
| 143 static void doNotCheckSecurityOnSetterLongAttributeAttributeSetter(v8::Local<v8:
:Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 143 static void doNotCheckSecurityOnSetterLongAttributeAttributeSetter(v8::Local<v8:
:Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 144 { | 144 { |
| 145 ExceptionState exceptionState(ExceptionState::SetterContext, "doNotCheckSecu
rityOnSetterLongAttribute", "TestInterfaceCheckSecurity", info.Holder(), info.Ge
tIsolate()); | 145 ExceptionState exceptionState(ExceptionState::SetterContext, "doNotCheckSecu
rityOnSetterLongAttribute", "TestInterfaceCheckSecurity", info.Holder(), info.Ge
tIsolate()); |
| 146 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 146 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 147 V8TRYCATCH_EXCEPTION_VOID(int, cppValue, toInt32(jsValue, exceptionState), e
xceptionState); | 147 V8TRYCATCH_EXCEPTION_VOID(int, cppValue, toInt32(jsValue, exceptionState), e
xceptionState); |
| 148 imp->setDoNotCheckSecurityOnSetterLongAttribute(cppValue); | 148 impl->setDoNotCheckSecurityOnSetterLongAttribute(cppValue); |
| 149 } | 149 } |
| 150 | 150 |
| 151 static void doNotCheckSecurityOnSetterLongAttributeAttributeSetterCallback(v8::L
ocal<v8::String>, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v
oid>& info) | 151 static void doNotCheckSecurityOnSetterLongAttributeAttributeSetterCallback(v8::L
ocal<v8::String>, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v
oid>& info) |
| 152 { | 152 { |
| 153 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); | 153 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); |
| 154 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityOnSetterLongAttribut
eAttributeSetter(jsValue, info); | 154 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityOnSetterLongAttribut
eAttributeSetter(jsValue, info); |
| 155 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 155 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 156 } | 156 } |
| 157 | 157 |
| 158 static void doNotCheckSecurityReplaceableReadonlyLongAttributeAttributeGetter(co
nst v8::PropertyCallbackInfo<v8::Value>& info) | 158 static void doNotCheckSecurityReplaceableReadonlyLongAttributeAttributeGetter(co
nst v8::PropertyCallbackInfo<v8::Value>& info) |
| 159 { | 159 { |
| 160 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 160 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 161 v8SetReturnValueInt(info, imp->doNotCheckSecurityReplaceableReadonlyLongAttr
ibute()); | 161 v8SetReturnValueInt(info, impl->doNotCheckSecurityReplaceableReadonlyLongAtt
ribute()); |
| 162 } | 162 } |
| 163 | 163 |
| 164 static void doNotCheckSecurityReplaceableReadonlyLongAttributeAttributeGetterCal
lback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 164 static void doNotCheckSecurityReplaceableReadonlyLongAttributeAttributeGetterCal
lback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 165 { | 165 { |
| 166 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 166 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 167 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReplaceableReadonlyL
ongAttributeAttributeGetter(info); | 167 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReplaceableReadonlyL
ongAttributeAttributeGetter(info); |
| 168 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 168 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 169 } | 169 } |
| 170 | 170 |
| 171 static void TestInterfaceCheckSecurityReplaceableAttributeSetter(v8::Local<v8::S
tring> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>&
info) | 171 static void TestInterfaceCheckSecurityReplaceableAttributeSetter(v8::Local<v8::S
tring> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>&
info) |
| 172 { | 172 { |
| 173 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 173 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 174 v8::String::Utf8Value attributeName(name); | 174 v8::String::Utf8Value attributeName(name); |
| 175 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate()); | 175 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate()); |
| 176 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), exceptionState)) { | 176 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), exceptionState)) { |
| 177 exceptionState.throwIfNeeded(); | 177 exceptionState.throwIfNeeded(); |
| 178 return; | 178 return; |
| 179 } | 179 } |
| 180 info.This()->ForceSet(name, jsValue); | 180 info.This()->ForceSet(name, jsValue); |
| 181 } | 181 } |
| 182 | 182 |
| 183 static void TestInterfaceCheckSecurityReplaceableAttributeSetterCallback(v8::Loc
al<v8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInf
o<void>& info) | 183 static void TestInterfaceCheckSecurityReplaceableAttributeSetterCallback(v8::Loc
al<v8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInf
o<void>& info) |
| 184 { | 184 { |
| 185 TestInterfaceCheckSecurityV8Internal::TestInterfaceCheckSecurityReplaceableA
ttributeSetter(name, jsValue, info); | 185 TestInterfaceCheckSecurityV8Internal::TestInterfaceCheckSecurityReplaceableA
ttributeSetter(name, jsValue, info); |
| 186 } | 186 } |
| 187 | 187 |
| 188 bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::Access
Type type, v8::Local<v8::Value>) | 188 bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::Access
Type type, v8::Local<v8::Value>) |
| 189 { | 189 { |
| 190 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(ho
st); | 190 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
st); |
| 191 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
imp->frame(), DoNotReportSecurityError); | 191 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
impl->frame(), DoNotReportSecurityError); |
| 192 } | 192 } |
| 193 | 193 |
| 194 bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8
::AccessType type, v8::Local<v8::Value>) | 194 bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8
::AccessType type, v8::Local<v8::Value>) |
| 195 { | 195 { |
| 196 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(ho
st); | 196 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
st); |
| 197 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
imp->frame(), DoNotReportSecurityError); | 197 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
impl->frame(), DoNotReportSecurityError); |
| 198 } | 198 } |
| 199 | 199 |
| 200 static void voidMethodMethod(const v8::FunctionCallbackInfo<v8::Value>& info) | 200 static void voidMethodMethod(const v8::FunctionCallbackInfo<v8::Value>& info) |
| 201 { | 201 { |
| 202 ExceptionState exceptionState(ExceptionState::ExecutionContext, "voidMethod"
, "TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate()); | 202 ExceptionState exceptionState(ExceptionState::ExecutionContext, "voidMethod"
, "TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate()); |
| 203 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 203 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 204 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), exceptionState)) { | 204 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), exceptionState)) { |
| 205 exceptionState.throwIfNeeded(); | 205 exceptionState.throwIfNeeded(); |
| 206 return; | 206 return; |
| 207 } | 207 } |
| 208 imp->voidMethod(); | 208 impl->voidMethod(); |
| 209 } | 209 } |
| 210 | 210 |
| 211 static void voidMethodMethodCallback(const v8::FunctionCallbackInfo<v8::Value>&
info) | 211 static void voidMethodMethodCallback(const v8::FunctionCallbackInfo<v8::Value>&
info) |
| 212 { | 212 { |
| 213 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 213 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 214 TestInterfaceCheckSecurityV8Internal::voidMethodMethod(info); | 214 TestInterfaceCheckSecurityV8Internal::voidMethodMethod(info); |
| 215 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 215 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 216 } | 216 } |
| 217 | 217 |
| 218 static void doNotCheckSecurityVoidMethodMethod(const v8::FunctionCallbackInfo<v8
::Value>& info) | 218 static void doNotCheckSecurityVoidMethodMethod(const v8::FunctionCallbackInfo<v8
::Value>& info) |
| 219 { | 219 { |
| 220 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 220 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 221 imp->doNotCheckSecurityVoidMethod(); | 221 impl->doNotCheckSecurityVoidMethod(); |
| 222 } | 222 } |
| 223 | 223 |
| 224 static void doNotCheckSecurityVoidMethodMethodCallback(const v8::FunctionCallbac
kInfo<v8::Value>& info) | 224 static void doNotCheckSecurityVoidMethodMethodCallback(const v8::FunctionCallbac
kInfo<v8::Value>& info) |
| 225 { | 225 { |
| 226 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 226 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 227 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMethodMethod(inf
o); | 227 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMethodMethod(inf
o); |
| 228 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 228 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 229 } | 229 } |
| 230 | 230 |
| 231 static void doNotCheckSecurityVoidMethodOriginSafeMethodGetter(const v8::Propert
yCallbackInfo<v8::Value>& info) | 231 static void doNotCheckSecurityVoidMethodOriginSafeMethodGetter(const v8::Propert
yCallbackInfo<v8::Value>& info) |
| 232 { | 232 { |
| 233 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 233 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 234 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 234 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 235 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMethodMeth
odCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8TestInterface
CheckSecurity::domTemplate(info.GetIsolate())), 0); | 235 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMethodMeth
odCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8TestInterface
CheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 236 | 236 |
| 237 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 237 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 238 if (holder.IsEmpty()) { | 238 if (holder.IsEmpty()) { |
| 239 // This is only reachable via |object.__proto__.func|, in which case it | 239 // This is only reachable via |object.__proto__.func|, in which case it |
| 240 // has already passed the same origin security check | 240 // has already passed the same origin security check |
| 241 v8SetReturnValue(info, privateTemplate->GetFunction()); | 241 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 242 return; | 242 return; |
| 243 } | 243 } |
| 244 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 244 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 245 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), DoNotReportSecurityError)) { | 245 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { |
| 246 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 246 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 247 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMeth
odMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8TestInt
erfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 247 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMeth
odMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8TestInt
erfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 248 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 248 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 249 return; | 249 return; |
| 250 } | 250 } |
| 251 | 251 |
| 252 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityVoidMethod")); | 252 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityVoidMethod")); |
| 253 if (!hiddenValue.IsEmpty()) { | 253 if (!hiddenValue.IsEmpty()) { |
| 254 v8SetReturnValue(info, hiddenValue); | 254 v8SetReturnValue(info, hiddenValue); |
| 255 return; | 255 return; |
| 256 } | 256 } |
| 257 | 257 |
| 258 v8SetReturnValue(info, privateTemplate->GetFunction()); | 258 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 259 } | 259 } |
| 260 | 260 |
| 261 static void doNotCheckSecurityVoidMethodOriginSafeMethodGetterCallback(v8::Local
<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 261 static void doNotCheckSecurityVoidMethodOriginSafeMethodGetterCallback(v8::Local
<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 262 { | 262 { |
| 263 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 263 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 264 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMethodOriginSafe
MethodGetter(info); | 264 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityVoidMethodOriginSafe
MethodGetter(info); |
| 265 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 265 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 266 } | 266 } |
| 267 | 267 |
| 268 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodMethod(const v8::Func
tionCallbackInfo<v8::Value>& info) | 268 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodMethod(const v8::Func
tionCallbackInfo<v8::Value>& info) |
| 269 { | 269 { |
| 270 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 270 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 271 imp->doNotCheckSecurityDoNotCheckSignatureVoidMethod(); | 271 impl->doNotCheckSecurityDoNotCheckSignatureVoidMethod(); |
| 272 } | 272 } |
| 273 | 273 |
| 274 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodMethodCallback(const
v8::FunctionCallbackInfo<v8::Value>& info) | 274 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodMethodCallback(const
v8::FunctionCallbackInfo<v8::Value>& info) |
| 275 { | 275 { |
| 276 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 276 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 277 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotCheckSignatureV
oidMethodMethod(info); | 277 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotCheckSignatureV
oidMethodMethod(info); |
| 278 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 278 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 279 } | 279 } |
| 280 | 280 |
| 281 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodOriginSafeMethodGette
r(const v8::PropertyCallbackInfo<v8::Value>& info) | 281 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodOriginSafeMethodGette
r(const v8::PropertyCallbackInfo<v8::Value>& info) |
| 282 { | 282 { |
| 283 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 283 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 284 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 284 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 285 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotCheckSign
atureVoidMethodMethodCallback, v8Undefined(), v8::Local<v8::Signature>(), 0); | 285 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotCheckSign
atureVoidMethodMethodCallback, v8Undefined(), v8::Local<v8::Signature>(), 0); |
| 286 | 286 |
| 287 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 287 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 288 if (holder.IsEmpty()) { | 288 if (holder.IsEmpty()) { |
| 289 // This is only reachable via |object.__proto__.func|, in which case it | 289 // This is only reachable via |object.__proto__.func|, in which case it |
| 290 // has already passed the same origin security check | 290 // has already passed the same origin security check |
| 291 v8SetReturnValue(info, privateTemplate->GetFunction()); | 291 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 292 return; | 292 return; |
| 293 } | 293 } |
| 294 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 294 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 295 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), DoNotReportSecurityError)) { | 295 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { |
| 296 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 296 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 297 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotChe
ckSignatureVoidMethodMethodCallback, v8Undefined(), v8::Local<v8::Signature>(),
0); | 297 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotChe
ckSignatureVoidMethodMethodCallback, v8Undefined(), v8::Local<v8::Signature>(),
0); |
| 298 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 298 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 299 return; | 299 return; |
| 300 } | 300 } |
| 301 | 301 |
| 302 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityDoNotCheckSignatureVoidMethod")); | 302 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityDoNotCheckSignatureVoidMethod")); |
| 303 if (!hiddenValue.IsEmpty()) { | 303 if (!hiddenValue.IsEmpty()) { |
| 304 v8SetReturnValue(info, hiddenValue); | 304 v8SetReturnValue(info, hiddenValue); |
| 305 return; | 305 return; |
| 306 } | 306 } |
| 307 | 307 |
| 308 v8SetReturnValue(info, privateTemplate->GetFunction()); | 308 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 309 } | 309 } |
| 310 | 310 |
| 311 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodOriginSafeMethodGette
rCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info
) | 311 static void doNotCheckSecurityDoNotCheckSignatureVoidMethodOriginSafeMethodGette
rCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info
) |
| 312 { | 312 { |
| 313 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 313 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 314 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotCheckSignatureV
oidMethodOriginSafeMethodGetter(info); | 314 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityDoNotCheckSignatureV
oidMethodOriginSafeMethodGetter(info); |
| 315 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 315 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 316 } | 316 } |
| 317 | 317 |
| 318 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethod(const v8::Functio
nCallbackInfo<v8::Value>& info) | 318 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethod(const v8::Functio
nCallbackInfo<v8::Value>& info) |
| 319 { | 319 { |
| 320 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 320 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 321 imp->doNotCheckSecurityPerWorldBindingsVoidMethod(); | 321 impl->doNotCheckSecurityPerWorldBindingsVoidMethod(); |
| 322 } | 322 } |
| 323 | 323 |
| 324 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethodCallback(const v8:
:FunctionCallbackInfo<v8::Value>& info) | 324 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethodCallback(const v8:
:FunctionCallbackInfo<v8::Value>& info) |
| 325 { | 325 { |
| 326 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 326 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 327 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodMethod(info); | 327 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodMethod(info); |
| 328 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 328 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 329 } | 329 } |
| 330 | 330 |
| 331 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetter(c
onst v8::PropertyCallbackInfo<v8::Value>& info) | 331 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetter(c
onst v8::PropertyCallbackInfo<v8::Value>& info) |
| 332 { | 332 { |
| 333 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 333 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 334 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 334 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 335 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindin
gsVoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(),
V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 335 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindin
gsVoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(),
V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 336 | 336 |
| 337 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 337 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 338 if (holder.IsEmpty()) { | 338 if (holder.IsEmpty()) { |
| 339 // This is only reachable via |object.__proto__.func|, in which case it | 339 // This is only reachable via |object.__proto__.func|, in which case it |
| 340 // has already passed the same origin security check | 340 // has already passed the same origin security check |
| 341 v8SetReturnValue(info, privateTemplate->GetFunction()); | 341 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 342 return; | 342 return; |
| 343 } | 343 } |
| 344 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 344 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 345 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), DoNotReportSecurityError)) { | 345 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { |
| 346 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 346 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 347 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorld
BindingsVoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsol
ate(), V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 347 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorld
BindingsVoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsol
ate(), V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 348 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 348 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 349 return; | 349 return; |
| 350 } | 350 } |
| 351 | 351 |
| 352 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityPerWorldBindingsVoidMethod")); | 352 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityPerWorldBindingsVoidMethod")); |
| 353 if (!hiddenValue.IsEmpty()) { | 353 if (!hiddenValue.IsEmpty()) { |
| 354 v8SetReturnValue(info, hiddenValue); | 354 v8SetReturnValue(info, hiddenValue); |
| 355 return; | 355 return; |
| 356 } | 356 } |
| 357 | 357 |
| 358 v8SetReturnValue(info, privateTemplate->GetFunction()); | 358 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 359 } | 359 } |
| 360 | 360 |
| 361 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetterCa
llback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 361 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetterCa
llback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 362 { | 362 { |
| 363 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 363 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 364 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodOriginSafeMethodGetter(info); | 364 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodOriginSafeMethodGetter(info); |
| 365 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 365 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 366 } | 366 } |
| 367 | 367 |
| 368 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethodForMainWorld(const
v8::FunctionCallbackInfo<v8::Value>& info) | 368 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethodForMainWorld(const
v8::FunctionCallbackInfo<v8::Value>& info) |
| 369 { | 369 { |
| 370 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 370 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 371 imp->doNotCheckSecurityPerWorldBindingsVoidMethod(); | 371 impl->doNotCheckSecurityPerWorldBindingsVoidMethod(); |
| 372 } | 372 } |
| 373 | 373 |
| 374 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethodCallbackForMainWor
ld(const v8::FunctionCallbackInfo<v8::Value>& info) | 374 static void doNotCheckSecurityPerWorldBindingsVoidMethodMethodCallbackForMainWor
ld(const v8::FunctionCallbackInfo<v8::Value>& info) |
| 375 { | 375 { |
| 376 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 376 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 377 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodMethodForMainWorld(info); | 377 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodMethodForMainWorld(info); |
| 378 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 378 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 379 } | 379 } |
| 380 | 380 |
| 381 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetterFo
rMainWorld(const v8::PropertyCallbackInfo<v8::Value>& info) | 381 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetterFo
rMainWorld(const v8::PropertyCallbackInfo<v8::Value>& info) |
| 382 { | 382 { |
| 383 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 383 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 384 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 384 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 385 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindin
gsVoidMethodMethodCallbackForMainWorld, v8Undefined(), v8::Signature::New(info.G
etIsolate(), V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 385 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindin
gsVoidMethodMethodCallbackForMainWorld, v8Undefined(), v8::Signature::New(info.G
etIsolate(), V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 386 | 386 |
| 387 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 387 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 388 if (holder.IsEmpty()) { | 388 if (holder.IsEmpty()) { |
| 389 // This is only reachable via |object.__proto__.func|, in which case it | 389 // This is only reachable via |object.__proto__.func|, in which case it |
| 390 // has already passed the same origin security check | 390 // has already passed the same origin security check |
| 391 v8SetReturnValue(info, privateTemplate->GetFunction()); | 391 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 392 return; | 392 return; |
| 393 } | 393 } |
| 394 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 394 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 395 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), DoNotReportSecurityError)) { | 395 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { |
| 396 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 396 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 397 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorld
BindingsVoidMethodMethodCallbackForMainWorld, v8Undefined(), v8::Signature::New(
info.GetIsolate(), V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate()))
, 0); | 397 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorld
BindingsVoidMethodMethodCallbackForMainWorld, v8Undefined(), v8::Signature::New(
info.GetIsolate(), V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate()))
, 0); |
| 398 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 398 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 399 return; | 399 return; |
| 400 } | 400 } |
| 401 | 401 |
| 402 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityPerWorldBindingsVoidMethod")); | 402 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityPerWorldBindingsVoidMethod")); |
| 403 if (!hiddenValue.IsEmpty()) { | 403 if (!hiddenValue.IsEmpty()) { |
| 404 v8SetReturnValue(info, hiddenValue); | 404 v8SetReturnValue(info, hiddenValue); |
| 405 return; | 405 return; |
| 406 } | 406 } |
| 407 | 407 |
| 408 v8SetReturnValue(info, privateTemplate->GetFunction()); | 408 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 409 } | 409 } |
| 410 | 410 |
| 411 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetterCa
llbackForMainWorld(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Val
ue>& info) | 411 static void doNotCheckSecurityPerWorldBindingsVoidMethodOriginSafeMethodGetterCa
llbackForMainWorld(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Val
ue>& info) |
| 412 { | 412 { |
| 413 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 413 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 414 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodOriginSafeMethodGetterForMainWorld(info); | 414 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityPerWorldBindingsVoid
MethodOriginSafeMethodGetterForMainWorld(info); |
| 415 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 415 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 416 } | 416 } |
| 417 | 417 |
| 418 static void doNotCheckSecurityReadOnlyVoidMethodMethod(const v8::FunctionCallbac
kInfo<v8::Value>& info) | 418 static void doNotCheckSecurityReadOnlyVoidMethodMethod(const v8::FunctionCallbac
kInfo<v8::Value>& info) |
| 419 { | 419 { |
| 420 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 420 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 421 imp->doNotCheckSecurityReadOnlyVoidMethod(); | 421 impl->doNotCheckSecurityReadOnlyVoidMethod(); |
| 422 } | 422 } |
| 423 | 423 |
| 424 static void doNotCheckSecurityReadOnlyVoidMethodMethodCallback(const v8::Functio
nCallbackInfo<v8::Value>& info) | 424 static void doNotCheckSecurityReadOnlyVoidMethodMethodCallback(const v8::Functio
nCallbackInfo<v8::Value>& info) |
| 425 { | 425 { |
| 426 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 426 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 427 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnlyVoidMethodMe
thod(info); | 427 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnlyVoidMethodMe
thod(info); |
| 428 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 428 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 429 } | 429 } |
| 430 | 430 |
| 431 static void doNotCheckSecurityReadOnlyVoidMethodOriginSafeMethodGetter(const v8:
:PropertyCallbackInfo<v8::Value>& info) | 431 static void doNotCheckSecurityReadOnlyVoidMethodOriginSafeMethodGetter(const v8:
:PropertyCallbackInfo<v8::Value>& info) |
| 432 { | 432 { |
| 433 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 433 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 434 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 434 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 435 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnlyVoidMe
thodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8TestI
nterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 435 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnlyVoidMe
thodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8TestI
nterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 436 | 436 |
| 437 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 437 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 438 if (holder.IsEmpty()) { | 438 if (holder.IsEmpty()) { |
| 439 // This is only reachable via |object.__proto__.func|, in which case it | 439 // This is only reachable via |object.__proto__.func|, in which case it |
| 440 // has already passed the same origin security check | 440 // has already passed the same origin security check |
| 441 v8SetReturnValue(info, privateTemplate->GetFunction()); | 441 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 442 return; | 442 return; |
| 443 } | 443 } |
| 444 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 444 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 445 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), DoNotReportSecurityError)) { | 445 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { |
| 446 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 446 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 447 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnly
VoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V
8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 447 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnly
VoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V
8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 448 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 448 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 449 return; | 449 return; |
| 450 } | 450 } |
| 451 | 451 |
| 452 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityReadOnlyVoidMethod")); | 452 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityReadOnlyVoidMethod")); |
| 453 if (!hiddenValue.IsEmpty()) { | 453 if (!hiddenValue.IsEmpty()) { |
| 454 v8SetReturnValue(info, hiddenValue); | 454 v8SetReturnValue(info, hiddenValue); |
| 455 return; | 455 return; |
| 456 } | 456 } |
| 457 | 457 |
| 458 v8SetReturnValue(info, privateTemplate->GetFunction()); | 458 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 459 } | 459 } |
| 460 | 460 |
| 461 static void doNotCheckSecurityReadOnlyVoidMethodOriginSafeMethodGetterCallback(v
8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 461 static void doNotCheckSecurityReadOnlyVoidMethodOriginSafeMethodGetterCallback(v
8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 462 { | 462 { |
| 463 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 463 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 464 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnlyVoidMethodOr
iginSafeMethodGetter(info); | 464 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityReadOnlyVoidMethodOr
iginSafeMethodGetter(info); |
| 465 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 465 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 466 } | 466 } |
| 467 | 467 |
| 468 static void doNotCheckSecurityUnforgeableVoidMethodMethod(const v8::FunctionCall
backInfo<v8::Value>& info) | 468 static void doNotCheckSecurityUnforgeableVoidMethodMethod(const v8::FunctionCall
backInfo<v8::Value>& info) |
| 469 { | 469 { |
| 470 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(inf
o.Holder()); | 470 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(in
fo.Holder()); |
| 471 imp->doNotCheckSecurityUnforgeableVoidMethod(); | 471 impl->doNotCheckSecurityUnforgeableVoidMethod(); |
| 472 } | 472 } |
| 473 | 473 |
| 474 static void doNotCheckSecurityUnforgeableVoidMethodMethodCallback(const v8::Func
tionCallbackInfo<v8::Value>& info) | 474 static void doNotCheckSecurityUnforgeableVoidMethodMethodCallback(const v8::Func
tionCallbackInfo<v8::Value>& info) |
| 475 { | 475 { |
| 476 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 476 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 477 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgeableVoidMetho
dMethod(info); | 477 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgeableVoidMetho
dMethod(info); |
| 478 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 478 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 479 } | 479 } |
| 480 | 480 |
| 481 static void doNotCheckSecurityUnforgeableVoidMethodOriginSafeMethodGetter(const
v8::PropertyCallbackInfo<v8::Value>& info) | 481 static void doNotCheckSecurityUnforgeableVoidMethodOriginSafeMethodGetter(const
v8::PropertyCallbackInfo<v8::Value>& info) |
| 482 { | 482 { |
| 483 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 483 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 484 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 484 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); |
| 485 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgeableVoi
dMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8Te
stInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 485 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgeableVoi
dMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate(), V8Te
stInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 486 | 486 |
| 487 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 487 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 488 if (holder.IsEmpty()) { | 488 if (holder.IsEmpty()) { |
| 489 // This is only reachable via |object.__proto__.func|, in which case it | 489 // This is only reachable via |object.__proto__.func|, in which case it |
| 490 // has already passed the same origin security check | 490 // has already passed the same origin security check |
| 491 v8SetReturnValue(info, privateTemplate->GetFunction()); | 491 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 492 return; | 492 return; |
| 493 } | 493 } |
| 494 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 494 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 495 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), DoNotReportSecurityError)) { | 495 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { |
| 496 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 496 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 497 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgea
bleVoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate()
, V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); | 497 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgea
bleVoidMethodMethodCallback, v8Undefined(), v8::Signature::New(info.GetIsolate()
, V8TestInterfaceCheckSecurity::domTemplate(info.GetIsolate())), 0); |
| 498 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 498 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 499 return; | 499 return; |
| 500 } | 500 } |
| 501 | 501 |
| 502 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityUnforgeableVoidMethod")); | 502 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "doNotCheckSecurityUnforgeableVoidMethod")); |
| 503 if (!hiddenValue.IsEmpty()) { | 503 if (!hiddenValue.IsEmpty()) { |
| 504 v8SetReturnValue(info, hiddenValue); | 504 v8SetReturnValue(info, hiddenValue); |
| 505 return; | 505 return; |
| 506 } | 506 } |
| 507 | 507 |
| 508 v8SetReturnValue(info, privateTemplate->GetFunction()); | 508 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 509 } | 509 } |
| 510 | 510 |
| 511 static void doNotCheckSecurityUnforgeableVoidMethodOriginSafeMethodGetterCallbac
k(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 511 static void doNotCheckSecurityUnforgeableVoidMethodOriginSafeMethodGetterCallbac
k(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 512 { | 512 { |
| 513 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 513 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 514 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgeableVoidMetho
dOriginSafeMethodGetter(info); | 514 TestInterfaceCheckSecurityV8Internal::doNotCheckSecurityUnforgeableVoidMetho
dOriginSafeMethodGetter(info); |
| 515 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 515 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 516 } | 516 } |
| 517 | 517 |
| 518 static void TestInterfaceCheckSecurityOriginSafeMethodSetter(v8::Local<v8::Strin
g> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& inf
o) | 518 static void TestInterfaceCheckSecurityOriginSafeMethodSetter(v8::Local<v8::Strin
g> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& inf
o) |
| 519 { | 519 { |
| 520 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); | 520 v8::Handle<v8::Object> holder = V8TestInterfaceCheckSecurity::findInstanceIn
PrototypeChain(info.This(), info.GetIsolate()); |
| 521 if (holder.IsEmpty()) | 521 if (holder.IsEmpty()) |
| 522 return; | 522 return; |
| 523 TestInterfaceCheckSecurity* imp = V8TestInterfaceCheckSecurity::toNative(hol
der); | 523 TestInterfaceCheckSecurity* impl = V8TestInterfaceCheckSecurity::toNative(ho
lder); |
| 524 v8::String::Utf8Value attributeName(name); | 524 v8::String::Utf8Value attributeName(name); |
| 525 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate()); | 525 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"TestInterfaceCheckSecurity", info.Holder(), info.GetIsolate()); |
| 526 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), exceptionState)) { | 526 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), exceptionState)) { |
| 527 exceptionState.throwIfNeeded(); | 527 exceptionState.throwIfNeeded(); |
| 528 return; | 528 return; |
| 529 } | 529 } |
| 530 | 530 |
| 531 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.This(), name, jsValue)
; | 531 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.This(), name, jsValue)
; |
| 532 } | 532 } |
| 533 | 533 |
| 534 static void TestInterfaceCheckSecurityOriginSafeMethodSetterCallback(v8::Local<v
8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<vo
id>& info) | 534 static void TestInterfaceCheckSecurityOriginSafeMethodSetterCallback(v8::Local<v
8::String> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<vo
id>& info) |
| 535 { | 535 { |
| 536 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); | 536 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 633 fromInternalPointer(object)->deref(); | 633 fromInternalPointer(object)->deref(); |
| 634 } | 634 } |
| 635 | 635 |
| 636 template<> | 636 template<> |
| 637 v8::Handle<v8::Value> toV8NoInline(TestInterfaceCheckSecurity* impl, v8::Handle<
v8::Object> creationContext, v8::Isolate* isolate) | 637 v8::Handle<v8::Value> toV8NoInline(TestInterfaceCheckSecurity* impl, v8::Handle<
v8::Object> creationContext, v8::Isolate* isolate) |
| 638 { | 638 { |
| 639 return toV8(impl, creationContext, isolate); | 639 return toV8(impl, creationContext, isolate); |
| 640 } | 640 } |
| 641 | 641 |
| 642 } // namespace WebCore | 642 } // namespace WebCore |
| OLD | NEW |