Aplicación empaquetada de Chrome - descargando el archivo de Webview

Estoy trabajando para que una aplicación web de estilo Ajax existente funcione como una aplicación empaquetada de Chrome. La aplicación Ajax se está ejecutando en una vista web dentro de la aplicación empaquetada y en su mayoría funciona bien.

La aplicación Ajax permite a los usuarios cargar documentos utilizando la carga estándar de HTML 5 y arrastrar y soltar. Las cargas funcionan bien perolas descargas no funcionan.

Esta es una muestra simplificada de la lógica en la aplicación Ajax. Utiliza Javascript para controlar el evento de clic, ejecuta cierta lógica y, finalmente, activa la descarga al establecer la ubicación de un IFrame oculto.

<html>
<head>
  <script type="text/javascript">
  function downloadFile(url) {
    window.frames['dataTransfer'].location = url;
  }
  </script>
</head>
<body>
  <a href="http://www.google.com" target="_blank">Google</a><br/>
  <a href="https://s3.amazonaws.com/LYHKDevA1/2058e6cab4304af3a39eeb275eeac96d?response-content-disposition=attachment%3Bfilename%3D%22TestFile.pdf%22%3Bfilename*%3DUTF-8%27%27TestFile.pdf&Signature=FUlZZqNoJ%2F%2FvHIPX6CPDkvJ7uik%3D&Expires=1437854276&AWSAccessKeyId=1ZAN0NYFJ2DCQX8AN8G2" target="_blank">Download PDF</a><br/>
  <a href="#" onclick="downloadFile('https://s3.amazonaws.com/LYHKDevA1/2058e6cab4304af3a39eeb275eeac96d?response-content-disposition=attachment%3Bfilename%3D%22TestFile.pdf%22%3Bfilename*%3DUTF-8%27%27TestFile.pdf&Signature=FUlZZqNoJ%2F%2FvHIPX6CPDkvJ7uik%3D&Expires=1437854276&AWSAccessKeyId=1ZAN0NYFJ2DCQX8AN8G2');return false;" target="_blank">Download PDF JS</a><br/>
  <iframe name="dataTransfer" style="width: 0; height: 0; border: none;"></iframe><br/>
</body>
</html>

Si ejecuta esto en una pestaña estándar de Chrome, los 3 enlaces funcionan bien. Sin embargo, en una aplicación de Chrome solo funcionan los primeros 2 enlaces: hacer clic en el tercer enlace no hace nada. En la sección de red de las herramientas del desarrollador, en realidad parece iniciar la descarga, pero luego se cancela rápidamente.

El manifiesto de la aplicación Chrome permite a Webview y los dominios relevantes involucrados.

{
  "manifest_version": 2,
  "name": "Test Download",
  "version": "0.1.0",
  "permissions": [
    "webview",
    "<DOMAIN OF THE SAMPLE PAGE ABOVE>",
    "https://s3.amazonaws.com/"
  ],
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  },
  "icons": {},
  "minimum_chrome_version": "28"
}

La aplicación de Chrome tiene algunos simplesnewwindow manejando en ella también.

window.onload = function() {
  var webview = document.querySelector('#app-webview');
  webview.src = '<URL TO SAMPLE PAGE ABOVE>';
  webview.addEventListener('newwindow', function(e) {
    e.preventDefault();
    e.stopPropagation();
    window.open(e.targetUrl);
  });
};

¿Alguna sugerencia sobre cómo hacer que funcionen las descargas (con suerte sin requerir cambios significativos en la aplicación Ajax)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta