5#import <XCTest/XCTest.h>
23 auto thread = std::make_unique<fml::Thread>(
name);
24 auto runner = thread->GetTaskRunner();
38 void Complete(std::unique_ptr<fml::Mapping>
data)
override { is_complete_ =
true; }
48 TaskRunners task_runners(
"test", GetCurrentTaskRunner(), CreateNewThread(
"raster"),
49 CreateNewThread(
"ui"), CreateNewThread(
"io"));
54- (void)testSetAndCallHandler {
55 ThreadHost thread_host(
"io.flutter.test." + std::string(
self.name.UTF8String),
56 ThreadHost::Type::kRaster | ThreadHost::Type::kIo | ThreadHost::Type::kUi);
58 "test", GetCurrentTaskRunner(), thread_host.
raster_thread->GetTaskRunner(),
63 XCTestExpectation* didCallReply = [
self expectationWithDescription:@"didCallReply"];
68 [didCallReply fulfill];
71 auto response = MockPlatformMessageResponse::Create();
73 auto platform_message = std::make_unique<flutter::PlatformMessage>(
channel, response);
74 handler->HandlePlatformMessage(std::move(platform_message));
76 [
self waitForExpectationsWithTimeout:1.0 handler:nil];
77 XCTAssertTrue(response->is_complete());
80- (void)testSetClearAndCallHandler {
81 ThreadHost thread_host(
"io.flutter.test." + std::string(
self.name.UTF8String),
82 ThreadHost::Type::kRaster | ThreadHost::Type::kIo | ThreadHost::Type::kUi);
84 "test", GetCurrentTaskRunner(), thread_host.
raster_thread->GetTaskRunner(),
89 XCTestExpectation* didCallMessage = [
self expectationWithDescription:@"didCallMessage"];
93 XCTFail(
@"This shouldn't be called");
98 auto response = MockPlatformMessageResponse::Create();
100 auto platform_message = std::make_unique<flutter::PlatformMessage>(
channel, response);
101 handler->HandlePlatformMessage(std::move(platform_message));
102 [didCallMessage fulfill];
104 [
self waitForExpectationsWithTimeout:1.0 handler:nil];
105 XCTAssertTrue(response->is_complete());
108- (void)testSetAndCallHandlerTaskQueue {
109 ThreadHost thread_host(
"io.flutter.test." + std::string(
self.name.UTF8String),
110 ThreadHost::Type::kRaster | ThreadHost::Type::kIo | ThreadHost::Type::kUi);
112 "test", GetCurrentTaskRunner(), thread_host.
raster_thread->GetTaskRunner(),
117 XCTestExpectation* didCallReply = [
self expectationWithDescription:@"didCallReply"];
118 NSObject<FlutterTaskQueue>* taskQueue = PlatformMessageHandlerIos::MakeBackgroundTaskQueue();
122 XCTAssertFalse([NSThread isMainThread]);
124 [didCallReply fulfill];
127 auto response = MockPlatformMessageResponse::Create();
129 auto platform_message = std::make_unique<flutter::PlatformMessage>(
channel, response);
130 handler->HandlePlatformMessage(std::move(platform_message));
132 [
self waitForExpectationsWithTimeout:1.0 handler:nil];
133 XCTAssertTrue(response->is_complete());
NS_ASSUME_NONNULL_BEGIN typedef void(^ FlutterBinaryReply)(NSData *_Nullable reply)
fml::RefPtr< fml::TaskRunner > GetUITaskRunner() const
fml::RefPtr< fml::TaskRunner > GetPlatformTaskRunner() const
static void EnsureInitializedForCurrentThread()
fml::RefPtr< fml::TaskRunner > GetTaskRunner() const
static FML_EMBEDDER_ONLY MessageLoop & GetCurrent()
virtual void PostTask(const fml::closure &task) override
const gchar FlBinaryMessengerMessageHandler handler
fml::RefPtr< fml::TaskRunner > CreateNewThread(const std::string &name)
fml::RefPtr< fml::TaskRunner > GetCurrentTaskRunner()
RefPtr< T > AdoptRef(T *ptr)
The collection of all the threads used by the engine.
std::unique_ptr< fml::Thread > io_thread
std::unique_ptr< fml::Thread > raster_thread
std::unique_ptr< fml::Thread > ui_thread
std::shared_ptr< const fml::Mapping > data