Commit 5be4504e authored by Luciano Pacheco's avatar Luciano Pacheco Committed by Commit Bot

[Files, Gallery and Audio apps] Add HTML Imports polyfill

Make Files, Gallery and Audio apps work with HTML Imports polyfill.
The tests aren't passing yet, which I'm fixing on CL:1462640, but I
have tested these 3 apps manually locally with:

    --disable-blink-features=HTMLImports

and they seem to be working. However, I haven't tested them heavily,
but I did test things related to Polymer elements which are affected
by HTML imports.

Add connect-src chrome://resources to Audio and Gallery's manifests
(content_security_policy) to allow HTML import polyfill to URL fetch
resources (via xmlHTTPRequest). File Manager's manifest already had
this CSP setting.

Bug: 924873
Change-Id: I43dc5962be9d8cbdcf795b35b8de909578ac4279
Reviewed-on: https://chromium-review.googlesource.com/c/1480296Reviewed-by: default avatarNoel Gordon <noel@chromium.org>
Reviewed-by: default avatarTrent Apted <tapted@chromium.org>
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#634521}
parent df416c5d
......@@ -11,6 +11,7 @@
-- string. Until then, use an invisible non-whitespace character.
-->
<title>&#xFEFF;</title>
<script src="chrome://resources/polymer/v1_0/html-imports/html-imports.min.js"></script>
<link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
<link rel="stylesheet" type="text/css" href="css/audio_player.css">
......
......@@ -686,7 +686,7 @@ AudioPlayer.TrackInfo.prototype.setMetadata = function(
* initializeAudioPlayer: loads the audio player.
*/
function initializeAudioPlayer() {
AudioPlayer.load();
window.HTMLImports.whenReady(AudioPlayer.load);
}
if (document.readyState === 'loading') {
......
......@@ -61,7 +61,7 @@
},
// enhhojjnijigcajfphajepfemndkmdlo is the Dev Media Router component extension ID.
// pkedcjkdefgpdelpbcmbmeomcjbeemfm is the Stable Media Router component extension ID.
"content_security_policy": "default-src 'none'; script-src 'self' blob: filesystem: chrome://resources chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj chrome-extension://enhhojjnijigcajfphajepfemndkmdlo chrome-extension://pkedcjkdefgpdelpbcmbmeomcjbeemfm; style-src 'self' blob: filesystem: chrome://resources 'unsafe-inline'; img-src 'self' blob: filesystem: chrome://theme chrome://resources data: https://www.googledrive.com; media-src 'self' blob: filesystem:; object-src 'self' blob: filesystem:; font-src chrome://resources;"
"content_security_policy": "default-src 'none'; script-src 'self' blob: filesystem: chrome://resources chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj chrome-extension://enhhojjnijigcajfphajepfemndkmdlo chrome-extension://pkedcjkdefgpdelpbcmbmeomcjbeemfm; style-src 'self' blob: filesystem: chrome://resources 'unsafe-inline'; img-src 'self' blob: filesystem: chrome://theme chrome://resources data: https://www.googledrive.com; media-src 'self' blob: filesystem:; connect-src chrome://resources ; object-src 'self' blob: filesystem:; font-src chrome://resources;"
}
}
......@@ -18,3 +18,15 @@ Window.prototype.appInitialURL;
* @type {function()}
*/
Window.prototype.reload = function() {};
/**
*
* Created by HTML imports polyfill.
* @type {!Object}
*/
Window.prototype.HTMLImports;
/**
* @type {function(function())}
*/
Window.prototype.HTMLImports.whenReady;
......@@ -9,6 +9,7 @@
<title></title>
<meta name="google" value="notranslate">
<script src="chrome://resources/polymer/v1_0/html-imports/html-imports.min.js"></script>
<link rel="import" href="chrome://resources/html/polymer.html">
<link rel="stylesheet" href="chrome://resources/css/action_link.css">
......
......@@ -5,6 +5,7 @@
-->
<html i18n-values="dir:textdirection">
<head>
<script src="chrome://resources/polymer/v1_0/html-imports/html-imports.min.js"></script>
<link rel="import" href="chrome://resources/html/polymer.html">
<link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
<link rel="stylesheet" href="../file_manager/foreground/css/list.css">
......
......@@ -1094,7 +1094,10 @@ let initializePromise = null;
* it to create the gallery. Calls reload() to populate the gallery entries.
*/
function initializeGallery() {
const promise = Promise.resolve().then(() => {
const htmlImportsPromise = new Promise(resolve => {
window.HTMLImports.whenReady(resolve);
});
const promise = htmlImportsPromise.then(() => {
return Promise.all([loadTimeDataPromise, volumeManagerPromise]);
});
......
......@@ -85,6 +85,6 @@
"js/background_scripts.js"
]
},
"content_security_policy": "default-src 'none'; script-src 'self' blob: filesystem: chrome://resources chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj; style-src 'self' blob: filesystem: chrome://resources 'unsafe-inline'; img-src 'self' blob: filesystem: chrome://resources chrome://theme data: https://*.googleusercontent.com chrome://extension-icon; media-src 'self' blob: filesystem:; object-src 'self' blob: filesystem:; font-src chrome://resources;"
"content_security_policy": "default-src 'none'; script-src 'self' blob: filesystem: chrome://resources chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj; style-src 'self' blob: filesystem: chrome://resources 'unsafe-inline'; img-src 'self' blob: filesystem: chrome://resources chrome://theme data: https://*.googleusercontent.com chrome://extension-icon; media-src 'self' blob: filesystem:; connect-src chrome://resources ; object-src 'self' blob: filesystem:; font-src chrome://resources; "
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment