зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1237576 - DownloadAction: Remove canWrite() check. r=rnewman
We can't use File.canWrite() on files that do not exist yet. After all we are going to create the file in a folder that we just created. So it is very unlikely that writing to that folder is going to fail. --HG-- extra : commitid : 9xoV9nbm7Wn extra : rebase_source : 915528b010cc5b6d0586c66991b92e73471109c3
This commit is contained in:
Родитель
73dff04247
Коммит
f7a049e60a
|
@ -87,11 +87,6 @@ public class DownloadAction extends BaseAction {
|
|||
|
||||
temporaryFile = createTemporaryFile(context, content);
|
||||
|
||||
if (!canWrite(temporaryFile, destinationFile)) {
|
||||
throw new RecoverableDownloadContentException(RecoverableDownloadContentException.DISK_IO,
|
||||
"Temporary or destination file not writeable");
|
||||
}
|
||||
|
||||
if (!hasEnoughDiskSpace(content, destinationFile, temporaryFile)) {
|
||||
Log.d(LOGTAG, "Not enough disk space to save content. Skipping download.");
|
||||
continue;
|
||||
|
@ -341,14 +336,4 @@ public class DownloadAction extends BaseAction {
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected boolean canWrite(File... files) {
|
||||
for (File file : files) {
|
||||
if (!file.canWrite()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -168,7 +168,6 @@ public class TestDownloadAction {
|
|||
doReturn(file).when(action).createTemporaryFile(RuntimeEnvironment.application, content);
|
||||
doReturn(file).when(action).getDestinationFile(RuntimeEnvironment.application, content);
|
||||
|
||||
doReturn(true).when(action).canWrite(any(File.class), any(File.class));
|
||||
doReturn(false).when(action).verify(eq(file), anyString());
|
||||
doNothing().when(action).download(any(HttpClient.class), anyString(), eq(file));
|
||||
doReturn(true).when(action).verify(eq(file), anyString());
|
||||
|
@ -203,7 +202,6 @@ public class TestDownloadAction {
|
|||
|
||||
DownloadAction action = spy(new DownloadAction(null));
|
||||
doReturn(false).when(action).isActiveNetworkMetered(RuntimeEnvironment.application);
|
||||
doReturn(true).when(action).canWrite(any(File.class), any(File.class));
|
||||
|
||||
File temporaryFile = mockFileWithSize(1337L);
|
||||
doReturn(temporaryFile).when(action).createTemporaryFile(RuntimeEnvironment.application, content);
|
||||
|
@ -303,7 +301,6 @@ public class TestDownloadAction {
|
|||
File destinationFile = mockNotExistingFile();
|
||||
doReturn(destinationFile).when(action).getDestinationFile(RuntimeEnvironment.application, content);
|
||||
|
||||
doReturn(true).when(action).canWrite(any(File.class), any(File.class));
|
||||
doReturn(true).when(action).verify(eq(temporaryFile), anyString());
|
||||
doNothing().when(action).extract(eq(temporaryFile), eq(destinationFile), anyString());
|
||||
|
||||
|
@ -336,7 +333,6 @@ public class TestDownloadAction {
|
|||
|
||||
DownloadAction action = spy(new DownloadAction(null));
|
||||
doReturn(false).when(action).isActiveNetworkMetered(RuntimeEnvironment.application);
|
||||
doReturn(true).when(action).canWrite(any(File.class), any(File.class));
|
||||
doNothing().when(action).download(any(HttpClient.class), anyString(), any(File.class));
|
||||
doReturn(false).when(action).verify(any(File.class), anyString());
|
||||
|
||||
|
@ -447,7 +443,6 @@ public class TestDownloadAction {
|
|||
doReturn(mockNotExistingFile()).when(action).createTemporaryFile(RuntimeEnvironment.application, content);
|
||||
doReturn(mockNotExistingFile()).when(action).getDestinationFile(RuntimeEnvironment.application, content);
|
||||
doReturn(true).when(action).hasEnoughDiskSpace(eq(content), any(File.class), any(File.class));
|
||||
doReturn(true).when(action).canWrite(any(File.class), any(File.class));
|
||||
|
||||
HttpClient client = mock(HttpClient.class);
|
||||
doThrow(IOException.class).when(client).execute(any(HttpUriRequest.class));
|
||||
|
@ -504,32 +499,6 @@ public class TestDownloadAction {
|
|||
verify(catalog, times(11)).rememberFailure(eq(content), anyInt());
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario: Temporary or destination file is not writable.
|
||||
*
|
||||
* Verify that:
|
||||
* * No download is performed
|
||||
* * Error is counted as failure
|
||||
*/
|
||||
@Test
|
||||
public void testNoDownIsPerformedIfFilesAreNotWritable() throws Exception{
|
||||
DownloadContent content = createFont();
|
||||
DownloadContentCatalog catalog = mockCatalogWithScheduledDownloads(content);
|
||||
|
||||
DownloadAction action = spy(new DownloadAction(null));
|
||||
doReturn(true).when(action).isConnectedToNetwork(RuntimeEnvironment.application);
|
||||
doReturn(false).when(action).isActiveNetworkMetered(RuntimeEnvironment.application);
|
||||
doReturn(mockNotExistingFile()).when(action).createTemporaryFile(RuntimeEnvironment.application, content);
|
||||
doReturn(mockNotExistingFile()).when(action).getDestinationFile(RuntimeEnvironment.application, content);
|
||||
doReturn(false).when(action).canWrite(any(File.class), any(File.class));
|
||||
|
||||
action.perform(RuntimeEnvironment.application, catalog);
|
||||
|
||||
verify(action).canWrite(any(File.class), any(File.class));
|
||||
verify(action, never()).download(any(HttpClient.class), anyString(), any(File.class));
|
||||
verify(catalog).rememberFailure(eq(content), anyInt());
|
||||
}
|
||||
|
||||
private DownloadContent createFont() {
|
||||
return createFontWithSize(102400L);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче