Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit d91489e

Browse files
authored
Revert "iOS Background Platform Channels (#29665)" (#30289)
This reverts commit 485b37c.
1 parent 368e3cc commit d91489e

17 files changed

+123
-618
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,8 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/connection_col
11561156
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/connection_collection_test.mm
11571157
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h
11581158
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.mm
1159+
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.h
1160+
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.mm
11591161
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/profiler_metrics_ios.h
11601162
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/profiler_metrics_ios.mm
11611163
FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h
@@ -1187,9 +1189,6 @@ FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_software.h
11871189
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_software.mm
11881190
FILE: ../../../flutter/shell/platform/darwin/ios/ios_switchable_gl_context.h
11891191
FILE: ../../../flutter/shell/platform/darwin/ios/ios_switchable_gl_context.mm
1190-
FILE: ../../../flutter/shell/platform/darwin/ios/platform_message_handler_ios.h
1191-
FILE: ../../../flutter/shell/platform/darwin/ios/platform_message_handler_ios.mm
1192-
FILE: ../../../flutter/shell/platform/darwin/ios/platform_message_handler_ios_test.mm
11931192
FILE: ../../../flutter/shell/platform/darwin/ios/platform_view_ios.h
11941193
FILE: ../../../flutter/shell/platform/darwin/ios/platform_view_ios.mm
11951194
FILE: ../../../flutter/shell/platform/darwin/ios/rendering_api_selection.h

shell/platform/darwin/common/framework/Headers/FlutterBinaryMessenger.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ typedef void (^FlutterBinaryMessageHandler)(NSData* _Nullable message, FlutterBi
3131

3232
typedef int64_t FlutterBinaryMessengerConnection;
3333

34-
@protocol FlutterTaskQueue;
35-
3634
/**
3735
* A facility for communicating with the Flutter side using asynchronous message
3836
* passing with binary messages.
@@ -46,16 +44,6 @@ typedef int64_t FlutterBinaryMessengerConnection;
4644
*/
4745
FLUTTER_DARWIN_EXPORT
4846
@protocol FlutterBinaryMessenger <NSObject>
49-
/// TODO(gaaclarke): Remove optional when macos supports Background Platform Channels.
50-
@optional
51-
- (NSObject<FlutterTaskQueue>*)makeBackgroundTaskQueue;
52-
53-
- (FlutterBinaryMessengerConnection)
54-
setMessageHandlerOnChannel:(NSString*)channel
55-
binaryMessageHandler:(FlutterBinaryMessageHandler _Nullable)handler
56-
taskQueue:(NSObject<FlutterTaskQueue>* _Nullable)taskQueue;
57-
58-
@required
5947
/**
6048
* Sends a binary message to the Flutter side on the specified channel, expecting
6149
* no reply.

shell/platform/darwin/common/framework/Headers/FlutterChannels.h

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
#import "FlutterBinaryMessenger.h"
99
#import "FlutterCodecs.h"
1010

11-
@protocol FlutterTaskQueue;
12-
1311
NS_ASSUME_NONNULL_BEGIN
1412
/**
1513
* A message reply callback.
@@ -26,8 +24,7 @@ typedef void (^FlutterReply)(id _Nullable reply);
2624
* asynchronous replies back to Flutter.
2725
*
2826
* @param message The message.
29-
* @param callback A callback for submitting a reply to the sender which can be invoked from any
30-
* thread.
27+
* @param callback A callback for submitting a reply to the sender.
3128
*/
3229
typedef void (^FlutterMessageHandler)(id _Nullable message, FlutterReply callback);
3330

@@ -91,27 +88,6 @@ FLUTTER_DARWIN_EXPORT
9188
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
9289
codec:(NSObject<FlutterMessageCodec>*)codec;
9390

94-
/**
95-
* Initializes a `FlutterBasicMessageChannel` with the specified name, binary
96-
* messenger, and message codec.
97-
*
98-
* The channel name logically identifies the channel; identically named channels
99-
* interfere with each other's communication.
100-
*
101-
* The binary messenger is a facility for sending raw, binary messages to the
102-
* Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`.
103-
*
104-
* @param name The channel name.
105-
* @param messenger The binary messenger.
106-
* @param codec The message codec.
107-
* @param taskQueue The FlutterTaskQueue that executes the handler (see
108-
-[FlutterBinaryMessenger makeBackgroundTaskQueue]).
109-
*/
110-
- (instancetype)initWithName:(NSString*)name
111-
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
112-
codec:(NSObject<FlutterMessageCodec>*)codec
113-
taskQueue:(NSObject<FlutterTaskQueue>* _Nullable)taskQueue;
114-
11591
/**
11692
* Sends the specified message to the Flutter side, ignoring any reply.
11793
*
@@ -166,7 +142,7 @@ typedef void (^FlutterResult)(id _Nullable result);
166142
* Invoke the callback with a `FlutterError` to indicate that the call failed.
167143
* Invoke the callback with `FlutterMethodNotImplemented` to indicate that the
168144
* method was unknown. Any other values, including `nil`, are interpreted as
169-
* successful results. This can be invoked from any thread.
145+
* successful results.
170146
*/
171147
typedef void (^FlutterMethodCallHandler)(FlutterMethodCall* call, FlutterResult result);
172148

@@ -237,27 +213,6 @@ FLUTTER_DARWIN_EXPORT
237213
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
238214
codec:(NSObject<FlutterMethodCodec>*)codec;
239215

240-
/**
241-
* Initializes a `FlutterMethodChannel` with the specified name, binary messenger,
242-
* method codec, and task queue.
243-
*
244-
* The channel name logically identifies the channel; identically named channels
245-
* interfere with each other's communication.
246-
*
247-
* The binary messenger is a facility for sending raw, binary messages to the
248-
* Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`.
249-
*
250-
* @param name The channel name.
251-
* @param messenger The binary messenger.
252-
* @param codec The method codec.
253-
* @param taskQueue The FlutterTaskQueue that executes the handler (see
254-
-[FlutterBinaryMessenger makeBackgroundTaskQueue]).
255-
*/
256-
- (instancetype)initWithName:(NSString*)name
257-
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
258-
codec:(NSObject<FlutterMethodCodec>*)codec
259-
taskQueue:(NSObject<FlutterTaskQueue>* _Nullable)taskQueue;
260-
261216
// clang-format off
262217
/**
263218
* Invokes the specified Flutter method with the specified arguments, expecting
@@ -416,27 +371,6 @@ FLUTTER_DARWIN_EXPORT
416371
- (instancetype)initWithName:(NSString*)name
417372
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
418373
codec:(NSObject<FlutterMethodCodec>*)codec;
419-
420-
/**
421-
* Initializes a `FlutterEventChannel` with the specified name, binary messenger,
422-
* method codec and task queue.
423-
*
424-
* The channel name logically identifies the channel; identically named channels
425-
* interfere with each other's communication.
426-
*
427-
* The binary messenger is a facility for sending raw, binary messages to the
428-
* Flutter side. This protocol is implemented by `FlutterEngine` and `FlutterViewController`.
429-
*
430-
* @param name The channel name.
431-
* @param messenger The binary messenger.
432-
* @param codec The method codec.
433-
* @param taskQueue The FlutterTaskQueue that executes the handler (see
434-
-[FlutterBinaryMessenger makeBackgroundTaskQueue]).
435-
*/
436-
- (instancetype)initWithName:(NSString*)name
437-
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
438-
codec:(NSObject<FlutterMethodCodec>*)codec
439-
taskQueue:(NSObject<FlutterTaskQueue>* _Nullable)taskQueue;
440374
/**
441375
* Registers a handler for stream setup requests from the Flutter side.
442376
*

shell/platform/darwin/common/framework/Source/FlutterChannels.mm

Lines changed: 9 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,11 @@ static void ResizeChannelBuffer(NSObject<FlutterBinaryMessenger>* binaryMessenge
1616
[binaryMessenger sendOnChannel:FlutterChannelBuffersChannel message:message];
1717
}
1818

19-
static FlutterBinaryMessengerConnection SetMessageHandler(
20-
NSObject<FlutterBinaryMessenger>* messenger,
21-
NSString* name,
22-
FlutterBinaryMessageHandler handler,
23-
NSObject<FlutterTaskQueue>* taskQueue) {
24-
if (taskQueue) {
25-
NSCAssert([messenger respondsToSelector:@selector(setMessageHandlerOnChannel:
26-
binaryMessageHandler:taskQueue:)],
27-
@"");
28-
return [messenger setMessageHandlerOnChannel:name
29-
binaryMessageHandler:handler
30-
taskQueue:taskQueue];
31-
} else {
32-
return [messenger setMessageHandlerOnChannel:name binaryMessageHandler:handler];
33-
}
34-
}
35-
36-
////////////////////////////////////////////////////////////////////////////////
3719
@implementation FlutterBasicMessageChannel {
3820
NSObject<FlutterBinaryMessenger>* _messenger;
3921
NSString* _name;
4022
NSObject<FlutterMessageCodec>* _codec;
4123
FlutterBinaryMessengerConnection _connection;
42-
NSObject<FlutterTaskQueue>* _taskQueue;
4324
}
4425
+ (instancetype)messageChannelWithName:(NSString*)name
4526
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger {
@@ -59,28 +40,18 @@ + (instancetype)messageChannelWithName:(NSString*)name
5940
- (instancetype)initWithName:(NSString*)name
6041
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
6142
codec:(NSObject<FlutterMessageCodec>*)codec {
62-
self = [self initWithName:name binaryMessenger:messenger codec:codec taskQueue:nil];
63-
return self;
64-
}
65-
66-
- (instancetype)initWithName:(NSString*)name
67-
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
68-
codec:(NSObject<FlutterMessageCodec>*)codec
69-
taskQueue:(NSObject<FlutterTaskQueue>*)taskQueue {
7043
self = [super init];
7144
NSAssert(self, @"Super init cannot be nil");
7245
_name = [name retain];
7346
_messenger = [messenger retain];
7447
_codec = [codec retain];
75-
_taskQueue = [taskQueue retain];
7648
return self;
7749
}
7850

7951
- (void)dealloc {
8052
[_name release];
8153
[_messenger release];
8254
[_codec release];
83-
[_taskQueue release];
8455
[super dealloc];
8556
}
8657

@@ -114,7 +85,7 @@ - (void)setMessageHandler:(FlutterMessageHandler)handler {
11485
callback([codec encode:reply]);
11586
});
11687
};
117-
_connection = SetMessageHandler(_messenger, _name, messageHandler, _taskQueue);
88+
_connection = [_messenger setMessageHandlerOnChannel:_name binaryMessageHandler:messageHandler];
11889
}
11990

12091
- (void)resizeChannelBuffer:(NSInteger)newSize {
@@ -125,7 +96,6 @@ - (void)resizeChannelBuffer:(NSInteger)newSize {
12596

12697
#pragma mark - Method channel
12798

128-
////////////////////////////////////////////////////////////////////////////////
12999
@implementation FlutterError
130100
+ (instancetype)errorWithCode:(NSString*)code message:(NSString*)message details:(id)details {
131101
return [[[FlutterError alloc] initWithCode:code message:message details:details] autorelease];
@@ -166,7 +136,6 @@ - (NSUInteger)hash {
166136
}
167137
@end
168138

169-
////////////////////////////////////////////////////////////////////////////////
170139
@implementation FlutterMethodCall
171140
+ (instancetype)methodCallWithMethodName:(NSString*)method arguments:(id)arguments {
172141
return [[[FlutterMethodCall alloc] initWithMethodName:method arguments:arguments] autorelease];
@@ -206,13 +175,11 @@ - (NSUInteger)hash {
206175

207176
NSObject const* FlutterMethodNotImplemented = [[NSObject alloc] init];
208177

209-
////////////////////////////////////////////////////////////////////////////////
210178
@implementation FlutterMethodChannel {
211179
NSObject<FlutterBinaryMessenger>* _messenger;
212180
NSString* _name;
213181
NSObject<FlutterMethodCodec>* _codec;
214182
FlutterBinaryMessengerConnection _connection;
215-
NSObject<FlutterTaskQueue>* _taskQueue;
216183
}
217184

218185
+ (instancetype)methodChannelWithName:(NSString*)name
@@ -231,27 +198,18 @@ + (instancetype)methodChannelWithName:(NSString*)name
231198
- (instancetype)initWithName:(NSString*)name
232199
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
233200
codec:(NSObject<FlutterMethodCodec>*)codec {
234-
self = [self initWithName:name binaryMessenger:messenger codec:codec taskQueue:nil];
235-
return self;
236-
}
237-
- (instancetype)initWithName:(NSString*)name
238-
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
239-
codec:(NSObject<FlutterMethodCodec>*)codec
240-
taskQueue:(NSObject<FlutterTaskQueue>*)taskQueue {
241201
self = [super init];
242202
NSAssert(self, @"Super init cannot be nil");
243203
_name = [name retain];
244204
_messenger = [messenger retain];
245205
_codec = [codec retain];
246-
_taskQueue = [taskQueue retain];
247206
return self;
248207
}
249208

250209
- (void)dealloc {
251210
[_name release];
252211
[_messenger release];
253212
[_codec release];
254-
[_taskQueue release];
255213
[super dealloc];
256214
}
257215

@@ -298,7 +256,7 @@ - (void)setMethodCallHandler:(FlutterMethodCallHandler)handler {
298256
}
299257
});
300258
};
301-
_connection = SetMessageHandler(_messenger, _name, messageHandler, _taskQueue);
259+
_connection = [_messenger setMessageHandlerOnChannel:_name binaryMessageHandler:messageHandler];
302260
}
303261

304262
- (void)resizeChannelBuffer:(NSInteger)newSize {
@@ -311,13 +269,10 @@ - (void)resizeChannelBuffer:(NSInteger)newSize {
311269

312270
NSObject const* FlutterEndOfEventStream = [[NSObject alloc] init];
313271

314-
////////////////////////////////////////////////////////////////////////////////
315272
@implementation FlutterEventChannel {
316273
NSObject<FlutterBinaryMessenger>* _messenger;
317274
NSString* _name;
318275
NSObject<FlutterMethodCodec>* _codec;
319-
NSObject<FlutterTaskQueue>* _taskQueue;
320-
FlutterBinaryMessengerConnection _connection;
321276
}
322277
+ (instancetype)eventChannelWithName:(NSString*)name
323278
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger {
@@ -335,36 +290,25 @@ + (instancetype)eventChannelWithName:(NSString*)name
335290
- (instancetype)initWithName:(NSString*)name
336291
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
337292
codec:(NSObject<FlutterMethodCodec>*)codec {
338-
return [self initWithName:name binaryMessenger:messenger codec:codec taskQueue:nil];
339-
}
340-
341-
- (instancetype)initWithName:(NSString*)name
342-
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
343-
codec:(NSObject<FlutterMethodCodec>*)codec
344-
taskQueue:(NSObject<FlutterTaskQueue>* _Nullable)taskQueue {
345293
self = [super init];
346294
NSAssert(self, @"Super init cannot be nil");
347295
_name = [name retain];
348296
_messenger = [messenger retain];
349297
_codec = [codec retain];
350-
_taskQueue = [taskQueue retain];
351298
return self;
352299
}
353300

354301
- (void)dealloc {
355302
[_name release];
356303
[_codec release];
357304
[_messenger release];
358-
[_taskQueue release];
359305
[super dealloc];
360306
}
361307

362-
static FlutterBinaryMessengerConnection SetStreamHandlerMessageHandlerOnChannel(
363-
NSObject<FlutterStreamHandler>* handler,
364-
NSString* name,
365-
NSObject<FlutterBinaryMessenger>* messenger,
366-
NSObject<FlutterMethodCodec>* codec,
367-
NSObject<FlutterTaskQueue>* taskQueue) {
308+
static void SetStreamHandlerMessageHandlerOnChannel(NSObject<FlutterStreamHandler>* handler,
309+
NSString* name,
310+
NSObject<FlutterBinaryMessenger>* messenger,
311+
NSObject<FlutterMethodCodec>* codec) {
368312
__block FlutterEventSink currentSink = nil;
369313
FlutterBinaryMessageHandler messageHandler = ^(NSData* message, FlutterBinaryReply callback) {
370314
FlutterMethodCall* call = [codec decodeMethodCall:message];
@@ -410,16 +354,14 @@ static FlutterBinaryMessengerConnection SetStreamHandlerMessageHandlerOnChannel(
410354
callback(nil);
411355
}
412356
};
413-
return SetMessageHandler(messenger, name, messageHandler, taskQueue);
357+
[messenger setMessageHandlerOnChannel:name binaryMessageHandler:messageHandler];
414358
}
415359

416360
- (void)setStreamHandler:(NSObject<FlutterStreamHandler>*)handler {
417361
if (!handler) {
418-
[_messenger cleanUpConnection:_connection];
419-
_connection = 0;
362+
[_messenger setMessageHandlerOnChannel:_name binaryMessageHandler:nil];
420363
return;
421364
}
422-
_connection =
423-
SetStreamHandlerMessageHandlerOnChannel(handler, _name, _messenger, _codec, _taskQueue);
365+
SetStreamHandlerMessageHandlerOnChannel(handler, _name, _messenger, _codec);
424366
}
425367
@end

0 commit comments

Comments
 (0)