Skip to content

Commit

Permalink
Address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
bleroux committed Sep 4, 2023
1 parent 4248e61 commit af17331
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 25 deletions.
22 changes: 11 additions & 11 deletions shell/platform/darwin/common/framework/Headers/FlutterChannels.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,42 +146,42 @@ FLUTTER_DARWIN_EXPORT
*
* @param name The channel name.
* @param messenger The binary messenger.
* @param newSize The new size of the buffer.
* @param newSize The number of messages that will get buffered.
*/
+ (void)resizeChannelWithName:(NSString*)name
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
newSize:(NSInteger)newSize;
size:(NSInteger)newSize;

/**
* Adjusts the number of messages that will get buffered when sending messages to
* channels that aren't fully set up yet. For example, the engine isn't running
* yet or the channel's message handler isn't set up on the Dart side yet.
*
* @param newSize The new size of the buffer.
* @param newSize The number of messages that will get buffered.
*/
- (void)resizeChannelBuffer:(NSInteger)newSize;

/**
* Toggles whether the channel should show warning messages when discarding messages
* Defines whether the channel should show warning messages when discarding messages
* due to overflow.
*
* @param name The channel name.
* @param messenger The binary messenger.
* @param allowed When true, the channel is expected to overflow and warning messages
* will not be shown.
* @param name The channel name.
* @param messenger The binary messenger.
*/
+ (void)setAllowOverflowChannelWithName:(NSString*)name
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
allowed:(BOOL)allowed;
+ (void)setWarnsOnOverflow:(BOOL)allowed
forChannelWithName:(NSString*)name
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger;

/**
* Toggles whether the channel should show warning messages when discarding messages
* Defines whether the channel should show warning messages when discarding messages
* due to overflow.
*
* @param allowed When true, the channel is expected to overflow and warning messages
* will not be shown.
*/
- (void)setAllowOverflow:(BOOL)allowed;
- (void)setWarnsOnOverflow:(BOOL)allowed;

@end

Expand Down
34 changes: 22 additions & 12 deletions shell/platform/darwin/common/framework/Source/FlutterChannels.mm
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,28 @@
static void ResizeChannelBuffer(NSObject<FlutterBinaryMessenger>* binaryMessenger,
NSString* channel,
NSInteger newSize) {
NSArray* args = @[ channel, [NSNumber numberWithInt:newSize] ];
NSCAssert(newSize >= 0, @"Channel buffer size must be non-negative");
NSArray* args = @[ channel, @(newSize) ];
FlutterMethodCall* resizeMethodCall = [FlutterMethodCall methodCallWithMethodName:kResizeMethod
arguments:args];
NSObject<FlutterMethodCodec>* codec = [FlutterStandardMethodCodec sharedInstance];
NSData* message = [codec encodeMethodCall:resizeMethodCall];
[binaryMessenger sendOnChannel:kFlutterChannelBuffersChannel message:message];
}

static void SetAllowChannelOverflow(NSObject<FlutterBinaryMessenger>* binaryMessenger,
NSString* channel,
BOOL allowed) {
NSArray* args = @[ channel, [NSNumber numberWithBool:allowed] ];
/**
* Defines whether a channel should show warning messages when discarding messages
* due to overflow.
*
* @param binaryMessenger The binary messenger.
* @param channel The channel name.
* @param allowed When true, the channel is expected to overflow and warning messages
* will not be shown.
*/
static void SetWarnsOnOverflow(NSObject<FlutterBinaryMessenger>* binaryMessenger,
NSString* channel,
BOOL allowed) {
NSArray* args = @[ channel, @(allowed) ];
FlutterMethodCall* overflowMethodCall =
[FlutterMethodCall methodCallWithMethodName:kOverflowMethod arguments:args];
NSObject<FlutterMethodCodec>* codec = [FlutterStandardMethodCodec sharedInstance];
Expand Down Expand Up @@ -132,22 +142,22 @@ - (void)setMessageHandler:(FlutterMessageHandler)handler {

+ (void)resizeChannelWithName:(NSString*)name
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
newSize:(NSInteger)newSize {
size:(NSInteger)newSize {
ResizeChannelBuffer(messenger, name, newSize);
}

- (void)resizeChannelBuffer:(NSInteger)newSize {
ResizeChannelBuffer(_messenger, _name, newSize);
}

+ (void)setAllowOverflowChannelWithName:(NSString*)name
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
allowed:(BOOL)allowed {
SetAllowChannelOverflow(messenger, name, allowed);
+ (void)setWarnsOnOverflow:(BOOL)allowed
forChannelWithName:(NSString*)name
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger {
SetWarnsOnOverflow(messenger, name, allowed);
}

- (void)setAllowOverflow:(BOOL)allowed {
SetAllowChannelOverflow(_messenger, _name, allowed);
- (void)setWarnsOnOverflow:(BOOL)allowed {
SetWarnsOnOverflow(_messenger, _name, allowed);
}

@end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ - (void)testResize {
[binaryMessenger stopMocking];
}

- (bool)testetAllowChannelOverflow {
- (bool)testSetWarnsOnOverflow {
NSString* channelName = @"flutter/test";
id binaryMessenger = OCMStrictProtocolMock(@protocol(FlutterBinaryMessenger));
id codec = OCMProtocolMock(@protocol(FlutterMethodCodec));
Expand All @@ -188,7 +188,7 @@ - (bool)testetAllowChannelOverflow {
NSData* expectedMessage = [NSData dataWithBytes:bytes length:sizeof(bytes)];

OCMExpect([binaryMessenger sendOnChannel:@"dev.flutter/channel-buffers" message:expectedMessage]);
[channel setAllowOverflow:YES];
[channel setWarnsOnOverflow:YES];
OCMVerifyAll(binaryMessenger);
[binaryMessenger stopMocking];
}
Expand Down

0 comments on commit af17331

Please sign in to comment.