From 3faedae91cc3c62d24c45e6e3a1a288ad184e25c Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Sat, 15 Mar 2025 13:46:58 -0500 Subject: [PATCH] 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 --- shell/browser/electron_browser_context.cc | 31 ++++++++--------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/shell/browser/electron_browser_context.cc b/shell/browser/electron_browser_context.cc index eff399c8f851..fd89254e23b3 100644 --- a/shell/browser/electron_browser_context.cc +++ b/shell/browser/electron_browser_context.cc @@ -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(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(new_context); - return new_context; + return context.get(); } } // namespace electron