Skip to content

Commit

Permalink
[focus] Import fennec error page (mozilla-mobile/focus-android#33)
Browse files Browse the repository at this point in the history
All the JS code has been removed, we'll be doing string substitutions on
the java side. (The alternative would be to write a java based resources
wrapper that we can then stuff into JS - that seems unnecessarily
complicated.)
  • Loading branch information
ahunt committed Mar 14, 2017
1 parent 28aabc6 commit e97a814
Show file tree
Hide file tree
Showing 2 changed files with 265 additions and 0 deletions.
38 changes: 38 additions & 0 deletions mobile/android/focus-android/app/src/main/res/raw/errorpage.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<!-- 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/. -->

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width; user-scalable=false;" />
<title>%pageTitle%</title>
<style>%css%</style>
</head>

<body id="errorPage" dir="ltr">
<!-- PAGE CONTAINER (for styling purposes only) -->
<div id="errorPageContainer">

<!-- Error Title -->
<div id="errorTitle">
<h1 id="et_dnsNotFound" class="errorTitleText">%messageShort%</h1>
</div>

<!-- LONG CONTENT (the section most likely to require scrolling) -->
<div id="errorLongContent">

<!-- Short Description -->
<div id="errorShortDesc">
<p id="errorShortDescText">%messageLong%</p>
</div>

</div>

<!-- Retry Button -->
<button id="errorTryAgain" onclick="window.location.reload()">%button%</button>

</div>
</body>
</html>
227 changes: 227 additions & 0 deletions mobile/android/focus-android/app/src/main/res/raw/errorpage_style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
/* 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/. */

html,
body {
margin: 0;
padding: 0;
height: 100%;
--moz-vertical-spacing: 10px;
--moz-background-height: 32px;
}

body {
/* Add a set of stripes at the top of pages */
background-image: linear-gradient(-45deg, #dfe8ee, #dfe8ee 33%,
#ecf0f3 33%, #ecf0f3 66%,
#dfe8ee 66%, #dfe8ee);
background-size: 64px var(--moz-background-height);
/* background-size: 64px 32px; */
background-repeat: repeat-x;

background-color: #f1f1f1;
padding: 0 20px;

font-weight: 300;
font-size: 13px;
-moz-text-size-adjust: none;
font-family: sans-serif;
}


ul {
/* Shove the list indicator so that its left aligned, but use outside so that text
* doesn't don't wrap the text around it */
padding: 0 1em;
margin: 0;
list-style: round outside none;
}

#errorShortDesc,
li:not(:last-of-type) {
/* Margins between the li and buttons below it won't be collapsed. Remove the bottom margin here. */
margin: var(--moz-vertical-spacing) 0;
}

li > button {
/* Removing the normal padding on the li so this stretched edge to edge. */
margin-left: -1em;
margin-right: -1em;
width: calc(100% + 2em);
}

/* Push the #ignoreWarningButton to the bottom on the blocked site page */
.blockedsite > #errorPageContainer > #errorLongContent {
flex: 1;
}

h1 {
margin: 0;
/* Since this has an underline, use padding for vertical spacing rather than margin */
padding: var(--moz-vertical-spacing) 0;
font-weight: 300;
border-bottom: 1px solid #e0e2e5;
}

h2 {
font-size: small;
padding: 0;
margin: var(--moz-vertical-spacing) 0;
}

p {
margin: var(--moz-vertical-spacing) 0;
}

button {
/* Force buttons to display: block here to try and enfoce collapsing margins */
display: block;
width: 100%;
border: none;
padding: 1rem;
font-family: sans-serif;
background-color: #e0e2e5;
font-weight: 300;
border-radius: 2px;
background-image: none;
margin: var(--moz-vertical-spacing) 0 0;
}

button.inProgress {
background-image: linear-gradient(-45deg, #dfe8ee, #dfe8ee 33%,
#ecf0f3 33%, #ecf0f3 66%,
#dfe8ee 66%, #dfe8ee);
background-size: 37px 5px;
background-repeat: repeat-x;
animation: progress 6s linear infinite;
}

@keyframes progress {
from { background-position: 0 100%; }
to { background-position: 100% 100%; }
}

.certerror {
background-image: linear-gradient(-45deg, #f0d000, #f0d000 33%,
#fedc00 33%, #fedc00 66%,
#f0d000 66%, #f0d000);
}

.blockedsite {
background-image: linear-gradient(-45deg, #9b2e2e, #9b2e2e 33%,
#a83232 33%, #a83232 66%,
#9b2e2e 66%, #9b2e2e);
background-color: #b14646;
color: white;
}

#errorPageContainer {
/* If the page is greater than 550px center the content.
* This number should be kept in sync with the media query for tablets below */
max-width: 550px;
margin: 0 auto;
transform: translateY(var(--moz-background-height));
padding-bottom: var(--moz-vertical-spacing);

min-height: calc(100% - var(--moz-background-height) - var(--moz-vertical-spacing));
display: flex;
flex-direction: column;
}

/* Expanders have a structure of
* <div collapsed="true/false">
* <h2 class="expander">Title</h2>
* <p>Content</p>
* </div>
*
* This shows an arrow to the right of the h2 element, and hides the content when collapsed="true". */
.expander {
margin: var(--moz-vertical-spacing) 0;
background-image: url("chrome://browser/skin/images/dropmarker.svg");
background-repeat: no-repeat;
/* dropmarker.svg is 10x7. Ensure that its centered in the middle of an 18x18 box */
background-position: 3px 5.5px;
background-size: 10px 7px;
padding-left: 18px;
}

div[collapsed="true"] > .expander {
background-image: url("chrome://browser/skin/images/dropmarker-right.svg");
/* dropmarker.svg is 7x10. Ensure that its centered in the middle of an 18x18 box */
background-size: 7px 10px;
background-position: 5.5px 4px;
}

div[hidden] > .expander,
div[hidden] > .expander + *,
div[collapsed="true"] > .expander + * {
display: none;
}

.blockedsite h1 {
border-bottom-color: #9b2e2e;
}

.blockedsite button {
background-color: #9b2e2e;
color: white;
}

/* Style warning button to look like a small text link in the
bottom. This is preferable to just using a text link
since there is already a mechanism in browser.js for trapping
oncommand events from unprivileged chrome pages (ErrorPageEventHandler).*/
#ignoreWarningButton {
width: calc(100% + 40px);
-moz-appearance: none;
background: #b14646;
border: none;
text-decoration: underline;
margin: 0;
margin-inline-start: -20px;
font-size: smaller;
border-radius: 0;
}

/* On large screen devices (hopefully a 7+ inch tablet, we already center content (see #errorPageContainer above).
Apply tablet specific styles here */
@media (min-width: 550px) {
button {
min-width: 160px;
width: auto;
}

/* If the tablet is tall as well, add some padding to make content feel a bit more centered */
@media (min-height: 550px) {
#errorPageContainer {
padding-top: 64px;
min-height: calc(100% - 64px);
}
}
}

#searchbox {
padding: 0;
display: flex;
margin: var(--moz-vertical-spacing) -1em;
}

#searchbox > input {
flex: 3;
padding: 0em 3em 0em 1em;
width: 100%;
border: none;
font-family: sans-serif;
background-image: none;
background-color: white;
border-radius-top-right: none;
border-radius-bottom-right: none;
}

#searchbox > button {
flex: 1;
margin: 0;
width: auto;
}

0 comments on commit e97a814

Please # to comment.