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 960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 | 971 |
972 Vector<v8::Local<v8::Value> > v8Args; | 972 Vector<v8::Local<v8::Value> > v8Args; |
973 argsListToV8(domData, Dart_GetNativeArgument(args, 2), &v8Args, exceptio
n); | 973 argsListToV8(domData, Dart_GetNativeArgument(args, 2), &v8Args, exceptio
n); |
974 if (exception) | 974 if (exception) |
975 goto fail; | 975 goto fail; |
976 if (!Dart_IsString(name)) | 976 if (!Dart_IsString(name)) |
977 name = Dart_ToString(name); | 977 name = Dart_ToString(name); |
978 | 978 |
979 v8::Local<v8::Value> value = v8Receiver->Get(V8Converter::stringToV8(nam
e)); | 979 v8::Local<v8::Value> value = v8Receiver->Get(V8Converter::stringToV8(nam
e)); |
980 v8::Local<v8::Value> ret; | 980 v8::Local<v8::Value> ret; |
| 981 |
981 if (value->IsFunction()) { | 982 if (value->IsFunction()) { |
982 ret = V8ScriptRunner::callFunction(value.As<v8::Function>(), DartUti
lities::scriptExecutionContext(), receiver->localV8Object(), v8Args.size(), v8Ar
gs.data(), v8::Isolate::GetCurrent()).ToLocalChecked(); | 983 |
| 984 v8::Local<v8::Value> result; |
| 985 if (!V8ScriptRunner::callFunction(value.As<v8::Function>(), |
| 986 DartUtilities::scriptExecutionContext(), receiver->localV8Object
(), v8Args.size(), v8Args.data(), v8::Isolate::GetCurrent()).ToLocal(&ret)) { |
| 987 exception = Dart_NewStringFromCString("V8 Exception"); |
| 988 goto fail; |
| 989 } |
983 } else { | 990 } else { |
984 // FIXME: we currently convert this exception to a NoSuchMethod | 991 // FIXME: we currently convert this exception to a NoSuchMethod |
985 // exception in the Dart code that wraps this native method. | 992 // exception in the Dart code that wraps this native method. |
986 // Consider throwing a NoSuchMethod exception directly instead. | 993 // Consider throwing a NoSuchMethod exception directly instead. |
987 exception = Dart_NewStringFromCString("property is not a function"); | 994 exception = Dart_NewStringFromCString("property is not a function"); |
988 goto fail; | 995 goto fail; |
989 } | 996 } |
990 | 997 |
991 if (scopes.handleJsException(&exception)) | 998 if (scopes.handleJsException(&exception)) |
992 goto fail; | 999 goto fail; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 } else { | 1113 } else { |
1107 thisArg = JsInterop::fromDart(domData, thisArgDart, exception); | 1114 thisArg = JsInterop::fromDart(domData, thisArgDart, exception); |
1108 if (exception) | 1115 if (exception) |
1109 goto fail; | 1116 goto fail; |
1110 if (!thisArg->IsObject()) { | 1117 if (!thisArg->IsObject()) { |
1111 exception = Dart_NewStringFromCString("thisArg is not an object"
); | 1118 exception = Dart_NewStringFromCString("thisArg is not an object"
); |
1112 goto fail; | 1119 goto fail; |
1113 } | 1120 } |
1114 } | 1121 } |
1115 | 1122 |
1116 v8::Local<v8::Value> ret = V8ScriptRunner::callFunction(receiver->localV
8Function(), | 1123 v8::Local<v8::Value> ret; |
1117 DartUtilities::scriptExecutionContext(), | 1124 if (!V8ScriptRunner::callFunction(receiver->localV8Function(), |
1118 thisArg.As<v8::Object>(), | 1125 DartUtilities::scriptExecutionContext(), |
1119 v8Args.size(), | 1126 thisArg.As<v8::Object>(), |
1120 v8Args.data(), | 1127 v8Args.size(), |
1121 v8::Isolate::GetCurrent()).ToLocalChecked(); | 1128 v8Args.data(), |
| 1129 v8::Isolate::GetCurrent()).ToLocal(&ret)) { |
| 1130 exception = Dart_NewStringFromCString("V8 Exception"); |
| 1131 goto fail; |
| 1132 } |
1122 if (scopes.handleJsException(&exception)) | 1133 if (scopes.handleJsException(&exception)) |
1123 goto fail; | 1134 goto fail; |
1124 scopes.setReturnValue(ret); | 1135 scopes.setReturnValue(ret); |
1125 return; | 1136 return; |
1126 } | 1137 } |
1127 | 1138 |
1128 fail: | 1139 fail: |
1129 Dart_ThrowException(exception); | 1140 Dart_ThrowException(exception); |
1130 ASSERT_NOT_REACHED(); | 1141 ASSERT_NOT_REACHED(); |
1131 } | 1142 } |
(...skipping 19 matching lines...) Expand all Loading... |
1151 } else { | 1162 } else { |
1152 thisArg = JsInterop::fromDart(domData, thisArgDart, exception); | 1163 thisArg = JsInterop::fromDart(domData, thisArgDart, exception); |
1153 if (exception) | 1164 if (exception) |
1154 goto fail; | 1165 goto fail; |
1155 if (!thisArg->IsObject()) { | 1166 if (!thisArg->IsObject()) { |
1156 exception = Dart_NewStringFromCString("thisArg is not an object"
); | 1167 exception = Dart_NewStringFromCString("thisArg is not an object"
); |
1157 goto fail; | 1168 goto fail; |
1158 } | 1169 } |
1159 } | 1170 } |
1160 | 1171 |
1161 v8::Local<v8::Value> ret = V8ScriptRunner::callFunction(receiver->localV
8Function(), | 1172 v8::Local<v8::Value> ret; |
1162 DartUtilities::scriptExecutionContext(), | 1173 if (!V8ScriptRunner::callFunction(receiver->localV8Function(), |
1163 thisArg.As<v8::Object>(), | 1174 DartUtilities::scriptExecutionContext(), |
1164 v8Args.size(), | 1175 thisArg.As<v8::Object>(), |
1165 v8Args.data(), | 1176 v8Args.size(), |
1166 v8::Isolate::GetCurrent()).ToLocalChecked(); | 1177 v8Args.data(), |
| 1178 v8::Isolate::GetCurrent()).ToLocal(&ret)) { |
| 1179 exception = Dart_NewStringFromCString("V8 Exception"); |
| 1180 goto fail; |
| 1181 } |
1167 if (scopes.handleJsException(&exception)) | 1182 if (scopes.handleJsException(&exception)) |
1168 goto fail; | 1183 goto fail; |
1169 scopes.setReturnValue(ret); | 1184 scopes.setReturnValue(ret); |
1170 return; | 1185 return; |
1171 } | 1186 } |
1172 | 1187 |
1173 fail: | 1188 fail: |
1174 Dart_ThrowException(exception); | 1189 Dart_ThrowException(exception); |
1175 ASSERT_NOT_REACHED(); | 1190 ASSERT_NOT_REACHED(); |
1176 } | 1191 } |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1804 { | 1819 { |
1805 JsInteropInternal::callMethodCallback(args); | 1820 JsInteropInternal::callMethodCallback(args); |
1806 } | 1821 } |
1807 | 1822 |
1808 void JsInterop::jsInteropContextCallback(Dart_NativeArguments args) | 1823 void JsInterop::jsInteropContextCallback(Dart_NativeArguments args) |
1809 { | 1824 { |
1810 return JsInteropInternal::contextCallback(args); | 1825 return JsInteropInternal::contextCallback(args); |
1811 } | 1826 } |
1812 | 1827 |
1813 } | 1828 } |
OLD | NEW |