OLD | NEW |
1 // Copyright (c) 2008, Google Inc. | 1 // Copyright (c) 2008, Google Inc. |
2 // All rights reserved. | 2 // 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 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1365 // Compile the script. | 1365 // Compile the script. |
1366 v8::Local<v8::String> code = v8ExternalString(str); | 1366 v8::Local<v8::String> code = v8ExternalString(str); |
1367 ChromiumBridge::traceEventBegin("v8.compile", n, ""); | 1367 ChromiumBridge::traceEventBegin("v8.compile", n, ""); |
1368 v8::Handle<v8::Script> script = CompileScript(code, fileName, baseLine); | 1368 v8::Handle<v8::Script> script = CompileScript(code, fileName, baseLine); |
1369 ChromiumBridge::traceEventEnd("v8.compile", n, ""); | 1369 ChromiumBridge::traceEventEnd("v8.compile", n, ""); |
1370 | 1370 |
1371 // Set inlineCode to true for <a href="javascript:doSomething()"> | 1371 // Set inlineCode to true for <a href="javascript:doSomething()"> |
1372 // and false for <script>doSomething</script>. For some reason, fileName | 1372 // and false for <script>doSomething</script>. For some reason, fileName |
1373 // gives us this information. | 1373 // gives us this information. |
1374 ChromiumBridge::traceEventBegin("v8.run", n, ""); | 1374 ChromiumBridge::traceEventBegin("v8.run", n, ""); |
1375 v8::Local<v8::Value> result = RunScript(script, fileName.isNull()); | 1375 v8::Local<v8::Value> result; |
| 1376 { |
| 1377 // Isolate exceptions that occur when executing the code. These |
| 1378 // exceptions should not interfere with javascript code we might |
| 1379 // evaluate from C++ when returning from here |
| 1380 v8::TryCatch try_catch; |
| 1381 try_catch.SetVerbose(true); |
| 1382 result = RunScript(script, fileName.isNull()); |
| 1383 } |
1376 ChromiumBridge::traceEventEnd("v8.run", n, ""); | 1384 ChromiumBridge::traceEventEnd("v8.run", n, ""); |
1377 return result; | 1385 return result; |
1378 } | 1386 } |
1379 | 1387 |
1380 v8::Local<v8::Value> V8Proxy::RunScript(v8::Handle<v8::Script> script, | 1388 v8::Local<v8::Value> V8Proxy::RunScript(v8::Handle<v8::Script> script, |
1381 bool inline_code) | 1389 bool inline_code) |
1382 { | 1390 { |
1383 if (script.IsEmpty()) | 1391 if (script.IsEmpty()) |
1384 return v8::Local<v8::Value>(); | 1392 return v8::Local<v8::Value>(); |
1385 | 1393 |
(...skipping 2144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3530 } | 3538 } |
3531 return ToWebCoreString(v8::Debug::Call(frame_source_name)); | 3539 return ToWebCoreString(v8::Debug::Call(frame_source_name)); |
3532 } | 3540 } |
3533 | 3541 |
3534 void V8Proxy::RegisterExtension(v8::Extension* extension) { | 3542 void V8Proxy::RegisterExtension(v8::Extension* extension) { |
3535 v8::RegisterExtension(extension); | 3543 v8::RegisterExtension(extension); |
3536 m_extensions.push_back(extension); | 3544 m_extensions.push_back(extension); |
3537 } | 3545 } |
3538 | 3546 |
3539 } // namespace WebCore | 3547 } // namespace WebCore |
OLD | NEW |