| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 /** |
| 6 * @fileoverview Implements a compatibility layer for older versions of |
| 7 * CFInstall.js . |
| 8 **/ |
| 9 |
| 10 goog.provide('google.cf.installer.OverlayDelegate'); |
| 11 |
| 12 goog.require('google.cf.installer.InteractionDelegate'); |
| 13 goog.require('google.cf.installer.frame'); |
| 14 |
| 15 /** |
| 16 * Constructs an InteractionDelegate compatible with previous versions of |
| 17 * CFInstall.js . |
| 18 * @constructor |
| 19 * @implements {google.cf.installer.InteractionDelegate} |
| 20 */ |
| 21 google.cf.installer.OverlayDelegate = function(args) { |
| 22 this.args_ = args; |
| 23 }; |
| 24 |
| 25 /** |
| 26 * Indicates whether the overlay CSS has already been injected. |
| 27 * @type {boolean} |
| 28 * @private |
| 29 */ |
| 30 google.cf.installer.OverlayDelegate.styleInjected_ = false; |
| 31 |
| 32 /** |
| 33 * Generates the CSS for the overlay. |
| 34 * @private |
| 35 */ |
| 36 google.cf.installer.OverlayDelegate.injectCss_ = function() { |
| 37 if (google.cf.installer.OverlayDelegate.styleInjected_) |
| 38 return; |
| 39 goog.style.installStyles('.chromeFrameOverlayContent {' + |
| 40 'position: absolute;' + |
| 41 'margin-left: -400px;' + |
| 42 'margin-top: -300px;' + |
| 43 'left: 50%;' + |
| 44 'top: 50%;' + |
| 45 'border: 1px solid #93B4D9;' + |
| 46 'background-color: white;' + |
| 47 'z-index: 2001;' + |
| 48 '}' + |
| 49 '.chromeFrameOverlayContent iframe {' + |
| 50 'width: 800px;' + |
| 51 'height: 600px;' + |
| 52 'border: none;' + |
| 53 '}' + |
| 54 '.chromeFrameOverlayCloseBar {' + |
| 55 'height: 1em;' + |
| 56 'text-align: right;' + |
| 57 'background-color: #CADEF4;' + |
| 58 '}' + |
| 59 '.chromeFrameOverlayUnderlay {' + |
| 60 'position: absolute;' + |
| 61 'width: 100%;' + |
| 62 'height: 100%;' + |
| 63 'background-color: white;' + |
| 64 'opacity: 0.5;' + |
| 65 '-moz-opacity: 0.5;' + |
| 66 '-webkit-opacity: 0.5;' + |
| 67 '-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";' + |
| 68 'filter: alpha(opacity=50);' + |
| 69 'z-index: 2000;' + |
| 70 '}'); |
| 71 google.cf.installer.OverlayDelegate.styleInjected_ = true; |
| 72 }; |
| 73 |
| 74 /** |
| 75 * Generates the HTML for the overlay. |
| 76 * @private |
| 77 */ |
| 78 google.cf.installer.OverlayDelegate.injectHtml_ = function() { |
| 79 google.cf.installer.OverlayDelegate.injectCss_(); |
| 80 if (document.getElementById('chromeFrameOverlayContent')) { |
| 81 return; // Was previously created. Bail. |
| 82 } |
| 83 |
| 84 var n = document.createElement('span'); |
| 85 n.innerHTML = '<div class="chromeFrameOverlayUnderlay"></div>' + |
| 86 '<table class="chromeFrameOverlayContent"' + |
| 87 'id="chromeFrameOverlayContent"' + |
| 88 'cellpadding="0" cellspacing="0">' + |
| 89 '<tr class="chromeFrameOverlayCloseBar">' + |
| 90 '<td>' + |
| 91 // TODO(user): i18n |
| 92 '<button id="chromeFrameCloseButton">close</button>' + |
| 93 '</td>' + |
| 94 '</tr>' + |
| 95 '<tr>' + |
| 96 '<td id="chromeFrameIframeHolder"></td>' + |
| 97 '</tr>' + |
| 98 '</table>'; |
| 99 |
| 100 var b = document.body; |
| 101 // Insert underlay nodes into the document in the right order. |
| 102 while (n.firstChild) { |
| 103 b.insertBefore(n.lastChild, b.firstChild); |
| 104 } |
| 105 }; |
| 106 |
| 107 /** |
| 108 * @inheritDoc |
| 109 */ |
| 110 google.cf.installer.OverlayDelegate.prototype.getIFrameContainer = |
| 111 function() { |
| 112 google.cf.installer.OverlayDelegate.injectHtml_(); |
| 113 document.getElementById('chromeFrameCloseButton').onclick = |
| 114 goog.bind(this.reset, this); |
| 115 return /** @type {!HTMLElement} */( |
| 116 document.getElementById('chromeFrameIframeHolder')); |
| 117 }; |
| 118 |
| 119 /** |
| 120 * @inheritDoc |
| 121 */ |
| 122 google.cf.installer.OverlayDelegate.prototype.customizeIFrame = |
| 123 function(iframe) { |
| 124 google.cf.installer.frame.setProperties(iframe, this.args_); |
| 125 }; |
| 126 |
| 127 /** |
| 128 * @inheritDoc |
| 129 */ |
| 130 google.cf.installer.OverlayDelegate.prototype.show = function() { |
| 131 // Should start it out hidden and reveal/resize here. |
| 132 }; |
| 133 |
| 134 /** |
| 135 * @inheritDoc |
| 136 */ |
| 137 google.cf.installer.OverlayDelegate.prototype.reset = function() { |
| 138 // IE has a limit to the # of <style> tags allowed, so we avoid |
| 139 // tempting the fates. |
| 140 if (google.cf.installer.OverlayDelegate.hideInjected_) |
| 141 return; |
| 142 |
| 143 goog.style.installStyles( |
| 144 '.chromeFrameOverlayContent { display: none; } ' + |
| 145 '.chromeFrameOverlayUnderlay { display: none; }'); |
| 146 document.getElementById('chromeFrameIframeHolder').removeChild( |
| 147 document.getElementById('chromeFrameIframeHolder').firstChild); |
| 148 |
| 149 document.getElementById('chromeFrameCloseButton').onclick = null; |
| 150 |
| 151 // TODO(user): put this in somewhere. |
| 152 // // Hide the dialog for a year (or until cookies are deleted). |
| 153 // var age = 365 * 24 * 60 * 60 * 1000; |
| 154 // document.cookie = "disableGCFCheck=1;path=/;max-age="+age; |
| 155 google.cf.installer.OverlayDelegate.hideInjected_ = true; |
| 156 }; |
| OLD | NEW |