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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 return; | 171 return; |
172 if (!V8CallBoolean(receiver->SetPrototype(context, prototype))) | 172 if (!V8CallBoolean(receiver->SetPrototype(context, prototype))) |
173 return; | 173 return; |
174 | 174 |
175 v8::Local<v8::Function> callback = created_.NewLocal(isolate); | 175 v8::Local<v8::Function> callback = created_.NewLocal(isolate); |
176 if (callback.IsEmpty()) | 176 if (callback.IsEmpty()) |
177 return; | 177 return; |
178 | 178 |
179 v8::TryCatch exception_catcher(isolate); | 179 v8::TryCatch exception_catcher(isolate); |
180 exception_catcher.SetVerbose(true); | 180 exception_catcher.SetVerbose(true); |
181 V8ScriptRunner::CallFunction(callback, script_state_->GetExecutionContext(), | 181 V8ScriptRunner::CallFunction(callback, |
| 182 ExecutionContext::From(script_state_.Get()), |
182 receiver, 0, 0, isolate); | 183 receiver, 0, 0, isolate); |
183 } | 184 } |
184 | 185 |
185 void V8V0CustomElementLifecycleCallbacks::Attached(Element* element) { | 186 void V8V0CustomElementLifecycleCallbacks::Attached(Element* element) { |
186 Call(attached_, element); | 187 Call(attached_, element); |
187 } | 188 } |
188 | 189 |
189 void V8V0CustomElementLifecycleCallbacks::Detached(Element* element) { | 190 void V8V0CustomElementLifecycleCallbacks::Detached(Element* element) { |
190 Call(detached_, element); | 191 Call(detached_, element); |
191 } | 192 } |
(...skipping 21 matching lines...) Expand all Loading... |
213 | 214 |
214 v8::Local<v8::Value> argv[] = { | 215 v8::Local<v8::Value> argv[] = { |
215 V8String(isolate, name), | 216 V8String(isolate, name), |
216 old_value.IsNull() ? v8::Local<v8::Value>(v8::Null(isolate)) | 217 old_value.IsNull() ? v8::Local<v8::Value>(v8::Null(isolate)) |
217 : v8::Local<v8::Value>(V8String(isolate, old_value)), | 218 : v8::Local<v8::Value>(V8String(isolate, old_value)), |
218 new_value.IsNull() ? v8::Local<v8::Value>(v8::Null(isolate)) | 219 new_value.IsNull() ? v8::Local<v8::Value>(v8::Null(isolate)) |
219 : v8::Local<v8::Value>(V8String(isolate, new_value))}; | 220 : v8::Local<v8::Value>(V8String(isolate, new_value))}; |
220 | 221 |
221 v8::TryCatch exception_catcher(isolate); | 222 v8::TryCatch exception_catcher(isolate); |
222 exception_catcher.SetVerbose(true); | 223 exception_catcher.SetVerbose(true); |
223 V8ScriptRunner::CallFunction(callback, script_state_->GetExecutionContext(), | 224 V8ScriptRunner::CallFunction(callback, |
| 225 ExecutionContext::From(script_state_.Get()), |
224 receiver, WTF_ARRAY_LENGTH(argv), argv, isolate); | 226 receiver, WTF_ARRAY_LENGTH(argv), argv, isolate); |
225 } | 227 } |
226 | 228 |
227 void V8V0CustomElementLifecycleCallbacks::Call( | 229 void V8V0CustomElementLifecycleCallbacks::Call( |
228 const ScopedPersistent<v8::Function>& weak_callback, | 230 const ScopedPersistent<v8::Function>& weak_callback, |
229 Element* element) { | 231 Element* element) { |
230 // FIXME: callbacks while paused should be queued up for execution to | 232 // FIXME: callbacks while paused should be queued up for execution to |
231 // continue then be delivered in order rather than delivered immediately. | 233 // continue then be delivered in order rather than delivered immediately. |
232 // Bug 329665 tracks similar behavior for other synchronous events. | 234 // Bug 329665 tracks similar behavior for other synchronous events. |
233 if (!script_state_->ContextIsValid()) | 235 if (!script_state_->ContextIsValid()) |
234 return; | 236 return; |
235 ScriptState::Scope scope(script_state_.Get()); | 237 ScriptState::Scope scope(script_state_.Get()); |
236 v8::Isolate* isolate = script_state_->GetIsolate(); | 238 v8::Isolate* isolate = script_state_->GetIsolate(); |
237 v8::Local<v8::Context> context = script_state_->GetContext(); | 239 v8::Local<v8::Context> context = script_state_->GetContext(); |
238 v8::Local<v8::Function> callback = weak_callback.NewLocal(isolate); | 240 v8::Local<v8::Function> callback = weak_callback.NewLocal(isolate); |
239 if (callback.IsEmpty()) | 241 if (callback.IsEmpty()) |
240 return; | 242 return; |
241 | 243 |
242 v8::Local<v8::Value> receiver = ToV8(element, context->Global(), isolate); | 244 v8::Local<v8::Value> receiver = ToV8(element, context->Global(), isolate); |
243 if (receiver.IsEmpty()) | 245 if (receiver.IsEmpty()) |
244 return; | 246 return; |
245 | 247 |
246 v8::TryCatch exception_catcher(isolate); | 248 v8::TryCatch exception_catcher(isolate); |
247 exception_catcher.SetVerbose(true); | 249 exception_catcher.SetVerbose(true); |
248 V8ScriptRunner::CallFunction(callback, script_state_->GetExecutionContext(), | 250 V8ScriptRunner::CallFunction(callback, |
| 251 ExecutionContext::From(script_state_.Get()), |
249 receiver, 0, 0, isolate); | 252 receiver, 0, 0, isolate); |
250 } | 253 } |
251 | 254 |
252 DEFINE_TRACE(V8V0CustomElementLifecycleCallbacks) { | 255 DEFINE_TRACE(V8V0CustomElementLifecycleCallbacks) { |
253 V0CustomElementLifecycleCallbacks::Trace(visitor); | 256 V0CustomElementLifecycleCallbacks::Trace(visitor); |
254 } | 257 } |
255 | 258 |
256 } // namespace blink | 259 } // namespace blink |
OLD | NEW |