mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-02 07:05:24 +00:00
127 lines
4.4 KiB
HTML
127 lines
4.4 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
|
|
<!DOCTYPE html [
|
|
<!ENTITY % htmlDTD
|
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"DTD/xhtml1-strict.dtd">
|
|
%htmlDTD;
|
|
<!ENTITY % netErrorDTD SYSTEM "chrome://global/locale/netError.dtd">
|
|
%netErrorDTD;
|
|
]>
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>&loadError.label;</title>
|
|
<link rel="stylesheet" href="chrome://browser/skin/aboutNetError.css" type="text/css" media="all" />
|
|
<link rel="stylesheet" type="text/css" media="all" href="chrome://browser/skin/aboutSocialError.css"/>
|
|
<link rel="icon" type="image/png" id="favicon" href="chrome://global/skin/icons/warning-16.png"/>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="errorPageContainer">
|
|
|
|
<!-- Error Title -->
|
|
<div id="errorTitle">
|
|
<p id="errorShortDescText" >foo</p>
|
|
</div>
|
|
|
|
<div id="button-box">
|
|
<button id="btnTryAgain" onclick="tryAgainButton()"/>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
|
|
<script type="text/javascript;version=1.8"><![CDATA[
|
|
const Cu = Components.utils;
|
|
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
Cu.import("resource:///modules/Social.jsm");
|
|
|
|
let config = {
|
|
tryAgainCallback: reloadProvider
|
|
}
|
|
|
|
function parseQueryString() {
|
|
let searchParams = new URLSearchParams(document.documentURI.split("?")[1]);
|
|
let mode = searchParams.get("mode");
|
|
config.origin = searchParams.get("origin");
|
|
let encodedURL = searchParams.get("url");
|
|
let url = decodeURIComponent(encodedURL);
|
|
// directory does not have origin set, in that case use the url origin for
|
|
// the error message.
|
|
if (!config.origin) {
|
|
let URI = Services.io.newURI(url, null, null);
|
|
config.origin =
|
|
Services.scriptSecurityManager.createCodebasePrincipal(URI, {}).origin;
|
|
}
|
|
|
|
switch (mode) {
|
|
case "compactInfo":
|
|
document.getElementById("btnTryAgain").style.display = 'none';
|
|
break;
|
|
case "tryAgainOnly":
|
|
//intentional fall-through
|
|
case "tryAgain":
|
|
config.tryAgainCallback = loadQueryURL;
|
|
config.queryURL = url;
|
|
break;
|
|
case "workerFailure":
|
|
config.tryAgainCallback = reloadProvider;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
function setUpStrings() {
|
|
let brandBundle = Services.strings.createBundle("chrome://branding/locale/brand.properties");
|
|
let browserBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
|
|
|
|
let productName = brandBundle.GetStringFromName("brandShortName");
|
|
let provider = Social._getProviderFromOrigin(config.origin);
|
|
let providerName = provider ? provider.name : config.origin;
|
|
|
|
// Sets up the error message
|
|
let msg = browserBundle.formatStringFromName("social.error.message", [productName, providerName], 2);
|
|
document.getElementById("errorShortDescText").textContent = msg;
|
|
|
|
// Sets up the buttons' labels and accesskeys
|
|
let btnTryAgain = document.getElementById("btnTryAgain");
|
|
btnTryAgain.textContent = browserBundle.GetStringFromName("social.error.tryAgain.label");
|
|
btnTryAgain.accessKey = browserBundle.GetStringFromName("social.error.tryAgain.accesskey");
|
|
}
|
|
|
|
function tryAgainButton() {
|
|
config.tryAgainCallback();
|
|
}
|
|
|
|
function loadQueryURL() {
|
|
window.location.href = config.queryURL;
|
|
}
|
|
|
|
function reloadProvider() {
|
|
// Just incase the current provider *isn't* in a frameworker-error
|
|
// state, reload the current one.
|
|
let provider = Social._getProviderFromOrigin(config.origin);
|
|
provider.reload();
|
|
// If the problem is a frameworker-error, it may be that the child
|
|
// process crashed - and if that happened, then *all* providers in that
|
|
// process will have crashed. However, only the current provider is
|
|
// likely to have the error surfaced in the UI - so we reload *all*
|
|
// providers that are in a frameworker-error state.
|
|
for (let provider of Social.providers) {
|
|
if (provider.enabled && provider.errorState == "frameworker-error") {
|
|
provider.reload();
|
|
}
|
|
}
|
|
}
|
|
|
|
parseQueryString();
|
|
setUpStrings();
|
|
]]></script>
|
|
</html>
|