| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/common/extension_urls.h" | 5 #include "extensions/common/extension_urls.h" |
| 6 #include "extensions/renderer/module_system_test.h" | 6 #include "extensions/renderer/module_system_test.h" |
| 7 #include "grit/extensions_renderer_resources.h" | 7 #include "grit/extensions_renderer_resources.h" |
| 8 | 8 |
| 9 namespace extensions { | 9 namespace extensions { |
| 10 namespace { | 10 namespace { |
| 11 | 11 |
| 12 class EventUnittest : public ModuleSystemTest { | 12 class EventUnittest : public ModuleSystemTest { |
| 13 void SetUp() override { | 13 void SetUp() override { |
| 14 ModuleSystemTest::SetUp(); | 14 ModuleSystemTest::SetUp(); |
| 15 | 15 |
| 16 env()->RegisterModule(kEventBindings, IDR_EVENT_BINDINGS_JS); | 16 env()->RegisterModule(kEventBindings, IDR_EVENT_BINDINGS_JS); |
| 17 env()->RegisterModule("json_schema", IDR_JSON_SCHEMA_JS); | 17 env()->RegisterModule("json_schema", IDR_JSON_SCHEMA_JS); |
| 18 env()->RegisterModule(kSchemaUtils, IDR_SCHEMA_UTILS_JS); | 18 env()->RegisterModule(kSchemaUtils, IDR_SCHEMA_UTILS_JS); |
| 19 env()->RegisterModule("uncaught_exception_handler", | 19 env()->RegisterModule("uncaught_exception_handler", |
| 20 IDR_UNCAUGHT_EXCEPTION_HANDLER_JS); | 20 IDR_UNCAUGHT_EXCEPTION_HANDLER_JS); |
| 21 env()->RegisterModule("utils", IDR_UTILS_JS); | 21 env()->RegisterModule("utils", IDR_UTILS_JS); |
| 22 | 22 |
| 23 // Mock out the native handler for event_bindings. These mocks will fail if | 23 // Mock out the native handler for event_bindings. These mocks will fail if |
| 24 // any invariants maintained by the real event_bindings are broken. | 24 // any invariants maintained by the real event_bindings are broken. |
| 25 env()->OverrideNativeHandler( | 25 env()->OverrideNativeHandler( |
| 26 "event_natives", | 26 "event_natives", |
| 27 "var assert = requireNative('assert');" | 27 "var assert = requireNative('assert');" |
| 28 "var attachedListeners = exports.attachedListeners = {};" | 28 "exports.$set('attachedListeners', {});" |
| 29 "var attachedFilteredListeners = " | 29 "var attachedListeners = exports.attachedListeners;" |
| 30 " exports.attachedFilteredListeners = {};" | 30 "exports.$set('attachedFilteredListeners', {});" |
| 31 "var attachedFilteredListeners = exports.attachedFilteredListeners;" |
| 31 "var nextId = 0;" | 32 "var nextId = 0;" |
| 32 "var idToName = {};" | 33 "var idToName = {};" |
| 33 "exports.AttachEvent = function(eventName) {" | 34 "exports.$set('AttachEvent', function(eventName) {" |
| 34 " assert.AssertFalse(!!attachedListeners[eventName]);" | 35 " assert.AssertFalse(!!attachedListeners[eventName]);" |
| 35 " attachedListeners[eventName] = 1;" | 36 " attachedListeners[eventName] = 1;" |
| 36 "};" | 37 "});" |
| 37 "exports.DetachEvent = function(eventName) {" | 38 "exports.$set('DetachEvent', function(eventName) {" |
| 38 " assert.AssertTrue(!!attachedListeners[eventName]);" | 39 " assert.AssertTrue(!!attachedListeners[eventName]);" |
| 39 " delete attachedListeners[eventName];" | 40 " delete attachedListeners[eventName];" |
| 40 "};" | 41 "});" |
| 41 "exports.IsEventAttached = function(eventName) {" | 42 "exports.$set('IsEventAttached', function(eventName) {" |
| 42 " return !!attachedListeners[eventName];" | 43 " return !!attachedListeners[eventName];" |
| 43 "};" | 44 "});" |
| 44 "exports.AttachFilteredEvent = function(name, filters) {" | 45 "exports.$set('AttachFilteredEvent', function(name, filters) {" |
| 45 " var id = nextId++;" | 46 " var id = nextId++;" |
| 46 " idToName[id] = name;" | 47 " idToName[id] = name;" |
| 47 " attachedFilteredListeners[name] =" | 48 " attachedFilteredListeners[name] =" |
| 48 " attachedFilteredListeners[name] || [];" | 49 " attachedFilteredListeners[name] || [];" |
| 49 " attachedFilteredListeners[name][id] = filters;" | 50 " attachedFilteredListeners[name][id] = filters;" |
| 50 " return id;" | 51 " return id;" |
| 51 "};" | 52 "});" |
| 52 "exports.DetachFilteredEvent = function(id, manual) {" | 53 "exports.$set('DetachFilteredEvent', function(id, manual) {" |
| 53 " var i = attachedFilteredListeners[idToName[id]].indexOf(id);" | 54 " var i = attachedFilteredListeners[idToName[id]].indexOf(id);" |
| 54 " attachedFilteredListeners[idToName[id]].splice(i, 1);" | 55 " attachedFilteredListeners[idToName[id]].splice(i, 1);" |
| 55 "};" | 56 "});" |
| 56 "exports.HasFilteredListener = function(name) {" | 57 "exports.$set('HasFilteredListener', function(name) {" |
| 57 " return attachedFilteredListeners[name].length;" | 58 " return attachedFilteredListeners[name].length;" |
| 58 "};"); | 59 "});"); |
| 59 env()->OverrideNativeHandler("sendRequest", | 60 env()->OverrideNativeHandler("sendRequest", |
| 60 "exports.sendRequest = function() {};"); | 61 "exports.$set('sendRequest', function() {});"); |
| 61 env()->OverrideNativeHandler( | 62 env()->OverrideNativeHandler( |
| 62 "apiDefinitions", | 63 "apiDefinitions", |
| 63 "exports.GetExtensionAPIDefinitionsForTest = function() {};"); | 64 "exports.$set('GetExtensionAPIDefinitionsForTest', function() {});"); |
| 64 env()->OverrideNativeHandler("logging", "exports.DCHECK = function() {};"); | 65 env()->OverrideNativeHandler("logging", |
| 66 "exports.$set('DCHECK', function() {});"); |
| 65 env()->OverrideNativeHandler("schema_registry", | 67 env()->OverrideNativeHandler("schema_registry", |
| 66 "exports.GetSchema = function() {};"); | 68 "exports.$set('GetSchema', function() {});"); |
| 67 } | 69 } |
| 68 }; | 70 }; |
| 69 | 71 |
| 70 TEST_F(EventUnittest, TestNothing) { | 72 TEST_F(EventUnittest, TestNothing) { |
| 71 ExpectNoAssertionsMade(); | 73 ExpectNoAssertionsMade(); |
| 72 } | 74 } |
| 73 | 75 |
| 74 TEST_F(EventUnittest, AddRemoveTwoListeners) { | 76 TEST_F(EventUnittest, AddRemoveTwoListeners) { |
| 75 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 77 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 76 env()->module_system()); | 78 env()->module_system()); |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 " e.addListener(cb);" | 250 " e.addListener(cb);" |
| 249 "} catch (e) {" | 251 "} catch (e) {" |
| 250 " caught = true;" | 252 " caught = true;" |
| 251 "}" | 253 "}" |
| 252 "assert.AssertTrue(caught);"); | 254 "assert.AssertTrue(caught);"); |
| 253 env()->module_system()->Require("test"); | 255 env()->module_system()->Require("test"); |
| 254 } | 256 } |
| 255 | 257 |
| 256 } // namespace | 258 } // namespace |
| 257 } // namespace extensions | 259 } // namespace extensions |
| OLD | NEW |