Chromium Code Reviews| Index: chrome/browser/resources/google_now/common_test_util.js |
| diff --git a/chrome/browser/resources/google_now/common_test_util.js b/chrome/browser/resources/google_now/common_test_util.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9a4215b304206654098fd7ac9b8c735377960c9c |
| --- /dev/null |
| +++ b/chrome/browser/resources/google_now/common_test_util.js |
| @@ -0,0 +1,56 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Common test utilities. |
| + |
| +function emptyMock() {} |
| + |
| +// Container for event handlers added by mocked 'addListener' functions. |
| +var mockEventHandlers = {}; |
| + |
| +/** |
| + * Mocks 'addListener' function of an API event. The mocked function will keep |
| + * track of handlers. |
| + * @param {Object} topLevelContainer Top-level container of the original |
| + * function. Can be either 'chrome' or 'instrumented'. |
| + * @param {string} eventIdentifier Event identifier, such as |
| + * 'runtime.onSuspend'. |
| + */ |
| +function mockChromeEvent(topLevelContainer, eventIdentifier) { |
| + var eventIdentifierParts = eventIdentifier.split('.'); |
| + var eventName = eventIdentifierParts.pop(); |
| + var originalMethodContainer = topLevelContainer; |
| + var mockEventContainer = mockEventHandlers; |
| + eventIdentifierParts.forEach(function(fragment) { |
| + originalMethodContainer = |
|
skare_
2013/08/29 21:28:22
if I'm reading this right (and I might not be) I t
skare_
2013/08/29 21:46:33
never mind -- this can already exist and you need
vadimt
2013/08/29 21:46:58
Discussed in person. Needed to create intermediate
|
| + originalMethodContainer[fragment] = |
| + originalMethodContainer[fragment] || {}; |
| + mockEventContainer = |
| + mockEventContainer[fragment] = |
| + mockEventContainer[fragment] || {}; |
| + }); |
| + |
| + mockEventContainer[eventName] = []; |
| + originalMethodContainer[eventName] = { |
| + addListener: function(callback) { |
| + mockEventContainer[eventName].push(callback); |
| + } |
| + }; |
| +} |
| + |
| +/** |
| + * Gets the array of event handlers added by a mocked 'addListener' function. |
| + * @param {string} eventIdentifier Event identifier, such as |
| + * 'runtime.onSuspend'. |
| + * @return {Array.<Function>} Array of handlers. |
| + */ |
| +function getMockHandlerContainer(eventIdentifier) { |
| + var eventIdentifierParts = eventIdentifier.split('.'); |
| + var mockEventContainer = mockEventHandlers; |
| + eventIdentifierParts.forEach(function(fragment) { |
| + mockEventContainer = mockEventContainer[fragment]; |
| + }); |
| + |
| + return mockEventContainer; |
| +} |