提交 004d0bdf 编写于 作者: A Abhishek Amit 提交者: Chris Bracken

Add API to send platform messages into engine through embedder API (#4112)

上级 aa2437b9
......@@ -232,3 +232,33 @@ FlutterResult FlutterEngineSendPointerEvent(FlutterEngine engine,
return kSuccess;
}
FlutterResult FlutterEngineSendPlatformMessage(
FlutterEngine engine,
const FlutterPlatformMessage* flutter_message) {
if (engine == nullptr || flutter_message == nullptr) {
return kInvalidArguments;
}
if (SAFE_ACCESS(flutter_message, channel, nullptr) == nullptr ||
SAFE_ACCESS(flutter_message, message, nullptr) == nullptr) {
return kInvalidArguments;
}
auto holder = reinterpret_cast<PlatformViewHolder*>(engine);
auto message = fxl::MakeRefCounted<blink::PlatformMessage>(
flutter_message->channel,
std::vector<uint8_t>(
flutter_message->message,
flutter_message->message + flutter_message->message_size),
nullptr);
blink::Threads::UI()->PostTask(
[ weak_engine = holder->view()->engine().GetWeakPtr(), message ] {
if (auto engine = weak_engine) {
engine->DispatchPlatformMessage(message);
}
});
return kSuccess;
}
......@@ -94,6 +94,14 @@ typedef struct {
double y;
} FlutterPointerEvent;
typedef struct {
// The size of this struct. Must be sizeof(FlutterPlatformMessage).
size_t struct_size;
const char* channel;
const uint8_t* message;
const size_t message_size;
} FlutterPlatformMessage;
FLUTTER_EXPORT
FlutterResult FlutterEngineRun(size_t version,
const FlutterRendererConfig* config,
......@@ -114,6 +122,11 @@ FlutterResult FlutterEngineSendPointerEvent(FlutterEngine engine,
const FlutterPointerEvent* events,
size_t events_count);
FLUTTER_EXPORT
FlutterResult FlutterEngineSendPlatformMessage(
FlutterEngine engine,
const FlutterPlatformMessage* message);
#if defined(__cplusplus)
} // extern "C"
#endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册