blob: 9a4215b304206654098fd7ac9b8c735377960c9c [file] [log] [blame]
// 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 =
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;
}