| // 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 be dispatched to the |
| /// platform thread. |
| /// |
| /// Platforms thats 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_ |