8035699: File choosers should be choosier
Reviewed-by: alexsch, art, skoivu
This commit is contained in:
parent
fdda4fe828
commit
9aefc3174c
@ -739,7 +739,8 @@ class WindowsFileSystemView extends FileSystemView {
|
||||
* @return the Desktop folder.
|
||||
*/
|
||||
public File getHomeDirectory() {
|
||||
return getRoots()[0];
|
||||
File[] roots = getRoots();
|
||||
return (roots.length == 0) ? null : roots[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -583,11 +583,18 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
|
||||
// Needs to be accessible to Win32ShellFolderManager2
|
||||
static String getFileSystemPath(final int csidl) throws IOException, InterruptedException {
|
||||
return invoke(new Callable<String>() {
|
||||
String path = invoke(new Callable<String>() {
|
||||
public String call() throws IOException {
|
||||
return getFileSystemPath0(csidl);
|
||||
}
|
||||
}, IOException.class);
|
||||
if (path != null) {
|
||||
SecurityManager security = System.getSecurityManager();
|
||||
if (security != null) {
|
||||
security.checkRead(path);
|
||||
}
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
|
||||
|
@ -136,6 +136,8 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
|
||||
if (desktop == null) {
|
||||
try {
|
||||
desktop = new Win32ShellFolder2(DESKTOP);
|
||||
} catch (SecurityException e) {
|
||||
// Ignore error
|
||||
} catch (IOException e) {
|
||||
// Ignore error
|
||||
} catch (InterruptedException e) {
|
||||
@ -149,6 +151,8 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
|
||||
if (drives == null) {
|
||||
try {
|
||||
drives = new Win32ShellFolder2(DRIVES);
|
||||
} catch (SecurityException e) {
|
||||
// Ignore error
|
||||
} catch (IOException e) {
|
||||
// Ignore error
|
||||
} catch (InterruptedException e) {
|
||||
@ -165,6 +169,8 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
|
||||
if (path != null) {
|
||||
recent = createShellFolder(getDesktop(), new File(path));
|
||||
}
|
||||
} catch (SecurityException e) {
|
||||
// Ignore error
|
||||
} catch (InterruptedException e) {
|
||||
// Ignore error
|
||||
} catch (IOException e) {
|
||||
@ -178,6 +184,8 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
|
||||
if (network == null) {
|
||||
try {
|
||||
network = new Win32ShellFolder2(NETWORK);
|
||||
} catch (SecurityException e) {
|
||||
// Ignore error
|
||||
} catch (IOException e) {
|
||||
// Ignore error
|
||||
} catch (InterruptedException e) {
|
||||
@ -201,6 +209,8 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
|
||||
personal.setIsPersonal();
|
||||
}
|
||||
}
|
||||
} catch (SecurityException e) {
|
||||
// Ignore error
|
||||
} catch (InterruptedException e) {
|
||||
// Ignore error
|
||||
} catch (IOException e) {
|
||||
|
Loading…
Reference in New Issue
Block a user