Skip to content

Commit

Permalink
Restore BrowserFetcher.GetExecutablePath (#2363)
Browse files Browse the repository at this point in the history
  • Loading branch information
kblok committed Nov 22, 2023
1 parent d5caa54 commit dca5bfc
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 22 deletions.
6 changes: 3 additions & 3 deletions lib/PuppeteerSharp/BrowserData/Cache.cs
Expand Up @@ -9,7 +9,7 @@ internal class Cache
{
private readonly string _rootDir;

public Cache() => _rootDir = BrowserFetcher.GetExecutablePath();
public Cache() => _rootDir = BrowserFetcher.GetBrowsersLocation();

public Cache(string rootDir) => _rootDir = rootDir;

Expand All @@ -27,8 +27,8 @@ public IEnumerable<InstalledBrowser> GetInstalledBrowsers()
return Array.Empty<InstalledBrowser>();
}

var browerNames = Enum.GetNames(typeof(SupportedBrowser)).Select(browser => browser.ToUpperInvariant());
var browsers = rootInfo.GetDirectories().Where(browser => browerNames.Contains(browser.Name.ToUpperInvariant()));
var browserNames = Enum.GetNames(typeof(SupportedBrowser)).Select(browser => browser.ToUpperInvariant());
var browsers = rootInfo.GetDirectories().Where(browser => browserNames.Contains(browser.Name.ToUpperInvariant()));

return browsers.SelectMany(browser =>
{
Expand Down
28 changes: 15 additions & 13 deletions lib/PuppeteerSharp/BrowserFetcher.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
Expand Down Expand Up @@ -35,7 +34,7 @@ public class BrowserFetcher : IBrowserFetcher
/// <inheritdoc cref="BrowserFetcher"/>
public BrowserFetcher()
{
CacheDir = GetExecutablePath();
CacheDir = GetBrowsersLocation();
Platform = GetCurrentPlatform();
Browser = SupportedBrowser.Chrome;
_customFileDownload = _webClient.DownloadFileTaskAsync;
Expand All @@ -55,7 +54,7 @@ public BrowserFetcher(BrowserFetcherOptions options)
}

Browser = options.Browser;
CacheDir = string.IsNullOrEmpty(options.Path) ? GetExecutablePath() : options.Path;
CacheDir = string.IsNullOrEmpty(options.Path) ? GetBrowsersLocation() : options.Path;
Platform = options.Platform ?? GetCurrentPlatform();
_customFileDownload = options.CustomFileDownload ?? _webClient.DownloadFileTaskAsync;
}
Expand Down Expand Up @@ -92,10 +91,8 @@ public async Task<bool> CanDownloadAsync(string revision)
var client = WebRequest.Create(url);
client.Proxy = _webClient.Proxy;
client.Method = "HEAD";
using (var response = (HttpWebResponse)await client.GetResponseAsync().ConfigureAwait(false))
{
return response.StatusCode == HttpStatusCode.OK;
}
using var response = (HttpWebResponse)await client.GetResponseAsync().ConfigureAwait(false);
return response.StatusCode == HttpStatusCode.OK;
}
catch (WebException)
{
Expand Down Expand Up @@ -170,6 +167,14 @@ public async Task<InstalledBrowser> DownloadAsync(string buildId)
return new InstalledBrowser(cache, Browser, buildId, Platform);
}

/// <inheritdoc/>
public string GetExecutablePath(string buildId)
=> new InstalledBrowser(
new Cache(CacheDir),
Browser,
buildId,
Platform).GetExecutablePath();

/// <inheritdoc/>
public void Dispose()
{
Expand Down Expand Up @@ -197,7 +202,7 @@ internal static Platform GetCurrentPlatform()
return Platform.Unknown;
}

internal static string GetExecutablePath()
internal static string GetBrowsersLocation()
{
var assembly = typeof(Puppeteer).Assembly;
var assemblyName = assembly.GetName().Name + ".dll";
Expand Down Expand Up @@ -276,11 +281,8 @@ private Task InstallDMGAsync(string dmgPath, string folderPath)

var mountAndCopyTcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);

using var process = new Process
{
EnableRaisingEvents = true,
};

using var process = new Process();
process.EnableRaisingEvents = true;
process.StartInfo.FileName = "hdiutil";
process.StartInfo.Arguments = $"attach -nobrowse -noautoopen \"{dmgPath}\"";
process.StartInfo.RedirectStandardOutput = true;
Expand Down
10 changes: 8 additions & 2 deletions lib/PuppeteerSharp/IBrowserFetcher.cs
Expand Up @@ -8,13 +8,12 @@ namespace PuppeteerSharp
{
/// <summary>
/// BrowserFetcher can download and manage different versions of Chromium.
/// BrowserFetcher operates on revision strings that specify a precise version of Chromium, e.g. 533271. Revision strings can be obtained from omahaproxy.appspot.com.
/// </summary>
/// <example>
/// Example on how to use BrowserFetcher to download a specific version of Chromium and run Puppeteer against it:
/// <code>
/// var browserFetcher = Puppeteer.CreateBrowserFetcher();
/// var revisionInfo = await browserFetcher.DownloadAsync("533271");
/// var revisionInfo = await browserFetcher.DownloadAsync(BrowserData.Chrome.DefaultBuildId);
/// var browser = await await Puppeteer.LaunchAsync(new LaunchOptions { ExecutablePath = revisionInfo.ExecutablePath});
/// </code>
/// </example>
Expand Down Expand Up @@ -88,5 +87,12 @@ public interface IBrowserFetcher : IDisposable
/// </summary>
/// <param name="buildId">Browser to remove.</param>
void Uninstall(string buildId);

/// <summary>
/// Gets the executable path.
/// </summary>
/// <param name="buildId">Browser buildId.</param>
/// <returns>The executable path.</returns>
string GetExecutablePath(string buildId);
}
}
8 changes: 4 additions & 4 deletions lib/PuppeteerSharp/PuppeteerSharp.csproj
Expand Up @@ -12,10 +12,10 @@
<Description>Headless Browser .NET API</Description>
<PackageId>PuppeteerSharp</PackageId>
<PackageReleaseNotes></PackageReleaseNotes>
<PackageVersion>13.0.0</PackageVersion>
<ReleaseVersion>13.0.0</ReleaseVersion>
<AssemblyVersion>13.0.0</AssemblyVersion>
<FileVersion>13.0.0</FileVersion>
<PackageVersion>13.0.1</PackageVersion>
<ReleaseVersion>13.0.1</ReleaseVersion>
<AssemblyVersion>13.0.1</AssemblyVersion>
<FileVersion>13.0.1</FileVersion>
<SynchReleaseVersion>false</SynchReleaseVersion>
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
<DebugType>embedded</DebugType>
Expand Down

0 comments on commit dca5bfc

Please sign in to comment.