Skip to content
Merged
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
31 changes: 26 additions & 5 deletions src/Drivers/ChromeDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,29 +79,50 @@ protected function capturePage(Browser $browser, string $source, SourceType $typ
* Start a dedicated browser or a persistent shared browser.
*/
protected function createBrowser(BrowserOptions $options): Browser
{
return $this->createBrowserFactory()->createBrowser(
$this->getBrowserOptions($options),
);
}

/**
* Create the factory used to start Chrome.
*/
protected function createBrowserFactory(): BrowserFactory
{
return new BrowserFactory($this->binary);
}

/**
* Prepare the options used to start a dedicated or shared browser.
*/
protected function getBrowserOptions(BrowserOptions $options): array
{
$socket = $this->socket($options);

$browserOptions = $this->browserOptions;

if ($socket && empty($browserOptions['userDataDir'])) {
$browserOptions['userDataDir'] = $socket->path().'.profile';
}

return (new BrowserFactory($this->binary))->createBrowser(array_merge($browserOptions, [
return array_merge($browserOptions, [
'windowSize' => [$options->getWidth(), $options->getHeight()],
'sendSyncDefaultTimeout' => $options->getBrowserTimeout(),
'keepAlive' => $socket !== null,
]));
]);
}

/**
* Resolve the shared socket selected for this capture.
*/
protected function socket(BrowserOptions $options): ?BrowserSocket
{
return $options->getSocket() !== null
? BrowserSocket::named($options->getSocket(), $this->socketDirectory, $this->lockTimeout)
: null;
if (is_null($key = $options->getSocket())) {
return null;
}

return BrowserSocket::named($key, $this->socketDirectory, $this->lockTimeout);
}

/**
Expand Down
Loading