Skip to content

Commit

Permalink
Determine GPU process cache directory at runtime
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=265415
rdar://118857333

Reviewed by Brent Fulgham.

If the GPU process is running as an extension, the cache directory will be different.

* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::gpuProcessCachesDirectory):
(WebKit::GPUProcessProxy::GPUProcessProxy):

Canonical link: https://commits.webkit.org/271208@main
  • Loading branch information
pvollan committed Nov 28, 2023
1 parent ad2aba0 commit d6cd807
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,14 @@ GPUProcessProxy* GPUProcessProxy::singletonIfCreated()
}

#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
static String gpuProcessCachesDirectory()
static String gpuProcessCachesDirectory(bool isExtension)
{
#if USE(EXTENSIONKIT)
constexpr ASCIILiteral cacheDirectory = "/Library/Caches/com.apple.WebKit.GPUExtension/"_s;
#else
constexpr ASCIILiteral cacheDirectory = "/Library/Caches/com.apple.WebKit.GPU/"_s;
#endif
ASCIILiteral cacheDirectory;
if (isExtension)
cacheDirectory = "/Library/Caches/com.apple.WebKit.GPUExtension/"_s;
else
cacheDirectory = "/Library/Caches/com.apple.WebKit.GPU/"_s;

String path = WebsiteDataStore::cacheDirectoryInContainerOrHomeDirectory(cacheDirectory);

FileSystem::makeAllDirectories(path);
Expand Down Expand Up @@ -159,7 +160,11 @@ GPUProcessProxy::GPUProcessProxy()
parameters.parentPID = getCurrentProcessID();

#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
auto containerCachesDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(gpuProcessCachesDirectory());
bool isExtension = false;
#if USE(EXTENSIONKIT)
isExtension = !!extensionProcess();
#endif
auto containerCachesDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(gpuProcessCachesDirectory(isExtension));
auto containerTemporaryDirectory = WebsiteDataStore::defaultResolvedContainerTemporaryDirectory();

if (!containerCachesDirectory.isEmpty()) {
Expand Down

0 comments on commit d6cd807

Please sign in to comment.