MFH: r469998

www/waterfox: update to 56.2.0.7

Changes:	https://github.com/MrAlex94/Waterfox/compare/56.2.0...436898372f858
Approved by:	ports-secteam blanket
This commit is contained in:
Jan Beich 2018-05-15 08:41:16 +00:00
parent b542ff14b5
commit 75dd8df3ae
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/branches/2018Q2/; revision=470003
6 changed files with 283 additions and 165 deletions

View File

@ -1,7 +1,8 @@
# $FreeBSD$
PORTNAME= waterfox
DISTVERSION= 56.2.0
DISTVERSION= 56.2.0-7
DISTVERSIONSUFFIX= -g436898372f858
CATEGORIES= www ipv6
MAINTAINER= jbeich@FreeBSD.org

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1526323182
SHA256 (MrAlex94-Waterfox-56.2.0_GH0.tar.gz) = b4f8ee4ef6544bacb6b0575e99e05d399cf83f983d3b0193cd9df39bd509f0d2
SIZE (MrAlex94-Waterfox-56.2.0_GH0.tar.gz) = 395158434
TIMESTAMP = 1526343922
SHA256 (MrAlex94-Waterfox-56.2.0-7-g436898372f858_GH0.tar.gz) = ed9b870b81e3263afaf92efa9830b2a8e84cd71d78e300feaa5de70395974aae
SIZE (MrAlex94-Waterfox-56.2.0-7-g436898372f858_GH0.tar.gz) = 395153667

View File

@ -0,0 +1,278 @@
commit 165fab2f8596
Author: Jan Horak <jhorak@redhat.com>
Date: Tue Oct 10 13:35:56 2017 +0200
Bug 1381815 - fixing dimensions of radio and checkbox for GTK 3.20+; r=karlt
In the GTK < 3.20 the size of radio and checkbox toggle is determined by indicator
spacing and indicator size. By GTK 3.20+ it is replaced by standard box model
(padding, margin, border). The patch fixes that while keeping the functionality
for older GTK. The values are also cached by similar way as scrollbar metrics
are cached now.
The focus is no longer rendered by GTK but by Mozilla code, so the extra
size for toggles has been removed from GetExtraSizeForWidget and toggles
no longer render focus indicator.
MozReview-Commit-ID: 1Wg5AgHy1Vz
--HG--
extra : rebase_source : 81437f45b7d32555942d21fccc9de4a561d85111
---
widget/gtk/gtk3drawing.cpp | 121 ++++++++++++++++++++++++++++++----------
widget/gtk/gtkdrawing.h | 14 +++++
widget/gtk/nsNativeThemeGTK.cpp | 32 +----------
3 files changed, 107 insertions(+), 60 deletions(-)
diff --git widget/gtk/gtk3drawing.cpp widget/gtk/gtk3drawing.cpp
index 4c562b380095..7968aef920f6 100644
--- widget/gtk/gtk3drawing.cpp
+++ widget/gtk/gtk3drawing.cpp
@@ -22,6 +22,8 @@ static gboolean checkbox_check_state;
static gboolean notebook_has_tab_gap;
static ScrollbarGTKMetrics sScrollbarMetrics[2];
+static ToggleGTKMetrics sCheckboxMetrics;
+static ToggleGTKMetrics sRadioMetrics;
#define ARROW_UP 0
#define ARROW_DOWN G_PI
@@ -110,6 +112,8 @@ moz_gtk_refresh()
sScrollbarMetrics[GTK_ORIENTATION_HORIZONTAL].initialized = false;
sScrollbarMetrics[GTK_ORIENTATION_VERTICAL].initialized = false;
+ sCheckboxMetrics.initialized = false;
+ sRadioMetrics.initialized = false;
}
gint
@@ -308,33 +312,21 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect,
gboolean isradio, GtkTextDirection direction)
{
GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
- gint indicator_size, indicator_spacing;
gint x, y, width, height;
- gint focus_x, focus_y, focus_width, focus_height;
GtkStyleContext *style;
- GtkWidget *widget = GetWidget(isradio ? MOZ_GTK_RADIOBUTTON_CONTAINER :
- MOZ_GTK_CHECKBUTTON_CONTAINER);
- gtk_widget_style_get(widget,
- "indicator_size", &indicator_size,
- "indicator_spacing", &indicator_spacing,
- nullptr);
+ const ToggleGTKMetrics* metrics = GetToggleMetrics(isradio);
// XXX we should assert rect->height >= indicator_size too
// after bug 369581 is fixed.
- MOZ_ASSERT(rect->width >= indicator_size,
+ MOZ_ASSERT(rect->width >= metrics->minSizeWithBorder.width,
"GetMinimumWidgetSize was ignored");
// Paint it center aligned in the rect.
- x = rect->x + (rect->width - indicator_size) / 2;
- y = rect->y + (rect->height - indicator_size) / 2;
- width = indicator_size;
- height = indicator_size;
-
- focus_x = x - indicator_spacing;
- focus_y = y - indicator_spacing;
- focus_width = width + 2 * indicator_spacing;
- focus_height = height + 2 * indicator_spacing;
+ width = metrics->minSizeWithBorder.width;
+ height = metrics->minSizeWithBorder.height;
+ x = rect->x + (rect->width - width) / 2;
+ y = rect->y + (rect->height - height) / 2;
if (selected)
state_flags = static_cast<GtkStateFlags>(state_flags|checkbox_check_state);
@@ -348,20 +340,25 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect,
if (gtk_check_version(3, 20, 0) == nullptr) {
gtk_render_background(style, cr, x, y, width, height);
gtk_render_frame(style, cr, x, y, width, height);
- }
-
- if (isradio) {
- gtk_render_option(style, cr, x, y, width, height);
- if (state->focused) {
- gtk_render_focus(style, cr, focus_x, focus_y,
- focus_width, focus_height);
+ // Indicator is inset by the toggle's padding and border.
+ gint indicator_x = x + metrics->borderAndPadding.left;
+ gint indicator_y = y + metrics->borderAndPadding.top;
+ gint indicator_width = metrics->minSizeWithBorder.width -
+ metrics->borderAndPadding.left - metrics->borderAndPadding.right;
+ gint indicator_height = metrics->minSizeWithBorder.height -
+ metrics->borderAndPadding.top - metrics->borderAndPadding.bottom;
+ if (isradio) {
+ gtk_render_option(style, cr, indicator_x, indicator_y,
+ indicator_width, indicator_height);
+ } else {
+ gtk_render_check(style, cr, indicator_x, indicator_y,
+ indicator_width, indicator_height);
}
- }
- else {
- gtk_render_check(style, cr, x, y, width, height);
- if (state->focused) {
- gtk_render_focus(style, cr,
- focus_x, focus_y, focus_width, focus_height);
+ } else {
+ if (isradio) {
+ gtk_render_option(style, cr, x, y, width, height);
+ } else {
+ gtk_render_check(style, cr, x, y, width, height);
}
}
@@ -2514,6 +2511,68 @@ SizeFromLengthAndBreadth(GtkOrientation aOrientation,
MozGtkSize({aLength, aBreadth}) : MozGtkSize({aBreadth, aLength});
}
+const ToggleGTKMetrics*
+GetToggleMetrics(bool isRadio)
+{
+ ToggleGTKMetrics* metrics;
+ if (isRadio) {
+ metrics = &sRadioMetrics;
+ } else {
+ metrics = &sCheckboxMetrics;
+ }
+ if (metrics->initialized)
+ return metrics;
+
+ metrics->initialized = true;
+ if (gtk_check_version(3,20,0) == nullptr) {
+ GtkStyleContext* style;
+ if (isRadio) {
+ style = GetStyleContext(MOZ_GTK_RADIOBUTTON);
+ } else {
+ style = GetStyleContext(MOZ_GTK_CHECKBUTTON);
+ }
+ GtkStateFlags state_flags = gtk_style_context_get_state(style);
+ gtk_style_context_get(style, state_flags,
+ "min-height",&(metrics->minSizeWithBorder.height),
+ "min-width", &(metrics->minSizeWithBorder.width),
+ nullptr);
+ // Fallback to indicator size if min dimensions are zero
+ if (metrics->minSizeWithBorder.height == 0 ||
+ metrics->minSizeWithBorder.width == 0) {
+ gint indicator_size;
+ gtk_widget_style_get(GetWidget(MOZ_GTK_CHECKBUTTON_CONTAINER),
+ "indicator_size", &indicator_size, nullptr);
+ if (metrics->minSizeWithBorder.height == 0) {
+ metrics->minSizeWithBorder.height = indicator_size;
+ }
+ if (metrics->minSizeWithBorder.width == 0) {
+ metrics->minSizeWithBorder.width = indicator_size;
+ }
+ }
+
+ GtkBorder border, padding;
+ gtk_style_context_get_border(style, state_flags, &border);
+ gtk_style_context_get_padding(style, state_flags, &padding);
+ metrics->borderAndPadding.left = border.left + padding.left;
+ metrics->borderAndPadding.right = border.right + padding.right;
+ metrics->borderAndPadding.top = border.top + padding.top;
+ metrics->borderAndPadding.bottom = border.bottom + padding.bottom;
+ metrics->minSizeWithBorder.width += metrics->borderAndPadding.left +
+ metrics->borderAndPadding.right;
+ metrics->minSizeWithBorder.height += metrics->borderAndPadding.top +
+ metrics->borderAndPadding.bottom;
+ } else {
+ gint indicator_size, indicator_spacing;
+ gtk_widget_style_get(GetWidget(MOZ_GTK_CHECKBUTTON_CONTAINER),
+ "indicator_size", &indicator_size,
+ "indicator_spacing", &indicator_spacing,
+ nullptr);
+ metrics->minSizeWithBorder.width =
+ metrics->minSizeWithBorder.height = indicator_size;
+ }
+ return metrics;
+}
+
const ScrollbarGTKMetrics*
GetScrollbarMetrics(GtkOrientation aOrientation)
{
diff --git widget/gtk/gtkdrawing.h widget/gtk/gtkdrawing.h
index 42dbf8287499..909c18f7f525 100644
--- widget/gtk/gtkdrawing.h
+++ widget/gtk/gtkdrawing.h
@@ -83,6 +83,12 @@ typedef struct {
} border;
} ScrollbarGTKMetrics;
+typedef struct {
+ bool initialized;
+ MozGtkSize minSizeWithBorder;
+ GtkBorder borderAndPadding;
+} ToggleGTKMetrics;
+
typedef enum {
MOZ_GTK_STEPPER_DOWN = 1 << 0,
MOZ_GTK_STEPPER_BOTTOM = 1 << 1,
@@ -391,6 +397,14 @@ moz_gtk_get_tab_border(gint* left, gint* top, gint* right, gint* bottom,
gint
moz_gtk_checkbox_get_metrics(gint* indicator_size, gint* indicator_spacing);
+/**
+ * Get metrics of the toggle (radio or checkbox)
+ * isRadio: [IN] true when requesting metrics for the radio button
+ * returns: pointer to ToggleGTKMetrics struct
+ */
+const ToggleGTKMetrics*
+GetToggleMetrics(bool isRadio);
+
/**
* Get the desired size of a GtkRadioButton
* indicator_size: [OUT] the indicator size
diff --git widget/gtk/nsNativeThemeGTK.cpp widget/gtk/nsNativeThemeGTK.cpp
index 06e62efbcda8..da3eaa71a6b4 100644
--- widget/gtk/nsNativeThemeGTK.cpp
+++ widget/gtk/nsNativeThemeGTK.cpp
@@ -1020,24 +1020,6 @@ nsNativeThemeGTK::GetExtraSizeForWidget(nsIFrame* aFrame, uint8_t aWidgetType,
aExtra->left = aExtra->right = 1;
break;
- // Include the indicator spacing (the padding around the control).
- case NS_THEME_CHECKBOX:
- case NS_THEME_RADIO:
- {
- gint indicator_size, indicator_spacing;
-
- if (aWidgetType == NS_THEME_CHECKBOX) {
- moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing);
- } else {
- moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing);
- }
-
- aExtra->top = indicator_spacing;
- aExtra->right = indicator_spacing;
- aExtra->bottom = indicator_spacing;
- aExtra->left = indicator_spacing;
- break;
- }
case NS_THEME_BUTTON :
{
if (IsDefaultButton(aFrame)) {
@@ -1595,17 +1577,9 @@ nsNativeThemeGTK::GetMinimumWidgetSize(nsPresContext* aPresContext,
case NS_THEME_CHECKBOX:
case NS_THEME_RADIO:
{
- gint indicator_size, indicator_spacing;
-
- if (aWidgetType == NS_THEME_CHECKBOX) {
- moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing);
- } else {
- moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing);
- }
-
- // Include space for the indicator and the padding around it.
- aResult->width = indicator_size;
- aResult->height = indicator_size;
+ const ToggleGTKMetrics* metrics = GetToggleMetrics(aWidgetType == NS_THEME_RADIO);
+ aResult->width = metrics->minSizeWithBorder.width;
+ aResult->height = metrics->minSizeWithBorder.height;
}
break;
case NS_THEME_TOOLBARBUTTON_DROPDOWN:

View File

@ -1,83 +0,0 @@
commit 2ad185b12fe3
Author: Paul Adenot <paul@paul.cx>
Date: Mon Mar 5 20:24:16 2018 +0200
Bug 1426129 - Take a reference to `this` when calling methods asynchronously in CameraChild.cpp. r=pehrsons a=lizzard
--HG--
extra : amend_source : bb0df026ffa8198485415c8c44fdb7df372f07ee
---
dom/media/systemservices/CamerasChild.cpp | 33 ++++++++++++++++++-------------
dom/media/systemservices/CamerasChild.h | 9 +++++++++
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git dom/media/systemservices/CamerasChild.cpp dom/media/systemservices/CamerasChild.cpp
index 594b90f808e4..79224b73cefa 100644
--- dom/media/systemservices/CamerasChild.cpp
+++ dom/media/systemservices/CamerasChild.cpp
@@ -34,7 +34,9 @@ CamerasSingleton::CamerasSingleton()
: mCamerasMutex("CamerasSingleton::mCamerasMutex"),
mCameras(nullptr),
mCamerasChildThread(nullptr),
- mFakeDeviceChangeEventThread(nullptr) {
+ mFakeDeviceChangeEventThread(nullptr),
+ mInShutdown(false)
+{
LOG(("CamerasSingleton: %p", this));
}
@@ -559,6 +561,9 @@ void
Shutdown(void)
{
OffTheBooksMutexAutoLock lock(CamerasSingleton::Mutex());
+
+ CamerasSingleton::StartShutdown();
+
CamerasChild* child = CamerasSingleton::Child();
if (!child) {
// We don't want to cause everything to get fired up if we're
@@ -733,7 +738,7 @@ CamerasChild::~CamerasChild()
{
LOG(("~CamerasChild: %p", this));
- {
+ if (!CamerasSingleton::InShutdown()) {
OffTheBooksMutexAutoLock lock(CamerasSingleton::Mutex());
// In normal circumstances we've already shut down and the
// following does nothing. But on fatal IPC errors we will
diff --git dom/media/systemservices/CamerasChild.h dom/media/systemservices/CamerasChild.h
index b2029dbd6b9d..620c409b656f 100644
--- dom/media/systemservices/CamerasChild.h
+++ dom/media/systemservices/CamerasChild.h
@@ -93,6 +93,14 @@ public:
return gTheInstance.get()->mFakeDeviceChangeEventThread;
}
+ static bool InShutdown() {
+ return gTheInstance.get()->mInShutdown;
+ }
+
+ static void StartShutdown() {
+ gTheInstance.get()->mInShutdown = true;
+ }
+
private:
static Singleton<CamerasSingleton> gTheInstance;
@@ -110,6 +118,7 @@ private:
CamerasChild* mCameras;
nsCOMPtr<nsIThread> mCamerasChildThread;
nsCOMPtr<nsIThread> mFakeDeviceChangeEventThread;
+ Atomic<bool> mInShutdown;
};
// Get a pointer to a CamerasChild object we can use to do IPC with.
@@ -149,7 +158,7 @@ class CamerasChild final : public PCamerasChild
public:
// We are owned by the PBackground thread only. CamerasSingleton
// takes a non-owning reference.
- NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CamerasChild)
+ NS_INLINE_DECL_REFCOUNTING(CamerasChild)
// IPC messages recevied, received on the PBackground thread
// these are the actual callbacks with data

View File

@ -1,53 +0,0 @@
commit e8f515046724
Author: Christoph Kerschbaumer <ckerschb@christophkerschbaumer.com>
Date: Thu Mar 1 13:45:04 2018 +0100
Bug 1439444: resource and chrome images and styles should not be subject to CSP. r=gijs
---
dom/security/nsCSPService.cpp | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git dom/security/nsCSPService.cpp dom/security/nsCSPService.cpp
index 6e6f02c585fb7..f0d733454fc2a 100644
--- dom/security/nsCSPService.cpp
+++ dom/security/nsCSPService.cpp
@@ -43,13 +43,17 @@ NS_IMPL_ISUPPORTS(CSPService, nsIContentPolicy, nsIChannelEventSink)
// Helper function to identify protocols and content types not subject to CSP.
bool
subjectToCSP(nsIURI* aURI, nsContentPolicyType aContentType) {
+
+ nsContentPolicyType contentType =
+ nsContentUtils::InternalContentPolicyTypeToExternal(aContentType);
+
// These content types are not subject to CSP content policy checks:
// TYPE_CSP_REPORT -- csp can't block csp reports
// TYPE_REFRESH -- never passed to ShouldLoad (see nsIContentPolicy.idl)
// TYPE_DOCUMENT -- used for frame-ancestors
- if (aContentType == nsIContentPolicy::TYPE_CSP_REPORT ||
- aContentType == nsIContentPolicy::TYPE_REFRESH ||
- aContentType == nsIContentPolicy::TYPE_DOCUMENT) {
+ if (contentType == nsIContentPolicy::TYPE_CSP_REPORT ||
+ contentType == nsIContentPolicy::TYPE_REFRESH ||
+ contentType == nsIContentPolicy::TYPE_DOCUMENT) {
return false;
}
@@ -90,12 +94,16 @@ subjectToCSP(nsIURI* aURI, nsContentPolicyType aContentType) {
// hence we use protocol flags to accomplish that, but we also
// want resource:, chrome: and moz-icon to be subject to CSP
// (which also use URI_IS_LOCAL_RESOURCE).
+ // Exception to the rule are images and styles using a scheme
+ // of resource: or chrome:
+ bool isImgOrStyle = contentType == nsIContentPolicy::TYPE_IMAGE ||
+ contentType == nsIContentPolicy::TYPE_STYLESHEET;
rv = aURI->SchemeIs("resource", &match);
- if (NS_SUCCEEDED(rv) && match) {
+ if (NS_SUCCEEDED(rv) && match && !isImgOrStyle) {
return true;
}
rv = aURI->SchemeIs("chrome", &match);
- if (NS_SUCCEEDED(rv) && match) {
+ if (NS_SUCCEEDED(rv) && match && !isImgOrStyle) {
return true;
}
rv = aURI->SchemeIs("moz-icon", &match);

View File

@ -1,25 +0,0 @@
commit 425c5a6ff8fc
Author: Christoph Kerschbaumer <ckerschb@christophkerschbaumer.com>
Date: Fri Mar 9 15:54:02 2018 +0100
Bug 1443110: Add NullCheck for loadinfo within InitCSP. r=smaug a=jcristau
--HG--
extra : source : 25ade148226d93650b653c62e2f4b15cbc51caef
---
dom/base/nsDocument.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp
index 88f3aea3b6255..5519dd662df31 100644
--- dom/base/nsDocument.cpp
+++ dom/base/nsDocument.cpp
@@ -2939,7 +2939,7 @@ nsDocument::InitCSP(nsIChannel* aChannel)
// In case this channel was instrument to discard the CSP, then
// there is nothing for us to do here.
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
- if (loadInfo->GetAllowDocumentToBeAgnosticToCSP()) {
+ if (loadInfo && loadInfo->GetAllowDocumentToBeAgnosticToCSP()) {
return NS_OK;
}