diff options
author | Christian Persch <chpe@cvs.gnome.org> | 2005-08-13 19:08:34 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2005-08-13 19:08:34 +0800 |
commit | 2837d6736fc3af78003dd23aee211053522274b7 (patch) | |
tree | 4e19c52597a3e1aa82c946da04f9597c579d9f00 /embed/mozilla/MozDownload.cpp | |
parent | 08477cd1a9ef1958f993bb626339d6a96b85d0b8 (diff) | |
download | gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.tar gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.tar.gz gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.tar.bz2 gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.tar.lz gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.tar.xz gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.tar.zst gsoc2013-epiphany-2837d6736fc3af78003dd23aee211053522274b7.zip |
Work around mozilla bug
2005-08-13 Christian Persch <chpe@cvs.gnome.org>
* embed/mozilla/MozDownload.cpp:
Work around mozilla bug
https://bugzilla.mozilla.org/show_bug.cgi?id=304353 .
Fixes bug #313215.
Diffstat (limited to 'embed/mozilla/MozDownload.cpp')
-rw-r--r-- | embed/mozilla/MozDownload.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/embed/mozilla/MozDownload.cpp b/embed/mozilla/MozDownload.cpp index b2b7e0e2e..787cc7c5c 100644 --- a/embed/mozilla/MozDownload.cpp +++ b/embed/mozilla/MozDownload.cpp @@ -369,10 +369,34 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest, } /* We will get this even in the event of a cancel */ + /* Due to a mozilla bug [https://bugzilla.mozilla.org/show_bug.cgi?id=304353], + * we'll only get STATE_STOP if we're driven from external app handler; elsewhere + * we get STATE_STOP | STATE_IS_NETWORK | STATE_IS_REQUEST. So check first if + * STATE_IS_REQUEST is set. + */ /* Be careful that download is only completed when STATE_IS_NETWORK is set - and many lonely STOP events may be triggered before */ - if ((aStateFlags & STATE_STOP) && (aStateFlags & STATE_IS_NETWORK)) + * and many lonely STOP events may be triggered before. + */ +#ifdef GNOME_ENABLE_DEBUG +{ + nsEmbedCString spec; + if (mSource) mSource->GetSpec(spec); + + LOG ("url %s, status %x, state %x (is-stop:%s, is-network:%s, is-request:%s)", + spec.get(), aStatus, aStateFlags, + aStateFlags & STATE_STOP ? "t" : "f", + aStateFlags & STATE_IS_NETWORK ? "t" : "f", + aStateFlags & STATE_IS_REQUEST ? "t" : "f"); +} +#endif + + if (((aStateFlags & STATE_IS_REQUEST) && + (aStateFlags & STATE_IS_NETWORK) && + (aStateFlags & STATE_STOP)) || + aStateFlags == STATE_STOP) { + LOG ("STATE_STOP"); + /* Keep us alive */ nsCOMPtr<nsITransfer> kungFuDeathGrip(this); |