OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/test/base/module_system_test.h" | 5 #include "chrome/test/base/module_system_test.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "chrome/renderer/extensions/module_system.h" | 7 #include "chrome/renderer/extensions/module_system.h" |
8 | 8 |
9 using extensions::ModuleSystem; | 9 using extensions::ModuleSystem; |
10 using extensions::NativeHandler; | 10 using extensions::NativeHandler; |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 v8::Handle<v8::Value> Increment(const v8::Arguments& args) { | 25 v8::Handle<v8::Value> Increment(const v8::Arguments& args) { |
26 counter_++; | 26 counter_++; |
27 return v8::Undefined(); | 27 return v8::Undefined(); |
28 } | 28 } |
29 | 29 |
30 private: | 30 private: |
31 int counter_; | 31 int counter_; |
32 }; | 32 }; |
33 | 33 |
| 34 class TestExceptionHandler : public ModuleSystem::ExceptionHandler { |
| 35 public: |
| 36 TestExceptionHandler() |
| 37 : handled_exception_(false) { |
| 38 } |
| 39 |
| 40 virtual void HandleUncaughtException() { |
| 41 handled_exception_ = true; |
| 42 } |
| 43 |
| 44 bool handled_exception() const { return handled_exception_; } |
| 45 |
| 46 private: |
| 47 bool handled_exception_; |
| 48 }; |
| 49 |
| 50 TEST_F(ModuleSystemTest, TestExceptionHandling) { |
| 51 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
| 52 TestExceptionHandler* handler = new TestExceptionHandler; |
| 53 scoped_ptr<ModuleSystem::ExceptionHandler> scoped_handler(handler); |
| 54 ASSERT_FALSE(handler->handled_exception()); |
| 55 module_system_->set_exception_handler(scoped_handler.Pass()); |
| 56 |
| 57 RegisterModule("test", "throw 'hi';"); |
| 58 module_system_->Require("test"); |
| 59 ASSERT_TRUE(handler->handled_exception()); |
| 60 |
| 61 ExpectNoAssertionsMade(); |
| 62 } |
| 63 |
34 TEST_F(ModuleSystemTest, TestRequire) { | 64 TEST_F(ModuleSystemTest, TestRequire) { |
35 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); | 65 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
36 RegisterModule("add", "exports.Add = function(x, y) { return x + y; };"); | 66 RegisterModule("add", "exports.Add = function(x, y) { return x + y; };"); |
37 RegisterModule("test", | 67 RegisterModule("test", |
38 "var Add = require('add').Add;" | 68 "var Add = require('add').Add;" |
39 "requireNative('assert').AssertTrue(Add(3, 5) == 8);"); | 69 "requireNative('assert').AssertTrue(Add(3, 5) == 8);"); |
40 module_system_->Require("test"); | 70 module_system_->Require("test"); |
41 } | 71 } |
42 | 72 |
43 TEST_F(ModuleSystemTest, TestNestedRequire) { | 73 TEST_F(ModuleSystemTest, TestNestedRequire) { |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 } | 251 } |
222 | 252 |
223 TEST_F(ModuleSystemTest, TestOverrideNonExistentNativeHandler) { | 253 TEST_F(ModuleSystemTest, TestOverrideNonExistentNativeHandler) { |
224 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); | 254 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
225 OverrideNativeHandler("thing", "exports.x = 5;"); | 255 OverrideNativeHandler("thing", "exports.x = 5;"); |
226 RegisterModule("test", | 256 RegisterModule("test", |
227 "var assert = requireNative('assert');" | 257 "var assert = requireNative('assert');" |
228 "assert.AssertTrue(requireNative('thing').x == 5);"); | 258 "assert.AssertTrue(requireNative('thing').x == 5);"); |
229 module_system_->Require("test"); | 259 module_system_->Require("test"); |
230 } | 260 } |
OLD | NEW |