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

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

Issue 24625003: Delay wallpaper load by 2 * average wallpaper load time. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments fixed. 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/user_pod_row.js
diff --git a/chrome/browser/resources/chromeos/login/user_pod_row.js b/chrome/browser/resources/chromeos/login/user_pod_row.js
index 7969895a095c6c517b9d7d119978dcbb514bce38..773e22d2f0770efb92367c4d296f2bddad16b29c 100644
--- a/chrome/browser/resources/chromeos/login/user_pod_row.js
+++ b/chrome/browser/resources/chromeos/login/user_pod_row.js
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+<include src="wallpaper_loader.js"></include>
dzhioev (left Google) 2013/10/22 00:01:19 As I know, closing tag is not needed.
Alexander Alekseev 2013/10/22 11:33:37 Nevertheless it seems it's always used with closin
+
/**
* @fileoverview User pod row implementation.
*/
@@ -22,20 +24,6 @@ cr.define('login', function() {
var PRESELECT_FIRST_POD = true;
/**
- * Wallpaper load delay in milliseconds.
- * @type {number}
- * @const
- */
- var WALLPAPER_LOAD_DELAY_MS = 500;
-
- /**
- * Wallpaper load delay in milliseconds. TODO(nkostylev): Tune this constant.
- * @type {number}
- * @const
- */
- var WALLPAPER_BOOT_LOAD_DELAY_MS = 100;
-
- /**
* Maximum time for which the pod row remains hidden until all user images
* have been loaded.
* @type {number}
@@ -959,17 +947,9 @@ cr.define('login', function() {
// Whether this user pod row is shown for the first time.
firstShown_: true,
- // Whether the initial wallpaper load after boot has been requested. Used
- // only if |Oobe.getInstance().shouldLoadWallpaperOnBoot()| is true.
- bootWallpaperLoaded_: false,
-
// True if inside focusPod().
insideFocusPod_: false,
- // True if user pod has been activated with keyboard.
- // In case of activation with keyboard we delay wallpaper change.
- keyboardActivated_: false,
-
// Focused pod.
focusedPod_: undefined,
@@ -979,9 +959,8 @@ cr.define('login', function() {
// Pod that was most recently focused, if any.
lastFocusedPod_: undefined,
- // When moving through users quickly at login screen, set a timeout to
- // prevent loading intermediate wallpapers.
- loadWallpaperTimeout_: null,
+ // Note: created only in decorate() !
+ wallpaperLoader_: undefined,
// Pods whose initial images haven't been loaded yet.
podsWithPendingImages_: [],
@@ -998,6 +977,7 @@ cr.define('login', function() {
mousemove: [this.handleMouseMove_.bind(this), false],
keydown: [this.handleKeyDown.bind(this), false]
};
+ this.wallpaperLoader_ = new login.WallpaperLoader();
},
/**
@@ -1242,7 +1222,7 @@ cr.define('login', function() {
}
this.insideFocusPod_ = true;
- clearTimeout(this.loadWallpaperTimeout_);
+ this.wallpaperLoader_.reset();
for (var i = 0, pod; pod = this.pods[i]; ++i) {
if (!this.isSinglePod) {
pod.isActionBoxMenuActive = false;
@@ -1266,15 +1246,8 @@ cr.define('login', function() {
podToFocus.classList.add('focused');
podToFocus.reset(true); // Reset and give focus.
chrome.send('focusPod', [podToFocus.user.emailAddress]);
- if (hadFocus && this.keyboardActivated_) {
- // Delay wallpaper loading to let user tab through pods without lag.
- this.loadWallpaperTimeout_ = window.setTimeout(
- this.loadWallpaper_.bind(this), WALLPAPER_LOAD_DELAY_MS);
- } else if (!this.firstShown_) {
- // Load wallpaper immediately if there no pod was focused
- // previously, and it is not a boot into user pod list case.
- this.loadWallpaper_();
- }
+
+ this.wallpaperLoader_.scheduleLoad(podToFocus.user.emailAddress);
this.firstShown_ = false;
this.lastFocusedPod_ = podToFocus;
}
@@ -1283,20 +1256,19 @@ cr.define('login', function() {
},
/**
- * Loads wallpaper for the active user pod, if any.
- * @private
+ * Resets wallpaper to the last active user's wallpaper, if any.
*/
- loadWallpaper_: function() {
- if (this.focusedPod_)
- chrome.send('loadWallpaper', [this.focusedPod_.user.username]);
+ loadLastWallpaper: function() {
+ if (this.lastFocusedPod_)
+ this.wallpaperLoader_.scheduleLoad(this.lastFocusedPod_.user.username);
},
/**
- * Resets wallpaper to the last active user's wallpaper, if any.
+ * Handles 'onWallpaperLoaded' event. Recalculates statistics and
+ * [re]schedules next wallpaper load.
*/
- loadLastWallpaper: function() {
- if (this.lastFocusedPod_)
- chrome.send('loadWallpaper', [this.lastFocusedPod_.user.username]);
+ onWallpaperLoaded: function(email) {
+ this.wallpaperLoader_.onWallpaperLoaded(email);
},
/**
@@ -1560,13 +1532,7 @@ cr.define('login', function() {
focusedPod.reset(true);
// Notify screen that it is ready.
screen.onShow();
- // Boot transition: load wallpaper.
- if (!self.bootWallpaperLoaded_ &&
- Oobe.getInstance().shouldLoadWallpaperOnBoot()) {
- self.loadWallpaperTimeout_ = window.setTimeout(
- self.loadWallpaper_.bind(self), WALLPAPER_BOOT_LOAD_DELAY_MS);
- self.bootWallpaperLoaded_ = true;
- }
+ self.wallpaperLoader_.scheduleLoad(focusedPod.user.username);
}
});
}

Powered by Google App Engine
This is Rietveld 408576698