Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/downloadmanager.py
diff options
context:
space:
mode:
authorLucian Branescu Mihaila <lucian.branescu@gmail.com>2011-06-24 19:46:47 (GMT)
committer Lucian Branescu Mihaila <lucian.branescu@gmail.com>2011-06-24 19:46:47 (GMT)
commit9cc0ddf777c38b153cadb8e8a47fc00c722a1681 (patch)
treec29e4f99dd5d9b8b85bcdb826a3318cf8e7c32c9 /downloadmanager.py
parent7a7e838f0f7ef36c3ac06874e97fa8a3a30125e7 (diff)
parent7005fb13a31f26704ec561d8e71bb4f82274fb3c (diff)
Merge newer development into the old project.HEADmaster
Diffstat (limited to 'downloadmanager.py')
-rw-r--r--downloadmanager.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/downloadmanager.py b/downloadmanager.py
index 69d1c8a..66bcfd4 100644
--- a/downloadmanager.py
+++ b/downloadmanager.py
@@ -250,6 +250,8 @@ class Download:
def _get_file_name(self):
if self._display_name:
return self._display_name
+ elif self._source.scheme == 'data':
+ return 'data URI'
else:
path = urlparse.urlparse(self._source.spec).path
location, file_name = os.path.split(path)
@@ -299,7 +301,7 @@ def save_link(url, text, owner_document):
io_service = cls.getService(interfaces.nsIIOService)
uri = io_service.newURI(url, None, None)
channel = io_service.newChannelFromURI(uri)
-
+
auth_prompt_callback = xpcom.server.WrapObject(
_AuthPromptCallback(owner_document.defaultView),
interfaces.nsIInterfaceRequestor)
@@ -309,9 +311,12 @@ def save_link(url, text, owner_document):
interfaces.nsIRequest.LOAD_BYPASS_CACHE | \
interfaces.nsIChannel.LOAD_CALL_CONTENT_SNIFFERS
- if _implements_interface(channel, interfaces.nsIHttpChannel):
- channel.referrer = io_service.newURI(owner_document.documentURI, None,
- None)
+ # HACK: when we QI for nsIHttpChannel on objects that implement
+ # just nsIChannel, pyxpcom gets confused. see trac #1029
+ if uri.scheme == 'http':
+ if _implements_interface(channel, interfaces.nsIHttpChannel):
+ channel.referrer = io_service.newURI(owner_document.documentURI,
+ None, None)
# kick off the channel with our proxy object as the listener
listener = xpcom.server.WrapObject(
@@ -324,6 +329,7 @@ def _implements_interface(obj, interface):
obj.QueryInterface(interface)
return True
except xpcom.Exception, e:
+ logging.debug('***** %s' % e.errno)
if e.errno == NS_NOINTERFACE:
return False
else:
@@ -361,7 +367,8 @@ class _SaveLinkProgressListener(object):
cls = components.classes[
"@mozilla.org/uriloader/external-helper-app-service;1"]
- external_helper = cls.getService(interfaces.nsIExternalHelperAppService)
+ external_helper = cls.getService(
+ interfaces.nsIExternalHelperAppService)
channel = request.QueryInterface(interfaces.nsIChannel)
@@ -375,5 +382,4 @@ class _SaveLinkProgressListener(object):
def onDataAvailable(self, request, context, inputStream, offset, count):
self._external_listener.onDataAvailable(request, context, inputStream,
- offset, count);
-
+ offset, count) \ No newline at end of file