Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2369)

Unified Diff: chrome/browser/resources/chromeos/login/wallpaper_loader.js

Issue 48903013: Merge 232142 "Revert 230138 "Delay wallpaper load by 2 * average..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1685/src/
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
- };
-});

Powered by Google App Engine
This is Rietveld 408576698