refactor: add SessionPreferences::CreateForBrowserContext() (#38656)

Copy the NativeWindowRelay::CreateForWebContents() idiom
to simplify SessionPreferences's constructor and lifecycle.
This commit is contained in:
Charles Kerr 2023-06-09 11:20:43 -05:00 committed by GitHub
parent 12b85a77a8
commit d95ae19edf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 4 deletions

View file

@ -345,7 +345,7 @@ Session::Session(v8::Isolate* isolate, ElectronBrowserContext* browser_context)
// Observe DownloadManager to get download notifications. // Observe DownloadManager to get download notifications.
browser_context->GetDownloadManager()->AddObserver(this); browser_context->GetDownloadManager()->AddObserver(this);
new SessionPreferences(browser_context); SessionPreferences::CreateForBrowserContext(browser_context);
protocol_.Reset(isolate, Protocol::Create(isolate, browser_context).ToV8()); protocol_.Reset(isolate, Protocol::Create(isolate, browser_context).ToV8());

View file

@ -13,10 +13,15 @@ namespace electron {
// static // static
int SessionPreferences::kLocatorKey = 0; int SessionPreferences::kLocatorKey = 0;
SessionPreferences::SessionPreferences(content::BrowserContext* context) { // static
context->SetUserData(&kLocatorKey, base::WrapUnique(this)); void SessionPreferences::CreateForBrowserContext(
content::BrowserContext* context) {
DCHECK(context);
context->SetUserData(&kLocatorKey,
base::WrapUnique(new SessionPreferences{}));
} }
SessionPreferences::SessionPreferences() = default;
SessionPreferences::~SessionPreferences() = default; SessionPreferences::~SessionPreferences() = default;
// static // static

View file

@ -23,7 +23,8 @@ class SessionPreferences : public base::SupportsUserData::Data {
static std::vector<base::FilePath> GetValidPreloads( static std::vector<base::FilePath> GetValidPreloads(
content::BrowserContext* context); content::BrowserContext* context);
explicit SessionPreferences(content::BrowserContext* context); static void CreateForBrowserContext(content::BrowserContext* context);
~SessionPreferences() override; ~SessionPreferences() override;
void set_preloads(const std::vector<base::FilePath>& preloads) { void set_preloads(const std::vector<base::FilePath>& preloads) {
@ -32,6 +33,8 @@ class SessionPreferences : public base::SupportsUserData::Data {
const std::vector<base::FilePath>& preloads() const { return preloads_; } const std::vector<base::FilePath>& preloads() const { return preloads_; }
private: private:
SessionPreferences();
// The user data key. // The user data key.
static int kLocatorKey; static int kLocatorKey;