blob: 28c4b930a67f8a69480d53e58a520342d65cd8a2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
// 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.
/**
* Allows console.log output.
*/
var showConsoleLogOutput = false;
/**
* Conditionally allow console.log output based off of showConsoleLogOutput.
*/
console.log = function() {
var originalConsoleLog = console.log;
return function() {
if (showConsoleLogOutput) {
originalConsoleLog.apply(console, arguments);
}
};
}();
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;
}
|