| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 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 function toggleHelpBox() { | |
| 6 var helpBoxOuter = document.getElementById('details'); | |
| 7 helpBoxOuter.classList.toggle('hidden'); | |
| 8 var detailsButton = document.getElementById('details-button'); | |
| 9 if (helpBoxOuter.classList.contains('hidden')) | |
| 10 detailsButton.innerText = detailsButton.detailsText; | |
| 11 else | |
| 12 detailsButton.innerText = detailsButton.hideDetailsText; | |
| 13 | |
| 14 // Details appears over the main content on small screens. | |
| 15 if (mobileNav) { | |
| 16 document.getElementById('main-content').classList.toggle('hidden'); | |
| 17 var runnerContainer = document.querySelector('.runner-container'); | |
| 18 if (runnerContainer) { | |
| 19 runnerContainer.classList.toggle('hidden'); | |
| 20 } | |
| 21 } | |
| 22 } | |
| 23 | |
| 24 function diagnoseErrors() { | |
| 25 <if expr="not chromeos"> | |
| 26 if (window.errorPageController) | |
| 27 errorPageController.diagnoseErrorsButtonClick(); | |
| 28 </if> | |
| 29 <if expr="chromeos"> | |
| 30 var extensionId = 'idddmepepmjcgiedknnmlbadcokidhoa'; | |
| 31 var diagnoseFrame = document.getElementById('diagnose-frame'); | |
| 32 diagnoseFrame.innerHTML = | |
| 33 '<iframe src="chrome-extension://' + extensionId + | |
| 34 '/index.html"></iframe>'; | |
| 35 </if> | |
| 36 } | |
| 37 | |
| 38 // Subframes use a different layout but the same html file. This is to make it | |
| 39 // easier to support platforms that load the error page via different | |
| 40 // mechanisms (Currently just iOS). | |
| 41 if (window.top.location != window.location) | |
| 42 document.documentElement.setAttribute('subframe', ''); | |
| 43 | |
| 44 // Re-renders the error page using |strings| as the dictionary of values. | |
| 45 // Used by NetErrorTabHelper to update DNS error pages with probe results. | |
| 46 function updateForDnsProbe(strings) { | |
| 47 var context = new JsEvalContext(strings); | |
| 48 jstProcess(context, document.getElementById('t')); | |
| 49 } | |
| 50 | |
| 51 // Given the classList property of an element, adds an icon class to the list | |
| 52 // and removes the previously- | |
| 53 function updateIconClass(classList, newClass) { | |
| 54 var oldClass; | |
| 55 | |
| 56 if (classList.hasOwnProperty('last_icon_class')) { | |
| 57 oldClass = classList['last_icon_class']; | |
| 58 if (oldClass == newClass) | |
| 59 return; | |
| 60 } | |
| 61 | |
| 62 classList.add(newClass); | |
| 63 if (oldClass !== undefined) | |
| 64 classList.remove(oldClass); | |
| 65 | |
| 66 classList['last_icon_class'] = newClass; | |
| 67 | |
| 68 if (newClass == 'icon-offline') { | |
| 69 document.body.classList.add('offline'); | |
| 70 new Runner('.interstitial-wrapper'); | |
| 71 } else { | |
| 72 document.body.classList.add('neterror'); | |
| 73 } | |
| 74 } | |
| 75 | |
| 76 // Does a search using |baseSearchUrl| and the text in the search box. | |
| 77 function search(baseSearchUrl) { | |
| 78 var searchTextNode = document.getElementById('search-box'); | |
| 79 document.location = baseSearchUrl + searchTextNode.value; | |
| 80 return false; | |
| 81 } | |
| 82 | |
| 83 // Use to track clicks on elements generated by the navigation correction | |
| 84 // service. If |trackingId| is negative, the element does not come from the | |
| 85 // correction service. | |
| 86 function trackClick(trackingId) { | |
| 87 // This can't be done with XHRs because XHRs are cancelled on navigation | |
| 88 // start, and because these are cross-site requests. | |
| 89 if (trackingId >= 0 && errorPageController) | |
| 90 errorPageController.trackClick(trackingId); | |
| 91 } | |
| 92 | |
| 93 // Called when an <a> tag generated by the navigation correction service is | |
| 94 // clicked. Separate function from trackClick so the resources don't have to | |
| 95 // be updated if new data is added to jstdata. | |
| 96 function linkClicked(jstdata) { | |
| 97 trackClick(jstdata.trackingId); | |
| 98 } | |
| 99 | |
| 100 // Implements button clicks. This function is needed during the transition | |
| 101 // between implementing these in trunk chromium and implementing them in | |
| 102 // iOS. | |
| 103 function reloadButtonClick(url) { | |
| 104 if (window.errorPageController) { | |
| 105 errorPageController.reloadButtonClick(); | |
| 106 } else { | |
| 107 location = url; | |
| 108 } | |
| 109 } | |
| 110 | |
| 111 function showSavedCopyButtonClick() { | |
| 112 if (window.errorPageController) { | |
| 113 errorPageController.showSavedCopyButtonClick(); | |
| 114 } | |
| 115 } | |
| 116 | |
| 117 function showOfflinePagesButtonClick() { | |
| 118 if (window.errorPageController) { | |
| 119 errorPageController.showOfflinePagesButtonClick(); | |
| 120 } | |
| 121 } | |
| 122 | |
| 123 function showOfflineCopyButtonClick() { | |
| 124 if (window.errorPageController) { | |
| 125 errorPageController.showOfflineCopyButtonClick(); | |
| 126 } | |
| 127 } | |
| 128 | |
| 129 function detailsButtonClick() { | |
| 130 if (window.errorPageController) | |
| 131 errorPageController.detailsButtonClick(); | |
| 132 } | |
| 133 | |
| 134 /** | |
| 135 * Replace the reload button with the Google cached copy suggestion. | |
| 136 */ | |
| 137 function setUpCachedButton(buttonStrings) { | |
| 138 var reloadButton = document.getElementById('reload-button'); | |
| 139 | |
| 140 reloadButton.textContent = buttonStrings.msg; | |
| 141 var url = buttonStrings.cacheUrl; | |
| 142 var trackingId = buttonStrings.trackingId; | |
| 143 reloadButton.onclick = function(e) { | |
| 144 e.preventDefault(); | |
| 145 trackClick(trackingId); | |
| 146 if (window.errorPageController) { | |
| 147 errorPageController.trackCachedCopyButtonClick(); | |
| 148 } | |
| 149 location = url; | |
| 150 }; | |
| 151 reloadButton.style.display = ''; | |
| 152 document.getElementById('control-buttons').hidden = false; | |
| 153 } | |
| 154 | |
| 155 var primaryControlOnLeft = true; | |
| 156 <if expr="is_macosx or is_ios or is_linux or is_android"> | |
| 157 primaryControlOnLeft = false; | |
| 158 </if> | |
| 159 | |
| 160 function onDocumentLoad() { | |
| 161 var controlButtonDiv = document.getElementById('control-buttons'); | |
| 162 var reloadButton = document.getElementById('reload-button'); | |
| 163 var detailsButton = document.getElementById('details-button'); | |
| 164 var showSavedCopyButton = document.getElementById('show-saved-copy-button'); | |
| 165 var showOfflinePagesButton = | |
| 166 document.getElementById('show-offline-pages-button'); | |
| 167 var showOfflineCopyButton = | |
| 168 document.getElementById('show-offline-copy-button'); | |
| 169 | |
| 170 var reloadButtonVisible = loadTimeData.valueExists('reloadButton') && | |
| 171 loadTimeData.getValue('reloadButton').msg; | |
| 172 var showSavedCopyButtonVisible = | |
| 173 loadTimeData.valueExists('showSavedCopyButton') && | |
| 174 loadTimeData.getValue('showSavedCopyButton').msg; | |
| 175 var showOfflinePagesButtonVisible = | |
| 176 loadTimeData.valueExists('showOfflinePagesButton') && | |
| 177 loadTimeData.getValue('showOfflinePagesButton').msg; | |
| 178 var showOfflineCopyButtonVisible = | |
| 179 loadTimeData.valueExists('showOfflineCopyButton') && | |
| 180 loadTimeData.getValue('showOfflineCopyButton').msg; | |
| 181 | |
| 182 var primaryButton, secondaryButton; | |
| 183 if (showSavedCopyButton.primary) { | |
| 184 primaryButton = showSavedCopyButton; | |
| 185 secondaryButton = reloadButton; | |
| 186 } else { | |
| 187 primaryButton = reloadButton; | |
| 188 secondaryButton = showSavedCopyButton; | |
| 189 } | |
| 190 | |
| 191 // Sets up the proper button layout for the current platform. | |
| 192 if (primaryControlOnLeft) { | |
| 193 buttons.classList.add('suggested-left'); | |
| 194 controlButtonDiv.insertBefore(secondaryButton, primaryButton); | |
| 195 } else { | |
| 196 buttons.classList.add('suggested-right'); | |
| 197 controlButtonDiv.insertBefore(primaryButton, secondaryButton); | |
| 198 } | |
| 199 | |
| 200 // Check for Google cached copy suggestion. | |
| 201 if (loadTimeData.valueExists('cacheButton')) { | |
| 202 setUpCachedButton(loadTimeData.getValue('cacheButton')); | |
| 203 } | |
| 204 | |
| 205 if (reloadButton.style.display == 'none' && | |
| 206 showSavedCopyButton.style.display == 'none' && | |
| 207 showOfflinePagesButton.style.display == 'none' && | |
| 208 showOfflineCopyButton.style.display == 'none') { | |
| 209 detailsButton.classList.add('singular'); | |
| 210 } | |
| 211 | |
| 212 // Show control buttons. | |
| 213 if (reloadButtonVisible || showSavedCopyButtonVisible || | |
| 214 showOfflinePagesButtonVisible || showOfflineCopyButton) { | |
| 215 controlButtonDiv.hidden = false; | |
| 216 | |
| 217 // Set the secondary button state in the cases of two call to actions. | |
| 218 if ((reloadButtonVisible || showOfflinePagesButtonVisible || | |
| 219 showOfflineCopyButton) && | |
| 220 showSavedCopyButtonVisible) { | |
| 221 secondaryButton.classList.add('secondary-button'); | |
| 222 } | |
| 223 } | |
| 224 } | |
| 225 | |
| 226 document.addEventListener('DOMContentLoaded', onDocumentLoad); | |
| OLD | NEW |