mirror of
https://github.com/Feodor2/Mypal68.git
synced 2025-06-18 14:55:44 -04:00
Remove some junk
This commit is contained in:
parent
5e770f1c1b
commit
a2bb15d20c
@ -1,3 +0,0 @@
|
||||
.title {
|
||||
background-image: url("chrome://browser/content/aboutRobots-icon.png");
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
var buttonClicked = false;
|
||||
var button = document.getElementById("errorTryAgain");
|
||||
button.onclick = function() {
|
||||
if (buttonClicked) {
|
||||
button.style.visibility = "hidden";
|
||||
} else {
|
||||
var newLabel = button.getAttribute("label2");
|
||||
button.textContent = newLabel;
|
||||
buttonClicked = true;
|
||||
}
|
||||
};
|
@ -1,62 +0,0 @@
|
||||
<!-- 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>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src chrome:" />
|
||||
<title data-l10n-id="page-title"></title>
|
||||
<link rel="stylesheet" href="chrome://global/skin/in-content/info-pages.css" media="all"/>
|
||||
<link rel="icon" type="image/png" id="favicon" href="chrome://browser/content/robot.ico"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/aboutRobots.css"/>
|
||||
<linkset>
|
||||
<link rel="localization" href="browser/aboutRobots.ftl"/>
|
||||
</linkset>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- PAGE CONTAINER (for styling purposes only) -->
|
||||
<div class="container">
|
||||
|
||||
<!-- Error Title -->
|
||||
<div class="title">
|
||||
<h1 class="title-text" data-l10n-id="error-title-text"></h1>
|
||||
</div>
|
||||
|
||||
<!-- LONG CONTENT (the section most likely to require scrolling) -->
|
||||
<div class="description">
|
||||
|
||||
<!-- Short Description -->
|
||||
<div>
|
||||
<p id="errorShortDescText" data-l10n-id="error-short-desc-text"></p>
|
||||
</div>
|
||||
|
||||
<!-- Long Description -->
|
||||
<div>
|
||||
<ul>
|
||||
<li data-l10n-id="error-long-desc1"></li>
|
||||
<li data-l10n-id="error-long-desc2"></li>
|
||||
<li data-l10n-id="error-long-desc3"></li>
|
||||
<li data-l10n-id="error-long-desc4"></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Short Description -->
|
||||
<div>
|
||||
<small data-l10n-id="error-trailer-desc-text"></small>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Button -->
|
||||
<div class="button-container">
|
||||
<button id="errorTryAgain"
|
||||
data-l10n-id="error-try-again"
|
||||
data-l10n-attrs="label2"></button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="chrome://browser/content/aboutRobots.js"/>
|
||||
</html>
|
@ -50,7 +50,7 @@ var gIdentityHandler = {
|
||||
* RegExp used to decide if an about url should be shown as being part of
|
||||
* the browser UI.
|
||||
*/
|
||||
_secureInternalUIWhitelist: /^(?:accounts|addons|cache|config|crashes|customizing|downloads|healthreport|license|permissions|preferences|rights|sessionrestore|support|welcomeback)(?:[?#]|$)/i,
|
||||
_secureInternalUIWhitelist: /^(?:accounts|addons|cache|config|crashes|customizing|downloads|healthreport|license|permissions|preferences|rights|sessionrestore|support)(?:[?#]|$)/i,
|
||||
|
||||
get _isBroken() {
|
||||
return this._state & Ci.nsIWebProgressListener.STATE_IS_BROKEN;
|
||||
|
@ -608,9 +608,7 @@ var gInitialPages = [
|
||||
"about:newtab",
|
||||
"about:home",
|
||||
"about:privatebrowsing",
|
||||
"about:welcomeback",
|
||||
"about:sessionrestore",
|
||||
"about:welcome",
|
||||
"about:newinstall",
|
||||
];
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
const OPEN_LOCATION_PREF = "browser.link.open_newwindow";
|
||||
const NON_REMOTE_PAGE = "about:welcomeback";
|
||||
const NON_REMOTE_PAGE = "about:support";
|
||||
|
||||
const { PrivateBrowsingUtils } = ChromeUtils.import(
|
||||
"resource://gre/modules/PrivateBrowsingUtils.jsm"
|
||||
|
@ -10,9 +10,6 @@ browser.jar:
|
||||
content/browser/aboutDialog.css (content/aboutDialog.css)
|
||||
content/browser/aboutRestartRequired.js (content/aboutRestartRequired.js)
|
||||
content/browser/aboutRestartRequired.xhtml (content/aboutRestartRequired.xhtml)
|
||||
content/browser/aboutRobots.xhtml (content/aboutRobots.xhtml)
|
||||
content/browser/aboutRobots.js (content/aboutRobots.js)
|
||||
content/browser/aboutRobots.css (content/aboutRobots.css)
|
||||
|
||||
content/browser/illustrations/error-connection-failure.svg (content/illustrations/error-connection-failure.svg)
|
||||
content/browser/illustrations/error-server-not-found.svg (content/illustrations/error-server-not-found.svg)
|
||||
@ -21,7 +18,6 @@ browser.jar:
|
||||
content/browser/illustrations/blue-berror.svg (content/illustrations/blue-berror.svg)
|
||||
content/browser/aboutNetError.xhtml (content/aboutNetError.xhtml)
|
||||
content/browser/aboutNetError.js (content/aboutNetError.js)
|
||||
content/browser/aboutRobots-icon.png (content/aboutRobots-icon.png)
|
||||
content/browser/aboutFrameCrashed.html (content/aboutFrameCrashed.html)
|
||||
content/browser/aboutTabCrashed.css (content/aboutTabCrashed.css)
|
||||
content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js)
|
||||
|
@ -70,13 +70,8 @@ static const RedirEntry kRedirMap[] = {
|
||||
{"rights", "chrome://global/content/aboutRights.xhtml",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
{"robots", "chrome://browser/content/aboutRobots.xhtml",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
{"sessionrestore", "chrome://browser/content/aboutSessionRestore.xhtml",
|
||||
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
|
||||
{"welcomeback", "chrome://browser/content/aboutWelcomeBack.xhtml",
|
||||
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
|
||||
// Actual activity stream URL for home and newtab are set in channel
|
||||
// creation
|
||||
{"home", "about:blank", ACTIVITY_STREAM_FLAGS},
|
||||
|
@ -18,11 +18,9 @@ pages = [
|
||||
'reader',
|
||||
'restartrequired',
|
||||
'rights',
|
||||
'robots',
|
||||
'sessionrestore',
|
||||
'tabcrashed',
|
||||
'welcome',
|
||||
'welcomeback',
|
||||
]
|
||||
|
||||
if defined('NIGHTLY_BUILD'):
|
||||
|
@ -1,75 +0,0 @@
|
||||
<?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;
|
||||
]>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
<head>
|
||||
<title data-l10n-id="welcome-back-tab-title"></title>
|
||||
<link rel="stylesheet" href="chrome://global/skin/in-content/info-pages.css" type="text/css" media="all"/>
|
||||
<link rel="stylesheet" href="chrome://browser/skin/aboutWelcomeBack.css" type="text/css" media="all"/>
|
||||
<link rel="icon" type="image/png" href="chrome://browser/skin/info.svg"/>
|
||||
<link rel="localization" href="browser/aboutSessionRestore.ftl"/>
|
||||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<script src="chrome://browser/content/aboutSessionRestore.js"/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="title">
|
||||
<h1 class="title-text" data-l10n-id="welcome-back-page-title"></h1>
|
||||
</div>
|
||||
|
||||
<div class="description">
|
||||
|
||||
<p data-l10n-id="welcome-back-page-info"></p>
|
||||
<!-- Note a href in the anchor below is added by JS -->
|
||||
<p data-l10n-id="welcome-back-page-info-link"><a id="linkMoreTroubleshooting" target="_blank" data-l10n-name="link-more"></a></p>
|
||||
|
||||
<div>
|
||||
<div class="radioRestoreContainer">
|
||||
<input class="radioRestoreButton" id="radioRestoreAll" type="radio"
|
||||
name="restore" checked="checked"/>
|
||||
<label class="radioRestoreLabel" for="radioRestoreAll" data-l10n-id="welcome-back-restore-all-label"></label>
|
||||
</div>
|
||||
|
||||
<div class="radioRestoreContainer">
|
||||
<input class="radioRestoreButton" id="radioRestoreChoose" type="radio"
|
||||
name="restore"/>
|
||||
<label class="radioRestoreLabel" for="radioRestoreChoose" data-l10n-id="welcome-back-restore-some-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tree-container">
|
||||
<xul:tree id="tabList" flex="1" seltype="single" hidecolumnpicker="true"
|
||||
onclick="onListClick(event);" onkeydown="onListKeyDown(event);">
|
||||
<xul:treecols>
|
||||
<xul:treecol cycler="true" id="restore" type="checkbox" data-l10n-id="restore-page-restore-header"/>
|
||||
<xul:splitter class="tree-splitter"/>
|
||||
<xul:treecol primary="true" id="title" data-l10n-id="restore-page-list-header" flex="1"/>
|
||||
</xul:treecols>
|
||||
<xul:treechildren flex="1"/>
|
||||
</xul:tree>
|
||||
</div>
|
||||
|
||||
<div class="button-container">
|
||||
<xul:button class="primary"
|
||||
id="errorTryAgain"
|
||||
data-l10n-id="welcome-back-restore-button"
|
||||
oncommand="restoreSession();"/>
|
||||
</div>
|
||||
|
||||
<input type="text" id="sessionData" style="display: none;"/>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -5,4 +5,3 @@
|
||||
browser.jar:
|
||||
* content/browser/migration/migration.xul (content/migration.xul)
|
||||
content/browser/migration/migration.js (content/migration.js)
|
||||
content/browser/aboutWelcomeBack.xhtml (content/aboutWelcomeBack.xhtml)
|
||||
|
@ -346,7 +346,7 @@ class TestFirefoxRefresh(MarionetteTestCase):
|
||||
tabURIs = self.runCode("""
|
||||
return [... gBrowser.browsers].map(b => b.currentURI && b.currentURI.spec)
|
||||
""")
|
||||
self.assertSequenceEqual(tabURIs, ["about:welcomeback"])
|
||||
self.assertSequenceEqual(tabURIs, ["about:welcome"])
|
||||
|
||||
# Dismiss modal dialog if any. This is mainly to dismiss the check for
|
||||
# default browser dialog if it shows up.
|
||||
|
@ -66,7 +66,7 @@ var SessionMigrationInternal = {
|
||||
win._closedTabs = [];
|
||||
return win;
|
||||
});
|
||||
let url = "about:welcomeback";
|
||||
let url = "about:welcome";
|
||||
let formdata = { id: { sessionData: state }, url };
|
||||
let entry = {
|
||||
url,
|
||||
|
@ -730,14 +730,6 @@ var SessionStoreInternal = {
|
||||
E10SUtils.SERIALIZED_SYSTEMPRINCIPAL,
|
||||
};
|
||||
state = { windows: [{ tabs: [{ entries: [entry], formdata }] }] };
|
||||
} else if (
|
||||
this._hasSingleTabWithURL(state.windows, "about:welcomeback")
|
||||
) {
|
||||
// On a single about:welcomeback URL that crashed, replace about:welcomeback
|
||||
// with about:sessionrestore, to make clear to the user that we crashed.
|
||||
state.windows[0].tabs[0].entries[0].url = "about:sessionrestore";
|
||||
state.windows[0].tabs[0].entries[0].triggeringPrincipal_base64 =
|
||||
E10SUtils.SERIALIZED_SYSTEMPRINCIPAL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5288,8 +5280,7 @@ var SessionStoreInternal = {
|
||||
|
||||
// don't wrap a single about:sessionrestore page
|
||||
if (
|
||||
this._hasSingleTabWithURL(winData, "about:sessionrestore") ||
|
||||
this._hasSingleTabWithURL(winData, "about:welcomeback")
|
||||
this._hasSingleTabWithURL(winData, "about:sessionrestore")
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
@ -1,28 +0,0 @@
|
||||
# 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/.
|
||||
|
||||
### These strings are used in the about:robots page, which ties in with the
|
||||
### robots theme used in the Firefox 3 Beta 2/3 first run pages.
|
||||
### They're just meant to be fun and whimsical, with references to some geeky
|
||||
### but well-known robots in movies and books. Be creative with translations!
|
||||
|
||||
# Nonsense line from the movie "The Day The Earth Stood Still". No translation needed.
|
||||
page-title = Gort! Klaatu barada nikto!
|
||||
# Movie: Logan's Run... Box (cyborg): "Welcome Humans! I am ready for you."
|
||||
error-title-text = Welcome Humans!
|
||||
# Movie: The Day The Earth Stood Still. Spoken by Klaatu.
|
||||
error-short-desc-text = We have come to visit you in peace and with goodwill!
|
||||
# Various books by Isaac Asimov. http://en.wikipedia.org/wiki/Three_Laws_of_Robotics
|
||||
error-long-desc1 = Robots may not injure a human being or, through inaction, allow a human being to come to harm.
|
||||
# Movie: Blade Runner. Batty: "I've seen things you people wouldn’t believe..."
|
||||
error-long-desc2 = Robots have seen things you people wouldn’t believe.
|
||||
# Book: Hitchhiker’s Guide To The Galaxy. What the Sirius Cybernetics Corporation calls robots.
|
||||
error-long-desc3 = Robots are Your Plastic Pal Who’s Fun To Be With.
|
||||
# TV: Futurama. Bender's first line is "Bite my shiny metal ass."
|
||||
error-long-desc4 = Robots have shiny metal posteriors which should not be bitten.
|
||||
# TV: Battlestar Galactica (2004 series). From the opening text.
|
||||
error-trailer-desc-text = And they have a plan.
|
||||
# Book: Hitchhiker's Guide To The Galaxy. Arthur presses a button and it warns him.
|
||||
error-try-again = Try Again
|
||||
.label2 = Please do not press this button again.
|
@ -33,18 +33,3 @@ restore-page-try-again-button =
|
||||
restore-page-close-button =
|
||||
.label = Start New Session
|
||||
.accesskey = N
|
||||
|
||||
## The following strings are used in about:welcomeback
|
||||
welcome-back-tab-title = Success!
|
||||
welcome-back-page-title = Success!
|
||||
welcome-back-page-info = { -brand-short-name } is ready to go.
|
||||
|
||||
welcome-back-restore-button =
|
||||
.label = Let’s go!
|
||||
.accesskey = L
|
||||
|
||||
welcome-back-restore-all-label = Restore all windows & tabs
|
||||
welcome-back-restore-some-label = Restore only the ones you want
|
||||
|
||||
welcome-back-page-info-link = Your add-ons and customizations have been removed and your browser settings have been restored to their defaults. If this didn’t fix your issue, <a data-l10n-name="link-more">learn more about what you can do.</a>
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
imply_option('MOZ_PLACES', True)
|
||||
imply_option('MOZ_SERVICES_HEALTHREPORT', True)
|
||||
imply_option('MOZ_SERVICES_SYNC', True)
|
||||
imply_option('MOZ_DEDICATED_PROFILES', True)
|
||||
imply_option('MOZ_BLOCK_PROFILE_DOWNGRADE', True)
|
||||
|
@ -1,55 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
.title {
|
||||
background-image: url("chrome://browser/skin/welcome-back.svg");
|
||||
}
|
||||
|
||||
.radioRestoreContainer:not(:last-child) {
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
/* tablist starts out hidden, but JS may make it visible in response to
|
||||
clicks on the radio buttons by setting an "available" attribute.
|
||||
*/
|
||||
.tree-container:not([available]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
treechildren::-moz-tree-image(icon),
|
||||
treechildren::-moz-tree-image(noicon) {
|
||||
padding-right: 2px;
|
||||
margin: 0 2px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
treechildren::-moz-tree-image(noicon) {
|
||||
list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.svg");
|
||||
-moz-context-properties: fill;
|
||||
fill: currentColor;
|
||||
}
|
||||
treechildren::-moz-tree-image(container, noicon) {
|
||||
list-style-image: url("chrome://browser/skin/window.svg");
|
||||
}
|
||||
|
||||
treechildren::-moz-tree-image(checked) {
|
||||
list-style-image: url("chrome://global/skin/icons/check.svg");
|
||||
-moz-context-properties: fill, stroke;
|
||||
fill: #2292d0;
|
||||
}
|
||||
treechildren::-moz-tree-image(checked, selected) {
|
||||
fill: white;
|
||||
stroke: #0095dd;
|
||||
}
|
||||
|
||||
treechildren::-moz-tree-image(partial) {
|
||||
list-style-image: url("chrome://global/skin/icons/check-partial.svg");
|
||||
-moz-context-properties: fill, stroke;
|
||||
fill: #2292d0;
|
||||
}
|
||||
treechildren::-moz-tree-image(partial, selected) {
|
||||
fill: white;
|
||||
stroke: #0095dd;
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<?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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
|
||||
<defs>
|
||||
<linearGradient id="gradient" gradientUnits="userSpaceOnUse" x1="0" y1="30" x2="60" y2="30">
|
||||
<stop offset="0" style="stop-color: #fd6b0c"/>
|
||||
<stop offset="1" style="stop-color: #e65206"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path fill="url(#gradient)" d="M45.844,41.272c0.018-0.08,0.039-0.156,0.055-0.239c0.097-0.35,0.164-0.735,0.215-1.136 c0.375-0.835,0.747-2.172,0.5-3.936c-0.021-0.326-0.073-0.669-0.14-1.018c4.957-3.957,24.499-20.957,5.137-29.039 c0,0,4.23,6.9-2.898,13.92c-4.332,4.266-5.37,8.436-5.058,11.538c0,0,0.036,0.21,0.096,0.564c-1.62-2.178-5.652-4.53-14.256-2.022 c-8.736,2.544-7.476,4.518-9.234,3.606c0,0-0.93-2.166-3.564-4.452c0,0,0.726-4.416-0.42-5.472 c-1.146-1.062-2.628,2.244-5.346,3.432c-2.712,1.188-6.234,2.928-6.57,6.024l-3.39,2.328c0,0-1.446,0.684-0.81,1.32 c0.636,0.636,1.698,1.44,3.012,1.314c1.314-0.126,2.928-0.51,4.158-0.168c1.23,0.336,2.202,2.67,4.872,6.102 c0,0,2.142,4.542,6.936,5.412c0.036,0.024,0.072,0.054,0.108,0.078c1.404,1.026,4.584,3.336,5.148,3.834 c0.744,0.636,7.422,1.158,9.486,0.474c0,0-0.6-3.408-5.04-1.944c0,0-2.082,0.078-4.59-2.892c0.228-0.072,0.456-0.156,0.69-0.252 c1.056-0.402,2.184-0.966,3.39-1.728c0,0,1.542-0.774,3.846-1.356c0,0,2.497-0.555,4.376,0.455c2.542,1.829,6.483,2.442,12.58-0.566 c0,0,5.357,5.102,7.575,8.644c0,0,4.916-1.89-5.065-11.76C51.643,42.336,47.455,42.801,45.844,41.272z"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.7 KiB |
@ -15,7 +15,6 @@
|
||||
skin/classic/browser/aboutLibrary.css (../shared/aboutLibrary.css)
|
||||
skin/classic/browser/aboutFrameCrashed.css (../shared/aboutFrameCrashed.css)
|
||||
skin/classic/browser/aboutTabCrashed.css (../shared/aboutTabCrashed.css)
|
||||
skin/classic/browser/aboutWelcomeBack.css (../shared/aboutWelcomeBack.css)
|
||||
skin/classic/browser/setDesktopBackground.css (../shared/setDesktopBackground.css)
|
||||
skin/classic/browser/addons/addon-install-blocked.svg (../shared/addons/addon-install-blocked.svg)
|
||||
skin/classic/browser/addons/addon-install-confirm.svg (../shared/addons/addon-install-confirm.svg)
|
||||
@ -249,7 +248,6 @@
|
||||
skin/classic/browser/cert-error.svg (../shared/incontent-icons/cert-error.svg)
|
||||
skin/classic/browser/wifi.svg (../shared/incontent-icons/wifi.svg)
|
||||
skin/classic/browser/tab-crashed.svg (../shared/incontent-icons/tab-crashed.svg)
|
||||
skin/classic/browser/welcome-back.svg (../shared/incontent-icons/welcome-back.svg)
|
||||
skin/classic/browser/readerMode.svg (../shared/reader/readerMode.svg)
|
||||
skin/classic/browser/panic-panel/header.png (../shared/panic-panel/header.png)
|
||||
skin/classic/browser/panic-panel/header@2x.png (../shared/panic-panel/header@2x.png)
|
||||
|
@ -89,8 +89,6 @@ static const RedirEntry kRedirMap[] = {
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
|
||||
nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGED_CHILD},
|
||||
{"mozilla", "chrome://global/content/mozilla.xhtml",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
|
||||
{"neterror", "chrome://global/content/netError.xhtml",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::URI_CAN_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
|
||||
|
@ -120,7 +120,6 @@ def fennec_nightly(nightly):
|
||||
return bool(nightly)
|
||||
|
||||
|
||||
imply_option('MOZ_SERVICES_HEALTHREPORT', True)
|
||||
imply_option('MOZ_ANDROID_HISTORY', True)
|
||||
imply_option('--enable-small-chunk-size', True)
|
||||
|
||||
|
@ -6218,12 +6218,6 @@
|
||||
value: false
|
||||
mirror: always
|
||||
|
||||
# Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
|
||||
- name: network.traffic_analyzer.enabled
|
||||
type: RelaxedAtomicBool
|
||||
value: false
|
||||
mirror: always
|
||||
|
||||
- name: network.delay.tracking.load
|
||||
type: uint32_t
|
||||
value: 0
|
||||
|
@ -2197,7 +2197,7 @@ pref("security.dialog_enable_delay", 1000);
|
||||
pref("security.notification_enable_delay", 500);
|
||||
|
||||
#if defined(DEBUG) && !defined(ANDROID)
|
||||
pref("csp.about_uris_without_csp", "blank,printpreview,srcdoc,about,addons,cache-entry,config,crashes,debugging,devtools,downloads,home,memory,networking,newtab,performance,plugins,policies,profiles,restartrequired,serviceworkers,sessionrestore,support,sync-log,telemetry,url-classifier,welcomeback");
|
||||
pref("csp.about_uris_without_csp", "blank,printpreview,srcdoc,about,addons,cache-entry,config,crashes,debugging,devtools,downloads,home,memory,networking,newtab,performance,plugins,policies,profiles,restartrequired,serviceworkers,sessionrestore,support,sync-log,telemetry,url-classifier");
|
||||
// the following prefs are for testing purposes only.
|
||||
pref("csp.overrule_about_uris_without_csp_whitelist", false);
|
||||
pref("csp.skip_about_page_has_csp_assert", false);
|
||||
|
@ -1,254 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
#include "HttpTrafficAnalyzer.h"
|
||||
#include "HttpLog.h"
|
||||
|
||||
#include "mozilla/StaticPrefs_network.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
#include "mozilla/Unused.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace net {
|
||||
|
||||
#define DEFINE_CATEGORY(_name, _idx) NS_LITERAL_CSTRING("Y" #_idx "_" #_name),
|
||||
static const nsCString gKeyName[] = {
|
||||
#include "HttpTrafficAnalyzer.inc"
|
||||
};
|
||||
#undef DEFINE_CATEGORY
|
||||
|
||||
#define DEFINE_CATEGORY(_name, _idx) \
|
||||
Telemetry::LABELS_HTTP_TRAFFIC_ANALYSIS_3::Y##_idx##_##_name,
|
||||
static const Telemetry::LABELS_HTTP_TRAFFIC_ANALYSIS_3 gTelemetryLabel[] = {
|
||||
#include "HttpTrafficAnalyzer.inc"
|
||||
};
|
||||
#undef DEFINE_CATEGORY
|
||||
|
||||
// ----------------------------------------------------
|
||||
// | Flags | Load Type |
|
||||
// ----------------------------------------------------
|
||||
// | nsIClassOfService::Leader | A |
|
||||
// | w/o nsIRequest::LOAD_BACKGROUND | B |
|
||||
// | w/ nsIRequest::LOAD_BACKGROUND | C |
|
||||
// ----------------------------------------------------
|
||||
// | Category | List Category |
|
||||
// ----------------------------------------------------
|
||||
// | Basic Disconnected List | I |
|
||||
// | Content | II |
|
||||
// | Fingerprinting | III |
|
||||
// ----------------------------------------------------
|
||||
// ====================================================
|
||||
// | Normal Mode |
|
||||
// ----------------------------------------------------
|
||||
// | Y = 0 for system principals |
|
||||
// | Y = 1 for first party |
|
||||
// | Y = 2 for non-listed third party type |
|
||||
// ----------------------------------------------------
|
||||
// | \Y\ | Type A | Type B | Type C |
|
||||
// ----------------------------------------------------
|
||||
// | Category I | 3 | 4 | 5 |
|
||||
// | Category II | 6 | 7 | 8 |
|
||||
// | Category III | 9 | 10 | 11 |
|
||||
// ====================================================
|
||||
// | Private Mode |
|
||||
// ----------------------------------------------------
|
||||
// | Y = 12 for system principals |
|
||||
// | Y = 13 for first party |
|
||||
// | Y = 14 for non-listed third party type |
|
||||
// ----------------------------------------------------
|
||||
// | \Y\ | Type A | Type B | Type C |
|
||||
// ----------------------------------------------------
|
||||
// | Category I | 15 | 16 | 17 |
|
||||
// | Category II | 18 | 19 | 20 |
|
||||
// | Category III | 21 | 22 | 23 |
|
||||
// ====================================================
|
||||
|
||||
HttpTrafficCategory HttpTrafficAnalyzer::CreateTrafficCategory(
|
||||
bool aIsPrivateMode, bool aIsSystemPrincipal, bool aIsThirdParty,
|
||||
ClassOfService aClassOfService, TrackingClassification aClassification) {
|
||||
uint8_t category = aIsPrivateMode ? 12 : 0;
|
||||
if (aIsSystemPrincipal) {
|
||||
MOZ_ASSERT_IF(!aIsPrivateMode,
|
||||
gKeyName[category].EqualsLiteral("Y0_N1Sys"));
|
||||
MOZ_ASSERT_IF(aIsPrivateMode,
|
||||
gKeyName[category].EqualsLiteral("Y12_P1Sys"));
|
||||
return static_cast<HttpTrafficCategory>(category);
|
||||
}
|
||||
++category;
|
||||
|
||||
if (!aIsThirdParty) {
|
||||
MOZ_ASSERT_IF(!aIsPrivateMode, gKeyName[category].EqualsLiteral("Y1_N1"));
|
||||
MOZ_ASSERT_IF(aIsPrivateMode, gKeyName[category].EqualsLiteral("Y13_P1"));
|
||||
return static_cast<HttpTrafficCategory>(category);
|
||||
}
|
||||
|
||||
switch (aClassification) {
|
||||
case TrackingClassification::eNone:
|
||||
++category;
|
||||
MOZ_ASSERT_IF(!aIsPrivateMode,
|
||||
gKeyName[category].EqualsLiteral("Y2_N3Oth"));
|
||||
MOZ_ASSERT_IF(aIsPrivateMode,
|
||||
gKeyName[category].EqualsLiteral("Y14_P3Oth"));
|
||||
return static_cast<HttpTrafficCategory>(category);
|
||||
case TrackingClassification::eBasic:
|
||||
category += 2;
|
||||
break;
|
||||
case TrackingClassification::eContent:
|
||||
category += 5;
|
||||
break;
|
||||
case TrackingClassification::eFingerprinting:
|
||||
category += 8;
|
||||
break;
|
||||
default:
|
||||
MOZ_ASSERT(false, "incorrect classification");
|
||||
return HttpTrafficCategory::eInvalid;
|
||||
}
|
||||
|
||||
switch (aClassOfService) {
|
||||
case ClassOfService::eLeader:
|
||||
MOZ_ASSERT_IF(
|
||||
!aIsPrivateMode,
|
||||
(aClassification == TrackingClassification::eBasic &&
|
||||
gKeyName[category].EqualsLiteral("Y3_N3BasicLead")) ||
|
||||
(aClassification == TrackingClassification::eContent &&
|
||||
gKeyName[category].EqualsLiteral("Y6_N3ContentLead")) ||
|
||||
(aClassification == TrackingClassification::eFingerprinting &&
|
||||
gKeyName[category].EqualsLiteral("Y9_N3FpLead")));
|
||||
MOZ_ASSERT_IF(
|
||||
aIsPrivateMode,
|
||||
(aClassification == TrackingClassification::eBasic &&
|
||||
gKeyName[category].EqualsLiteral("Y15_P3BasicLead")) ||
|
||||
(aClassification == TrackingClassification::eContent &&
|
||||
gKeyName[category].EqualsLiteral("Y18_P3ContentLead")) ||
|
||||
(aClassification == TrackingClassification::eFingerprinting &&
|
||||
gKeyName[category].EqualsLiteral("Y21_P3FpLead")));
|
||||
return static_cast<HttpTrafficCategory>(category);
|
||||
case ClassOfService::eBackground:
|
||||
++category;
|
||||
|
||||
MOZ_ASSERT_IF(
|
||||
!aIsPrivateMode,
|
||||
(aClassification == TrackingClassification::eBasic &&
|
||||
gKeyName[category].EqualsLiteral("Y4_N3BasicBg")) ||
|
||||
(aClassification == TrackingClassification::eContent &&
|
||||
gKeyName[category].EqualsLiteral("Y7_N3ContentBg")) ||
|
||||
(aClassification == TrackingClassification::eFingerprinting &&
|
||||
gKeyName[category].EqualsLiteral("Y10_N3FpBg")));
|
||||
MOZ_ASSERT_IF(
|
||||
aIsPrivateMode,
|
||||
(aClassification == TrackingClassification::eBasic &&
|
||||
gKeyName[category].EqualsLiteral("Y16_P3BasicBg")) ||
|
||||
(aClassification == TrackingClassification::eContent &&
|
||||
gKeyName[category].EqualsLiteral("Y19_P3ContentBg")) ||
|
||||
(aClassification == TrackingClassification::eFingerprinting &&
|
||||
gKeyName[category].EqualsLiteral("Y22_P3FpBg")));
|
||||
|
||||
return static_cast<HttpTrafficCategory>(category);
|
||||
case ClassOfService::eOther:
|
||||
category += 2;
|
||||
|
||||
MOZ_ASSERT_IF(
|
||||
!aIsPrivateMode,
|
||||
(aClassification == TrackingClassification::eBasic &&
|
||||
gKeyName[category].EqualsLiteral("Y5_N3BasicOth")) ||
|
||||
(aClassification == TrackingClassification::eContent &&
|
||||
gKeyName[category].EqualsLiteral("Y8_N3ContentOth")) ||
|
||||
(aClassification == TrackingClassification::eFingerprinting &&
|
||||
gKeyName[category].EqualsLiteral("Y11_N3FpOth")));
|
||||
MOZ_ASSERT_IF(
|
||||
aIsPrivateMode,
|
||||
(aClassification == TrackingClassification::eBasic &&
|
||||
gKeyName[category].EqualsLiteral("Y17_P3BasicOth")) ||
|
||||
(aClassification == TrackingClassification::eContent &&
|
||||
gKeyName[category].EqualsLiteral("Y20_P3ContentOth")) ||
|
||||
(aClassification == TrackingClassification::eFingerprinting &&
|
||||
gKeyName[category].EqualsLiteral("Y23_P3FpOth")));
|
||||
|
||||
return static_cast<HttpTrafficCategory>(category);
|
||||
}
|
||||
|
||||
MOZ_ASSERT(false, "incorrect class of service");
|
||||
return HttpTrafficCategory::eInvalid;
|
||||
}
|
||||
|
||||
nsresult HttpTrafficAnalyzer::IncrementHttpTransaction(
|
||||
HttpTrafficCategory aCategory) {
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
MOZ_ASSERT(StaticPrefs::network_traffic_analyzer_enabled());
|
||||
MOZ_ASSERT(aCategory != HttpTrafficCategory::eInvalid, "invalid category");
|
||||
|
||||
LOG(("HttpTrafficAnalyzer::IncrementHttpTransaction [%s] [this=%p]\n",
|
||||
gKeyName[aCategory].get(), this));
|
||||
|
||||
Telemetry::AccumulateCategoricalKeyed(NS_LITERAL_CSTRING("Transaction"),
|
||||
gTelemetryLabel[aCategory]);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult HttpTrafficAnalyzer::IncrementHttpConnection(
|
||||
HttpTrafficCategory aCategory) {
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
MOZ_ASSERT(StaticPrefs::network_traffic_analyzer_enabled());
|
||||
MOZ_ASSERT(aCategory != HttpTrafficCategory::eInvalid, "invalid category");
|
||||
|
||||
LOG(("HttpTrafficAnalyzer::IncrementHttpConnection [%s] [this=%p]\n",
|
||||
gKeyName[aCategory].get(), this));
|
||||
|
||||
Telemetry::AccumulateCategoricalKeyed(NS_LITERAL_CSTRING("Connection"),
|
||||
gTelemetryLabel[aCategory]);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult HttpTrafficAnalyzer::IncrementHttpConnection(
|
||||
nsTArray<HttpTrafficCategory>&& aCategories) {
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
MOZ_ASSERT(StaticPrefs::network_traffic_analyzer_enabled());
|
||||
MOZ_ASSERT(!aCategories.IsEmpty(), "empty category");
|
||||
|
||||
nsTArray<HttpTrafficCategory> categories(std::move(aCategories));
|
||||
|
||||
LOG(("HttpTrafficAnalyzer::IncrementHttpConnection size=%" PRIuPTR
|
||||
" [this=%p]\n",
|
||||
categories.Length(), this));
|
||||
|
||||
// divide categories into 4 parts:
|
||||
// 1) normal 1st-party (Y = 0)
|
||||
// 2) normal 3rd-party (0 < Y < 11)
|
||||
// 3) private 1st-party (Y = 11)
|
||||
// 4) private 3rd-party (11 < Y < 22)
|
||||
// Normal and private transaction should not share the same connection,
|
||||
// and we choose 3rd-party prior than 1st-party.
|
||||
HttpTrafficCategory best = categories[0];
|
||||
if ((best == 0 || best == 11) && categories.Length() > 1) {
|
||||
best = categories[1];
|
||||
}
|
||||
Unused << IncrementHttpConnection(best);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#define CLAMP_U32(num) \
|
||||
Clamp<uint32_t>(num, 0, std::numeric_limits<uint32_t>::max())
|
||||
|
||||
nsresult HttpTrafficAnalyzer::AccumulateHttpTransferredSize(
|
||||
HttpTrafficCategory aCategory, uint64_t aBytesRead, uint64_t aBytesSent) {
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
MOZ_ASSERT(StaticPrefs::network_traffic_analyzer_enabled());
|
||||
MOZ_ASSERT(aCategory != HttpTrafficCategory::eInvalid, "invalid category");
|
||||
|
||||
LOG(("HttpTrafficAnalyzer::AccumulateHttpTransferredSize [%s] rb=%" PRIu64 " "
|
||||
"sb=%" PRIu64 " [this=%p]\n",
|
||||
gKeyName[aCategory].get(), aBytesRead, aBytesSent, this));
|
||||
|
||||
// Telemetry supports uint32_t only, and we send KB here.
|
||||
auto total = CLAMP_U32((aBytesRead >> 10) + (aBytesSent >> 10));
|
||||
if (aBytesRead || aBytesSent) {
|
||||
Telemetry::ScalarAdd(Telemetry::ScalarID::NETWORKING_DATA_TRANSFERRED_V3_KB,
|
||||
NS_ConvertUTF8toUTF16(gKeyName[aCategory]), total);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
@ -1,48 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
#ifndef mozilla_netwerk_protocol_http_HttpTrafficAnalyzer_h
|
||||
#define mozilla_netwerk_protocol_http_HttpTrafficAnalyzer_h
|
||||
|
||||
namespace mozilla {
|
||||
namespace net {
|
||||
|
||||
#define DEFINE_CATEGORY(_name, _idx) e##_name = _idx##u,
|
||||
enum HttpTrafficCategory : uint8_t {
|
||||
#include "HttpTrafficAnalyzer.inc"
|
||||
eInvalid = 255,
|
||||
};
|
||||
#undef DEFINE_CATEGORY
|
||||
|
||||
class HttpTrafficAnalyzer final {
|
||||
public:
|
||||
enum ClassOfService : uint8_t {
|
||||
eLeader = 0,
|
||||
eBackground = 1,
|
||||
eOther = 255,
|
||||
};
|
||||
|
||||
enum TrackingClassification : uint8_t {
|
||||
eNone = 0,
|
||||
eBasic = 1,
|
||||
eContent = 2,
|
||||
eFingerprinting = 3,
|
||||
};
|
||||
|
||||
static HttpTrafficCategory CreateTrafficCategory(
|
||||
bool aIsPrivateMode, bool aIsSystemPrincipal, bool aIsThirdParty,
|
||||
ClassOfService aClassOfService, TrackingClassification aClassification);
|
||||
|
||||
nsresult IncrementHttpTransaction(HttpTrafficCategory aCategory);
|
||||
nsresult IncrementHttpConnection(HttpTrafficCategory aCategory);
|
||||
nsresult IncrementHttpConnection(nsTArray<HttpTrafficCategory>&& aCategories);
|
||||
nsresult AccumulateHttpTransferredSize(HttpTrafficCategory aCategory,
|
||||
uint64_t aBytesRead,
|
||||
uint64_t aBytesSent);
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_netwerk_protocol_http_HttpTrafficAnalyzer_h
|
@ -1,106 +0,0 @@
|
||||
// Type A) Parser blocking script loads will have an mContentPolicyType
|
||||
// indicating a script load and a nsIClassOfService::Leader class of service.
|
||||
// Type B) I couldn’t find a class flag that corresponds to synchronous loads
|
||||
// that block the load event, but I think a simple way to determine
|
||||
// which ones they are is to examine whether the channel belongs to a
|
||||
// load group and do not have a LOAD_BACKGROUND load flag.
|
||||
// If that condition holds, then it is blocking the load event of some document.
|
||||
// Type C) I think a simple way to find channels that don’t block document loads
|
||||
// (e.g. XHR and fetch) is to look for those which are in a load group
|
||||
// and have a LOAD_BACKGROUND load flag.
|
||||
|
||||
|
||||
// Y=0 - all system principal connections.
|
||||
DEFINE_CATEGORY(N1Sys, 0)
|
||||
|
||||
// Y=1 - all requests/connections/bytes that are first party.
|
||||
DEFINE_CATEGORY(N1, 1)
|
||||
|
||||
// Y=2 - all requests/connections/bytes that are third party
|
||||
// but don’t fall into other categories
|
||||
DEFINE_CATEGORY(N3Oth, 2)
|
||||
|
||||
// Y=3 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Analytics/Social/Advertising (Basic) Category and have a load of type (A)
|
||||
DEFINE_CATEGORY(N3BasicLead, 3)
|
||||
|
||||
// Y=4 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Analytics/Social/Advertising (Basic) Category and have a load of type (B)
|
||||
DEFINE_CATEGORY(N3BasicBg, 4)
|
||||
|
||||
// Y=5 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Analytics/Social/Advertising (Basic) Category and have a load of type (C)
|
||||
DEFINE_CATEGORY(N3BasicOth, 5)
|
||||
|
||||
// Y=6 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Content Category and have a load of type (A)
|
||||
DEFINE_CATEGORY(N3ContentLead, 6)
|
||||
|
||||
// Y=7 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Content Category and have a load of type (B)
|
||||
DEFINE_CATEGORY(N3ContentBg, 7)
|
||||
|
||||
// Y=8 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Content Category and have a load of type (C)
|
||||
DEFINE_CATEGORY(N3ContentOth, 8)
|
||||
|
||||
// Y=9 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Fingerprinting Category and have a load of type (A)
|
||||
DEFINE_CATEGORY(N3FpLead, 9)
|
||||
|
||||
// Y=10 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Fingerprinting Category and have a load of type (B)
|
||||
DEFINE_CATEGORY(N3FpBg, 10)
|
||||
|
||||
// Y=11 - all requests/connections/bytes associated with third party loads that
|
||||
// match the Fingerprinting Category and have a load of type (C)
|
||||
DEFINE_CATEGORY(N3FpOth, 11)
|
||||
|
||||
// Y=12 - private mode system principal connections.
|
||||
DEFINE_CATEGORY(P1Sys, 12)
|
||||
|
||||
// Y=13 - private mode and all requests/connections/bytes that are first party.
|
||||
DEFINE_CATEGORY(P1, 13)
|
||||
|
||||
// Y=14 - private mode and all requests/connections/bytes that are third party
|
||||
// but don’t fall into other categories
|
||||
DEFINE_CATEGORY(P3Oth, 14)
|
||||
|
||||
// Y=15 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Analytics/Social/Advertising (Basic) Category
|
||||
// and have a load of type (A)
|
||||
DEFINE_CATEGORY(P3BasicLead, 15)
|
||||
|
||||
// Y=16 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Analytics/Social/Advertising (Basic) Category
|
||||
// and have a load of type (B)
|
||||
DEFINE_CATEGORY(P3BasicBg, 16)
|
||||
|
||||
// Y=17 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Analytics/Social/Advertising (Basic) Category
|
||||
// and have a load of type (C)
|
||||
DEFINE_CATEGORY(P3BasicOth, 17)
|
||||
|
||||
// Y=18 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Content Category and have a load of type (A)
|
||||
DEFINE_CATEGORY(P3ContentLead, 18)
|
||||
|
||||
// Y=19 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Content Category and have a load of type (B)
|
||||
DEFINE_CATEGORY(P3ContentBg, 19)
|
||||
|
||||
// Y=20 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Content Category and have a load of type (C)
|
||||
DEFINE_CATEGORY(P3ContentOth, 20)
|
||||
|
||||
// Y=21 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Fingerprinting Category and have a load of type (A)
|
||||
DEFINE_CATEGORY(P3FpLead, 21)
|
||||
|
||||
// Y=22 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Fingerprinting Category and have a load of type (B)
|
||||
DEFINE_CATEGORY(P3FpBg, 22)
|
||||
|
||||
// Y=23 - private mode and all requests/connections/bytes associated with
|
||||
// third party loads that match the Fingerprinting Category and have a load of type (C)
|
||||
DEFINE_CATEGORY(P3FpOth, 23)
|
@ -82,7 +82,6 @@ UNIFIED_SOURCES += [
|
||||
'HttpChannelParent.cpp',
|
||||
'HttpChannelParentListener.cpp',
|
||||
'HttpInfo.cpp',
|
||||
'HttpTrafficAnalyzer.cpp',
|
||||
'InterceptedChannel.cpp',
|
||||
'InterceptedHttpChannel.cpp',
|
||||
'nsCORSListenerProxy.cpp',
|
||||
|
@ -149,10 +149,6 @@ class nsAHttpConnection : public nsISupports {
|
||||
|
||||
// A notification of the current active tab id change.
|
||||
virtual void TopLevelOuterContentWindowIdChanged(uint64_t windowId) = 0;
|
||||
|
||||
// categories set by nsHttpTransaction to identify how this connection is
|
||||
// being used.
|
||||
virtual void SetTrafficCategory(HttpTrafficCategory) = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsAHttpConnection, NS_AHTTPCONNECTION_IID)
|
||||
@ -229,9 +225,6 @@ NS_DEFINE_STATIC_IID_ACCESSOR(nsAHttpConnection, NS_AHTTPCONNECTION_IID)
|
||||
} \
|
||||
void SetSecurityCallbacks(nsIInterfaceRequestor* aCallbacks) override { \
|
||||
if (fwdObject) (fwdObject)->SetSecurityCallbacks(aCallbacks); \
|
||||
} \
|
||||
void SetTrafficCategory(HttpTrafficCategory aCategory) override { \
|
||||
if (fwdObject) (fwdObject)->SetTrafficCategory(aCategory); \
|
||||
}
|
||||
|
||||
// ThrottleResponse deliberately ommited since we want different implementation
|
||||
|
@ -113,7 +113,6 @@
|
||||
#include "mozilla/net/CookieSettings.h"
|
||||
#include "mozilla/net/NeckoChannelParams.h"
|
||||
#include "mozilla/net/UrlClassifierFeatureFactory.h"
|
||||
#include "HttpTrafficAnalyzer.h"
|
||||
#include "mozilla/dom/CanonicalBrowsingContext.h"
|
||||
#include "mozilla/dom/WindowGlobalParent.h"
|
||||
|
||||
@ -1267,13 +1266,11 @@ nsresult nsHttpChannel::SetupTransaction() {
|
||||
|
||||
EnsureTopLevelOuterContentWindowId();
|
||||
|
||||
HttpTrafficCategory category = CreateTrafficCategory();
|
||||
|
||||
nsCOMPtr<nsIAsyncInputStream> responseStream;
|
||||
rv = mTransaction->Init(
|
||||
mCaps, mConnectionInfo, &mRequestHead, mUploadStream, mReqContentLength,
|
||||
mUploadStreamHasHeaders, GetCurrentThreadEventTarget(), callbacks, this,
|
||||
mTopLevelOuterContentWindowId, category, getter_AddRefs(responseStream));
|
||||
mTopLevelOuterContentWindowId, getter_AddRefs(responseStream));
|
||||
if (NS_FAILED(rv)) {
|
||||
mTransaction = nullptr;
|
||||
return rv;
|
||||
@ -1289,54 +1286,6 @@ nsresult nsHttpChannel::SetupTransaction() {
|
||||
return rv;
|
||||
}
|
||||
|
||||
HttpTrafficCategory nsHttpChannel::CreateTrafficCategory() {
|
||||
MOZ_ASSERT(!mFirstPartyClassificationFlags ||
|
||||
!mThirdPartyClassificationFlags);
|
||||
|
||||
if (!StaticPrefs::network_traffic_analyzer_enabled()) {
|
||||
return HttpTrafficCategory::eInvalid;
|
||||
}
|
||||
|
||||
HttpTrafficAnalyzer::ClassOfService cos;
|
||||
{
|
||||
if ((mClassOfService & nsIClassOfService::Leader) &&
|
||||
mLoadInfo->GetExternalContentPolicyType() ==
|
||||
nsIContentPolicy::TYPE_SCRIPT) {
|
||||
cos = HttpTrafficAnalyzer::ClassOfService::eLeader;
|
||||
} else if (mLoadFlags & nsIRequest::LOAD_BACKGROUND) {
|
||||
cos = HttpTrafficAnalyzer::ClassOfService::eBackground;
|
||||
} else {
|
||||
cos = HttpTrafficAnalyzer::ClassOfService::eOther;
|
||||
}
|
||||
}
|
||||
|
||||
bool isThirdParty =
|
||||
nsContentUtils::IsThirdPartyWindowOrChannel(nullptr, this, mURI);
|
||||
HttpTrafficAnalyzer::TrackingClassification tc;
|
||||
{
|
||||
uint32_t flags = isThirdParty ? mThirdPartyClassificationFlags
|
||||
: mFirstPartyClassificationFlags;
|
||||
|
||||
using CF = nsIHttpChannel::ClassificationFlags;
|
||||
using TC = HttpTrafficAnalyzer::TrackingClassification;
|
||||
|
||||
if (flags & CF::CLASSIFIED_TRACKING_CONTENT) {
|
||||
tc = TC::eContent;
|
||||
} else if (flags & CF::CLASSIFIED_FINGERPRINTING_CONTENT) {
|
||||
tc = TC::eFingerprinting;
|
||||
} else if (flags & CF::CLASSIFIED_ANY_BASIC_TRACKING) {
|
||||
tc = TC::eBasic;
|
||||
} else {
|
||||
tc = TC::eNone;
|
||||
}
|
||||
}
|
||||
|
||||
bool isSystemPrincipal = mLoadInfo->LoadingPrincipal() &&
|
||||
mLoadInfo->LoadingPrincipal()->IsSystemPrincipal();
|
||||
return HttpTrafficAnalyzer::CreateTrafficCategory(
|
||||
NS_UsePrivateBrowsing(this), isSystemPrincipal, isThirdParty, cos, tc);
|
||||
}
|
||||
|
||||
enum class Report { Error, Warning };
|
||||
|
||||
// Helper Function to report messages to the console when the loaded
|
||||
|
@ -447,8 +447,6 @@ class nsHttpChannel final : public HttpBaseChannel,
|
||||
MOZ_MUST_USE nsresult ContinueAsyncRedirectChannelToURI(nsresult rv);
|
||||
MOZ_MUST_USE nsresult OpenRedirectChannel(nsresult rv);
|
||||
|
||||
HttpTrafficCategory CreateTrafficCategory();
|
||||
|
||||
/**
|
||||
* A function that takes care of reading STS and PKP headers and enforcing
|
||||
* STS and PKP load rules. After a secure channel is erected, STS and PKP
|
||||
|
@ -159,13 +159,8 @@ nsHttpConnection::~nsHttpConnection() {
|
||||
auto total =
|
||||
Clamp<uint32_t>((mTotalBytesRead >> 10) + (mTotalBytesWritten >> 10),
|
||||
0, std::numeric_limits<uint32_t>::max());
|
||||
Telemetry::ScalarAdd(
|
||||
Telemetry::ScalarID::NETWORKING_DATA_TRANSFERRED_CAPTIVE_PORTAL,
|
||||
total);
|
||||
}
|
||||
|
||||
Telemetry::ScalarAdd(
|
||||
Telemetry::ScalarID::NETWORKING_HTTP_CONNECTIONS_CAPTIVE_PORTAL, 1);
|
||||
}
|
||||
|
||||
if (mForceSendTimer) {
|
||||
@ -987,14 +982,6 @@ void nsHttpConnection::Close(nsresult reason, bool aIsShutdown) {
|
||||
mForceSendTimer = nullptr;
|
||||
}
|
||||
|
||||
if (!mTrafficCategory.IsEmpty()) {
|
||||
HttpTrafficAnalyzer* hta = gHttpHandler->GetHttpTrafficAnalyzer();
|
||||
if (hta) {
|
||||
hta->IncrementHttpConnection(std::move(mTrafficCategory));
|
||||
MOZ_ASSERT(mTrafficCategory.IsEmpty());
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_FAILED(reason)) {
|
||||
if (mIdleMonitoring) EndIdleMonitoring();
|
||||
|
||||
@ -2713,14 +2700,5 @@ bool nsHttpConnection::CanAcceptWebsocket() {
|
||||
return mSpdySession->CanAcceptWebsocket();
|
||||
}
|
||||
|
||||
void nsHttpConnection::SetTrafficCategory(HttpTrafficCategory aCategory) {
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
if (aCategory == HttpTrafficCategory::eInvalid ||
|
||||
mTrafficCategory.Contains(aCategory)) {
|
||||
return;
|
||||
}
|
||||
Unused << mTrafficCategory.AppendElement(aCategory);
|
||||
}
|
||||
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "mozilla/Mutex.h"
|
||||
#include "ARefBase.h"
|
||||
#include "TimingStruct.h"
|
||||
#include "HttpTrafficAnalyzer.h"
|
||||
|
||||
#include "nsIAsyncInputStream.h"
|
||||
#include "nsIAsyncOutputStream.h"
|
||||
@ -251,8 +250,6 @@ class nsHttpConnection final : public nsAHttpSegmentReader,
|
||||
// HTTP/2 websocket support
|
||||
bool CanAcceptWebsocket();
|
||||
|
||||
void SetTrafficCategory(HttpTrafficCategory aCategory);
|
||||
|
||||
private:
|
||||
// Value (set in mTCPKeepaliveConfig) indicates which set of prefs to use.
|
||||
enum TCPKeepaliveConfig {
|
||||
@ -439,7 +436,6 @@ class nsHttpConnection final : public nsAHttpSegmentReader,
|
||||
TimingStruct mBootstrappedTimings;
|
||||
bool mBootstrappedTimingsSet;
|
||||
|
||||
nsTArray<HttpTrafficCategory> mTrafficCategory;
|
||||
bool mThroughCaptivePortal;
|
||||
};
|
||||
|
||||
|
@ -2678,15 +2678,5 @@ bool nsHttpHandler::IsSpdyBlacklisted(const nsHttpConnectionInfo* ci) {
|
||||
return mBlacklistedSpdyOrigins.Contains(ci->GetOrigin());
|
||||
}
|
||||
|
||||
HttpTrafficAnalyzer* nsHttpHandler::GetHttpTrafficAnalyzer() {
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
|
||||
if (!StaticPrefs::network_traffic_analyzer_enabled()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return &mHttpTrafficAnalyzer;
|
||||
}
|
||||
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
||||
|
@ -11,7 +11,6 @@
|
||||
#include "nsHttpAuthCache.h"
|
||||
#include "nsHttpConnectionMgr.h"
|
||||
#include "ASpdySession.h"
|
||||
#include "HttpTrafficAnalyzer.h"
|
||||
|
||||
#include "mozilla/Mutex.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
@ -454,8 +453,6 @@ class nsHttpHandler final : public nsIHttpProtocolHandler,
|
||||
|
||||
bool DumpHpackTables() { return mDumpHpackTables; }
|
||||
|
||||
HttpTrafficAnalyzer* GetHttpTrafficAnalyzer();
|
||||
|
||||
bool GetThroughCaptivePortal() { return mThroughCaptivePortal; }
|
||||
|
||||
private:
|
||||
@ -704,8 +701,6 @@ class nsHttpHandler final : public nsIHttpProtocolHandler,
|
||||
// If true, the transactions from active tab will be dispatched first.
|
||||
bool mActiveTabPriority;
|
||||
|
||||
HttpTrafficAnalyzer mHttpTrafficAnalyzer;
|
||||
|
||||
private:
|
||||
// For Rate Pacing Certain Network Events. Only assign this pointer on
|
||||
// socket thread.
|
||||
|
@ -126,8 +126,7 @@ nsHttpTransaction::nsHttpTransaction()
|
||||
m0RTTInProgress(false),
|
||||
mDoNotTryEarlyData(false),
|
||||
mEarlyDataDisposition(EARLY_NONE),
|
||||
mFastOpenStatus(TFO_NOT_TRIED),
|
||||
mTrafficCategory(HttpTrafficCategory::eInvalid) {
|
||||
mFastOpenStatus(TFO_NOT_TRIED) {
|
||||
this->mSelfAddr.inet = {};
|
||||
this->mPeerAddr.inet = {};
|
||||
LOG(("Creating nsHttpTransaction @%p\n", this));
|
||||
@ -245,8 +244,7 @@ nsresult nsHttpTransaction::Init(
|
||||
nsIInputStream* requestBody, uint64_t requestContentLength,
|
||||
bool requestBodyHasHeaders, nsIEventTarget* target,
|
||||
nsIInterfaceRequestor* callbacks, nsITransportEventSink* eventsink,
|
||||
uint64_t topLevelOuterContentWindowId, HttpTrafficCategory trafficCategory,
|
||||
nsIAsyncInputStream** responseBody) {
|
||||
uint64_t topLevelOuterContentWindowId, nsIAsyncInputStream** responseBody) {
|
||||
nsresult rv;
|
||||
|
||||
LOG1(("nsHttpTransaction::Init [this=%p caps=%x]\n", this, caps));
|
||||
@ -259,8 +257,6 @@ nsresult nsHttpTransaction::Init(
|
||||
mTopLevelOuterContentWindowId = topLevelOuterContentWindowId;
|
||||
LOG((" window-id = %" PRIx64, mTopLevelOuterContentWindowId));
|
||||
|
||||
mTrafficCategory = trafficCategory;
|
||||
|
||||
mActivityDistributor = services::GetActivityDistributor();
|
||||
if (!mActivityDistributor) {
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
@ -520,16 +516,6 @@ void nsHttpTransaction::OnActivated() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mTrafficCategory != HttpTrafficCategory::eInvalid) {
|
||||
HttpTrafficAnalyzer* hta = gHttpHandler->GetHttpTrafficAnalyzer();
|
||||
if (hta) {
|
||||
hta->IncrementHttpTransaction(mTrafficCategory);
|
||||
}
|
||||
if (mConnection) {
|
||||
mConnection->SetTrafficCategory(mTrafficCategory);
|
||||
}
|
||||
}
|
||||
|
||||
if (mConnection && mRequestHead &&
|
||||
mConnection->Version() >= HttpVersion::v2_0) {
|
||||
// So this is fun. On http/2, we want to send TE: Trailers, to be
|
||||
@ -1194,19 +1180,6 @@ void nsHttpTransaction::Close(nsresult reason) {
|
||||
}
|
||||
}
|
||||
|
||||
if (mTrafficCategory != HttpTrafficCategory::eInvalid) {
|
||||
HttpTrafficAnalyzer* hta = gHttpHandler->GetHttpTrafficAnalyzer();
|
||||
if (hta) {
|
||||
hta->AccumulateHttpTransferredSize(mTrafficCategory, mTransferSize,
|
||||
mContentRead);
|
||||
}
|
||||
}
|
||||
|
||||
if (mThroughCaptivePortal) {
|
||||
Telemetry::ScalarAdd(
|
||||
Telemetry::ScalarID::NETWORKING_HTTP_TRANSACTIONS_CAPTIVE_PORTAL, 1);
|
||||
}
|
||||
|
||||
if (relConn && mConnection) {
|
||||
MutexAutoLock lock(mLock);
|
||||
mConnection = nullptr;
|
||||
|
@ -85,7 +85,7 @@ class nsHttpTransaction final : public nsAHttpTransaction,
|
||||
uint64_t reqContentLength, bool reqBodyIncludesHeaders,
|
||||
nsIEventTarget* consumerTarget, nsIInterfaceRequestor* callbacks,
|
||||
nsITransportEventSink* eventsink, uint64_t topLevelOuterContentWindowId,
|
||||
HttpTrafficCategory trafficCategory, nsIAsyncInputStream** responseBody);
|
||||
nsIAsyncInputStream** responseBody);
|
||||
|
||||
void OnActivated() override;
|
||||
|
||||
@ -484,7 +484,6 @@ class nsHttpTransaction final : public nsAHttpTransaction,
|
||||
// H2 websocket support
|
||||
RefPtr<SpdyConnectTransaction> mH2WSTransaction;
|
||||
|
||||
HttpTrafficCategory mTrafficCategory;
|
||||
bool mThroughCaptivePortal;
|
||||
};
|
||||
|
||||
|
@ -13998,45 +13998,5 @@
|
||||
],
|
||||
"keyed": true,
|
||||
"description": "Getting the number of errors in QuotaManager initialization."
|
||||
},
|
||||
"HTTP_TRAFFIC_ANALYSIS_3": {
|
||||
"record_in_processes": ["main"],
|
||||
"alert_emails": ["gachen@mozilla.com"],
|
||||
"bug_numbers": [1533363, 1546796, 1546906, 1550756],
|
||||
"expires_in_version": "73",
|
||||
"kind": "categorical",
|
||||
"n_values": 50,
|
||||
"labels": [
|
||||
"Y0_N1Sys",
|
||||
"Y1_N1",
|
||||
"Y2_N3Oth",
|
||||
"Y3_N3BasicLead",
|
||||
"Y4_N3BasicBg",
|
||||
"Y5_N3BasicOth",
|
||||
"Y6_N3ContentLead",
|
||||
"Y7_N3ContentBg",
|
||||
"Y8_N3ContentOth",
|
||||
"Y9_N3FpLead",
|
||||
"Y10_N3FpBg",
|
||||
"Y11_N3FpOth",
|
||||
"Y12_P1Sys",
|
||||
"Y13_P1",
|
||||
"Y14_P3Oth",
|
||||
"Y15_P3BasicLead",
|
||||
"Y16_P3BasicBg",
|
||||
"Y17_P3BasicOth",
|
||||
"Y18_P3ContentLead",
|
||||
"Y19_P3ContentBg",
|
||||
"Y20_P3ContentOth",
|
||||
"Y21_P3FpLead",
|
||||
"Y22_P3FpBg",
|
||||
"Y23_P3FpOth"
|
||||
],
|
||||
"keyed": true,
|
||||
"keys": [
|
||||
"Connection",
|
||||
"Transaction"
|
||||
],
|
||||
"description": "Numbers of HTTP transactions and connections by type. There are some categories separated by labels based on 5 parameters: 1. normal browsing or private browsing 2. system principal or not 3. first party or third party 4. class of service (Leader/Background/Others) 5. tracking classification (Basic/Content/FingerprintingContent)."
|
||||
}
|
||||
}
|
||||
|
@ -3387,112 +3387,6 @@ script.preloader:
|
||||
- 'main'
|
||||
- 'content'
|
||||
|
||||
networking:
|
||||
data_transferred_v3_kb:
|
||||
bug_numbers:
|
||||
- 1533363
|
||||
- 1546903
|
||||
- 1546796
|
||||
- 1546906
|
||||
- 1550756
|
||||
description: >
|
||||
How many KB of HTTP data transferred by type, there are some categories
|
||||
separated by keys based on 5 parameters:
|
||||
1. normal browsing or private browsing
|
||||
2. system principal or not
|
||||
3. first party or third party
|
||||
4. class of service (Leader/Background/Others)
|
||||
5. tracking classification (Basic/Content/FingerprintingContent)
|
||||
|
||||
Available keys are:
|
||||
"Y0_N1Sys",
|
||||
"Y1_N1",
|
||||
"Y2_N3Oth",
|
||||
"Y3_N3BasicLead",
|
||||
"Y4_N3BasicBg",
|
||||
"Y5_N3BasicOth",
|
||||
"Y6_N3ContentLead",
|
||||
"Y7_N3ContentBg",
|
||||
"Y8_N3ContentOth",
|
||||
"Y9_N3FpLead",
|
||||
"Y10_N3FpBg",
|
||||
"Y11_N3FpOth",
|
||||
"Y12_P1Sys",
|
||||
"Y13_P1",
|
||||
"Y14_P3Oth",
|
||||
"Y15_P3BasicLead",
|
||||
"Y16_P3BasicBg",
|
||||
"Y17_P3BasicOth",
|
||||
"Y18_P3ContentLead",
|
||||
"Y19_P3ContentBg",
|
||||
"Y20_P3ContentOth",
|
||||
"Y21_P3FpLead",
|
||||
"Y22_P3FpBg",
|
||||
"Y23_P3FpOth"
|
||||
expires: "73"
|
||||
keyed: true
|
||||
kind: uint
|
||||
notification_emails:
|
||||
- gachen@mozilla.com
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
data_transferred_captive_portal:
|
||||
bug_numbers:
|
||||
- 1543005
|
||||
description: >
|
||||
Hom many KB has been transfer over a captive portal during a subsession.
|
||||
expires: "73"
|
||||
keyed: false
|
||||
kind: uint
|
||||
notification_emails:
|
||||
- ddamjanovic@mozilla.com
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
http_transactions_captive_portal:
|
||||
bug_numbers:
|
||||
- 1543005
|
||||
description: >
|
||||
Number of http transactions transfer over a captive portal during a subsession.
|
||||
expires: "73"
|
||||
keyed: false
|
||||
kind: uint
|
||||
notification_emails:
|
||||
- ddamjanovic@mozilla.com
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
http_connections_captive_portal:
|
||||
bug_numbers:
|
||||
- 1543005
|
||||
description: >
|
||||
Number of http connections transfer over a captive portal during a subsession.
|
||||
expires: "73"
|
||||
keyed: false
|
||||
kind: uint
|
||||
notification_emails:
|
||||
- ddamjanovic@mozilla.com
|
||||
record_in_processes:
|
||||
- 'main'
|
||||
|
||||
policies:
|
||||
count:
|
||||
bug_numbers:
|
||||
- 1432897
|
||||
description: >-
|
||||
A uint with the number of active enterprise policies, collected once at
|
||||
startup.
|
||||
expires: never
|
||||
kind: uint
|
||||
notification_emails:
|
||||
- mkaply@mozilla.com
|
||||
release_channel_collection: opt-out
|
||||
products:
|
||||
- 'firefox'
|
||||
record_in_processes:
|
||||
- main
|
||||
|
||||
# The following section is for probes testing the Telemetry system. They will not be
|
||||
# submitted in pings and are only used for testing.
|
||||
telemetry.test:
|
||||
|
@ -46,7 +46,6 @@ toolkit.jar:
|
||||
content/global/filepicker.properties
|
||||
content/global/customElements.js
|
||||
content/global/globalOverlay.js
|
||||
content/global/mozilla.xhtml
|
||||
content/global/aboutMozilla.css
|
||||
content/global/preferencesBindings.js
|
||||
content/global/process-content.js
|
||||
|
@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html
|
||||
[
|
||||
<!ENTITY % mozillaDTD SYSTEM "chrome://global/locale/mozilla.dtd" >
|
||||
%mozillaDTD;
|
||||
<!ENTITY % directionDTD SYSTEM "chrome://global/locale/global.dtd" >
|
||||
%directionDTD;
|
||||
]>
|
||||
|
||||
<!-- 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 http-equiv="Content-Security-Policy" content="default-src 'none'; style-src chrome:" />
|
||||
<meta charset='utf-8' />
|
||||
<title>&mozilla.title.11.14;</title>
|
||||
<link rel="stylesheet" href="chrome://global/content/aboutMozilla.css"/>" type="text/css"/>
|
||||
</head>
|
||||
|
||||
<body dir="&locale.dir;">
|
||||
|
||||
<section>
|
||||
<p id="moztext">
|
||||
&mozilla.quote.11.14;
|
||||
</p>
|
||||
|
||||
<p id="from">
|
||||
&mozilla.from.11.14;
|
||||
</p>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,15 +0,0 @@
|
||||
<!-- 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/. -->
|
||||
|
||||
<!ENTITY mozilla.title.11.14
|
||||
'The Book of Mozilla, 11:14'>
|
||||
|
||||
<!ENTITY mozilla.quote.11.14
|
||||
'The Beast adopted <em>new raiment</em> and studied the ways of <em>Time</em> and <em>Space</em>
|
||||
and <em>Light</em> and the <em>Flow</em> of energy through the Universe. From its studies,
|
||||
the Beast fashioned new structures from <em>oxidised metal</em> and proclaimed their glories.
|
||||
And the Beast’s followers rejoiced, finding renewed purpose in these <em>teachings</em>.'>
|
||||
|
||||
<!ENTITY mozilla.from.11.14
|
||||
'from <strong>The Book of Mozilla,</strong> 11:14'>
|
@ -36,7 +36,6 @@
|
||||
locale/@AB_CD@/global/intl.css (%chrome/global/intl.css)
|
||||
locale/@AB_CD@/global/intl.properties (%chrome/global/intl.properties)
|
||||
locale/@AB_CD@/global/keys.properties (%chrome/global/keys.properties)
|
||||
locale/@AB_CD@/global/mozilla.dtd (%chrome/global/mozilla.dtd)
|
||||
#ifndef MOZ_FENNEC
|
||||
locale/@AB_CD@/global/narrate.properties (%chrome/global/narrate.properties)
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user