Closed Bug 124035 Opened 23 years ago Closed 22 years ago

No errors when saving to a full diskette

Categories

(Core Graveyard :: File Handling, defect)

x86
Windows 2000
defect
Not set
major

Tracking

(Not tracked)

VERIFIED FIXED
mozilla1.0

People

(Reporter: law, Assigned: adamlock)

Details

(Keywords: topembed+)

Attachments

(1 file, 3 obsolete files)

I tried saving a file (either by clicking on a .exe or something, and choosing
save to disk, or, by right-clicking and choosing "save link as...") to a
diskette that is full (0 bytes free).

In all cases, the download is reported as completing, without error notification
of any kind.

I'm assigning this to myself for now because the problem doesn't really become
clear until you try the new code I'm working on that adds error handling logic
to our downloading code.  When that code lands, and one can readily reproduce
the problem, then I'll dig deeper and see what the problem is, and then reassign
as necessary.

I just don't want to forget about this, nor do I want it to block the landing of
my error-handling code.
Similar symptom seen in other cases (e.g., when there's write permission 
problems; basically, anytime we get an error on creation of the target file, 
rather than an I/O error writing to it).

Requires a line of code or two in nsWebBrowserPersist.cpp to check for errors 
on the target file creation.
Keywords: nsbeta1
Target Milestone: --- → mozilla1.0
Adam, can you track this down and fix it, please?  I have too many mozilla1.0 
bugs and need some help.
Assignee: law → adamlock
Target Milestone: mozilla1.0 → ---
Keywords: nsbeta1nsbeta1+, topembed+
Target Milestone: --- → mozilla1.0
OnDataAvailable exits early if it gets an error code from MakeOutputStream. Fix
is to set cancel when a creation error occurs and let the error drop through to
 be handled in the same way as an I/O error.

Patch follows.
Attached patch Patch (obsolete) — Splinter Review
Patch tests return code from MakeOutputStream and lets it be handled like an
I/O error.
Attached patch New patch (obsolete) — Splinter Review
New patch also tests return code of MakeOutputStream in SaveDocumentInternal.

Can I have a review of this please?
Attachment #73902 - Attachment is obsolete: true
+        if (file) {
+            file->GetUnicodePath(getter_Copies(path));
+        }

The above block doesn't match the format used elsewhere (curly brace on same
line as if).  Also, perhaps avoid the step of getting the file and just grab the
uri's spec instead?
That code snippet is a straight cut and paste from the code Bill put into
OnDataAvailable to display an error. Bill, is there a reason you're using
GetUnicodePath here?
Attached patch New patch (obsolete) — Splinter Review
I'll answer my own question. The error message wants the report file path, not
the spec of the URI to the user. Having said that, this behaviour doesn't make
sense for uploading, so I have created this new patch. This patch is a bit
bigger but does the following:

1. Moves SendStatusChange in the source and makes it into a member of 
   nsWebBrowserPersist called SendErrorStatusChange. It used to be a static
   and looked weird.
2. Puts the code that gets the GetUnicodePath from the URI inside
   SendErrorStatusChange to avoid duplicating it in the two places the method
   is called.
3. Adds an else branch so that if the URI does not have path (i.e. an upload
   uri with no associated nsILocalFile), it calls GetSpec and reports that
   instead.
4. General consistency cleanup around this code.

Reviews?
Attachment #73907 - Attachment is obsolete: true
Comment on attachment 74073 [details] [diff] [review]
New patch

I know Bill wrote it this way originally, but I don't understand why we want to
pass in nsnull instead of the aRequest given to us; what's the harm?

+    mProgressListener->OnStatusChange(nsnull,
+	 aIsReadError ? aRequest : nsnull, aResult, msgText);

(I'd rather just see us always pass in aRequest)


For this change, I think you should remove nsresult (why have another "rv"
variable?)
+	 nsresult rv = MakeOutputStreamFromURI(aURI, aOutputStream);

I'd prefer just:  rv=MakeOutputStream...
Bill can you explain why nsnull is passed instead of the nsIRequest for a write
error? I don't mind either way but I'd like to clarify and agree on the
behaviour so we can get this thing reviewed.
I spoke with Bill on the phone.  Here is the short summary:

The "aIsReadError ? aRequest : nsnull" code should be removed from within the
function but inside OnDataAvailable, we need to maintain that (pass in a null
aRequest if it's a write error) so that the progress listener never gets a
request/channel that is wrong.
Comment on attachment 74073 [details] [diff] [review]
New patch

+    mProgressListener->OnStatusChange(nsnull,
+	 aRequest, aResult, msgText);

the call in OnDataAvailable could be something like:

+	     SendErrorStatusChange(readError, rv, readError ? request : nsnull,
data->mFile);
Attached patch Patch Mk IVSplinter Review
This should be ready for review now. The "readError ? request : nsnull" has
been moved to where SendErrorStatusChange is called in OnDataAvailable.
Attachment #74073 - Attachment is obsolete: true
Attachment #74315 - Flags: review+
Comment on attachment 74315 [details] [diff] [review]
Patch Mk IV

r=brade
Comment on attachment 74315 [details] [diff] [review]
Patch Mk IV

sr=rpotts@netscape.com
Attachment #74315 - Flags: superreview+
Comment on attachment 74315 [details] [diff] [review]
Patch Mk IV

a=asa (on behalf of drivers) for checkin to the 1.0 trunk
Attachment #74315 - Flags: approval+
Fix checked in
marking fixed.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Component: Networking → File Handling
QA Contact: benc → sairuh
vrfy'd fixed on win2k with 2002.09.16.08.
Status: RESOLVED → VERIFIED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: