blob: 263ff73115041bc6f6e61dca231dd5e6cb7a07c3 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* Configuration of the Gallery window.
* @const
* @type {Object}
*/
var windowCreateOptions = {
id: 'gallery',
outerBounds: {
minWidth: 860,
minHeight: 554
},
frame: {
color: '#1E2023'
},
hidden: true
};
/**
* Backgound object. This is necessary for AppWindowWrapper.
* @type {!BackgroundBase}
*/
var background = new BackgroundBase();
/**
* Wrapper of gallery window.
* @type {SingletonAppWindowWrapper}
*/
var gallery = new SingletonAppWindowWrapper('gallery.html',
windowCreateOptions);
/**
* Opens gallery window.
* @param {!Array<string>} urls List of URL to show.
* @return {!Promise} Promise to be fulfilled on success, or rejected on error.
*/
function openGalleryWindow(urls) {
return new Promise(function(fulfill, reject) {
util.URLsToEntries(urls).then(function(result) {
fulfill(util.entriesToURLs(result.entries));
}).catch(reject);
}).then(function(urls) {
if (urls.length === 0)
return Promise.reject('No file to open.');
// Opens a window.
return new Promise(function(fulfill, reject) {
gallery.launch(
{urls: urls},
false,
fulfill.bind(null, gallery));
}).then(function(gallery) {
var galleryDocument = gallery.rawAppWindow.contentWindow.document;
if (galleryDocument.readyState == 'complete')
return gallery;
return new Promise(function(fulfill, reject) {
galleryDocument.addEventListener(
'DOMContentLoaded', fulfill.bind(null, gallery));
});
});
}).then(function(gallery) {
// If the window is minimized, we need to restore it first.
if (gallery.rawAppWindow.isMinimized())
gallery.rawAppWindow.restore();
gallery.rawAppWindow.show();
return gallery.rawAppWindow.contentWindow.appID;
}).catch(function(error) {
console.error('Launch failed' + error.stack || error);
return Promise.reject(error);
});
}
background.setLaunchHandler(openGalleryWindow);