// Copyright 2013 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. function toggleHelpBox() { var helpBoxOuter = document.getElementById('help-box-outer'); helpBoxOuter.classList.toggle('hidden'); var detailsButton = document.getElementById('details-button'); if (helpBoxOuter.classList.contains('hidden')) detailsButton.innerText = detailsButton.detailsText; else detailsButton.innerText = detailsButton.hideDetailsText; } function diagnoseErrors() { var extensionId = 'idddmepepmjcgiedknnmlbadcokidhoa'; var diagnoseFrame = document.getElementById('diagnose-frame'); diagnoseFrame.innerHTML = '<iframe src="chrome-extension://' + extensionId + '/index.html"></iframe>'; } // Subframes use a different layout but the same html file. This is to make it // easier to support platforms that load the error page via different // mechanisms (Currently just iOS). if (window.top.location != window.location) document.documentElement.setAttribute('subframe', ''); // Re-renders the error page using |strings| as the dictionary of values. // Used by NetErrorTabHelper to update DNS error pages with probe results. function updateForDnsProbe(strings) { i18nTemplate.process(document, strings); var context = new JsEvalContext(strings); jstProcess(context, document.getElementById('t')); } // Given the classList property of an element, adds an icon class to the list // and removes the previously- function updateIconClass(classList, newClass) { var oldClass; if (classList.hasOwnProperty('last_icon_class')) { oldClass = classList['last_icon_class']; if (oldClass == newClass) return; } classList.add(newClass); if (oldClass !== undefined) classList.remove(oldClass); classList['last_icon_class'] = newClass; } // Does a search using |baseSearchUrl| and the text in the search box. function search(baseSearchUrl) { var searchTextNode = document.getElementById('search-box'); document.location = baseSearchUrl + searchTextNode.value; return false; } // Use to track clicks on elements generated by the navigation correction // service. If |trackingId| is negative, the element does not come from the // correction service. function trackClick(trackingId) { // This can't be done with XHRs because XHRs are cancelled on navigation // start, and because these are cross-site requests. if (trackingId >= 0 && errorPageController) errorPageController.trackClick(trackingId); } // Called when an <a> tag generated by the navigation correction service is // clicked. Separate function from trackClick so the resources don't have to // be updated if new data is added to jstdata. function linkClicked(jstdata) { trackClick(jstdata.trackingId); } // Implements button clicks. This function is needed during the transition // between implementing these in trunk chromium and implementing them in // iOS. function reloadButtonClick(url) { if (window.errorPageController) { errorPageController.reloadButtonClick(); } else { location = url; } } function loadStaleButtonClick() { if (window.errorPageController) { errorPageController.loadStaleButtonClick(); } } function detailsButtonClick() { if (window.errorPageController) errorPageController.detailsButtonClick(); } var primaryControlOnLeft = true; <if expr="is_macosx or is_ios or is_linux or is_android"> primaryControlOnLeft = false; </if> // Sets up the proper button layout for the current platform. function setButtonLayout() { var buttonsDiv = document.getElementById('buttons'); var controlButtonDiv = document.getElementById('control-buttons'); var reloadButton = document.getElementById('reload-button'); var detailsButton = document.getElementById('details-button'); var staleLoadButton = document.getElementById('stale-load-button'); var primaryButton = reloadButton; var secondaryButton = staleLoadButton; if (primaryControlOnLeft) { buttons.classList.add('suggested-left'); controlButtonDiv.insertBefore(primaryButton, secondaryButton); } else { buttons.classList.add('suggested-right'); controlButtonDiv.insertBefore(secondaryButton, primaryButton); } if (reloadButton.style.display == 'none' && staleLoadButton.style.display == 'none') { detailsButton.classList.add('singular'); } // Hide the details button if there are no details to show. if (templateData && templateData.summary && !templateData.summary.msg) { document.getElementById('details-button').hidden = true; document.getElementById('help-box-outer').style.display = 'block'; } } document.addEventListener('DOMContentLoaded', function() { setButtonLayout(); if (document.querySelector('.icon-offline')) { document.body.classList.add('offline'); new Runner('.interstitial-wrapper'); } });