Bug 1411579 - add system handler when Firefox runs in flatpak; r=stransky
Firefox in Flatpak sandboxed environment does not get the list of installed applications on the system because application should know about the environment as little as possible. Introducing nsFlatpakHandlerApp which forwards requests for opening downloaded files to the system by utilizing gtk_show_uri fuction. This changeset also removes nsIGIOMimeApp::Launch method from the interface because it can be fully replaced with LaunchWithUri from nsIHandlerApp interface. The TMPDIR where files are downloaded when user choose to open them needs to be accessible from sandbox and host. The default settings TMPDIR=/tmp is accessible only to the sandbox. To workaround for is to set TMPDIR environment variable to $XDG_CACHE_HOME/tmp before executing Firefox. MozReview-Commit-ID: CSBv0QcETpd
This commit is contained in:
@@ -229,8 +229,10 @@ nsGNOMEShellService::IsDefaultBrowser(bool aStartupCheck,
|
||||
|
||||
if (giovfs) {
|
||||
handler.Truncate();
|
||||
nsCOMPtr<nsIHandlerApp> handlerApp;
|
||||
giovfs->GetAppForURIScheme(nsDependentCString(appProtocols[i].name),
|
||||
getter_AddRefs(gioApp));
|
||||
getter_AddRefs(handlerApp));
|
||||
gioApp = do_QueryInterface(handlerApp);
|
||||
if (!gioApp)
|
||||
return NS_OK;
|
||||
|
||||
@@ -571,10 +573,10 @@ nsGNOMEShellService::OpenApplication(int32_t aApplication)
|
||||
|
||||
nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
|
||||
if (giovfs) {
|
||||
nsCOMPtr<nsIGIOMimeApp> gioApp;
|
||||
giovfs->GetAppForURIScheme(scheme, getter_AddRefs(gioApp));
|
||||
if (gioApp)
|
||||
return gioApp->Launch(EmptyCString());
|
||||
nsCOMPtr<nsIHandlerApp> handlerApp;
|
||||
giovfs->GetAppForURIScheme(scheme, getter_AddRefs(handlerApp));
|
||||
if (handlerApp)
|
||||
return handlerApp->LaunchWithURI(nullptr, nullptr);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
|
||||
|
||||
Reference in New Issue
Block a user