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

perf: avoid redundant map lookup in ElectronBrowserContext::FromPath()

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
trop[bot] 2025-03-15 13:46:58 -05:00 committed by GitHub
parent 463e0d0ab7
commit 3faedae91c
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