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

Side by Side Diff: Source/bindings/core/v8/ScriptFunctionCall.cpp

Issue 404953003: DevTools: Async call stacks for window.postMessage() (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 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 27 matching lines...) Expand all
38 #include "bindings/core/v8/V8ObjectConstructor.h" 38 #include "bindings/core/v8/V8ObjectConstructor.h"
39 #include "bindings/core/v8/V8ScriptRunner.h" 39 #include "bindings/core/v8/V8ScriptRunner.h"
40 40
41 #include <v8.h> 41 #include <v8.h>
42 42
43 namespace blink { 43 namespace blink {
44 44
45 void ScriptCallArgumentHandler::appendArgument(const ScriptValue& argument) 45 void ScriptCallArgumentHandler::appendArgument(const ScriptValue& argument)
46 { 46 {
47 if (argument.scriptState() != m_scriptState) { 47 if (argument.scriptState() != m_scriptState) {
48 ASSERT_NOT_REACHED(); 48 appendArgument();
yurys 2014/07/21 12:45:32 Looks like it should be done in a separate patch.
aandrey 2014/07/22 11:08:43 Done. Extracted to http://crrev.com/412443002
49 return; 49 return;
50 } 50 }
51 m_arguments.append(argument); 51 m_arguments.append(argument);
52 } 52 }
53 53
54 void ScriptCallArgumentHandler::appendArgument(const String& argument) 54 void ScriptCallArgumentHandler::appendArgument(const String& argument)
55 { 55 {
56 v8::Isolate* isolate = m_scriptState->isolate(); 56 v8::Isolate* isolate = m_scriptState->isolate();
57 ScriptState::Scope scope(m_scriptState.get()); 57 ScriptState::Scope scope(m_scriptState.get());
58 m_arguments.append(ScriptValue(m_scriptState.get(), v8String(isolate, argume nt))); 58 m_arguments.append(ScriptValue(m_scriptState.get(), v8String(isolate, argume nt)));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 { 104 {
105 v8::Isolate* isolate = m_scriptState->isolate(); 105 v8::Isolate* isolate = m_scriptState->isolate();
106 m_arguments.append(ScriptValue(m_scriptState.get(), v8Boolean(argument, isol ate))); 106 m_arguments.append(ScriptValue(m_scriptState.get(), v8Boolean(argument, isol ate)));
107 } 107 }
108 108
109 void ScriptCallArgumentHandler::appendArgument(const Vector<ScriptValue>& argume nt) 109 void ScriptCallArgumentHandler::appendArgument(const Vector<ScriptValue>& argume nt)
110 { 110 {
111 v8::Isolate* isolate = m_scriptState->isolate(); 111 v8::Isolate* isolate = m_scriptState->isolate();
112 ScriptState::Scope scope(m_scriptState.get()); 112 ScriptState::Scope scope(m_scriptState.get());
113 v8::Handle<v8::Array> result = v8::Array::New(isolate, argument.size()); 113 v8::Handle<v8::Array> result = v8::Array::New(isolate, argument.size());
114 for (size_t i = 0; i < argument.size(); ++i) 114 for (size_t i = 0; i < argument.size(); ++i) {
115 result->Set(v8::Integer::New(isolate, i), argument[i].v8Value()); 115 if (argument[i].scriptState() != m_scriptState)
116 result->Set(v8::Integer::New(isolate, i), v8::Undefined(isolate));
117 else
118 result->Set(v8::Integer::New(isolate, i), argument[i].v8Value());
119 }
116 m_arguments.append(ScriptValue(m_scriptState.get(), result)); 120 m_arguments.append(ScriptValue(m_scriptState.get(), result));
117 } 121 }
118 122
123 void ScriptCallArgumentHandler::appendArgument()
124 {
125 v8::Isolate* isolate = m_scriptState->isolate();
126 m_arguments.append(ScriptValue(m_scriptState.get(), v8::Undefined(isolate))) ;
127 }
128
119 ScriptFunctionCall::ScriptFunctionCall(const ScriptValue& thisObject, const Stri ng& name) 129 ScriptFunctionCall::ScriptFunctionCall(const ScriptValue& thisObject, const Stri ng& name)
120 : ScriptCallArgumentHandler(thisObject.scriptState()) 130 : ScriptCallArgumentHandler(thisObject.scriptState())
121 , m_thisObject(thisObject) 131 , m_thisObject(thisObject)
122 , m_name(name) 132 , m_name(name)
123 { 133 {
124 } 134 }
125 135
126 ScriptValue ScriptFunctionCall::call(bool& hadException, bool reportExceptions) 136 ScriptValue ScriptFunctionCall::call(bool& hadException, bool reportExceptions)
127 { 137 {
128 ScriptState::Scope scope(m_scriptState.get()); 138 ScriptState::Scope scope(m_scriptState.get());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 v8::Local<v8::Object> result = V8ObjectConstructor::newInstance(m_scriptStat e->isolate(), constructor, m_arguments.size(), info.get()); 193 v8::Local<v8::Object> result = V8ObjectConstructor::newInstance(m_scriptStat e->isolate(), constructor, m_arguments.size(), info.get());
184 if (tryCatch.HasCaught()) { 194 if (tryCatch.HasCaught()) {
185 hadException = true; 195 hadException = true;
186 return ScriptValue(); 196 return ScriptValue();
187 } 197 }
188 198
189 return ScriptValue(m_scriptState.get(), result); 199 return ScriptValue(m_scriptState.get(), result);
190 } 200 }
191 201
192 } // namespace blink 202 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698