Merge mozilla inbound to mozilla-central a=merge

This commit is contained in:
arthur.iakab 2018-04-06 01:04:35 +03:00
Родитель 880875e801 dbeabc37e3
Коммит 1d5dc33cfd
46 изменённых файлов: 250 добавлений и 309 удалений

Просмотреть файл

@ -166,7 +166,7 @@ CustomizeMode.prototype = {
},
_updateLWThemeButtonIcon() {
let lwthemeButton = this.document.getElementById("customization-lwtheme-button");
let lwthemeButton = this.$("customization-lwtheme-button");
let lwthemeIcon = this.document.getAnonymousElementByAttribute(lwthemeButton,
"class", "button-icon");
lwthemeIcon.style.backgroundImage = LightweightThemeManager.currentTheme ?
@ -262,7 +262,7 @@ CustomizeMode.prototype = {
// Always disable the reset button at the start of customize mode, it'll be re-enabled
// if necessary when we finish entering:
let resetButton = this.document.getElementById("customization-reset-button");
let resetButton = this.$("customization-reset-button");
resetButton.setAttribute("disabled", "true");
(async () => {
@ -398,8 +398,8 @@ CustomizeMode.prototype = {
this.togglePong(false);
// Disable the reset and undo reset buttons while transitioning:
let resetButton = this.document.getElementById("customization-reset-button");
let undoResetButton = this.document.getElementById("customization-undo-reset-button");
let resetButton = this.$("customization-reset-button");
let undoResetButton = this.$("customization-undo-reset-button");
undoResetButton.hidden = resetButton.disabled = true;
this._transitioning = true;
@ -653,7 +653,7 @@ CustomizeMode.prototype = {
}
}
if (gCosmeticAnimationsEnabled) {
let overflowButton = this.document.getElementById("nav-bar-overflow-button");
let overflowButton = this.$("nav-bar-overflow-button");
BrowserUtils.setToolbarButtonHeightProperty(overflowButton).then(() => {
overflowButton.setAttribute("animate", "true");
overflowButton.addEventListener("animationend", function onAnimationEnd(event) {
@ -949,7 +949,7 @@ CustomizeMode.prototype = {
toolbarItem.setAttribute("command", commandID);
// XXX Bug 309953 - toolbarbuttons aren't in sync with their commands after customizing
let command = this.document.getElementById(commandID);
let command = this.$(commandID);
if (command && command.hasAttribute("disabled")) {
toolbarItem.setAttribute("disabled", command.getAttribute("disabled"));
}
@ -1017,7 +1017,7 @@ CustomizeMode.prototype = {
_addDragHandlers(aTarget) {
// Allow dropping on the padding of the arrow panel.
if (aTarget.id == CustomizableUI.AREA_FIXED_OVERFLOW_PANEL) {
aTarget = this.document.getElementById("customization-panelHolder");
aTarget = this.$("customization-panelHolder");
}
aTarget.addEventListener("dragstart", this, true);
aTarget.addEventListener("dragover", this, true);
@ -1038,7 +1038,7 @@ CustomizeMode.prototype = {
// Remove handler from different target if it was added to
// allow dropping on the padding of the arrow panel.
if (aTarget.id == CustomizableUI.AREA_FIXED_OVERFLOW_PANEL) {
aTarget = this.document.getElementById("customization-panelHolder");
aTarget = this.$("customization-panelHolder");
}
aTarget.removeEventListener("dragstart", this, true);
aTarget.removeEventListener("dragover", this, true);
@ -1085,7 +1085,7 @@ CustomizeMode.prototype = {
reset() {
this.resetting = true;
// Disable the reset button temporarily while resetting:
let btn = this.document.getElementById("customization-reset-button");
let btn = this.$("customization-reset-button");
BrowserUITelemetry.countCustomizationEvent("reset");
btn.disabled = true;
return (async () => {
@ -1200,7 +1200,7 @@ CustomizeMode.prototype = {
},
onWidgetDestroyed(aWidgetId) {
let wrapper = this.document.getElementById("wrapper-" + aWidgetId);
let wrapper = this.$("wrapper-" + aWidgetId);
if (wrapper) {
wrapper.remove();
}
@ -1210,7 +1210,7 @@ CustomizeMode.prototype = {
// If the node was added to an area, we would have gotten an onWidgetAdded notification,
// plus associated DOM change notifications, so only do stuff for the palette:
if (!aArea) {
let widgetNode = this.document.getElementById(aWidgetId);
let widgetNode = this.$(aWidgetId);
if (widgetNode) {
this.wrapToolbarItem(widgetNode, "palette");
} else {
@ -1462,8 +1462,8 @@ CustomizeMode.prototype = {
},
_clearLWThemesMenu(panel) {
let footer = this.document.getElementById("customization-lwtheme-menu-footer");
let recommendedLabel = this.document.getElementById("customization-lwtheme-menu-recommended");
let footer = this.$("customization-lwtheme-menu-footer");
let recommendedLabel = this.$("customization-lwtheme-menu-recommended");
for (let element of [footer, recommendedLabel]) {
while (element.previousSibling &&
element.previousSibling.localName == "toolbarbutton") {
@ -1487,7 +1487,7 @@ CustomizeMode.prototype = {
_updateEmptyPaletteNotice() {
let paletteItems = this.visiblePalette.getElementsByTagName("toolbarpaletteitem");
let whimsyButton = this.document.getElementById("whimsy-button");
let whimsyButton = this.$("whimsy-button");
if (paletteItems.length == 1 &&
paletteItems[0].id.includes("wrapper-customizableui-special-spring")) {
@ -1499,12 +1499,12 @@ CustomizeMode.prototype = {
},
_updateResetButton() {
let btn = this.document.getElementById("customization-reset-button");
let btn = this.$("customization-reset-button");
btn.disabled = CustomizableUI.inDefaultState;
},
_updateUndoResetButton() {
let undoResetButton = this.document.getElementById("customization-undo-reset-button");
let undoResetButton = this.$("customization-undo-reset-button");
undoResetButton.hidden = !CustomizableUI.canUndoReset;
},
@ -1556,7 +1556,7 @@ CustomizeMode.prototype = {
let originalTarget = aEvent.originalTarget;
if (this._isUnwantedDragDrop(aEvent) ||
this.visiblePalette.contains(originalTarget) ||
this.document.getElementById("customization-panelHolder").contains(originalTarget)) {
this.$("customization-panelHolder").contains(originalTarget)) {
return;
}
// We have a dragover/drop on the palette.
@ -1566,7 +1566,7 @@ CustomizeMode.prototype = {
this._onDragDrop(aEvent, this.visiblePalette);
}
};
let contentContainer = this.document.getElementById("customization-content-container");
let contentContainer = this.$("customization-content-container");
contentContainer.addEventListener("dragover", this.paletteDragHandler, true);
contentContainer.addEventListener("drop", this.paletteDragHandler, true);
},
@ -1575,7 +1575,7 @@ CustomizeMode.prototype = {
DragPositionManager.stop();
this._removeDragHandlers(this.visiblePalette);
let contentContainer = this.document.getElementById("customization-content-container");
let contentContainer = this.$("customization-content-container");
contentContainer.removeEventListener("dragover", this.paletteDragHandler, true);
contentContainer.removeEventListener("drop", this.paletteDragHandler, true);
delete this.paletteDragHandler;
@ -2113,7 +2113,7 @@ CustomizeMode.prototype = {
let makeSpaceImmediately = false;
if (!gDraggingInToolbars.has(targetArea.id)) {
gDraggingInToolbars.add(targetArea.id);
let draggedWrapper = this.document.getElementById("wrapper-" + aDraggedItemId);
let draggedWrapper = this.$("wrapper-" + aDraggedItemId);
let originArea = this._getCustomizableParent(draggedWrapper);
makeSpaceImmediately = originArea == targetArea;
}
@ -2184,7 +2184,7 @@ CustomizeMode.prototype = {
_setGridDragActive(aDragOverNode, aDraggedItem, aValue) {
let targetArea = this._getCustomizableParent(aDragOverNode);
let draggedWrapper = this.document.getElementById("wrapper-" + aDraggedItem.id);
let draggedWrapper = this.$("wrapper-" + aDraggedItem.id);
let originArea = this._getCustomizableParent(draggedWrapper);
let positionManager = DragPositionManager.getManagerForArea(targetArea);
let draggedSize = this._getDragItemSize(aDragOverNode, aDraggedItem);
@ -2362,13 +2362,13 @@ CustomizeMode.prototype = {
},
_setupDownloadAutoHideToggle() {
this.document.getElementById(kDownloadAutohidePanelId).removeAttribute("hidden");
this.$(kDownloadAutohidePanelId).removeAttribute("hidden");
this.window.addEventListener("click", this._checkForDownloadsClick, true);
},
_teardownDownloadAutoHideToggle() {
this.window.removeEventListener("click", this._checkForDownloadsClick, true);
this.document.getElementById(kDownloadAutohidePanelId).hidePopup();
this.$(kDownloadAutohidePanelId).hidePopup();
},
_maybeMoveDownloadsButtonToNavBar() {
@ -2458,7 +2458,7 @@ CustomizeMode.prototype = {
// It's possible we're toggling for a reason other than hitting
// the button (we might be exiting, for example), so make sure that
// the state and checkbox are in sync.
let whimsyButton = this.document.getElementById("whimsy-button");
let whimsyButton = this.$("whimsy-button");
whimsyButton.checked = enabled;
if (enabled) {

Просмотреть файл

@ -10,7 +10,6 @@ skip-if = os == "linux" # Bug 952422
[browser_iframe_gone_mid_download.js]
[browser_indicatorDrop.js]
[browser_libraryDrop.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[browser_downloads_panel_block.js]
skip-if = true # Bug 1352792
[browser_downloads_panel_height.js]

Просмотреть файл

@ -91,7 +91,6 @@ skip-if = (os == 'win' && !debug) # bug 1352668
support-files =
../../../../../devtools/client/inspector/extensions/test/head_devtools_inspector_sidebar.js
[browser_ext_find.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[browser_ext_geckoProfiler_symbolicate.js]
[browser_ext_getViews.js]
[browser_ext_history_redirect.js]

Просмотреть файл

@ -1,8 +1,12 @@
.. _uitelemetry:
=======================
UITelemetry data format
=======================
==================================
UITelemetry data format (obsolete)
==================================
.. note::
``UITelemetry`` is deprecated. As of Firefox 61, ``UITelemetry`` is no longer reported.
UI Telemetry sends its data as a JSON blob. This document describes the different parts
of the JSON blob.

Просмотреть файл

@ -11,8 +11,6 @@ ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.defineModuleGetter(this, "AppConstants",
"resource://gre/modules/AppConstants.jsm");
ChromeUtils.defineModuleGetter(this, "UITelemetry",
"resource://gre/modules/UITelemetry.jsm");
ChromeUtils.defineModuleGetter(this, "RecentWindow",
"resource:///modules/RecentWindow.jsm");
ChromeUtils.defineModuleGetter(this, "CustomizableUI",
@ -166,18 +164,6 @@ const BUCKET_SEPARATOR = "|";
var BrowserUITelemetry = {
init() {
UITelemetry.addSimpleMeasureFunction("toolbars",
this.getToolbarMeasures.bind(this));
UITelemetry.addSimpleMeasureFunction("contextmenu",
this.getContextMenuInfo.bind(this));
// Ensure that UITour.jsm remains lazy-loaded, yet always registers its
// simple measure function with UITelemetry.
UITelemetry.addSimpleMeasureFunction("UITour",
() => UITour.getTelemetry());
UITelemetry.addSimpleMeasureFunction("syncstate",
this.getSyncState.bind(this));
Services.obs.addObserver(this, "autocomplete-did-enter-text");
CustomizableUI.addListener(this);

Просмотреть файл

@ -31,7 +31,7 @@ skip-if = !e10s
[browser_SitePermissions_expiry.js]
[browser_SitePermissions_tab_urls.js]
[browser_taskbar_preview.js]
skip-if = os != "win" || (os == 'win' && ccov) # Bug 1423667
skip-if = os != "win"
[browser_UnsubmittedCrashHandler.js]
run-if = crashreporter
[browser_urlBar_zoom.js]

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 91 B

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 208 B

Просмотреть файл

@ -450,9 +450,7 @@ Tools.accessibility = {
label: l10n("accessibility.label"),
panelLabel: l10n("accessibility.panelLabel"),
get tooltip() {
return l10n("accessibility.tooltip",
(osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+") +
l10n("accessibility.commandkey"));
return l10n("accessibility.tooltip2");
},
inMenu: true,

Просмотреть файл

@ -256,11 +256,11 @@ accessibility.panelLabel=Accessibility Panel
# Used for the menuitem in the tool menu
accessibility.accesskey=y
# LOCALIZATION NOTE (accessibility.tooltip):
# LOCALIZATION NOTE (accessibility.tooltip2):
# This string is displayed in the tooltip of the tab when the Accessibility is
# displayed inside the developer tools window.
# Keyboard shortcut for Accessibility panel will be shown inside the brackets.
accessibility.tooltip=Accessibility (%S)
accessibility.tooltip2=Accessibility
# LOCALIZATION NOTE (toolbox.buttons.splitconsole):
# This is the tooltip of the button in the toolbox toolbar used to toggle

Просмотреть файл

@ -167,12 +167,6 @@ XPCOMUtils.defineLazyGetter(this, "KeyShortcuts", function() {
shortcut: KeyShortcutsBundle.GetStringFromName("dom.commandkey"),
modifiers
},
// Key for opening the Accessibility Panel
{
toolId: "accessibility",
shortcut: KeyShortcutsBundle.GetStringFromName("accessibility.commandkey"),
modifiers
},
];
});

Просмотреть файл

@ -65,7 +65,3 @@ storage.commandkey=VK_F9
# LOCALIZATION NOTE (dom.commandkey):
# Key pressed to open a toolbox with the DOM panel selected
dom.commandkey=W
# LOCALIZATION NOTE (accessibility.commandkey):
# Key pressed to open a toolbox with the accessibility panel selected
accessibility.commandkey=Y

Просмотреть файл

@ -285,7 +285,6 @@ BroadcastChannel::BroadcastChannel(nsPIDOMWindowInner* aWindow,
const nsAString& aChannel)
: DOMEventTargetHelper(aWindow)
, mChannel(aChannel)
, mInnerID(0)
, mState(StateActive)
{
// Window can be null in workers
@ -387,17 +386,6 @@ BroadcastChannel::Constructor(const GlobalObject& aGlobal,
bc->mActor->SetParent(bc);
if (!bc->mWorkerRef) {
MOZ_ASSERT(window);
bc->mInnerID = window->WindowID();
// Register as observer for inner-window-destroyed.
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
if (obs) {
obs->AddObserver(bc, "inner-window-destroyed", false);
}
}
return bc.forget();
}
@ -490,34 +478,6 @@ BroadcastChannel::Shutdown()
IgnoreKeepAliveIfHasListenersFor(NS_LITERAL_STRING("message"));
}
NS_IMETHODIMP
BroadcastChannel::Observe(nsISupports* aSubject, const char* aTopic,
const char16_t* aData)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(!strcmp(aTopic, "inner-window-destroyed"));
// If the window is destroyed we have to release the reference that we are
// keeping.
nsCOMPtr<nsISupportsPRUint64> wrapper = do_QueryInterface(aSubject);
NS_ENSURE_TRUE(wrapper, NS_ERROR_FAILURE);
uint64_t innerID;
nsresult rv = wrapper->GetData(&innerID);
NS_ENSURE_SUCCESS(rv, rv);
if (innerID == mInnerID) {
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
if (obs) {
obs->RemoveObserver(this, "inner-window-destroyed");
}
Shutdown();
}
return NS_OK;
}
void
BroadcastChannel::RemoveDocFromBFCache()
{
@ -543,6 +503,13 @@ BroadcastChannel::RemoveDocFromBFCache()
bfCacheEntry->RemoveFromBFCacheSync();
}
void
BroadcastChannel::DisconnectFromOwner()
{
Shutdown();
DOMEventTargetHelper::DisconnectFromOwner();
}
NS_IMPL_CYCLE_COLLECTION_CLASS(BroadcastChannel)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(BroadcastChannel,
@ -555,7 +522,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(BroadcastChannel,
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(BroadcastChannel)
NS_INTERFACE_MAP_ENTRY(nsIObserver)
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
NS_IMPL_ADDREF_INHERITED(BroadcastChannel, DOMEventTargetHelper)

Просмотреть файл

@ -10,7 +10,6 @@
#include "mozilla/Attributes.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "nsAutoPtr.h"
#include "nsIObserver.h"
#include "nsTArray.h"
#include "mozilla/RefPtr.h"
@ -30,12 +29,9 @@ class WorkerRef;
class BroadcastChannel final
: public DOMEventTargetHelper
, public nsIObserver
{
friend class BroadcastChannelChild;
NS_DECL_NSIOBSERVER
typedef mozilla::ipc::PrincipalInfo PrincipalInfo;
public:
@ -79,14 +75,14 @@ private:
void RemoveDocFromBFCache();
void DisconnectFromOwner() override;
RefPtr<BroadcastChannelChild> mActor;
RefPtr<WorkerRef> mWorkerRef;
nsString mChannel;
uint64_t mInnerID;
enum {
StateActive,
StateClosed

Просмотреть файл

@ -86,6 +86,8 @@ BlockScriptWithWrongMimeType=Script from “%1$S” was blocked because of a dis
BlockTopLevelDataURINavigation=Navigation to toplevel data: URI not allowed (Blocked loading of: “%1$S”)
BlockSubresourceRedirectToData=Redirecting to insecure data: URI not allowed (Blocked loading of: “%1$S”)
BlockSubresourceFTP=Loading FTP subresource within http(s) page not allowed (Blocked loading of: “%1$S”)
# LOCALIZATION NOTE (browserUpgradeInsecureDisplayRequest):
# %1$S is the browser name "brandShortName"; %2$S is the URL of the upgraded request; %1$S is the upgraded scheme.
BrowserUpgradeInsecureDisplayRequest = %1$S is upgrading an insecure display request %2$S to use %3$S

Просмотреть файл

@ -159,6 +159,54 @@ nsContentSecurityManager::AllowInsecureRedirectToDataURI(nsIChannel* aNewChannel
return false;
}
/* static */ bool
nsContentSecurityManager::AllowFTPSubresourceLoad(nsIChannel* aChannel)
{
// We dissallow using FTP resources as a subresource everywhere.
// The only valid way to use FTP resources is loading it as
// a top level document.
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
if (!loadInfo) {
return true;
}
nsContentPolicyType type = loadInfo->GetExternalContentPolicyType();
if (type == nsIContentPolicy::TYPE_DOCUMENT) {
return true;
}
nsCOMPtr<nsIURI> uri;
nsresult rv = NS_GetFinalChannelURI(aChannel, getter_AddRefs(uri));
if (NS_FAILED(rv) || !uri) {
return true;
}
bool isFtpURI = (NS_SUCCEEDED(uri->SchemeIs("ftp", &isFtpURI)) && isFtpURI);
if (!isFtpURI) {
return true;
}
nsCOMPtr<nsIDocument> doc;
if (nsINode* node = loadInfo->LoadingNode()) {
doc = node->OwnerDoc();
}
nsAutoCString spec;
uri->GetSpec(spec);
NS_ConvertUTF8toUTF16 specUTF16(NS_UnescapeURL(spec));
const char16_t* params[] = { specUTF16.get() };
nsContentUtils::ReportToConsole(nsIScriptError::warningFlag,
NS_LITERAL_CSTRING("FTP_URI_BLOCKED"),
doc,
nsContentUtils::eSECURITY_PROPERTIES,
"BlockSubresourceFTP",
params, ArrayLength(params));
return false;
}
static nsresult
ValidateSecurityFlags(nsILoadInfo* aLoadInfo)
{
@ -758,6 +806,10 @@ nsContentSecurityManager::CheckChannel(nsIChannel* aChannel)
// consider calling SetBlockedRequest in nsContentSecurityManager::CheckChannel
}
if (!AllowFTPSubresourceLoad(aChannel)) {
return NS_ERROR_CONTENT_BLOCKED;
}
return NS_OK;
}

Просмотреть файл

@ -36,6 +36,8 @@ public:
static bool AllowTopLevelNavigationToDataURI(nsIChannel* aChannel);
static bool AllowInsecureRedirectToDataURI(nsIChannel* aNewChannel);
static bool AllowFTPSubresourceLoad(nsIChannel* aChannel);
private:
static nsresult CheckChannel(nsIChannel* aChannel);

Просмотреть файл

@ -12,3 +12,6 @@ support-files =
[browser_test_view_image_data_navigation.js]
support-files =
file_view_image_data_navigation.html
[browser_test_FTP_console_warning.js]
support-files =
file_FTP_console_warning.html

Просмотреть файл

@ -0,0 +1,112 @@
// Description of the test:
// Ensure that FTP subresource loads trigger a warning in the webconsole.
'use strict';
function scopedCuImport(path) {
const scope = {};
ChromeUtils.import(path, scope);
return scope;
}
const {loader, require} = scopedCuImport("resource://devtools/shared/Loader.jsm");
const {TargetFactory} = require("devtools/client/framework/target");
const {Utils: WebConsoleUtils} =
require("devtools/client/webconsole/utils");
let { gDevTools } = require("devtools/client/framework/devtools");
let promise = require("promise");
/**
* Open the toolbox in a given tab.
* @param {XULNode} tab The tab the toolbox should be opened in.
* @param {String} toolId Optional. The ID of the tool to be selected.
* @param {String} hostType Optional. The type of toolbox host to be used.
* @return {Promise} Resolves with the toolbox, when it has been opened.
*/
var openToolboxForTab = Task.async(function* (tab, toolId, hostType) {
info("Opening the toolbox");
let toolbox;
let target = TargetFactory.forTab(tab);
yield target.makeRemote();
// Check if the toolbox is already loaded.
toolbox = gDevTools.getToolbox(target);
if (toolbox) {
if (!toolId || (toolId && toolbox.getPanel(toolId))) {
info("Toolbox is already opened");
return toolbox;
}
}
// If not, load it now.
toolbox = yield gDevTools.showToolbox(target, toolId, hostType);
// Make sure that the toolbox frame is focused.
yield new Promise(resolve => waitForFocus(resolve, toolbox.win));
info("Toolbox opened and focused");
return toolbox;
});
function console_observer(subject, topic, data) {
var message = subject.wrappedJSObject.arguments[0];
ok(false, message);
};
var webconsole = null;
// These files don't actually exist, we are just looking for messages
// that indicate that loading those files would have been blocked.
var seen_files = ["a.html", "b.html", "c.html", "d.png"];
function on_new_message(new_messages) {
for (let message of new_messages) {
let elem = message.node;
let text = elem.textContent;
if (text.includes("Loading FTP subresource within http(s) page not allowed")) {
// Remove the file in the message from the list.
seen_files = seen_files.filter(file => {
return !text.includes(file);
});
}
}
}
async function do_cleanup() {
if (webconsole) {
webconsole.ui.off("new-messages", on_new_message);
}
}
const kTestPath = getRootDirectory(gTestPath)
.replace("chrome://mochitests/content", "http://mochi.test:8888")
const kTestURI = kTestPath + "file_FTP_console_warning.html";
add_task(async function() {
// A longer timeout is necessary for this test than the plain mochitests
// due to opening a new tab with the web console.
requestLongerTimeout(4);
registerCleanupFunction(do_cleanup);
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank");
let toolbox = await openToolboxForTab(tab, "webconsole");
ok(toolbox, "Got toolbox");
let hud = toolbox.getCurrentPanel().hud;
ok(hud, "Got hud");
if (!webconsole) {
registerCleanupFunction(do_cleanup);
hud.ui.on("new-messages", on_new_message);
webconsole = hud;
}
await BrowserTestUtils.loadURI(gBrowser.selectedBrowser, kTestURI);
await BrowserTestUtils.waitForCondition(() => seen_files.length === 0);
is(seen_files.length, 0, "All FTP subresources should be blocked");
BrowserTestUtils.removeTab(tab);
});

Просмотреть файл

@ -0,0 +1,14 @@
<!DOCTYPE HTML>
<html>
<body>
<head>
<meta charset="utf-8">
<title>FTP subresources</title>
</head>
<body>
<iframe src="ftp://blocked.test/a.html"></iframe>
<iframe srcdoc='<iframe src="ftp://blocked.test/b.html"></iframe>'></iframe>
<iframe src='data:text/html,<iframe src="ftp://blocked.test/c.html"></iframe>'></iframe>
<img src="ftp://blocked.test/d.png">
</body>
</html>

Просмотреть файл

@ -121,7 +121,6 @@ requesttimeoutfactor = 2
[test_bug380994.js]
[test_bug388281.js]
[test_bug396389.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[test_bug401564.js]
[test_bug411952.js]
[test_bug412945.js]
@ -251,7 +250,6 @@ run-sequentially = node server exceptions dont replay well
[test_multipart_streamconv_missing_boundary_lead_dashes.js]
[test_multipart_streamconv-byte-by-byte.js]
[test_nestedabout_serialize.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[test_net_addr.js]
# Bug 732363: test fails on windows for unknown reasons.
skip-if = os == "win"
@ -310,7 +308,7 @@ fail-if = os == "android"
# This used to be hasNode, but that caused too many issues with tests being
# silently disabled, so now we explicitly call out the platforms not known
# to have node installed.
skip-if = (os == "android") || (os == 'win' && ccov) # Bug 1423667
skip-if = (os == "android")
run-sequentially = node server exceptions dont replay well
[test_altsvc.js]
# This used to be hasNode, but that caused too many issues with tests being

Просмотреть файл

@ -1,4 +1,7 @@
[table-model-fixup-2.html]
disabled:
if webrender and (os == "linux"): https://bugzilla.mozilla.org/show_bug.cgi?id=1445164
[Replaced elements outside a table cannot be table-row and are considered block -- input=text elements]
expected: FAIL

Просмотреть файл

@ -11,7 +11,7 @@ Content-Security-Policy-Report-Only: img-src http://*; default-src 'self'; scrip
-->
</head>
<body>
<img src="ftp://blah.test" />
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAEElEQVR42mNgaGD4D8YwBgAw9AX9Y9zBwwAAAABJRU5ErkJggg==" />
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20http%3A%2F%2F%2A%20https%3A%2F%2F%2A&testName=1-Violation%20report%20status%20OK'></script>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20http%3A%2F%2F%2A&reportCookieName=multiple-report-policies-2&testName=2-Violation%20report%20status%20OK'></script>

Просмотреть файл

@ -10,7 +10,7 @@
-->
</head>
<body>
<img src="ftp://blah.test" />
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAEElEQVR42mNgaGD4D8YwBgAw9AX9Y9zBwwAAAABJRU5ErkJggg==" />
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20http%3A%2F%2F%2A'></script>
</body>
</html>

Просмотреть файл

@ -10,7 +10,7 @@
-->
</head>
<body>
<img src="ftp://blah.test" />
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAEElEQVR42mNgaGD4D8YwBgAw9AX9Y9zBwwAAAABJRU5ErkJggg==" />
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20http%3A%2F%2F%2A'></script>
</body>
</html>

Просмотреть файл

@ -6,7 +6,6 @@ skip-if = toolkit == 'android'
[test_abstime-annotation-domain.js]
[test_abstime-annotation-uri.js]
[test_async.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[test_bookmarks.js]
[test_containersQueries_sorting.js]
[test_excludeQueries.js]

Просмотреть файл

@ -20,7 +20,6 @@ support-files =
[test_317472.js]
[test_331487.js]
[test_384370.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[test_385397.js]
[test_399264_query_to_string.js]
[test_399264_string_to_query.js]
@ -53,10 +52,8 @@ skip-if = os == "linux"
[test_async_transactions.js]
skip-if = (os == "win" && os_version == "5.1") # Bug 1158887
[test_bookmarks_json.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[test_bookmarks_json_corrupt.js]
[test_bookmarks_html.js]
skip-if = (os == 'win' && ccov) # Bug 1423667
[test_bookmarks_html_corrupt.js]
[test_bookmarks_html_escape_entities.js]
[test_bookmarks_html_import_tags.js]

Просмотреть файл

@ -7205,13 +7205,6 @@
"n_buckets": 29,
"description": "The size (MB) of the ping data submitted to Telemetry exceeding the maximum size"
},
"TELEMETRY_DISCARDED_CONTENT_PINGS_COUNT": {
"record_in_processes": ["main"],
"alert_emails": ["telemetry-client-dev@mozilla.com"],
"expires_in_version": "never",
"kind": "count",
"description": "Count of discarded content payloads."
},
"TELEMETRY_COMPRESS": {
"record_in_processes": ["main"],
"alert_emails": ["telemetry-client-dev@mozilla.com"],

Просмотреть файл

@ -51,7 +51,6 @@ const MIN_SUBSESSION_LENGTH_MS = Services.prefs.getIntPref("toolkit.telemetry.mi
const LOGGER_NAME = "Toolkit.Telemetry";
const LOGGER_PREFIX = "TelemetrySession" + (Utils.isContentProcess ? "#content::" : "::");
const MESSAGE_TELEMETRY_PAYLOAD = "Telemetry:Payload";
const MESSAGE_TELEMETRY_USS = "Telemetry:USS";
const MESSAGE_TELEMETRY_GET_CHILD_USS = "Telemetry:GetChildUSS";
@ -59,9 +58,6 @@ const MESSAGE_TELEMETRY_GET_CHILD_USS = "Telemetry:GetChildUSS";
// Changing this pref requires a restart.
const IS_UNIFIED_TELEMETRY = Services.prefs.getBoolPref(TelemetryUtils.Preferences.Unified, false);
// Maximum number of content payloads that we are willing to store.
const MAX_NUM_CONTENT_PAYLOADS = 10;
// Do not gather data more than once a minute (ms)
const TELEMETRY_INTERVAL = 60 * 1000;
// Delay before intializing telemetry (ms)
@ -664,11 +660,6 @@ var Impl = {
// The previous build ID, if this is the first run with a new build.
// Null if this is the first run, or the previous build ID is unknown.
_previousBuildId: null,
// Telemetry payloads sent by child processes.
// Each element is in the format {source: <weak-ref>, payload: <object>},
// where source is a weak reference to the child process,
// and payload is the telemetry payload from that child process.
_childTelemetry: [],
// Unique id that identifies this session so the server can cope with duplicate
// submissions, orphaning and other oddities. The id is shared across subsessions.
_sessionId: null,
@ -1192,10 +1183,6 @@ var Impl = {
Telemetry.getHistogramById(id).add(val);
},
getChildPayloads: function getChildPayloads() {
return this._childTelemetry.map(child => child.payload);
},
/**
* Get the current session's payload using the provided
* simpleMeasurements and info, which are typically obtained by a call
@ -1450,7 +1437,6 @@ var Impl = {
this.attachEarlyObservers();
Services.ppmm.addMessageListener(MESSAGE_TELEMETRY_PAYLOAD, this);
Services.ppmm.addMessageListener(MESSAGE_TELEMETRY_USS, this);
},
@ -1569,24 +1555,6 @@ var Impl = {
receiveMessage: function receiveMessage(message) {
this._log.trace("receiveMessage - Message name " + message.name);
switch (message.name) {
case MESSAGE_TELEMETRY_PAYLOAD:
{
// In parent process, receive Telemetry payload from child
let source = message.data.childUUID;
delete message.data.childUUID;
this._childTelemetry.push({
source,
payload: message.data,
});
if (this._childTelemetry.length == MAX_NUM_CONTENT_PAYLOADS + 1) {
this._childTelemetry.shift();
Telemetry.getHistogramById("TELEMETRY_DISCARDED_CONTENT_PINGS_COUNT").add();
}
break;
}
case MESSAGE_TELEMETRY_USS:
{
// In parent process, receive the USS report from the child
@ -1648,8 +1616,6 @@ var Impl = {
}
},
_processUUID: generateUUID(),
sendContentProcessUSS: function sendContentProcessUSS(aMessageId) {
this._log.trace("sendContentProcessUSS");
@ -1668,14 +1634,6 @@ var Impl = {
);
},
sendContentProcessPing: function sendContentProcessPing(reason) {
this._log.trace("sendContentProcessPing - Reason " + reason);
const isSubsession = !this._isClassicReason(reason);
let payload = this.getSessionPayload(reason, isSubsession);
payload.childUUID = this._processUUID;
Services.cpmm.sendAsyncMessage(MESSAGE_TELEMETRY_PAYLOAD, payload);
},
/**
* On Desktop: Save the "shutdown" ping to disk.
* On Android: Save the "saved-session" ping to disk.

Просмотреть файл

@ -69,13 +69,6 @@ var UITelemetry = {
return this;
},
/**
* Holds the functions that provide UITelemetry's simple
* measurements. Those functions are mapped to unique names,
* and should be registered with addSimpleMeasureFunction.
*/
_simpleMeasureFunctions: {},
/**
* A hack to generate the relative timestamp from start when we don't have
* access to the Java timer.
@ -160,53 +153,6 @@ var UITelemetry = {
this._measurements.push(aEvent);
},
/**
* Called by TelemetrySession to populate the simple measurement
* blob. This function will iterate over all functions added
* via addSimpleMeasureFunction and return an object with the
* results of those functions.
*/
getSimpleMeasures() {
if (!this.enabled) {
return {};
}
let result = {};
for (let name in this._simpleMeasureFunctions) {
result[name] = this._simpleMeasureFunctions[name]();
}
return result;
},
/**
* Allows the caller to register functions that will get called
* for simple measures during a Telemetry ping. aName is a unique
* identifier used as they key for the simple measurement in the
* object that getSimpleMeasures returns.
*
* This function throws an exception if aName already has a function
* registered for it.
*/
addSimpleMeasureFunction(aName, aFunction) {
if (!this.enabled) {
return;
}
if (aName in this._simpleMeasureFunctions) {
throw new Error("A simple measurement function is already registered for " + aName);
}
if (!aFunction || typeof aFunction !== "function") {
throw new Error("addSimpleMeasureFunction called with non-function argument.");
}
this._simpleMeasureFunctions[aName] = aFunction;
},
removeSimpleMeasureFunction(aName) {
delete this._simpleMeasureFunctions[aName];
},
/**
* Called by TelemetrySession to populate the UI measurement
* blob.

Просмотреть файл

@ -1184,7 +1184,6 @@
"SYSTEM_FONT_FALLBACK_SCRIPT",
"TELEMETRY_COMPRESS",
"TELEMETRY_DISCARDED_ARCHIVED_PINGS_SIZE_MB",
"TELEMETRY_DISCARDED_CONTENT_PINGS_COUNT",
"TELEMETRY_DISCARDED_PENDING_PINGS_SIZE_MB",
"TELEMETRY_DISCARDED_SEND_PINGS_SIZE_MB",
"TELEMETRY_INVALID_PING_TYPE_SUBMITTED",
@ -1687,7 +1686,6 @@
"SUBPROCESS_LAUNCH_FAILURE",
"TELEMETRY_ARCHIVE_SESSION_PING_COUNT",
"TELEMETRY_ASSEMBLE_PAYLOAD_EXCEPTION",
"TELEMETRY_DISCARDED_CONTENT_PINGS_COUNT",
"TELEMETRY_INVALID_PAYLOAD_SUBMITTED",
"TELEMETRY_INVALID_PING_TYPE_SUBMITTED",
"TELEMETRY_PENDING_LOAD_FAILURE_PARSE",

Просмотреть файл

@ -4,8 +4,6 @@ ChromeUtils.import("resource://gre/modules/TelemetrySession.jsm", this);
ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm", this);
ChromeUtils.import("resource://testing-common/ContentTaskUtils.jsm", this);
const MESSAGE_TELEMETRY_PAYLOAD = "Telemetry:Payload";
const MESSAGE_TELEMETRY_GET_CHILD_PAYLOAD = "Telemetry:GetChildPayload";
const MESSAGE_CHILD_TEST_DONE = "ChildTest:Done";
const PLATFORM_VERSION = "1.9.2";

Просмотреть файл

@ -279,8 +279,6 @@ var PingPicker = {
pingPicker.classList.add("hidden");
}
});
document.getElementById("choose-payload")
.addEventListener("change", () => displayPingData(gPingData));
document.getElementById("processes")
.addEventListener("change", () => displayPingData(gPingData));
Array.from(document.querySelectorAll(".change-ping")).forEach(el => {
@ -2372,38 +2370,6 @@ function renderProcessList(ping, selectEl) {
}
}
function renderPayloadList(ping) {
// Rebuild the payload select with options:
// Parent Payload (selected)
// Child Payload 1..ping.payload.childPayloads.length
let listEl = document.getElementById("choose-payload");
removeAllChildNodes(listEl);
let option = document.createElement("option");
let text = bundle.GetStringFromName("parentPayload");
let content = document.createTextNode(text);
let payloadIndex = 0;
option.appendChild(content);
option.setAttribute("value", payloadIndex++);
option.selected = true;
listEl.appendChild(option);
if (!ping.payload.childPayloads) {
listEl.disabled = true;
return;
}
listEl.disabled = false;
for (; payloadIndex <= ping.payload.childPayloads.length; ++payloadIndex) {
option = document.createElement("option");
text = bundle.formatStringFromName("childPayloadN", [payloadIndex], 1);
content = document.createTextNode(text);
option.appendChild(content);
option.setAttribute("value", payloadIndex);
listEl.appendChild(option);
}
}
function togglePingSections(isMainPing) {
// We always show the sections that are "common" to all pings.
let commonSections = new Set(["heading",
@ -2442,7 +2408,6 @@ function displayPingData(ping, updatePayloadList = false) {
function displayRichPingData(ping, updatePayloadList) {
// Update the payload list and process lists
if (updatePayloadList) {
renderPayloadList(ping);
renderProcessList(ping, document.getElementById("processes"));
}
@ -2491,15 +2456,6 @@ function displayRichPingData(ping, updatePayloadList) {
LateWritesSingleton.renderLateWrites(payload.lateWrites);
// Select payload to render
let payloadSelect = document.getElementById("choose-payload");
let payloadOption = payloadSelect.selectedOptions.item(0);
let payloadIndex = payloadOption.getAttribute("value");
if (payloadIndex > 0) {
payload = ping.payload.childPayloads[payloadIndex - 1];
}
// Show chrome hang stacks
ChromeHangs.render(payload.chromeHangs);

Просмотреть файл

@ -124,10 +124,6 @@
</select>
</div>
</div>
<div>
<h4 class="title">&aboutTelemetry.payloadChoiceHeader;</h4>
<select id="choose-payload"></select>
</div>
</div>
<div class="header">

Просмотреть файл

@ -15,19 +15,6 @@
<stylesheet src="chrome://global/skin/toolbarbutton.css"/>
</resources>
<content>
<children includes="observes|template|menupopup|panel|tooltip"/>
<xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label,consumeanchor"/>
<xul:label class="toolbarbutton-text" crop="right" flex="1"
xbl:inherits="value=label,accesskey,crop,wrap"/>
<xul:label class="toolbarbutton-multiline-text" flex="1"
xbl:inherits="xbl:text=label,accesskey,wrap"/>
<children includes="box"/>
</content>
</binding>
<binding id="menu" display="xul:menu"
extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
<content>
<children includes="observes|template|menupopup|panel|tooltip"/>
<xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label,type,consumeanchor"/>
@ -35,11 +22,16 @@
xbl:inherits="value=label,accesskey,crop,dragover-top,wrap"/>
<xul:label class="toolbarbutton-multiline-text" flex="1"
xbl:inherits="xbl:text=label,accesskey,wrap"/>
<children includes="box"/>
<xul:dropmarker anonid="dropmarker" type="menu"
class="toolbarbutton-menu-dropmarker" xbl:inherits="disabled,label"/>
</content>
</binding>
<binding id="menu" display="xul:menu"
extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
</binding>
<binding id="toolbarbutton-badged"
extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
<content>
@ -53,23 +45,12 @@
xbl:inherits="value=label,accesskey,crop,wrap"/>
<xul:label class="toolbarbutton-multiline-text" flex="1"
xbl:inherits="xbl:text=label,accesskey,wrap"/>
<xul:dropmarker anonid="dropmarker" type="menu"
class="toolbarbutton-menu-dropmarker" xbl:inherits="disabled,label"/>
</content>
</binding>
<binding id="toolbarbutton-badged-menu" display="xul:menu"
extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
<content>
<children includes="observes|template|menupopup|panel|tooltip"/>
<xul:stack class="toolbarbutton-badge-stack">
<xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label,consumeanchor"/>
<xul:label class="toolbarbutton-badge" xbl:inherits="value=badge" top="0" end="0" crop="none"/>
</xul:stack>
<xul:label class="toolbarbutton-text" crop="right" flex="1"
xbl:inherits="value=label,accesskey,crop,dragover-top,wrap"/>
<xul:label class="toolbarbutton-multiline-text" flex="1"
xbl:inherits="xbl:text=label,accesskey,wrap"/>
<xul:dropmarker anonid="dropmarker" type="menu"
class="toolbarbutton-menu-dropmarker" xbl:inherits="disabled,label"/>
</content>
</binding>
</bindings>

Просмотреть файл

@ -142,6 +142,7 @@ toolbarbutton.badged-button[type="menu"] {
-moz-binding: url("chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-badged-menu");
}
toolbarbutton:not([type="menu"]) > .toolbarbutton-menu-dropmarker,
toolbar[mode="icons"] .toolbarbutton-text,
toolbar[mode="icons"] .toolbarbutton-multiline-text,
toolbar[mode="text"] .toolbarbutton-icon,

Просмотреть файл

@ -12,7 +12,6 @@
<!ENTITY aboutTelemetry.optionGroupToday "Today">
<!ENTITY aboutTelemetry.optionGroupYesterday "Yesterday">
<!ENTITY aboutTelemetry.optionGroupOlder "Older">
<!ENTITY aboutTelemetry.payloadChoiceHeader "Payload">
<!-- LOCALIZATION NOTE(aboutTelemetry.previousPing, aboutTelemetry.nextPing):
These strings are displayed when selecting Archived pings, and theyre
used to move to the next or previous ping. -->

Просмотреть файл

@ -104,10 +104,6 @@ memoryMapTitle = Memory map:
errorFetchingSymbols = An error occurred while fetching symbols. Check that you are connected to the Internet and try again.
parentPayload = Parent Payload
# LOCALIZATION NOTE(childPayloadN):
# - %1$S is replaced by the number of the child payload (e.g. “1”, “2”)
childPayloadN = Child Payload %1$S
timestampHeader = timestamp
categoryHeader = category
methodHeader = method

Двоичные данные
toolkit/themes/osx/global/icons/notfound.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 538 B

Просмотреть файл

@ -63,7 +63,6 @@ toolkit.jar:
skin/classic/global/icons/blacklist_64.png (icons/blacklist_64.png)
skin/classic/global/icons/glyph-dropdown.png (icons/glyph-dropdown.png)
skin/classic/global/icons/glyph-dropdown@2x.png (icons/glyph-dropdown@2x.png)
skin/classic/global/icons/notfound.png (icons/notfound.png)
skin/classic/global/icons/panel-dropmarker.png (icons/panel-dropmarker.png)
skin/classic/global/icons/resizer.png (icons/resizer.png)
skin/classic/global/icons/resizer@2x.png (icons/resizer@2x.png)
@ -83,7 +82,6 @@ toolkit.jar:
skin/classic/global/icons/sslWarning.png (icons/sslWarning.png)
* skin/classic/global/in-content/common.css (in-content/common.css)
* skin/classic/global/in-content/info-pages.css (in-content/info-pages.css)
skin/classic/global/splitter/dimple.png (splitter/dimple.png)
skin/classic/global/toolbar/spring.png (toolbar/spring.png)
skin/classic/global/toolbar/toolbar-separator.png (toolbar/toolbar-separator.png)
skin/classic/global/tree/arrow-disclosure.svg (tree/arrow-disclosure.svg)

Просмотреть файл

@ -12,7 +12,6 @@ splitter {
cursor: ew-resize;
min-width: 9px;
min-height: 9px;
background: url("chrome://global/skin/splitter/dimple.png") transparent no-repeat center;
}
splitter[state="collapsed"][collapse="before"],
@ -40,7 +39,6 @@ splitter[orient="vertical"] {
min-width: 0px;
min-height: 9px;
min-width: 9px;
background: url("chrome://global/skin/splitter/dimple.png") transparent no-repeat center;
}
splitter[orient="vertical"][state="collapsed"][collapse="before"],

Двоичные данные
toolkit/themes/osx/global/splitter/dimple.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 104 B

Просмотреть файл

@ -130,7 +130,9 @@ wizardpage {
#verificationFailedIcon {
margin-left: 5px;
list-style-image: url("chrome://global/skin/icons/notfound.png");
-moz-context-properties: fill;
fill: currentColor;
list-style-image: url(chrome://global/skin/icons/warning.svg);
}
/* Error Page */

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 648 B

Просмотреть файл

@ -46,7 +46,6 @@ toolkit.jar:
skin/classic/global/icons/collapse.png (icons/collapse.png)
skin/classic/global/icons/expand.png (icons/expand.png)
skin/classic/global/icons/folder-item.png (icons/folder-item.png)
skin/classic/global/icons/information-16.png (icons/information-16.png)
skin/classic/global/icons/Landscape.png (icons/Landscape.png)
skin/classic/global/icons/Portrait.png (icons/Portrait.png)
skin/classic/global/icons/Print-preview.png (icons/Print-preview.png)

Просмотреть файл

@ -106,7 +106,9 @@ wizardpage {
#verificationFailedIcon {
margin-left: 5px;
list-style-image: url("chrome://global/skin/icons/information-16.png");
-moz-context-properties: fill;
fill: currentColor;
list-style-image: url(chrome://global/skin/icons/warning.svg);
}
/* Error Page */