Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 <include src="../uber/uber_utils.js"> | 5 <include src="../uber/uber_utils.js"> |
| 6 | 6 |
| 7 cr.define('help', function() { | 7 cr.define('help', function() { |
| 8 /** | 8 /** |
| 9 * Encapsulated handling of the help page. | 9 * Encapsulated handling of the help page. |
| 10 */ | 10 */ |
| 11 function HelpPage() {} | 11 function HelpPage() {} |
| 12 | 12 |
| 13 cr.addSingletonGetter(HelpPage); | 13 cr.addSingletonGetter(HelpPage); |
| 14 | 14 |
| 15 HelpPage.prototype = { | 15 HelpPage.prototype = { |
| 16 __proto__: HTMLDivElement.prototype, | 16 __proto__: HTMLDivElement.prototype, |
| 17 | 17 |
| 18 /** | 18 /** |
| 19 * True if after update powerwash button should be displayed. | |
| 20 * @private | |
| 21 */ | |
| 22 powerwashAfterUpdate_: false, | |
| 23 | |
| 24 /** | |
| 25 * List of the channels names. | |
| 26 * @private | |
| 27 */ | |
| 28 channelList_: ['dev-channel', 'beta-channel', 'stable-channel'], | |
| 29 | |
| 30 /** | |
| 31 * Bubble for error messages and notifications. | |
| 32 * @private | |
| 33 */ | |
| 34 bubble_: null, | |
| 35 | |
| 36 /** | |
| 19 * Perform initial setup. | 37 * Perform initial setup. |
| 20 */ | 38 */ |
| 21 initialize: function() { | 39 initialize: function() { |
| 40 var self = this; | |
| 41 | |
| 22 uber.onContentFrameLoaded(); | 42 uber.onContentFrameLoaded(); |
| 23 | 43 |
| 24 // Set the title. | 44 // Set the title. |
| 25 var title = loadTimeData.getString('helpTitle'); | 45 var title = loadTimeData.getString('helpTitle'); |
| 26 uber.invokeMethodOnParent('setTitle', {title: title}); | 46 uber.invokeMethodOnParent('setTitle', {title: title}); |
| 27 | 47 |
| 28 $('product-license').innerHTML = loadTimeData.getString('productLicense'); | 48 $('product-license').innerHTML = loadTimeData.getString('productLicense'); |
| 29 if (cr.isChromeOS) { | 49 if (cr.isChromeOS) { |
| 30 $('product-os-license').innerHTML = | 50 $('product-os-license').innerHTML = |
| 31 loadTimeData.getString('productOsLicense'); | 51 loadTimeData.getString('productOsLicense'); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 44 | 64 |
| 45 this.maybeSetOnClick_($('more-info-expander'), | 65 this.maybeSetOnClick_($('more-info-expander'), |
| 46 this.toggleMoreInfo_.bind(this)); | 66 this.toggleMoreInfo_.bind(this)); |
| 47 | 67 |
| 48 this.maybeSetOnClick_($('promote'), function() { | 68 this.maybeSetOnClick_($('promote'), function() { |
| 49 chrome.send('promoteUpdater'); | 69 chrome.send('promoteUpdater'); |
| 50 }); | 70 }); |
| 51 this.maybeSetOnClick_($('relaunch'), function() { | 71 this.maybeSetOnClick_($('relaunch'), function() { |
| 52 chrome.send('relaunchNow'); | 72 chrome.send('relaunchNow'); |
| 53 }); | 73 }); |
| 74 this.maybeSetOnClick_($('relaunch-and-powerwash'), function() { | |
| 75 chrome.send('performFactoryResetRestart'); | |
| 76 }); | |
| 77 | |
| 78 this.channelTable_ = { | |
| 79 'stable-channel': { | |
| 80 'name': loadTimeData.getString('stable'), | |
| 81 'label': loadTimeData.getString('currentChannelStable') | |
| 82 }, | |
| 83 'beta-channel': { | |
| 84 'name': loadTimeData.getString('beta'), | |
| 85 'label': loadTimeData.getString('currentChannelBeta') | |
| 86 }, | |
| 87 'dev-channel': { | |
| 88 'name': loadTimeData.getString('dev'), | |
| 89 'label': loadTimeData.getString('currentChannelDev') | |
| 90 } | |
| 91 }; | |
| 54 | 92 |
| 55 var channelChanger = $('channel-changer'); | 93 var channelChanger = $('channel-changer'); |
| 56 if (channelChanger) { | 94 if (channelChanger) { |
| 57 this.channelName_ = { | 95 channelChanger.onchange = function(event) { |
| 58 'stable-channel': loadTimeData.getString('stable'), | 96 self.setChannnel_(event.target.value, false); |
| 59 'beta-channel': loadTimeData.getString('beta'), | |
| 60 'dev-channel': loadTimeData.getString('dev') | |
| 61 }; | 97 }; |
| 62 var self = this; | |
| 63 channelChanger.onchange = function(event) { | |
| 64 self.setReleaseChannel_(event.target.value); | |
| 65 } | |
| 66 } | 98 } |
| 67 | 99 |
| 100 cr.ui.overlay.globalInitialization(); | |
| 101 cr.ui.overlay.setupOverlay($('overlay-container')); | |
| 102 $('overlay-container').addEventListener('cancelOverlay', function() { | |
| 103 self.showOverlay_(null); | |
| 104 }); | |
| 105 | |
| 106 $('change-channel').onclick = function() { | |
| 107 self.showOverlay_($('channel-change-page')); | |
| 108 }; | |
| 109 | |
| 110 // Create the DOM tree | |
|
Nikita (slow)
2013/06/21 12:58:04
nit: drop comment
ygorshenin1
2013/06/21 17:24:58
Done.
| |
| 111 var channelChangeDisallowedError = document.createElement('div'); | |
| 112 channelChangeDisallowedError.className = 'channel-change-error-bubble'; | |
| 113 | |
| 114 var channelChangeDisallowedIcon = document.createElement('div'); | |
| 115 channelChangeDisallowedIcon.classList.add('help-page-icon-large'); | |
| 116 channelChangeDisallowedIcon.classList.add('channel-change-error-icon'); | |
| 117 channelChangeDisallowedError.appendChild(channelChangeDisallowedIcon); | |
| 118 | |
| 119 var channelChangeDisallowedText = document.createElement('div'); | |
| 120 channelChangeDisallowedText.className = 'channel-change-error-text'; | |
| 121 channelChangeDisallowedText.textContent = | |
| 122 loadTimeData.getString('channelChangeDisallowedMessage'); | |
| 123 channelChangeDisallowedError.appendChild(channelChangeDisallowedText); | |
| 124 | |
| 125 $('channel-change-disallowed-icon').onclick = function() { | |
| 126 self.showBubble_(channelChangeDisallowedError, | |
| 127 $('help-container'), | |
| 128 $('channel-change-disallowed-icon'), | |
| 129 cr.ui.ArrowLocation.TOP_END); | |
| 130 }; | |
| 131 | |
| 68 // Attempt to update. | 132 // Attempt to update. |
| 69 chrome.send('onPageLoaded'); | 133 chrome.send('onPageLoaded'); |
| 70 }, | 134 }, |
| 71 | 135 |
| 72 /** | 136 /** |
| 137 * Shows the bubble. | |
| 138 * @param {HTMLDivElement} content The content of the bubble. | |
| 139 * @param {HTMLElement} target The element at which the bubble points. | |
| 140 * @param {HTMLElement} domSibling The element after which the bubble is | |
| 141 * added to the DOM. | |
| 142 * @param {cr.ui.ArrowLocation} location The arrow location. | |
| 143 * @private | |
| 144 */ | |
| 145 showBubble_: function(content, domSibling, target, location) { | |
| 146 this.hideBubble_(); | |
| 147 var bubble = new cr.ui.AutoCloseBubble; | |
| 148 bubble.anchorNode = target; | |
| 149 bubble.domSibling = domSibling; | |
| 150 bubble.arrowLocation = location; | |
| 151 bubble.content = content; | |
| 152 bubble.show(); | |
| 153 this.bubble_ = bubble; | |
| 154 }, | |
| 155 | |
| 156 /** | |
| 157 * Hides the bubble. | |
| 158 * @private | |
| 159 */ | |
| 160 hideBubble_: function() { | |
| 161 if (this.bubble_) | |
| 162 this.bubble_.hide(); | |
| 163 }, | |
| 164 | |
| 165 /** | |
| 73 * Toggles the visible state of the 'More Info' section. | 166 * Toggles the visible state of the 'More Info' section. |
| 74 * @private | 167 * @private |
| 75 */ | 168 */ |
| 76 toggleMoreInfo_: function() { | 169 toggleMoreInfo_: function() { |
| 77 var moreInfo = $('more-info-container'); | 170 var moreInfo = $('more-info-container'); |
| 78 var visible = moreInfo.className == 'visible'; | 171 var visible = moreInfo.className == 'visible'; |
| 79 moreInfo.className = visible ? '' : 'visible'; | 172 moreInfo.className = visible ? '' : 'visible'; |
| 80 moreInfo.style.height = visible ? '' : moreInfo.scrollHeight + 'px'; | 173 moreInfo.style.height = visible ? '' : moreInfo.scrollHeight + 'px'; |
| 81 moreInfo.addEventListener('webkitTransitionEnd', function(event) { | 174 moreInfo.addEventListener('webkitTransitionEnd', function(event) { |
| 82 $('more-info-expander').textContent = visible ? | 175 $('more-info-expander').textContent = visible ? |
| 83 loadTimeData.getString('showMoreInfo') : | 176 loadTimeData.getString('showMoreInfo') : |
| 84 loadTimeData.getString('hideMoreInfo'); | 177 loadTimeData.getString('hideMoreInfo'); |
| 85 }); | 178 }); |
| 86 }, | 179 }, |
| 87 | 180 |
| 88 /** | 181 /** |
| 89 * Assigns |method| to the onclick property of |el| if |el| exists. | 182 * Assigns |method| to the onclick property of |el| if |el| exists. |
| 90 * @private | 183 * @private |
| 91 */ | 184 */ |
| 92 maybeSetOnClick_: function(el, method) { | 185 maybeSetOnClick_: function(el, method) { |
| 93 if (el) | 186 if (el) |
| 94 el.onclick = method; | 187 el.onclick = method; |
| 95 }, | 188 }, |
| 96 | 189 |
| 97 /** | 190 /** |
| 98 * @private | 191 * @private |
| 99 */ | 192 */ |
| 100 setUpdateImage_: function(state) { | 193 setUpdateImage_: function(state) { |
| 101 $('update-status-icon').className = 'update-icon ' + state; | 194 $('update-status-icon').className = 'help-page-icon ' + state; |
| 102 }, | 195 }, |
| 103 | 196 |
| 104 /** | 197 /** |
| 198 * Returns current overlay. | |
| 199 * @return {HTMLElement} Current overlay | |
| 200 * @private | |
| 201 */ | |
| 202 getCurrentOverlay_: function() { | |
| 203 return document.querySelector('#overlay .page.showing'); | |
| 204 }, | |
| 205 | |
| 206 /** | |
| 207 * @return {boolean} True, if new channel switcher UI is used, | |
| 208 * false otherwise. | |
| 209 * @private | |
| 210 */ | |
| 211 isNewChannelSwitcherUI_: function() { | |
| 212 return !loadTimeData.valueExists('disableNewChannelSwitcherUI'); | |
|
Nikita (slow)
2013/06/21 12:58:04
Where is this flag defined, passed?
ygorshenin1
2013/06/21 17:24:58
The flag isn't defined. This code is needed becaus
| |
| 213 }, | |
| 214 | |
| 215 /** | |
| 105 * @private | 216 * @private |
| 106 */ | 217 */ |
| 107 setUpdateStatus_: function(status, message) { | 218 setUpdateStatus_: function(status, message) { |
| 108 if (status == 'checking') { | 219 if (status == 'checking') { |
| 109 this.setUpdateImage_('working'); | 220 this.setUpdateImage_('working'); |
| 110 $('update-status-message').innerHTML = | 221 $('update-status-message').innerHTML = |
| 111 loadTimeData.getString('updateCheckStarted'); | 222 loadTimeData.getString('updateCheckStarted'); |
| 112 } else if (status == 'updating') { | 223 } else if (status == 'updating') { |
| 113 this.setUpdateImage_('working'); | 224 this.setUpdateImage_('working'); |
| 114 $('update-status-message').innerHTML = | 225 $('update-status-message').innerHTML = |
| 115 loadTimeData.getString('updating'); | 226 loadTimeData.getString('updating'); |
| 116 } else if (status == 'nearly_updated') { | 227 } else if (status == 'nearly_updated') { |
| 117 this.setUpdateImage_('up-to-date'); | 228 this.setUpdateImage_('up-to-date'); |
| 118 $('update-status-message').innerHTML = | 229 $('update-status-message').innerHTML = |
| 119 loadTimeData.getString('updateAlmostDone'); | 230 loadTimeData.getString('updateAlmostDone'); |
| 120 } else if (status == 'updated') { | 231 } else if (status == 'updated') { |
| 121 this.setUpdateImage_('up-to-date'); | 232 this.setUpdateImage_('up-to-date'); |
| 122 $('update-status-message').innerHTML = | 233 $('update-status-message').innerHTML = |
| 123 loadTimeData.getString('upToDate'); | 234 loadTimeData.getString('upToDate'); |
| 124 } else if (status == 'failed') { | 235 } else if (status == 'failed') { |
| 125 this.setUpdateImage_('failed'); | 236 this.setUpdateImage_('failed'); |
| 126 $('update-status-message').innerHTML = message; | 237 $('update-status-message').innerHTML = message; |
| 127 } | 238 } |
| 128 | 239 |
| 129 var container = $('update-status-container'); | 240 var container = $('update-status-container'); |
| 130 if (container) { | 241 if (container) { |
| 131 container.hidden = status == 'disabled'; | 242 container.hidden = status == 'disabled'; |
| 132 $('relaunch').hidden = status != 'nearly_updated'; | 243 $('relaunch').hidden = status != 'nearly_updated'; |
| 244 $('relaunch-and-powerwash').hidden = | |
|
Nikita (slow)
2013/06/21 12:58:04
nit: Please add comment to clarify login when we a
ygorshenin1
2013/06/21 17:24:58
Done.
| |
| 245 !this.powerwashAfterUpdate_ || status != 'updated'; | |
| 133 | 246 |
| 134 if (!cr.isMac) | 247 if (!cr.isMac) |
| 135 $('update-percentage').hidden = status != 'updating'; | 248 $('update-percentage').hidden = status != 'updating'; |
| 136 } | 249 } |
| 137 }, | 250 }, |
| 138 | 251 |
| 139 /** | 252 /** |
| 140 * @private | 253 * @private |
| 141 */ | 254 */ |
| 142 setProgress_: function(progress) { | 255 setProgress_: function(progress) { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 194 $('firmware').textContent = firmware; | 307 $('firmware').textContent = firmware; |
| 195 }, | 308 }, |
| 196 | 309 |
| 197 /** | 310 /** |
| 198 * Sets the given overlay to show. This hides whatever overlay is currently | 311 * Sets the given overlay to show. This hides whatever overlay is currently |
| 199 * showing, if any. | 312 * showing, if any. |
| 200 * @param {HTMLElement} node The overlay page to show. If null, all | 313 * @param {HTMLElement} node The overlay page to show. If null, all |
| 201 * overlays are hidden. | 314 * overlays are hidden. |
| 202 */ | 315 */ |
| 203 showOverlay_: function(node) { | 316 showOverlay_: function(node) { |
| 204 var currentlyShowingOverlay = | 317 var currentlyShowingOverlay = this.getCurrentOverlay_(); |
| 205 document.querySelector('#overlay .page.showing'); | |
| 206 if (currentlyShowingOverlay) | 318 if (currentlyShowingOverlay) |
| 207 currentlyShowingOverlay.classList.remove('showing'); | 319 currentlyShowingOverlay.classList.remove('showing'); |
| 208 | |
| 209 if (node) | 320 if (node) |
| 210 node.classList.add('showing'); | 321 node.classList.add('showing'); |
| 211 $('overlay').hidden = !node; | 322 $('overlay-container').hidden = !node; |
| 323 }, | |
| 324 | |
| 325 /** | |
| 326 * Updates name of the current channel, i.e. the name of the | |
| 327 * channel the device is currently on. | |
| 328 * @param {string} channel The name of the current channel | |
| 329 * @private | |
| 330 */ | |
| 331 updateCurrentChannel_: function(channel) { | |
| 332 if (this.channelList_.indexOf(channel) < 0) | |
| 333 return; | |
| 334 $('current-channel').textContent = loadTimeData.getStringF( | |
| 335 'currentChannel', this.channelTable_[channel].label); | |
| 336 help.ChannelChangePage.updateCurrentChannel(channel); | |
| 212 }, | 337 }, |
| 213 | 338 |
| 214 /** | 339 /** |
| 215 * |enabled| is true if the release channel can be enabled. | 340 * |enabled| is true if the release channel can be enabled. |
| 216 * @private | 341 * @private |
| 217 */ | 342 */ |
| 218 updateEnableReleaseChannel_: function(enabled) { | 343 updateEnableReleaseChannel_: function(enabled) { |
| 219 $('channel-changer-container').hidden = !enabled; | 344 this.updateChannelChangePageContainerVisibility_(enabled); |
| 345 $('change-channel').disabled = !enabled; | |
| 346 $('channel-change-disallowed-icon').hidden = enabled; | |
| 220 }, | 347 }, |
| 221 | 348 |
| 222 /** | 349 /** |
| 350 * Sets the device target channel. | |
| 351 * @param {string} channel The name of the target channel | |
| 352 * @param {boolean} isPowerwashAllowed True iff powerwash is allowed | |
| 223 * @private | 353 * @private |
| 224 */ | 354 */ |
| 225 updateSelectedChannel_: function(value) { | 355 setChannel_: function(channel, isPowerwashAllowed) { |
| 226 var options = $('channel-changer').querySelectorAll('option'); | 356 this.powerwashAfterUpdate_ = isPowerwashAllowed; |
| 227 for (var i = 0; i < options.length; i++) { | 357 chrome.send('setChannel', [channel, isPowerwashAllowed]); |
| 228 var option = options[i]; | 358 $('channel-change-confirmation').hidden = false; |
| 229 if (option.value == value) | 359 $('channel-change-confirmation').textContent = loadTimeData.getStringF( |
| 230 option.selected = true; | 360 'channel-changed', this.channelTable_[channel].name); |
| 231 } | |
| 232 }, | 361 }, |
| 233 | 362 |
| 234 /** | 363 /** |
| 235 * @private | |
| 236 */ | |
| 237 setReleaseChannel_: function(channel) { | |
| 238 chrome.send('setReleaseTrack', [channel]); | |
| 239 $('channel-change-confirmation').hidden = false; | |
| 240 $('channel-change-confirmation').textContent = loadTimeData.getStringF( | |
| 241 'channel-changed', this.channelName_[channel]); | |
| 242 }, | |
| 243 | |
| 244 /** | |
| 245 * Sets the value of the "Build Date" field of the "More Info" section. | 364 * Sets the value of the "Build Date" field of the "More Info" section. |
| 246 * @param {string} buildDate The date of the build. | 365 * @param {string} buildDate The date of the build. |
| 247 * @private | 366 * @private |
| 248 */ | 367 */ |
| 249 setBuildDate_: function(buildDate) { | 368 setBuildDate_: function(buildDate) { |
| 250 $('build-date-container').classList.remove('empty'); | 369 $('build-date-container').classList.remove('empty'); |
| 251 $('build-date').textContent = buildDate; | 370 $('build-date').textContent = buildDate; |
| 252 }, | 371 }, |
| 372 | |
| 373 /** | |
| 374 * Updates channel-change-page-container visibility according to | |
| 375 * internal state. | |
| 376 * @private | |
| 377 */ | |
| 378 updateChannelChangePageContainerVisibility_: function() { | |
| 379 if (!this.isNewChannelSwitcherUI_()) { | |
| 380 $('channel-change-page-container').hidden = true; | |
|
Nikita (slow)
2013/06/21 12:58:04
Not clear what exactly is left for old UI.
ygorshenin1
2013/06/21 17:24:58
channel-changer div contains old channel switcher
| |
| 381 return; | |
| 382 } | |
| 383 $('channel-change-page-container').hidden = | |
| 384 help.ChannelChangePage.isPageReady(); | |
| 385 }, | |
| 386 | |
| 387 /** | |
| 388 * Updates channel-changer dropdown visibility if |visible| is | |
| 389 * true and new channel switcher UI is disallowed. | |
| 390 * @param {boolean} visible True if channel-changer should be | |
| 391 * displayed, false otherwise. | |
| 392 * @private | |
| 393 */ | |
| 394 updateChannelChangerContainerVisibility_: function(visible) { | |
| 395 if (this.isNewChannelSwitcherUI_()) { | |
| 396 $('channel-changer').hidden = true; | |
| 397 return; | |
| 398 } | |
| 399 $('channel-changer').hidden = !visible; | |
| 400 }, | |
| 253 }; | 401 }; |
| 254 | 402 |
| 255 HelpPage.setUpdateStatus = function(status, message) { | 403 HelpPage.setUpdateStatus = function(status, message) { |
| 256 HelpPage.getInstance().setUpdateStatus_(status, message); | 404 HelpPage.getInstance().setUpdateStatus_(status, message); |
| 257 }; | 405 }; |
| 258 | 406 |
| 259 HelpPage.setProgress = function(progress) { | 407 HelpPage.setProgress = function(progress) { |
| 260 HelpPage.getInstance().setProgress_(progress); | 408 HelpPage.getInstance().setProgress_(progress); |
| 261 }; | 409 }; |
| 262 | 410 |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 282 }; | 430 }; |
| 283 | 431 |
| 284 HelpPage.setOSFirmware = function(firmware) { | 432 HelpPage.setOSFirmware = function(firmware) { |
| 285 HelpPage.getInstance().setOSFirmware_(firmware); | 433 HelpPage.getInstance().setOSFirmware_(firmware); |
| 286 }; | 434 }; |
| 287 | 435 |
| 288 HelpPage.showOverlay = function(node) { | 436 HelpPage.showOverlay = function(node) { |
| 289 HelpPage.getInstance().showOverlay_(node); | 437 HelpPage.getInstance().showOverlay_(node); |
| 290 }; | 438 }; |
| 291 | 439 |
| 292 HelpPage.updateSelectedChannel = function(channel) { | 440 HelpPage.cancelOverlay = function() { |
| 293 HelpPage.getInstance().updateSelectedChannel_(channel); | 441 HelpPage.getInstance().showOverlay_(null); |
| 442 }; | |
| 443 | |
| 444 HelpPage.updateIsEnterpriseManaged = function(isEnterpriseManaged) { | |
| 445 help.ChannelChangePage.updateIsEnterpriseManaged(isEnterpriseManaged); | |
| 446 }; | |
| 447 | |
| 448 HelpPage.updateCurrentChannel = function(channel) { | |
| 449 HelpPage.getInstance().updateCurrentChannel_(channel); | |
| 450 }; | |
| 451 | |
| 452 HelpPage.updateTargetChannel = function(channel) { | |
| 453 help.ChannelChangePage.updateTargetChannel(channel); | |
| 294 }; | 454 }; |
| 295 | 455 |
| 296 HelpPage.updateEnableReleaseChannel = function(enabled) { | 456 HelpPage.updateEnableReleaseChannel = function(enabled) { |
| 297 HelpPage.getInstance().updateEnableReleaseChannel_(enabled); | 457 HelpPage.getInstance().updateEnableReleaseChannel_(enabled); |
| 298 }; | 458 }; |
| 299 | 459 |
| 300 HelpPage.setReleaseChannel = function(channel) { | 460 HelpPage.setChannel = function(channel, isPowerwashAllowed) { |
| 301 HelpPage.getInstance().setReleaseChannel_(channel); | 461 HelpPage.getInstance().setChannel_(channel, isPowerwashAllowed); |
| 302 }; | 462 }; |
| 303 | 463 |
| 304 HelpPage.setBuildDate = function(buildDate) { | 464 HelpPage.setBuildDate = function(buildDate) { |
| 305 HelpPage.getInstance().setBuildDate_(buildDate); | 465 HelpPage.getInstance().setBuildDate_(buildDate); |
| 306 } | 466 }; |
| 467 | |
| 468 HelpPage.updateChannelChangePageContainerVisibility = function() { | |
| 469 HelpPage.getInstance().updateChannelChangePageContainerVisibility_(); | |
| 470 }; | |
| 307 | 471 |
| 308 // Export | 472 // Export |
| 309 return { | 473 return { |
| 310 HelpPage: HelpPage | 474 HelpPage: HelpPage |
| 311 }; | 475 }; |
| 312 }); | 476 }); |
| 313 | 477 |
| 314 /** | 478 /** |
| 315 * onload listener to initialize the HelpPage. | 479 * onload listener to initialize the HelpPage. |
| 316 */ | 480 */ |
| 317 window.onload = function() { | 481 window.onload = function() { |
| 318 help.HelpPage.getInstance().initialize(); | 482 help.HelpPage.getInstance().initialize(); |
| 483 help.ChannelChangePage.getInstance().initialize(); | |
| 319 }; | 484 }; |
| OLD | NEW |