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

Unified Diff: chrome/browser/resources/backloader/scripts/background.js

Issue 10855239: Wired background loader component extension. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 3 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/backloader/scripts/background.js
diff --git a/chrome/browser/resources/chromeos/backloader/scripts/background.js b/chrome/browser/resources/backloader/scripts/background.js
similarity index 54%
rename from chrome/browser/resources/chromeos/backloader/scripts/background.js
rename to chrome/browser/resources/backloader/scripts/background.js
index 2253cc3d1369254708d58f2f162e229d4288d4d6..96b0a0d970204e1c78e81ccb62d0aa1395072fb8 100644
--- a/chrome/browser/resources/chromeos/backloader/scripts/background.js
+++ b/chrome/browser/resources/backloader/scripts/background.js
@@ -30,7 +30,7 @@ Loader.prototype = {
// Periodic wakeup delay.
PERIOD_IN_MINUTES: 60,
// Delayed closing of the background page once when all iframes are loaded.
James Hawkins 2012/09/11 18:49:22 Optional nit: Blank line above this to separate it
zel 2012/09/11 19:59:40 Done.
- UNLOAD_DELAY_IN_MS: 10000,
+ max_delay_ms_: 10000,
James Hawkins 2012/09/11 18:49:22 nit: JS variable names use javascriptCase, e.g. ma
zel 2012/09/11 19:59:40 Done.
// Loader start up. Kicks off alarm initialization if needed.
initialize: function() {
@@ -44,8 +44,7 @@ Loader.prototype = {
chrome.alarms.get(this.ALARM_NAME, function(alarm) {
if (!alarm) {
chrome.alarms.create(this.ALARM_NAME,
- {delayInMinutes: this.DELAY_IN_MINUTES,
- periodInMinutes: this.PERIOD_IN_MINUTES});
+ {delayInMinutes: this.DELAY_IN_MINUTES});
window.close();
return;
}
@@ -53,7 +52,10 @@ Loader.prototype = {
},
onAlarm_: function(alarm) {
- this.loadSubPages_();
+ if (alarm.name != this.ALARM_NAME)
+ return;
+
+ this.preparePages_();
},
onMessage_: function(event) {
@@ -69,30 +71,69 @@ Loader.prototype = {
}
},
- loadSubPages_: function() {
+ getExtensionById_: function(list, id) {
James Hawkins 2012/09/11 18:49:22 nit: Document method and params. Here and elsewhe
zel 2012/09/11 19:59:40 Done.
+ for (var i = 0; i < list.length; i++) {
+ if (list[i].id == id) {
James Hawkins 2012/09/11 18:49:22 nit: No braces for single-line blocks.
zel 2012/09/11 19:59:40 Done.
+ return list[i];
+ }
+ }
+ return null;
+ },
+
+ preparePages_: function() {
if (this.pages_loaded_)
return;
window.addEventListener('message', this.onMessage_.bind(this), false);
- for (i = 0; i < this.pages_.length; i++) {
- this.loadPage_(i, this.pages_[i]);
+ chrome.management.getAll(function(list) {
+ // Get total count first.
+ var pages_to_load = [];
James Hawkins 2012/09/11 18:49:22 nit: pagesToLoad.
zel 2012/09/11 19:59:40 Done.
+ for (var i = 0; i < this.pages_.length; i++) {
+ var page = this.pages_[i];
+ if (page.one_time && page.initialized)
+ continue;
+
+ var extension = this.getExtensionById_(list, page.extension_id);
+ if (!extension || !extension.enabled) {
+ page.initialized = true;
+ continue;
+ }
+
+ page.initialized = true;
+ if (page.unload_delay_ms > this.max_delay_ms_)
+ this.max_delay_ms_ = page.unload_delay_ms;
+
+ pages_to_load.push(page);
+ }
+ this.loadFrames_(pages_to_load);
+ this.pages_loaded_ = true;
+ }.bind(this));
+ },
+
+ loadFrames_: function(pages) {
+ this.load_target_ = pages.length;
+ for (var i = 0; i < pages.length; i++) {
+ this.loadLuncherFrame_(i, pages[i].page_url);
}
- this.pages_loaded_ = true;
},
- loadPage_: function(index, pageUrl) {
+ incrementLoadCounter_: function() {
+ this.loaded_count_++;
+ if (this.loaded_count_ < this.load_target_)
+ return;
+
+ // Delay closing.
+ setInterval(function() {
+ window.close();
+ }.bind(this), this.max_delay_ms_);
+ },
+
+ loadLuncherFrame_: function(index, page_url) {
James Hawkins 2012/09/11 18:49:22 nit: pageUrl
zel 2012/09/11 19:59:40 Done.
var iframe = document.createElement('iframe');
iframe.onload = function() {
- this.loaded_count_++;
- if (this.loaded_count_ < this.pages_.length)
- return;
-
- // Delay closing.
- setInterval(function() {
- window.close();
- }.bind(this), this.UNLOAD_DELAY_IN_MS);
+ this.incrementLoadCounter_();
}.bind(this);
- iframe.src = pageUrl;
+ iframe.src = page_url;
iframe.name = 'frame_' + index;
document.body.appendChild(iframe);
}
« no previous file with comments | « chrome/browser/resources/backloader/manifest.json ('k') | chrome/browser/resources/backloader/scripts/pages.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698