1 var initialize_ProtocolTest = function() {
3 InspectorTest
.filterProps = function(object
, nondeterministicProps
)
5 if (object
instanceof Object
)
6 for (var prop
in object
)
7 if (prop
in nondeterministicProps
)
8 object
[prop
] = "<" + typeof object
[prop
] + ">";
10 object
[prop
] = this.filterProps(object
[prop
], nondeterministicProps
);
11 else if (object
instanceof Array
)
12 for (var i
= 0; i
< object
.length
; ++i
)
13 object
[i
] = this.filterProps(object
[i
], nondeterministicProps
);
14 else if (typeof object
=== "number")
16 else if (typeof object
=== "string" && object
.indexOf("\"id\"") != -1)
21 InspectorTest
._dumpEvent = function()
23 var args
= Array
.prototype.slice
.call(arguments
);
24 var eventName
= args
.shift();
25 InspectorTest
._agentCoverage
[eventName
] = "checked";
26 InspectorTest
.addResult("event " + InspectorTest
._agentName
+ "." + eventName
);
27 InspectorTest
.addObject(InspectorTest
._lastReceivedMessage
, InspectorTest
._customFormatters
);
28 InspectorTest
.addResult("");
30 var originalEventHandler
= args
.shift();
31 originalEventHandler
.apply(this, args
);
35 InspectorTest
._dumpCallArguments = function(callArguments
)
37 var callArgumentsCopy
= JSON
.parse(JSON
.stringify(callArguments
));
38 var agentName
= callArgumentsCopy
.shift();
39 var functionName
= callArgumentsCopy
.shift();
40 this.filterProps(callArgumentsCopy
, this._customFormatters
);
41 var expression
= JSON
.stringify(callArgumentsCopy
);
42 expression
= expression
.slice(1, expression
.length
- 1).replace(/\"<number>\"/g, "<number>").replace(/\"<string>\"/g, "<string>");
44 InspectorTest
.addResult("-----------------------------------------------------------");
45 InspectorTest
.addResult(agentName
+ "." + functionName
+ "(" + expression
+ ")");
46 InspectorTest
.addResult("");
49 InspectorTest
._callback = function(result
)
51 InspectorTest
.addResult("response:");
52 InspectorTest
.addObject(InspectorTest
._lastReceivedMessage
, InspectorTest
._customFormatters
);
53 InspectorTest
.addResult("");
54 InspectorTest
._runNextTest();
57 InspectorTest
._runNextTest = function()
59 var step
= ++this._step
;
60 var nextTest
= this._testSuite
[step
];
62 InspectorTest
._dumpCallArguments(nextTest
);
64 nextTest
.push(this._callback
.bind(this));
66 var agentName
= nextTest
.shift();
67 var functionName
= nextTest
.shift();
68 window
[agentName
][functionName
].apply(window
[agentName
], nextTest
);
70 var lastSentMessage
= InspectorTest
._lastSentMessage
; // This is because the next call will override _lastSentMessage.
71 InspectorTest
.addResult("request:");
72 InspectorTest
.addObject(lastSentMessage
, InspectorTest
._customFormatters
);
73 InspectorTest
.addResult("");
75 if (agentName
=== this._agentName
)
76 this._agentCoverage
[functionName
] = "checked";
79 InspectorTest
.addResult("===========================================================");
80 InspectorTest
.addResult("Coverage for " + this._agentName
);
81 InspectorTest
.addObject(this._agentCoverage
);
82 InspectorBackend
.dispatch
= this._originalDispatch
;
83 InspectorFrontendHost
.sendMessageToBackend
= this._originalSendMessageToBackend
;
88 InspectorTest
.runProtocolTestSuite = function(agentName
, testSuite
, nondeterministicProps
)
90 this._agentName
= agentName
;
91 this._testSuite
= testSuite
;
92 this._customFormatters
= {};
93 for (var i
= 0; i
< nondeterministicProps
.length
; ++i
)
94 this._customFormatters
[nondeterministicProps
[i
]] = "formatAsTypeName";
95 var agent
= window
[agentName
];
97 this._agentCoverage
= {};
98 for (var key
in agent
)
99 this._agentCoverage
[key
] = "not checked";
101 var domain
= agentName
.replace(/Agent$/,"");
102 var domainMessagesHandler
= InspectorBackend
._domainDispatchers
[domain
];
103 for (var eventName
in domainMessagesHandler
) {
104 if (typeof domainMessagesHandler
[eventName
] !== "function")
106 this._agentCoverage
[eventName
] = "not checked";
107 domainMessagesHandler
[eventName
] = InspectorTest
._dumpEvent
.bind(domainMessagesHandler
, eventName
, domainMessagesHandler
[eventName
]);
110 this._originalDispatch
= InspectorBackend
.dispatch
;
111 InspectorBackend
.dispatch = function(message
)
113 InspectorTest
._lastReceivedMessage
= (typeof message
=== "string") ? JSON
.parse(message
) : message
;
114 InspectorTest
._originalDispatch
.apply(InspectorBackend
, [message
]);
117 this._originalSendMessageToBackend
= InspectorFrontendHost
.sendMessageToBackend
;
118 InspectorFrontendHost
.sendMessageToBackend = function(message
)
120 InspectorTest
._lastSentMessage
= JSON
.parse(message
);
121 InspectorTest
._originalSendMessageToBackend
.apply(InspectorFrontendHost
, [message
]);