| // Copyright 2015 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. |
| |
| #ifndef ANDROID_WEBVIEW_BROWSER_MESSAGE_PORT_MESSAGE_FILTER_H_ |
| #define ANDROID_WEBVIEW_BROWSER_MESSAGE_PORT_MESSAGE_FILTER_H_ |
| |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "content/public/browser/browser_message_filter.h" |
| #include "content/public/browser/message_port_delegate.h" |
| |
| namespace android_webview { |
| |
| // Filter for Aw specific MessagePort related IPC messages (creating and |
| // destroying a MessagePort, sending a message via a MessagePort etc). |
| class AwMessagePortMessageFilter : public content::BrowserMessageFilter, |
| public content::MessagePortDelegate { |
| public: |
| explicit AwMessagePortMessageFilter(int route_id); |
| |
| // BrowserMessageFilter implementation. |
| void OnChannelClosing() override; |
| bool OnMessageReceived(const IPC::Message& message) override; |
| void OnDestruct() const override; |
| |
| void SendAppToWebMessage(int msg_port_route_id, |
| const base::string16& message, |
| const std::vector<int>& sent_message_port_ids); |
| void SendClosePortMessage(int message_port_id); |
| |
| // MessagePortDelegate implementation. |
| void SendMessage( |
| int msg_port_route_id, |
| const base::string16& message, |
| const std::vector<int>& sent_message_ports) |
| override; |
| void SendMessagesAreQueued(int route_id) override; |
| private: |
| friend class content::BrowserThread; |
| friend class base::DeleteHelper<AwMessagePortMessageFilter>; |
| |
| void OnConvertedAppToWebMessage( |
| int msg_port_id, |
| const base::string16& message, |
| const std::vector<int>& sent_message_port_ids); |
| void OnClosePortAck(int message_port_id); |
| |
| ~AwMessagePortMessageFilter() override; |
| |
| int route_id_; |
| |
| DISALLOW_COPY_AND_ASSIGN(AwMessagePortMessageFilter); |
| }; |
| |
| } // namespace android_webview |
| |
| #endif // ANDROID_WEBVIEW_BROWSER_MESSAGE_PORT_MESSAGE_FILTER_H_ |