| /* |
| * Copyright 2013 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * @fileoverview Code for deduplicating inlined images. |
| * |
| * @author matterbury@google.com (Matt Atterbury) |
| */ |
| |
| // Exporting functions using quoted attributes to prevent js compiler from |
| // renaming them. |
| // See http://code.google.com/closure/compiler/docs/api-tutorial3.html#dangers |
| window['pagespeed'] = window['pagespeed'] || {}; |
| var pagespeed = window['pagespeed']; |
| |
| /** |
| * @constructor |
| */ |
| pagespeed.DedupInlinedImages = function() { |
| }; |
| |
| /** |
| * Set the immediately preceding img element's src attribute to the value of |
| * the identified img element's src attribute, which will be a data URI. |
| * @param {string} from_img_id is the id of the img element to copy src= from. |
| * @param {string} to_img_id is the id of the img element to copy src= to. |
| * @param {string} script_id is the id of the script element invoking us. |
| */ |
| pagespeed.DedupInlinedImages.prototype.inlineImg = function( |
| from_img_id, to_img_id, script_id) { |
| // Find the img to copy from, identified by the given from_img_id. |
| var srcNode = document.getElementById(from_img_id); |
| if (!srcNode) { |
| // console.log('PSA ERROR: from_img_id="' + from_img_id + '": no img'); |
| return; |
| } |
| // Find the img to copy to, being the element before the invoking script. |
| var dstNode = document.getElementById(to_img_id); |
| if (!dstNode) { |
| // console.log('PSA ERROR: to_img_id="' + to_img_id + '": no img'); |
| return; |
| } |
| // Find the invoking script. |
| var scriptNode = document.getElementById(script_id); |
| if (!scriptNode) { |
| // console.log('PSA ERROR: script_id="' + script_id + '": no script'); |
| return; |
| } |
| // Copy the src attribute then delete this script. |
| dstNode.src = srcNode.getAttribute('src'); |
| scriptNode.parentNode.removeChild(scriptNode); |
| }; |
| |
| pagespeed.DedupInlinedImages.prototype['inlineImg'] = |
| pagespeed.DedupInlinedImages.prototype.inlineImg; |
| |
| /** |
| * Initializes the dedup inlined images module. |
| */ |
| pagespeed.dedupInlinedImagesInit = function() { |
| var dedupInlinedImages = new pagespeed.DedupInlinedImages(); |
| pagespeed['dedupInlinedImages'] = dedupInlinedImages; |
| }; |
| |
| pagespeed['dedupInlinedImagesInit'] = pagespeed.dedupInlinedImagesInit; |