// Copyright (c) 2017 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #include "atom/browser/session_preferences.h" #include "atom/common/options_switches.h" #include "base/command_line.h" #include "base/memory/ptr_util.h" namespace atom { namespace { #if defined(OS_WIN) const base::FilePath::CharType kPathDelimiter = FILE_PATH_LITERAL(';'); #else const base::FilePath::CharType kPathDelimiter = FILE_PATH_LITERAL(':'); #endif } // namespace // static int SessionPreferences::kLocatorKey = 0; SessionPreferences::SessionPreferences(content::BrowserContext* context) { context->SetUserData(&kLocatorKey, base::WrapUnique(this)); } SessionPreferences::~SessionPreferences() {} // static SessionPreferences* SessionPreferences::FromBrowserContext( content::BrowserContext* context) { return static_cast(context->GetUserData(&kLocatorKey)); } // static void SessionPreferences::AppendExtraCommandLineSwitches( content::BrowserContext* context, base::CommandLine* command_line) { SessionPreferences* self = FromBrowserContext(context); if (!self) return; base::FilePath::StringType preloads; for (const auto& preload : self->preloads()) { if (!base::FilePath(preload).IsAbsolute()) { LOG(ERROR) << "preload script must have absolute path: " << preload; continue; } if (preloads.empty()) preloads = preload; else preloads += kPathDelimiter + preload; } if (!preloads.empty()) command_line->AppendSwitchNative(switches::kPreloadScripts, preloads); } } // namespace atom