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 коммит произвёл GitHub
Родитель 12b85a77a8
Коммит d95ae19edf
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 12 добавлений и 4 удалений

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@ -23,7 +23,8 @@ class SessionPreferences : public base::SupportsUserData::Data {
static std::vector<base::FilePath> GetValidPreloads(
content::BrowserContext* context);
explicit SessionPreferences(content::BrowserContext* context);
static void CreateForBrowserContext(content::BrowserContext* context);
~SessionPreferences() override;
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_; }
private:
SessionPreferences();
// The user data key.
static int kLocatorKey;