Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ui / file_manager / gallery / js / background.js
blob13f690e033abd7955fe0d3ef260de48cd1ed2a89
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * Configuration of the Gallery window.
7  * @const
8  * @type {Object}
9  */
10 var windowCreateOptions = {
11   id: 'gallery',
12   outerBounds: {
13     minWidth: 860,
14     minHeight: 554
15   },
16   frame: {
17     color: '#1E2023'
18   },
19   hidden: true
22 /**
23  * Backgound object. This is necessary for AppWindowWrapper.
24  * @type {!BackgroundBase}
25  */
26 var background = new BackgroundBase();
28 /**
29  * Wrapper of gallery window.
30  * @type {SingletonAppWindowWrapper}
31  */
32 var gallery = new SingletonAppWindowWrapper('gallery.html',
33     windowCreateOptions);
35 /**
36  * Opens gallery window.
37  * @param {!Array<string>} urls List of URL to show.
38  * @return {!Promise} Promise to be fulfilled on success, or rejected on error.
39  */
40 function openGalleryWindow(urls) {
41   return new Promise(function(fulfill, reject) {
42     util.URLsToEntries(urls).then(function(result) {
43       fulfill(util.entriesToURLs(result.entries));
44     }).catch(reject);
45   }).then(function(urls) {
46     if (urls.length === 0)
47       return Promise.reject('No file to open.');
49     // Opens a window.
50     return new Promise(function(fulfill, reject) {
51       gallery.launch(
52           {urls: urls},
53           false,
54           fulfill.bind(null, gallery));
55     }).then(function(gallery) {
56       var galleryDocument = gallery.rawAppWindow.contentWindow.document;
57       if (galleryDocument.readyState == 'complete')
58         return gallery;
60       return new Promise(function(fulfill, reject) {
61         galleryDocument.addEventListener(
62             'DOMContentLoaded', fulfill.bind(null, gallery));
63       });
64     });
65   }).then(function(gallery) {
66     gallery.rawAppWindow.show();
67     return gallery.rawAppWindow.contentWindow.appID;
68   }).catch(function(error) {
69     console.error('Launch failed' + error.stack || error);
70     return Promise.reject(error);
71   });
74 background.setLaunchHandler(openGalleryWindow);