Skip to content

[pigeon] Adds package name to method channel. #4443

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/pigeon/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 10.1.4

* Adds package name to method channel strings to avoid potential collisions between plugins.
* Adds dartPackageName option to `pigeonOptions`.

## 10.1.3

* Adds generic `Object` field support to data classes.
Expand Down
1 change: 1 addition & 0 deletions packages/pigeon/example/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ needed for your project.
// Set this to a unique prefix for your plugin or application, per Objective-C naming conventions.
objcOptions: ObjcOptions(prefix: 'PGN'),
copyrightHeader: 'pigeons/copyright.txt',
dartPackageName: 'pigeon_example_package',
))
```
Then make a simple call to run pigeon on the Dart file containing your definitions.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable ExampleHos
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.ExampleHostApi.getHostLanguage", getCodec());
binaryMessenger,
"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.getHostLanguage",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
Expand All @@ -254,7 +256,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable ExampleHos
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.ExampleHostApi.add", getCodec());
binaryMessenger,
"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.add",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
Expand All @@ -281,7 +285,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable ExampleHos
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.ExampleHostApi.sendMessage", getCodec());
binaryMessenger,
"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.sendMessage",
getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
Expand Down Expand Up @@ -330,7 +336,9 @@ public interface Reply<T> {
public void flutterMethod(@Nullable String aStringArg, @NonNull Reply<String> callback) {
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.MessageFlutterApi.flutterMethod", getCodec());
binaryMessenger,
"dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi.flutterMethod",
getCodec());
channel.send(
new ArrayList<Object>(Collections.singletonList(aStringArg)),
channelReply -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ interface ExampleHostApi {
@Suppress("UNCHECKED_CAST")
fun setUp(binaryMessenger: BinaryMessenger, api: ExampleHostApi?) {
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.ExampleHostApi.getHostLanguage", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.getHostLanguage", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
var wrapped: List<Any?>
Expand All @@ -138,7 +138,7 @@ interface ExampleHostApi {
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.ExampleHostApi.add", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.add", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
Expand All @@ -157,7 +157,7 @@ interface ExampleHostApi {
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.ExampleHostApi.sendMessage", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.sendMessage", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
Expand Down Expand Up @@ -189,7 +189,7 @@ class MessageFlutterApi(private val binaryMessenger: BinaryMessenger) {
}
}
fun flutterMethod(aStringArg: String?, callback: (String) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.MessageFlutterApi.flutterMethod", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi.flutterMethod", codec)
channel.send(listOf(aStringArg)) {
val result = it as String
callback(result)
Expand Down
8 changes: 4 additions & 4 deletions packages/pigeon/example/app/ios/Runner/Messages.g.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ class ExampleHostApiSetup {
static var codec: FlutterStandardMessageCodec { ExampleHostApiCodec.shared }
/// Sets up an instance of `ExampleHostApi` to handle messages through the `binaryMessenger`.
static func setUp(binaryMessenger: FlutterBinaryMessenger, api: ExampleHostApi?) {
let getHostLanguageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.ExampleHostApi.getHostLanguage", binaryMessenger: binaryMessenger, codec: codec)
let getHostLanguageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.getHostLanguage", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
getHostLanguageChannel.setMessageHandler { _, reply in
do {
Expand All @@ -134,7 +134,7 @@ class ExampleHostApiSetup {
} else {
getHostLanguageChannel.setMessageHandler(nil)
}
let addChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.ExampleHostApi.add", binaryMessenger: binaryMessenger, codec: codec)
let addChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.add", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
addChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
Expand All @@ -150,7 +150,7 @@ class ExampleHostApiSetup {
} else {
addChannel.setMessageHandler(nil)
}
let sendMessageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.ExampleHostApi.sendMessage", binaryMessenger: binaryMessenger, codec: codec)
let sendMessageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.sendMessage", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
sendMessageChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
Expand All @@ -176,7 +176,7 @@ class MessageFlutterApi {
self.binaryMessenger = binaryMessenger
}
func flutterMethod(aString aStringArg: String?, completion: @escaping (String) -> Void) {
let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.MessageFlutterApi.flutterMethod", binaryMessenger: binaryMessenger)
let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi.flutterMethod", binaryMessenger: binaryMessenger)
channel.sendMessage([aStringArg] as [Any?]) { response in
let result = response as! String
completion(result)
Expand Down
13 changes: 8 additions & 5 deletions packages/pigeon/example/app/lib/src/messages.g.dart
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ class ExampleHostApi {

Future<String> getHostLanguage() async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.ExampleHostApi.getHostLanguage', codec,
'dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.getHostLanguage',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList = await channel.send(null) as List<Object?>?;
if (replyList == null) {
Expand All @@ -113,7 +114,7 @@ class ExampleHostApi {

Future<int> add(int arg_a, int arg_b) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.ExampleHostApi.add', codec,
'dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.add', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_a, arg_b]) as List<Object?>?;
Expand All @@ -140,7 +141,8 @@ class ExampleHostApi {

Future<bool> sendMessage(MessageData arg_message) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.ExampleHostApi.sendMessage', codec,
'dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.sendMessage',
codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_message]) as List<Object?>?;
Expand Down Expand Up @@ -175,14 +177,15 @@ abstract class MessageFlutterApi {
{BinaryMessenger? binaryMessenger}) {
{
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.MessageFlutterApi.flutterMethod', codec,
'dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi.flutterMethod',
codec,
binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
channel.setMessageHandler((Object? message) async {
assert(message != null,
'Argument for dev.flutter.pigeon.MessageFlutterApi.flutterMethod was null.');
'Argument for dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi.flutterMethod was null.');
final List<Object?> args = (message as List<Object?>?)!;
final String? arg_aString = (args[0] as String?);
final String output = api.flutterMethod(arg_aString);
Expand Down
15 changes: 8 additions & 7 deletions packages/pigeon/example/app/macos/Runner/messages.g.m
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ void PGNExampleHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
NSObject<PGNExampleHostApi> *api) {
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.ExampleHostApi.getHostLanguage"
initWithName:@"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.getHostLanguage"
binaryMessenger:binaryMessenger
codec:PGNExampleHostApiGetCodec()];
if (api) {
Expand All @@ -139,10 +139,10 @@ void PGNExampleHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
}
}
{
FlutterBasicMessageChannel *channel =
[[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.ExampleHostApi.add"
binaryMessenger:binaryMessenger
codec:PGNExampleHostApiGetCodec()];
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.add"
binaryMessenger:binaryMessenger
codec:PGNExampleHostApiGetCodec()];
if (api) {
NSCAssert(
[api respondsToSelector:@selector(addNumber:toNumber:error:)],
Expand All @@ -162,7 +162,7 @@ void PGNExampleHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.ExampleHostApi.sendMessage"
initWithName:@"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.sendMessage"
binaryMessenger:binaryMessenger
codec:PGNExampleHostApiGetCodec()];
if (api) {
Expand Down Expand Up @@ -205,7 +205,8 @@ - (instancetype)initWithBinaryMessenger:(NSObject<FlutterBinaryMessenger> *)bina
- (void)flutterMethodAString:(nullable NSString *)arg_aString
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion {
FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel
messageChannelWithName:@"dev.flutter.pigeon.MessageFlutterApi.flutterMethod"
messageChannelWithName:
@"dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi.flutterMethod"
binaryMessenger:self.binaryMessenger
codec:PGNMessageFlutterApiGetCodec()];
[channel sendMessage:@[ arg_aString ?: [NSNull null] ]
Expand Down
1 change: 1 addition & 0 deletions packages/pigeon/example/app/pigeons/messages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import 'package:pigeon/pigeon.dart';
// Set this to a unique prefix for your plugin or application, per Objective-C naming conventions.
objcOptions: ObjcOptions(prefix: 'PGN'),
copyrightHeader: 'pigeons/copyright.txt',
dartPackageName: 'pigeon_example_package',
))
// #enddocregion config

Expand Down
15 changes: 11 additions & 4 deletions packages/pigeon/example/app/windows/runner/messages.g.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ void ExampleHostApi::SetUp(flutter::BinaryMessenger* binary_messenger,
ExampleHostApi* api) {
{
auto channel = std::make_unique<BasicMessageChannel<>>(
binary_messenger, "dev.flutter.pigeon.ExampleHostApi.getHostLanguage",
binary_messenger,
"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi."
"getHostLanguage",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
Expand All @@ -160,7 +162,9 @@ void ExampleHostApi::SetUp(flutter::BinaryMessenger* binary_messenger,
}
{
auto channel = std::make_unique<BasicMessageChannel<>>(
binary_messenger, "dev.flutter.pigeon.ExampleHostApi.add", &GetCodec());
binary_messenger,
"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.add",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
[api](const EncodableValue& message,
Expand Down Expand Up @@ -197,7 +201,8 @@ void ExampleHostApi::SetUp(flutter::BinaryMessenger* binary_messenger,
}
{
auto channel = std::make_unique<BasicMessageChannel<>>(
binary_messenger, "dev.flutter.pigeon.ExampleHostApi.sendMessage",
binary_messenger,
"dev.flutter.pigeon.pigeon_example_package.ExampleHostApi.sendMessage",
&GetCodec());
if (api != nullptr) {
channel->SetMessageHandler(
Expand Down Expand Up @@ -259,7 +264,9 @@ void MessageFlutterApi::FlutterMethod(
std::function<void(const std::string&)>&& on_success,
std::function<void(const FlutterError&)>&& on_error) {
auto channel = std::make_unique<BasicMessageChannel<>>(
binary_messenger_, "dev.flutter.pigeon.MessageFlutterApi.flutterMethod",
binary_messenger_,
"dev.flutter.pigeon.pigeon_example_package.MessageFlutterApi."
"flutterMethod",
&GetCodec());
EncodableValue encoded_api_arguments = EncodableValue(EncodableList{
a_string_arg ? EncodableValue(*a_string_arg) : EncodableValue(),
Expand Down
Loading