perf: avoid redundant map lookup in ElectronBrowserContext::From() (#46044)

perf: avoid redundant map lookup in ElectronBrowserContext::FromPath()
This commit is contained in:
Charles Kerr 2025-03-15 09:51:20 -05:00 committed by GitHub
parent 2d8a547692
commit 73a017577e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -833,34 +833,23 @@ ElectronBrowserContext* ElectronBrowserContext::From(
const std::string& partition,
bool in_memory,
base::Value::Dict options) {
PartitionKey key(partition, in_memory);
ElectronBrowserContext* browser_context = browser_context_map()[key].get();
if (browser_context) {
return browser_context;
auto& context = browser_context_map()[PartitionKey(partition, in_memory)];
if (!context) {
context.reset(new ElectronBrowserContext{std::cref(partition), in_memory,
std::move(options)});
}
auto* new_context = new ElectronBrowserContext(std::cref(partition),
in_memory, std::move(options));
browser_context_map()[key] =
std::unique_ptr<ElectronBrowserContext>(new_context);
return new_context;
return context.get();
}
ElectronBrowserContext* ElectronBrowserContext::FromPath(
const base::FilePath& path,
base::Value::Dict options) {
PartitionKey key(path);
ElectronBrowserContext* browser_context = browser_context_map()[key].get();
if (browser_context) {
return browser_context;
auto& context = browser_context_map()[PartitionKey(path)];
if (!context) {
context.reset(
new ElectronBrowserContext{std::cref(path), false, std::move(options)});
}
auto* new_context =
new ElectronBrowserContext(std::cref(path), false, std::move(options));
browser_context_map()[key] =
std::unique_ptr<ElectronBrowserContext>(new_context);
return new_context;
return context.get();
}
} // namespace electron