Merge pull request #9595 from Rob--W/crx-ftp-file
Disable ftp support in Chrome 59+, add file chooser at file
This commit is contained in:
		
						commit
						7892122201
					
				| @ -153,10 +153,16 @@ chrome.webRequest.onBeforeRequest.addListener( | |||||||
|     urls: [ |     urls: [ | ||||||
|       'file://*/*.pdf', |       'file://*/*.pdf', | ||||||
|       'file://*/*.PDF', |       'file://*/*.PDF', | ||||||
|       // Note: Chrome 59 has disabled ftp resource loading by default:
 |       ...( | ||||||
|       // https://www.chromestatus.com/feature/5709390967472128
 |         // Duck-typing: MediaError.prototype.message was added in Chrome 59.
 | ||||||
|       'ftp://*/*.pdf', |         MediaError.prototype.hasOwnProperty('message') ? [] : | ||||||
|       'ftp://*/*.PDF', |         [ | ||||||
|  |           // Note: Chrome 59 has disabled ftp resource loading by default:
 | ||||||
|  |           // https://www.chromestatus.com/feature/5709390967472128
 | ||||||
|  |           'ftp://*/*.pdf', | ||||||
|  |           'ftp://*/*.PDF', | ||||||
|  |         ] | ||||||
|  |       ), | ||||||
|     ], |     ], | ||||||
|     types: ['main_frame', 'sub_frame'], |     types: ['main_frame', 'sub_frame'], | ||||||
|   }, |   }, | ||||||
|  | |||||||
| @ -599,7 +599,7 @@ let PDFViewerApplication = { | |||||||
|           args = { length, }; |           args = { length, }; | ||||||
|         } |         } | ||||||
|         if (originalURL !== undefined) { |         if (originalURL !== undefined) { | ||||||
|           file = { file: url, originalURL, }; |           file = { url, originalURL, }; | ||||||
|         } |         } | ||||||
|         PDFViewerApplication.open(file, args); |         PDFViewerApplication.open(file, args); | ||||||
|       }, |       }, | ||||||
|  | |||||||
| @ -91,7 +91,7 @@ let ChromeCom = { | |||||||
|           if (isAllowedAccess) { |           if (isAllowedAccess) { | ||||||
|             callback(file); |             callback(file); | ||||||
|           } else { |           } else { | ||||||
|             requestAccessToLocalFile(file, overlayManager); |             requestAccessToLocalFile(file, overlayManager, callback); | ||||||
|           } |           } | ||||||
|         }); |         }); | ||||||
|       }); |       }); | ||||||
| @ -137,7 +137,7 @@ function reloadIfRuntimeIsUnavailable() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| let chromeFileAccessOverlayPromise; | let chromeFileAccessOverlayPromise; | ||||||
| function requestAccessToLocalFile(fileUrl, overlayManager) { | function requestAccessToLocalFile(fileUrl, overlayManager, callback) { | ||||||
|   let onCloseOverlay = null; |   let onCloseOverlay = null; | ||||||
|   if (top !== window) { |   if (top !== window) { | ||||||
|     // When the extension reloads after receiving new permissions, the pages
 |     // When the extension reloads after receiving new permissions, the pages
 | ||||||
| @ -197,6 +197,29 @@ function requestAccessToLocalFile(fileUrl, overlayManager) { | |||||||
|     // why this permission request is shown.
 |     // why this permission request is shown.
 | ||||||
|     document.getElementById('chrome-url-of-local-file').textContent = fileUrl; |     document.getElementById('chrome-url-of-local-file').textContent = fileUrl; | ||||||
| 
 | 
 | ||||||
|  |     document.getElementById('chrome-file-fallback').onchange = function() { | ||||||
|  |       let file = this.files[0]; | ||||||
|  |       if (file) { | ||||||
|  |         let originalFilename = decodeURIComponent(fileUrl.split('/').pop()); | ||||||
|  |         let originalURL = fileUrl; | ||||||
|  |         if (originalFilename !== file.name) { | ||||||
|  |           let msg = 'The selected file does not match the original file.' + | ||||||
|  |             '\nOriginal: ' + originalFilename + | ||||||
|  |             '\nSelected: ' + file.name + | ||||||
|  |             '\nDo you want to open the selected file?'; | ||||||
|  |           if (!confirm(msg)) { | ||||||
|  |             this.value = ''; | ||||||
|  |             return; | ||||||
|  |           } | ||||||
|  |           // There is no way to retrieve the original URL from the File object.
 | ||||||
|  |           // So just generate a fake path.
 | ||||||
|  |           originalURL = 'file:///fakepath/to/' + encodeURIComponent(file.name); | ||||||
|  |         } | ||||||
|  |         callback(URL.createObjectURL(file), file.size, originalURL); | ||||||
|  |         overlayManager.close('chromeFileAccessOverlay'); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     overlayManager.open('chromeFileAccessOverlay'); |     overlayManager.open('chromeFileAccessOverlay'); | ||||||
|   }); |   }); | ||||||
| } | } | ||||||
|  | |||||||
| @ -22,5 +22,11 @@ | |||||||
|         to view <span id="chrome-url-of-local-file">this PDF file.</span> |         to view <span id="chrome-url-of-local-file">this PDF file.</span> | ||||||
|       </p> |       </p> | ||||||
|     </div> |     </div> | ||||||
|  |     <div class="row"> | ||||||
|  |       <p> | ||||||
|  |         or select the file again: | ||||||
|  |         <input type="file" id="chrome-file-fallback" accept=".pdf"> | ||||||
|  |       </p> | ||||||
|  |     </div> | ||||||
|   </div> |   </div> | ||||||
| </div> | </div> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user