WebKitWebViewControllerCreationParams constructor

WebKitWebViewControllerCreationParams({
  1. @visibleForTesting WebKitProxy webKitProxy = const WebKitProxy(),
  2. Set<PlaybackMediaTypes> mediaTypesRequiringUserAction = const <PlaybackMediaTypes>{PlaybackMediaTypes.audio, PlaybackMediaTypes.video},
  3. bool allowsInlineMediaPlayback = false,
  4. bool limitsNavigationsToAppBoundDomains = false,
  5. @visibleForTesting InstanceManager? instanceManager,
})

Implementation

WebKitWebViewControllerCreationParams({
  @visibleForTesting this.webKitProxy = const WebKitProxy(),
  this.mediaTypesRequiringUserAction = const <PlaybackMediaTypes>{
    PlaybackMediaTypes.audio,
    PlaybackMediaTypes.video,
  },
  this.allowsInlineMediaPlayback = false,
  this.limitsNavigationsToAppBoundDomains = false,
  @visibleForTesting InstanceManager? instanceManager,
}) : _instanceManager = instanceManager ?? NSObject.globalInstanceManager {
  _configuration = webKitProxy.createWebViewConfiguration(
    instanceManager: _instanceManager,
  );

  if (mediaTypesRequiringUserAction.isEmpty) {
    _configuration.setMediaTypesRequiringUserActionForPlayback(
      <WKAudiovisualMediaType>{WKAudiovisualMediaType.none},
    );
  } else {
    _configuration.setMediaTypesRequiringUserActionForPlayback(
      mediaTypesRequiringUserAction
          .map<WKAudiovisualMediaType>(
            (PlaybackMediaTypes type) => type._toWKAudiovisualMediaType(),
          )
          .toSet(),
    );
  }
  _configuration.setAllowsInlineMediaPlayback(allowsInlineMediaPlayback);
  // `WKWebViewConfiguration.limitsNavigationsToAppBoundDomains` is only
  // supported on iOS versions 14+. So this only calls it if the value is set
  // to true.
  if (limitsNavigationsToAppBoundDomains) {
    _configuration.setLimitsNavigationsToAppBoundDomains(
      limitsNavigationsToAppBoundDomains,
    );
  }
}