Index: chrome/renderer/extensions/module_system_unittest.cc |
diff --git a/chrome/renderer/extensions/module_system_unittest.cc b/chrome/renderer/extensions/module_system_unittest.cc |
index 9bf7471b97f50e9ae4e1178d30f1d657c6bb2c13..da233b8ffcb11cb7730fb3477364d3010dbe4e02 100644 |
--- a/chrome/renderer/extensions/module_system_unittest.cc |
+++ b/chrome/renderer/extensions/module_system_unittest.cc |
@@ -31,6 +31,36 @@ class CounterNatives : public NativeHandler { |
int counter_; |
}; |
+class TestExceptionHandler : public ModuleSystem::ExceptionHandler { |
+ public: |
+ TestExceptionHandler() |
+ : handled_exception_(false) { |
+ } |
+ |
+ virtual void HandleUncaughtException() { |
+ handled_exception_ = true; |
+ } |
+ |
+ bool handled_exception() const { return handled_exception_; } |
+ |
+ private: |
+ bool handled_exception_; |
+}; |
+ |
+TEST_F(ModuleSystemTest, TestExceptionHandling) { |
+ ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
+ TestExceptionHandler* handler = new TestExceptionHandler; |
+ scoped_ptr<ModuleSystem::ExceptionHandler> scoped_handler(handler); |
+ ASSERT_FALSE(handler->handled_exception()); |
+ module_system_->set_exception_handler(scoped_handler.Pass()); |
+ |
+ RegisterModule("test", "throw 'hi';"); |
+ module_system_->Require("test"); |
+ ASSERT_TRUE(handler->handled_exception()); |
+ |
+ ExpectNoAssertionsMade(); |
+} |
+ |
TEST_F(ModuleSystemTest, TestRequire) { |
ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
RegisterModule("add", "exports.Add = function(x, y) { return x + y; };"); |