}
ChromeActions.prototype = {
download: function(data) {
- Services.wm.getMostRecentWindow('navigator:browser').saveURL(data);
- },
- fallback: function(data) {
let mimeService = Cc['@mozilla.org/mime;1'].getService(Ci.nsIMIMEService);
var handlerInfo = mimeService.
getFromTypeAndExtension('application/pdf', 'pdf');
var uri = NetUtil.newURI(data);
- var filename = Services.wm.getMostRecentWindow('navigator:browser').
- getDefaultFileName('document.pdf', uri);
- // Create a temporary file to output to.
- var file = Cc['@mozilla.org/file/directory_service;1'].
- getService(Ci.nsIProperties).
- get('TmpD', Ci.nsIFile);
- file.append(filename);
- file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, parseInt('0666', 8));
-
- var ostream = Cc['@mozilla.org/network/file-output-stream;1'].
- createInstance(Ci.nsIFileOutputStream);
- ostream.init(file, -1, -1, 0);
-
- // Fetch the file and once it's ready attempt to open it with the system's
- // default pdf handler.
- NetUtil.asyncFetch(uri, function(istream, aResult) {
- if (!Components.isSuccessCode(aResult)) {
- log('Error: Fetching file failed with code ' + aResult);
- return;
+
+ var extHelperAppSvc =
+ Cc['@mozilla.org/uriloader/external-helper-app-service;1'].
+ getService(Ci.nsIExternalHelperAppService);
+ var frontWindow = Cc['@mozilla.org/embedcomp/window-watcher;1'].
+ getService(Ci.nsIWindowWatcher).activeWindow;
+ var ioService = Services.io;
+ var channel = ioService.newChannel(data, null, null);
+ var listener = {
+ extListener: null,
+ onStartRequest: function(aRequest, aContext) {
+ this.extListener = extHelperAppSvc.doContent('application/pdf',
+ aRequest, frontWindow, false);
+ this.extListener.onStartRequest(aRequest, aContext);
+ },
+ onStopRequest: function(aRequest, aContext, aStatusCode) {
+ if (this.extListener)
+ this.extListener.onStopRequest(aRequest, aContext, aStatusCode);
+ },
+ onDataAvailable: function(aRequest, aContext, aInputStream, aOffset,
+ aCount) {
+ this.extListener.onDataAvailable(aRequest, aContext, aInputStream,
+ aOffset, aCount);
}
- NetUtil.asyncCopy(istream, ostream, function(aResult) {
- if (!Components.isSuccessCode(aResult)) {
- log('Error: Copying file failed with code: ' + aResult);
- return;
- }
- handlerInfo.preferredAction = Ci.nsIHandlerInfo.useSystemDefault;
- handlerInfo.launchWithFile(file);
- });
- });
+ };
+
+ channel.asyncOpen(listener, null);
},
setDatabase: function(data) {
if (this.inPrivateBrowswing)
<span data-l10n-id="print_label">Print</span>
</button>
-->
- <button id="fallback" class="toolbarButton fallback" title="Open with System Default PDF Viewer" onclick="PDFView.fallback();" tabindex="12" data-l10n-id="fallback" hidden="true">F
- <span data-l10n-id="fallback_label">Open with System Default PDF Viewer</span>
- </button>
- <button id="download" class="toolbarButton download" title="Download" onclick="PDFView.download();" tabindex="13" data-l10n-id="download">
+
+ <button id="download" class="toolbarButton download" title="Download" onclick="PDFView.download();" tabindex="12" data-l10n-id="download">
<span data-l10n-id="download_label">Download</span>
</button>
<!-- <div class="toolbarButtonSpacer"></div> -->
- <a href="#" id="viewBookmark" class="toolbarButton bookmark" title="Current view (copy or open in new window)" tabindex="14" data-l10n-id="bookmark"><span data-l10n-id="bookmark_label">Current View</span></a>
+ <a href="#" id="viewBookmark" class="toolbarButton bookmark" title="Current view (copy or open in new window)" tabindex="13" data-l10n-id="bookmark"><span data-l10n-id="bookmark_label">Current View</span></a>
</div>
<div class="outerCenter">
<div class="innerCenter" id="toolbarViewerMiddle">
},
fallback: function pdfViewDownload() {
+ var url = this.url.split('#')[0];
if (!PDFJS.isFirefoxExtension)
return; // can't do this with regular viewer
- var url = this.url.split('#')[0];
FirefoxCom.request('fallback', url);
},
document.getElementById('fileInput').value = null;
}
- if (PDFJS.isFirefoxExtension)
- document.getElementById('fallback').removeAttribute('hidden');
-
// Special debugging flags in the hash section of the URL.
var hash = document.location.hash.substring(1);
var hashParams = PDFView.parseQueryString(hash);