Chromium Code Reviews| Index: ui/file_manager/video_player/js/background.js |
| diff --git a/ui/file_manager/video_player/js/background.js b/ui/file_manager/video_player/js/background.js |
| index 99ea086312eb8e8d8ffb559208b8ca0eb3682985..e2219e97fcc4ae4a926f8fc7bcdebfd12328c1f8 100644 |
| --- a/ui/file_manager/video_player/js/background.js |
| +++ b/ui/file_manager/video_player/js/background.js |
| @@ -9,42 +9,66 @@ |
| // the same name will be overridden each other. |
| var appWindowsForTest = {}; |
| -chrome.app.runtime.onLaunched.addListener(function(launchData) { |
| +var initializeQueue = new AsyncUtil.Queue(); |
| + |
| +// Initializes the strings. This needs for the volume manager. |
| +initializeQueue.run(function(fulfill) { |
| + chrome.fileBrowserPrivate.getStrings(function(stringData) { |
| + loadTimeData.data = stringData; |
| + fulfill(); |
| + }.wrap()); |
| +}.wrap()); |
| + |
| +// Initializes the volume manager. This needs for isolated entries. |
| +initializeQueue.run(function(fulfill) { |
| + VolumeManager.getInstance(fulfill); |
| +}.wrap()); |
| + |
| +chrome.app.runtime.onLaunched.addListener(onLaunched); |
| + |
| +/** |
| + * Called when an app is launched. |
| + * @param {Object} launchData Launch data. |
| + */ |
| +function onLaunched(launchData) { |
| if (!launchData || !launchData.items || launchData.items.length == 0) |
| return; |
| - var getFilePromises = launchData.items.map(function(item) { |
| - var entry = item.entry; |
| - return new Promise(function(fullfill, reject) { |
| - entry.file( |
| - function(file) { |
| - fullfill({ |
| + var videos = []; |
| + |
| + initializeQueue.run(function(fulfill) { |
| + var isolatedEntries = launchData.items.map(function(item) { |
| + return item.entry; |
| + }); |
| + |
| + chrome.fileBrowserPrivate.resolveIsolatedEntries(isolatedEntries, |
| + function(externalEntries) { |
| + videos = externalEntries.map(function(entry) { |
| + return { |
|
hirono
2014/07/23 04:19:13
nit: Can we do object.freeze?
yoshiki
2014/07/23 05:01:54
Done.
|
| entry: entry, |
| - file: file, |
| - fileUrl: window.URL.createObjectURL(file) |
| - }); |
| - }, |
| - function() { |
| - fullfill({entry: entry, file: null, fileUrl: null}); |
| + title: entry.name, |
| + url: entry.toURL(), |
| + }; |
| }); |
| - }); |
| - }); |
| + fulfill(); |
| + }.wrap()); |
| + }.wrap()); |
| - Promise.all(getFilePromises).then(function(results) { |
| - results = results.filter(function(result) { return result.file !== null; }); |
| - if (results.length > 0) |
| - open(results); |
| - }.wrap(), |
| - function() { |
| - // TODO(yoshiki): handle error in a smarter way. |
| - open('', 'error'); // Empty URL shows the error message. |
| + initializeQueue.run(function(fulfill) { |
| + if (videos.length > 0) { |
| + open(videos); |
| + } else { |
| + // TODO(yoshiki): handle error in a smarter way. |
| + open('', 'error'); // Empty URL shows the error message. |
| + } |
| + fulfill(); |
| }.wrap()); |
| -}.wrap()); |
| +} |
| /** |
| * Opens player window. |
| * @param {Array.<Object>} videos List of videos to play. |
| - **/ |
| + */ |
| function open(videos) { |
| chrome.app.window.create('video_player.html', { |
| id: 'video', |