1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef IPC_IPC_SECURITY_TEST_UTIL_H_
6 #define IPC_IPC_SECURITY_TEST_UTIL_H_
13 class IpcSecurityTestUtil {
15 IpcSecurityTestUtil(const IpcSecurityTestUtil&) = delete;
16 IpcSecurityTestUtil& operator=(const IpcSecurityTestUtil&) = delete;
18 // Enables testing of security exploit scenarios where a compromised child
19 // process can send a malicious message of an arbitrary type.
21 // This function will post the message to the IPC channel's thread, where it
22 // is offered to the channel's listeners. Afterwards, a reply task is posted
23 // back to the current thread. This function blocks until the reply task is
24 // received. For messages forwarded back to the current thread, we won't
25 // return until after the message has been handled here.
27 // Use this only for testing security bugs in a browsertest; other uses are
28 // likely perilous. Unit tests should be using IPC::TestSink which has an
29 // OnMessageReceived method you can call directly. Non-security browsertests
30 // should just exercise the child process's normal codepaths to send messages.
31 static void PwnMessageReceived(ChannelProxy* channel, const Message& message);
34 IpcSecurityTestUtil(); // Not instantiable.
39 #endif // IPC_IPC_SECURITY_TEST_UTIL_H_