blob: ebfc4d1e04016b229ddcdf82ee0f964d8ce4120d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
--- chrome/browser/profiles/profile_impl.cc.orig 2024-10-16 21:30:59 UTC
+++ chrome/browser/profiles/profile_impl.cc
@@ -267,6 +267,10 @@
#include "chrome/browser/spellchecker/spellcheck_service.h"
#endif
+#if BUILDFLAG(IS_BSD)
+#include "sandbox/policy/sandbox.h"
+#endif
+
using bookmarks::BookmarkModel;
using content::BrowserThread;
using content::DownloadManagerDelegate;
@@ -603,7 +607,7 @@ void ProfileImpl::LoadPrefsForNormalStartup(bool async
#else
{
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
ProfileManager* profile_manager = g_browser_process->profile_manager();
ProfileAttributesEntry* entry =
profile_manager->GetProfileAttributesStorage()
@@ -908,7 +912,17 @@ base::FilePath ProfileImpl::last_selected_directory()
}
base::FilePath ProfileImpl::last_selected_directory() {
+#if BUILDFLAG(IS_OPENBSD)
+ // If unveil(2) is used, force the file dialog directory to something we
+ // know is available.
+ auto* sandbox = sandbox::policy::SandboxLinux::GetInstance();
+ if (sandbox->unveil_initialized())
+ return GetPrefs()->GetFilePath(prefs::kDownloadDefaultDirectory);
+ else
+ return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory);
+#else
return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory);
+#endif
}
void ProfileImpl::set_last_selected_directory(const base::FilePath& path) {
|