| // Copyright 2013 The Flutter 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 SHELL_COMMON_PLATFORM_MESSAGE_HANDLER_H_ | |
| #define SHELL_COMMON_PLATFORM_MESSAGE_HANDLER_H_ | |
| #include <memory> | |
| #include "flutter/fml/mapping.h" | |
| namespace flutter { | |
| class PlatformMessage; | |
| /// An interface over the ability to handle PlatformMessages that are being sent | |
| /// from Flutter to the host platform. | |
| class PlatformMessageHandler { | |
| public: | |
| virtual ~PlatformMessageHandler() = default; | |
| /// Ultimately sends the PlatformMessage to the host platform. | |
| /// This method is invoked on the ui thread. | |
| virtual void HandlePlatformMessage( | |
| std::unique_ptr<PlatformMessage> message) = 0; | |
| /// Returns true if the platform message will ALWAYS be dispatched to the | |
| /// platform thread. | |
| /// | |
| /// Platforms that support Background Platform Channels will return | |
| /// false. | |
| virtual bool DoesHandlePlatformMessageOnPlatformThread() const = 0; | |
| /// Performs the return procedure for an associated call to | |
| /// HandlePlatformMessage. | |
| /// This method should be thread-safe and able to be invoked on any thread. | |
| virtual void InvokePlatformMessageResponseCallback( | |
| int response_id, | |
| std::unique_ptr<fml::Mapping> mapping) = 0; | |
| /// Performs the return procedure for an associated call to | |
| /// HandlePlatformMessage where there is no return value. | |
| /// This method should be thread-safe and able to be invoked on any thread. | |
| virtual void InvokePlatformMessageEmptyResponseCallback(int response_id) = 0; | |
| }; | |
| } // namespace flutter | |
| #endif // SHELL_COMMON_PLATFORM_MESSAGE_HANDLER_H_ |