| Index: chrome/browser/resources/chromeos/login/wallpaper_loader.js
|
| ===================================================================
|
| --- chrome/browser/resources/chromeos/login/wallpaper_loader.js (revision 232150)
|
| +++ chrome/browser/resources/chromeos/login/wallpaper_loader.js (working copy)
|
| @@ -1,185 +0,0 @@
|
| -// Copyright 2013 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.
|
| -
|
| -cr.define('login', function() {
|
| -
|
| - /**
|
| - * Minimum wallpaper load delay in milliseconds.
|
| - * @type {number}
|
| - * @const
|
| - */
|
| - var WALLPAPER_LOAD_MIN_DELAY_MS = 100;
|
| -
|
| - /**
|
| - * If last walpaper load time cannot be calculated, assume this value.
|
| - * @type {number}
|
| - * @const
|
| - */
|
| - var WALLPAPER_DEFAULT_LOAD_TIME_MS = 200;
|
| -
|
| - /**
|
| - * Min and Max average wallpaper load time.
|
| - * Delay to next wallpaper load is 2 * <average load time>.
|
| - * @type {number}
|
| - * @const
|
| - */
|
| - var WALLPAPER_MIN_LOAD_TIME_MS = 50;
|
| - var WALLPAPER_MAX_LOAD_TIME_MS = 2000;
|
| -
|
| - /**
|
| - * Number last wallpaper load times to remember.
|
| - * @type {number}
|
| - * @const
|
| - */
|
| - var WALLPAPER_LOAD_STATS_MAX_LENGTH = 4;
|
| -
|
| -
|
| - /**
|
| - * Creates a new pod row element.
|
| - * @constructor
|
| - * @extends {HTMLDivElement}
|
| - */
|
| - var WallpaperLoader = function() {
|
| - this.wallpaperLoadInProgress_ = {
|
| - name: '',
|
| - date: undefined
|
| - };
|
| - this.loadStats_ = [];
|
| - };
|
| -
|
| - WallpaperLoader.prototype = {
|
| - // When moving through users quickly at login screen, set a timeout to
|
| - // prevent loading intermediate wallpapers.
|
| - loadWallpaperTimeout_: null,
|
| -
|
| - // When waiting for wallpaper load, remember load start time.
|
| - // wallpaperLoadInProgress_: { name: '', date: undefined }
|
| - wallpaperLoadInProgress_: undefined,
|
| -
|
| - // Wait a delay and then load this wallpaper. Value = username.
|
| - wallpaperLoadPending_: undefined,
|
| -
|
| - // Wait untill this Date before loading next wallpaper.
|
| - wallpaperLoadTryNextAfter_: undefined,
|
| -
|
| - // Username, owner of current wallpaper.
|
| - currentWallpaper_: '',
|
| -
|
| - // Array of times (in milliseconds) of last wallpaper load attempts.
|
| - // Length is limited by WALLPAPER_LOAD_STATS_MAX_LENGTH.
|
| - loadStats_: undefined,
|
| -
|
| - /**
|
| - * Stop load timer. Clear pending record.
|
| - */
|
| - reset: function() {
|
| - delete this.wallpaperLoadPending_;
|
| - if (this.loadWallpaperTimeout_ != null)
|
| - window.clearTimeout(this.loadWallpaperTimeout_);
|
| - this.loadWallpaperTimeout_ = null;
|
| - },
|
| -
|
| - /**
|
| - * Schedules wallpaper load.
|
| - */
|
| - scheduleLoad: function(email) {
|
| - if (this.wallpaperLoadPending_ && this.wallpaperLoadPending_ == email)
|
| - return;
|
| - this.reset();
|
| - if (this.wallpaperLoadInProgress_.name == email)
|
| - return;
|
| - if ((this.wallpaperLoadInProgress_.name == '') &&
|
| - (this.currentWallpaper_ == email))
|
| - return;
|
| -
|
| - this.wallpaperLoadPending_ = email;
|
| - var now = new Date();
|
| - var timeout = WALLPAPER_LOAD_MIN_DELAY_MS;
|
| - if (this.wallpaperLoadTryNextAfter_)
|
| - timeout = Math.max(timeout, this.wallpaperLoadTryNextAfter_ - now);
|
| -
|
| - this.loadWallpaperTimeout_ = window.setTimeout(
|
| - this.loadWallpaper_.bind(this), timeout);
|
| - },
|
| -
|
| -
|
| - /**
|
| - * Loads pending wallpaper, if any.
|
| - * @private
|
| - */
|
| - loadWallpaper_: function() {
|
| - this.loadWallpaperTimeout_ = null;
|
| - if (!this.wallpaperLoadPending_)
|
| - return;
|
| - if (this.wallpaperLoadInProgress_.name != '')
|
| - return;
|
| - var email = this.wallpaperLoadPending_;
|
| - delete this.wallpaperLoadPending_;
|
| - if (email == this.currentWallpaper_)
|
| - return;
|
| - this.wallpaperLoadInProgress_.name = email;
|
| - this.wallpaperLoadInProgress_.date = new Date();
|
| - chrome.send('loadWallpaper', [email]);
|
| - },
|
| -
|
| - /**
|
| - * Calculates average wallpaper load time.
|
| - */
|
| - calcLoadStatsAvg: function() {
|
| - return this.loadStats_.reduce(
|
| - function(previousValue, currentValue) {
|
| - return previousValue + currentValue;
|
| - }) / this.loadStats_.length;
|
| - },
|
| -
|
| - /**
|
| - * Calculates average next wallpaper load delay time.
|
| - */
|
| - getWallpaperLoadTime_: function() {
|
| - var avg = WALLPAPER_DEFAULT_LOAD_TIME_MS;
|
| -
|
| - if (this.loadStats_.length == 0)
|
| - return avg;
|
| -
|
| - avg = this.calcLoadStatsAvg();
|
| - if (avg < WALLPAPER_MIN_LOAD_TIME_MS)
|
| - avg = WALLPAPER_MIN_LOAD_TIME_MS;
|
| -
|
| - if (avg > WALLPAPER_MAX_LOAD_TIME_MS)
|
| - avg = WALLPAPER_MAX_LOAD_TIME_MS;
|
| -
|
| - return avg;
|
| - },
|
| -
|
| - /**
|
| - * Handles 'onWallpaperLoaded' event. Recalculates statistics and
|
| - * [re]schedules next wallpaper load.
|
| - */
|
| - onWallpaperLoaded: function(email) {
|
| - this.currentWallpaper_ = email;
|
| - if (email != this.wallpaperLoadInProgress_.name)
|
| - return;
|
| - this.wallpaperLoadInProgress_.name = '';
|
| - var started = this.wallpaperLoadInProgress_.date;
|
| - var finished = new Date();
|
| - var elapsed = started ? finished - started :
|
| - WALLPAPER_DEFAULT_LOAD_TIME_MS;
|
| - this.loadStats_.push(elapsed);
|
| - if (this.loadStats_.length > WALLPAPER_LOAD_STATS_MAX_LENGTH)
|
| - this.loadStats_.shift();
|
| -
|
| - this.wallpaperLoadTryNextAfter_ = new Date(Date.now() + 2 *
|
| - this.getWallpaperLoadTime_());
|
| - if (this.wallpaperLoadPending_) {
|
| - var newWallpaperEmail = this.wallpaperLoadPending_;
|
| - this.reset();
|
| - this.scheduleLoad(newWallpaperEmail);
|
| - }
|
| - }
|
| - };
|
| -
|
| - return {
|
| - WallpaperLoader: WallpaperLoader
|
| - };
|
| -});
|
|
|