Index: chrome/browser/resources/login/resource_loader.js |
diff --git a/chrome/browser/resources/login/resource_loader.js b/chrome/browser/resources/login/resource_loader.js |
deleted file mode 100644 |
index 1e7cb02dba0224797393d3f29cf63a86d2440acd..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/login/resource_loader.js |
+++ /dev/null |
@@ -1,188 +0,0 @@ |
-// Copyright 2014 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 Deferred resource loader for OOBE/Login screens. |
- */ |
- |
-cr.define('cr.ui.login.ResourceLoader', function() { |
- 'use strict'; |
- |
- // Deferred assets. |
- var ASSETS = {}; |
- |
- /** |
- * Register assets for deferred loading. When the bundle is loaded |
- * assets will be added to the current page's DOM: <link> and <script> |
- * tags pointing to the CSS and JavaScript will be added to the |
- * <head>, and HTML will be appended to a specified element. |
- * |
- * @param {Object} desc Descriptor for the asset bundle |
- * @param {string} desc.id Unique identifier for the asset bundle. |
- * @param {Array=} desc.js URLs containing JavaScript sources. |
- * @param {Array=} desc.css URLs containing CSS rules. |
- * @param {Array.<Object>=} desc.html Descriptors for HTML fragments, |
- * each of which has a 'url' property and a 'targetID' property that |
- * specifies the node under which the HTML should be appended. |
- * |
- * Example: |
- * ResourceLoader.registerAssets({ |
- * id: 'bundle123', |
- * js: ['//foo.com/src.js', '//bar.com/lib.js'], |
- * css: ['//foo.com/style.css'], |
- * html: [{ url: '//foo.com/tmpls.html' targetID: 'tmpls'}] |
- * }); |
- * |
- * Note: to avoid cross-site requests, all HTML assets must be served |
- * from the same host as the rendered page. For example, if the |
- * rendered page is served as chrome://oobe, then all the HTML assets |
- * must be served as chrome://oobe/path/to/something.html. |
- */ |
- function registerAssets(desc) { |
- var html = desc.html || []; |
- var css = desc.css || []; |
- var js = desc.js || []; |
- ASSETS[desc.id] = { |
- html: html, css: css, js: js, |
- loaded: false, |
- count: html.length + css.length + js.length |
- }; |
- } |
- |
- /** |
- * Determines whether an asset bundle is defined for a specified id. |
- * @param {string} id The possible identifier. |
- */ |
- function hasDeferredAssets(id) { |
- return id in ASSETS; |
- } |
- |
- /** |
- * Determines whether an asset bundle has already been loaded. |
- * @param {string} id The identifier of the asset bundle. |
- */ |
- function alreadyLoadedAssets(id) { |
- return hasDeferredAssets(id) && ASSETS[id].loaded; |
- } |
- |
- /** |
- * Load a stylesheet into the current document. |
- * @param {string} id Identifier of the stylesheet's asset bundle. |
- * @param {string} url The URL resolving to a stylesheet. |
- */ |
- function loadCSS(id, url) { |
- var link = document.createElement('link'); |
- link.setAttribute('rel', 'stylesheet'); |
- link.setAttribute('href', url); |
- link.onload = resourceLoaded.bind(null, id); |
- document.head.appendChild(link); |
- } |
- |
- /** |
- * Load a script into the current document. |
- * @param {string} id Identifier of the script's asset bundle. |
- * @param {string} url The URL resolving to a script. |
- */ |
- function loadJS(id, url) { |
- var script = document.createElement('script'); |
- script.src = url; |
- script.onload = resourceLoaded.bind(null, id); |
- document.head.appendChild(script); |
- } |
- |
- /** |
- * Move DOM nodes from one parent element to another. |
- * @param {HTMLElement} from Element whose children should be moved. |
- * @param {HTMLElement} to Element to which nodes should be appended. |
- */ |
- function moveNodes(from, to) { |
- Array.prototype.forEach.call(from.children, to.appendChild, to); |
- } |
- |
- /** |
- * Tests whether an XMLHttpRequest has successfully finished loading. |
- * @param {string} url The requested URL. |
- * @param {XMLHttpRequest} xhr The XHR object. |
- */ |
- function isSuccessful(url, xhr) { |
- var fileURL = /^file:\/\//; |
- return xhr.readyState == 4 && |
- (xhr.status == 200 || fileURL.test(url) && xhr.status == 0); |
- } |
- |
- /* |
- * Load a chunk of HTML into the current document. |
- * @param {string} id Identifier of the page's asset bundle. |
- * @param {Object} html Descriptor of the HTML to fetch. |
- * @param {string} html.url The URL resolving to some HTML. |
- * @param {string} html.targetID The element ID to which the retrieved |
- * HTML nodes should be appended. |
- */ |
- function loadHTML(id, html) { |
- var xhr = new XMLHttpRequest(); |
- xhr.open('GET', html.url); |
- xhr.onreadystatechange = function() { |
- if (isSuccessful(html.url, xhr)) { |
- moveNodes(this.responseXML.body, $(html.targetID)); |
- resourceLoaded(id); |
- } |
- }; |
- xhr.responseType = 'document'; |
- xhr.send(); |
- } |
- |
- /** |
- * Record that a resource has been loaded for an asset bundle. When |
- * all the resources have been loaded the callback that was specified |
- * in the loadAssets call is invoked. |
- * @param {string} id Identifier of the asset bundle. |
- */ |
- function resourceLoaded(id) { |
- var assets = ASSETS[id]; |
- assets.count--; |
- if (assets.count == 0) |
- finishedLoading(id); |
- } |
- |
- /** |
- * Finishes loading an asset bundle. |
- * @param {string} id Identifier of the asset bundle. |
- */ |
- function finishedLoading(id) { |
- var assets = ASSETS[id]; |
- console.log('Finished loading asset bundle', id); |
- assets.loaded = true; |
- window.setTimeout(function() { |
- assets.callback(); |
- chrome.send('screenAssetsLoaded', [id]); |
- }, 0); |
- } |
- |
- /** |
- * Load an asset bundle, invoking the callback when finished. |
- * @param {string} id Identifier for the asset bundle to load. |
- * @param {function()=} callback Function to invoke when done loading. |
- */ |
- function loadAssets(id, callback) { |
- var assets = ASSETS[id]; |
- assets.callback = callback || function() {}; |
- console.log('Loading asset bundle', id); |
- if (alreadyLoadedAssets(id)) |
- console.warn('asset bundle', id, 'already loaded!'); |
- if (assets.count == 0) { |
- finishedLoading(id); |
- } else { |
- assets.css.forEach(loadCSS.bind(null, id)); |
- assets.js.forEach(loadJS.bind(null, id)); |
- assets.html.forEach(loadHTML.bind(null, id)); |
- } |
- } |
- |
- return { |
- alreadyLoadedAssets: alreadyLoadedAssets, |
- hasDeferredAssets: hasDeferredAssets, |
- loadAssets: loadAssets, |
- registerAssets: registerAssets |
- }; |
-}); |