blob: 081135e5f4e41dfa4d0528191eb7ac3f2f89d24c [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "IntegrationTestPlugin.h"
static NSString *const kIntegrationTestPluginChannel = @"plugins.flutter.io/integration_test";
static NSString *const kMethodTestFinished = @"allTestsFinished";
@interface IntegrationTestPlugin ()
@property(nonatomic, readwrite) NSDictionary<NSString *, NSString *> *testResults;
@end
@implementation IntegrationTestPlugin {
NSDictionary<NSString *, NSString *> *_testResults;
}
+ (IntegrationTestPlugin *)instance {
static dispatch_once_t onceToken;
static IntegrationTestPlugin *sInstance;
dispatch_once(&onceToken, ^{
sInstance = [[IntegrationTestPlugin alloc] initForRegistration];
});
return sInstance;
}
- (instancetype)initForRegistration {
return [super init];
}
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
// No initialization happens here because of the way XCTest loads the testing
// bundles. Setup on static variables can be disregarded when a new static
// instance of IntegrationTestPlugin is allocated when the bundle is reloaded.
// See also: https://github.com/flutter/plugins/pull/2465
}
- (void)setupChannels:(id<FlutterBinaryMessenger>)binaryMessenger {
FlutterMethodChannel *channel =
[FlutterMethodChannel methodChannelWithName:kIntegrationTestPluginChannel
binaryMessenger:binaryMessenger];
[channel setMethodCallHandler:^(FlutterMethodCall *call, FlutterResult result) {
[self handleMethodCall:call result:result];
}];
}
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
if ([kMethodTestFinished isEqual:call.method]) {
self.testResults = call.arguments[@"results"];
result(nil);
} else {
result(FlutterMethodNotImplemented);
}
}
@end