| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_MESSAGE_HANDLER_H_ |
| #define IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_MESSAGE_HANDLER_H_ |
| |
| #import "base/memory/raw_ptr.h" |
| |
| namespace web { |
| |
| class WebUIIOS; |
| class WebUIIOSImpl; |
| |
| // Messages sent from the DOM are forwarded via the WebUIIOS to handler |
| // classes. These objects are owned by WebUIIOS and destroyed when the |
| // host is destroyed. |
| class WebUIIOSMessageHandler { |
| public: |
| WebUIIOSMessageHandler() : web_ui_(nullptr) {} |
| virtual ~WebUIIOSMessageHandler() {} |
| |
| protected: |
| // This is where subclasses specify which messages they'd like to handle and |
| // perform any additional initialization. At this point web_ui() will return |
| // the associated WebUIIOS object. |
| virtual void RegisterMessages() = 0; |
| |
| // Returns the attached WebUIIOS for this handler. |
| WebUIIOS* web_ui() const { return web_ui_; } |
| |
| // Sets the attached WebUIIOS - exposed to subclasses for testing purposes. |
| void set_web_ui(WebUIIOS* web_ui) { web_ui_ = web_ui; } |
| |
| private: |
| // Provide external classes access to web_ui() and set_web_ui(). |
| friend class WebUIIOSImpl; |
| |
| raw_ptr<WebUIIOS> web_ui_; |
| }; |
| |
| } // namespace web |
| |
| #endif // IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_MESSAGE_HANDLER_H_ |