dispose method

Future<void> dispose()

Disposes the headless browser

Implementation

Future<void> dispose() async {
  if (_isDisposed) {
    // Already disposed, do nothing
    return;
  }

  _isDisposed = true;

  try {
    // Cancel any pending page load
    _pageLoadCompleter?.completeError(
      ScrapingException.validation(
        'Browser disposed during page load',
        isRetryable: false,
      ),
    );

    // Clear references first
    final headlessWebView = _headlessWebView;
    _headlessWebView = null;
    _controller = null;

    // Then dispose the web view if it exists
    if (headlessWebView != null) {
      await headlessWebView.dispose();
    }
  } catch (e) {
    _log('Error during disposal: $e', isError: true);
  }
}