RenderWidgetHost继承于IPC::Channel::Listener,所以它必然需要实现Listener::OnMessageReceived纯虚函数。
Chrome对这个函数进行了宏的封装,宏的写法有点类似于MFC/wxWidget的事件响应表,不同点在于Chrome里的宏是对函数的实现封装,而MFC/wxWidget里却是对事件表的初始化。
IPC::Channel::Sender类的实现
class Channel : public Message ::Sender {
// Security tests need access to the pipe handle.
friend class ChannelTest ;
public:
// Implemented by consumers of a Channel to receive messages.
class Listener {
public:
virtual ~ Listener () {}
// Called when a message is received.
virtual void OnMessageReceived ( const Message & message ) = 0;
// Called when the channel is connected and we have received the internal
// Hello message from the peer.
virtual void OnChannelConnected ( int32 peer_pid ) {}
// Called when an error is detected that causes the channel to close.
// This method is not calle