fromExistingSession function

Future<WebDriver> fromExistingSession(
  1. AsyncRequestClient createRequestClient(
    1. Uri prefix
    ),
  2. String sessionId, {
  3. Uri? uri,
  4. WebDriverSpec spec = WebDriverSpec.Auto,
})

Creates an async WebDriver from existing session.

This is intended for internal use! Please use fromExistingSession from async_io.dart or async_html.dart.

Implementation

Future<WebDriver> fromExistingSession(
    AsyncRequestClient Function(Uri prefix) createRequestClient,
    String sessionId,
    {Uri? uri,
    WebDriverSpec spec = WebDriverSpec.Auto}) async {
  uri ??= defaultUri;

  // This client's prefix at root, it has no session prefix in it.
  final client = createRequestClient(uri);

  final handler = getHandler(spec);

  final session = await client.send(handler.session.buildInfoRequest(sessionId),
      (response) => handler.session.parseInfoResponse(response, sessionId));

  if (session.spec != WebDriverSpec.JsonWire &&
      session.spec != WebDriverSpec.W3c) {
    throw 'Unexpected spec: ${session.spec}';
  }

  return WebDriver(uri, session.id, UnmodifiableMapView(session.capabilities!),
      createRequestClient(uri.resolve('session/${session.id}/')), session.spec);
}