// Copyright (c) 2012 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. /** * @fileoverview Oobe update screen implementation. */ login.createScreen('UpdateScreen', 'update', function() { return { EXTERNAL_API: [ 'enableUpdateCancel', 'setUpdateProgress', 'showEstimatedTimeLeft', 'setEstimatedTimeLeft', 'showProgressMessage', 'setProgressMessage', 'setUpdateMessage', 'showUpdateCurtain' ], /** * Header text of the screen. * @type {string} */ get header() { return loadTimeData.getString('updateScreenTitle'); }, /** * Cancels the screen. */ cancel: function() { // It's safe to act on the accelerator even if it's disabled on official // builds, since Chrome will just ignore the message in that case. var updateCancelHint = $('update-cancel-hint').firstElementChild; updateCancelHint.textContent = loadTimeData.getString('cancelledUpdateMessage'); chrome.send('cancelUpdate'); }, /** * Makes 'press Escape to cancel update' hint visible. */ enableUpdateCancel: function() { $('update-cancel-hint').hidden = false; }, /** * Sets update's progress bar value. * @param {number} progress Percentage of the progress bar. */ setUpdateProgress: function(progress) { $('update-progress-bar').value = progress; }, /** * Shows or hides downloading ETA message. * @param {boolean} visible Are ETA message visible? */ showEstimatedTimeLeft: function(visible) { $('progress-message').hidden = visible; $('estimated-time-left').hidden = !visible; }, /** * Sets estimated time left until download will complete. * @param {number} seconds Time left in seconds. */ setEstimatedTimeLeft: function(seconds) { var minutes = Math.ceil(seconds / 60); var message = ''; if (minutes > 60) { message = loadTimeData.getString('downloadingTimeLeftLong'); } else if (minutes > 55) { message = loadTimeData.getString('downloadingTimeLeftStatusOneHour'); } else if (minutes > 20) { message = loadTimeData.getStringF('downloadingTimeLeftStatusMinutes', Math.ceil(minutes / 5) * 5); } else if (minutes > 1) { message = loadTimeData.getStringF('downloadingTimeLeftStatusMinutes', minutes); } else { message = loadTimeData.getString('downloadingTimeLeftSmall'); } $('estimated-time-left').textContent = loadTimeData.getStringF('downloading', message); }, /** * Shows or hides info message below progress bar. * @param {boolean} visible Are message visible? */ showProgressMessage: function(visible) { $('estimated-time-left').hidden = visible; $('progress-message').hidden = !visible; }, /** * Sets message below progress bar. * @param {string} message Message that should be shown. */ setProgressMessage: function(message) { $('progress-message').innerText = message; }, /** * Sets update message, which is shown above the progress bar. * @param {text} message Message which is shown by the label. */ setUpdateMessage: function(message) { $('update-upper-label').textContent = message; }, /** * Shows or hides update curtain. * @param {boolean} visible Are curtains visible? */ showUpdateCurtain: function(visible) { $('update-screen-curtain').hidden = !visible; $('update-screen-main').hidden = visible; } }; });