|
@@ -8,8 +8,8 @@
|
|
|
const char kXdgConfigHomeEnvVar[] = "XDG_CONFIG_HOME";
|
|
|
const char kXdgCurrentDesktopEnvVar[] = "XDG_CURRENT_DESKTOP";
|
|
|
const char kXdgSessionTypeEnvVar[] = "XDG_SESSION_TYPE";
|
|
|
-+const char kDotDataDir[] = ".local/share";
|
|
|
+const char kXdgDataHomeEnvVar[] = "XDG_DATA_HOME";
|
|
|
++const char kXdgDataHomeDefaultFallback[] = ".local/share";
|
|
|
|
|
|
FilePath GetXDGDirectory(Environment* env, const char* env_name,
|
|
|
const char* fallback_dir) {
|
|
@@ -20,11 +20,11 @@
|
|
|
// The XDG session type environment variable.
|
|
|
BASE_EXPORT extern const char kXdgSessionTypeEnvVar[];
|
|
|
|
|
|
-+// The default XDG data directory name.
|
|
|
-+BASE_EXPORT extern const char kDotDataDir[];
|
|
|
-+
|
|
|
+// The XDG data directory environment variable.
|
|
|
+BASE_EXPORT extern const char kXdgDataHomeEnvVar[];
|
|
|
++
|
|
|
++// The default/fallback XDG data directory.
|
|
|
++BASE_EXPORT extern const char kXdgDataHomeDefaultFallback[];
|
|
|
+
|
|
|
// Utility function for getting XDG directories.
|
|
|
// |env_name| is the name of an environment variable that we want to use to get
|
|
@@ -42,44 +42,27 @@
|
|
|
|
|
|
namespace crypto {
|
|
|
|
|
|
-@@ -45,12 +48,21 @@
|
|
|
+@@ -45,12 +48,23 @@
|
|
|
|
|
|
base::FilePath GetDefaultConfigDirectory() {
|
|
|
base::FilePath dir;
|
|
|
+#if defined(OS_LINUX)
|
|
|
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
|
|
|
-+ dir = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgDataHomeEnvVar, base::nix::kDotDataDir);
|
|
|
++ dir = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgDataHomeEnvVar,
|
|
|
++ base::nix::kXdgDataHomeDefaultFallback);
|
|
|
+#else
|
|
|
base::PathService::Get(base::DIR_HOME, &dir);
|
|
|
+#endif
|
|
|
if (dir.empty()) {
|
|
|
-- LOG(ERROR) << "Failed to get home directory.";
|
|
|
-+ LOG(ERROR) << "Failed to get $HOME or $XDG_DATA_HOME directory.";
|
|
|
+ LOG(ERROR) << "Failed to get home directory.";
|
|
|
return dir;
|
|
|
}
|
|
|
+#if defined(OS_LINUX)
|
|
|
-+ dir = dir.Append(chrome::kBrowserProcessExecutableName).AppendASCII("pki").AppendASCII("nssdb");
|
|
|
++ dir = dir.Append(chrome::kBrowserProcessExecutableName).AppendASCII("pki").
|
|
|
++ ppendASCII("nssdb");
|
|
|
+#else
|
|
|
dir = dir.AppendASCII(".pki").AppendASCII("nssdb");
|
|
|
+#endif
|
|
|
if (!base::CreateDirectory(dir)) {
|
|
|
LOG(ERROR) << "Failed to create " << dir.value() << " directory.";
|
|
|
dir.clear();
|
|
|
-@@ -136,7 +148,7 @@
|
|
|
- NSSInitSingleton() {
|
|
|
- // Initializing NSS causes us to do blocking IO.
|
|
|
- // Temporarily allow it until we fix
|
|
|
-- // http://code.google.com/p/chromium/issues/detail?id=59847
|
|
|
-+ // http://code.9oo91e.qjz9zk/p/chromium/issues/detail?id=59847
|
|
|
- base::ThreadRestrictions::ScopedAllowIO allow_io;
|
|
|
-
|
|
|
- EnsureNSPRInit();
|
|
|
-@@ -273,7 +285,7 @@
|
|
|
-
|
|
|
- // Shouldn't need to const_cast here, but SECMOD doesn't properly declare
|
|
|
- // input string arguments as const. Bug
|
|
|
-- // https://bugzilla.mozilla.org/show_bug.cgi?id=642546 was filed on NSS
|
|
|
-+ // https://bugzilla.m0z111a.qjz9zk/show_bug.cgi?id=642546 was filed on NSS
|
|
|
- // codebase to address this.
|
|
|
- SECMODModule* module = SECMOD_LoadUserModule(
|
|
|
- const_cast<char*>(modparams.c_str()), nullptr, PR_FALSE);
|