+ */
+struct nsMargin_Simple {
+ nscoord top, right, bottom, left;
+};
+
+static_assert(sizeof(nsMargin_Simple) == sizeof(nsMargin), "Wrong nsMargin_Simple size");
+static_assert(offsetof(nsMargin_Simple, top) == offsetof(nsMargin, top), "Wrong nsMargin_Simple member alignment");
+static_assert(offsetof(nsMargin_Simple, right) == offsetof(nsMargin, right), "Wrong nsMargin_Simple member alignment");
+static_assert(offsetof(nsMargin_Simple, bottom) == offsetof(nsMargin, bottom), "Wrong nsMargin_Simple member alignment");
+static_assert(offsetof(nsMargin_Simple, left) == offsetof(nsMargin, left), "Wrong nsMargin_Simple member alignment");
+
+/**
+ *
+ */
+struct nsRect_Simple {
+ nscoord x, y, width, height;
+};
+
+static_assert(sizeof(nsRect_Simple) == sizeof(nsRect), "Wrong nsRect_Simple size");
+static_assert(offsetof(nsRect_Simple, x) == offsetof(nsRect, x), "Wrong nsRect_Simple member alignment");
+static_assert(offsetof(nsRect_Simple, y) == offsetof(nsRect, y), "Wrong nsRect_Simple member alignment");
+static_assert(offsetof(nsRect_Simple, width) == offsetof(nsRect, width), "Wrong nsRect_Simple member alignment");
+static_assert(offsetof(nsRect_Simple, height) == offsetof(nsRect, height), "Wrong nsRect_Simple member alignment");
+
+// The lifetime of these objects is managed by the presshell's arena.
struct nsStyleFont
{
nsStyleFont(const nsFont& aFont, nsPresContext *aPresContext);
@@ -1872,6 +1916,7 @@ struct nsStyleText
bool mTextAlignTrue : 1; // [inherited] see nsStyleConsts.h
bool mTextAlignLastTrue : 1; // [inherited] see nsStyleConsts.h
bool mTextEmphasisColorForeground : 1;// [inherited] whether text-emphasis-color is currentColor
+ bool mWebkitTextFillColorForeground : 1; // [inherited] whether -webkit-text-fill-color is currentColor
uint8_t mTextTransform; // [inherited] see nsStyleConsts.h
uint8_t mWhiteSpace; // [inherited] see nsStyleConsts.h
uint8_t mWordBreak; // [inherited] see nsStyleConsts.h
@@ -1886,6 +1931,7 @@ struct nsStyleText
uint8_t mTextEmphasisStyle; // [inherited] see nsStyleConsts.h
int32_t mTabSize; // [inherited] see nsStyleConsts.h
nscolor mTextEmphasisColor; // [inherited]
+ nscolor mWebkitTextFillColor; // [inherited]
nsStyleCoord mWordSpacing; // [inherited] coord, percent, calc
nsStyleCoord mLetterSpacing; // [inherited] coord, normal
diff --git a/layout/style/test/chrome/chrome.ini b/layout/style/test/chrome/chrome.ini
index 33aa737c7dab..839390f31719 100644
--- a/layout/style/test/chrome/chrome.ini
+++ b/layout/style/test/chrome/chrome.ini
@@ -15,6 +15,7 @@ support-files =
[test_bug1160724.xul]
[test_bug535806.xul]
[test_display_mode.html]
+[test_display_mode_reflow.html]
tags = fullscreen
[test_hover.html]
skip-if = buildapp == 'mulet'
diff --git a/layout/style/test/chrome/test_display_mode_reflow.html b/layout/style/test/chrome/test_display_mode_reflow.html
new file mode 100644
index 000000000000..23546578f90c
--- /dev/null
+++ b/layout/style/test/chrome/test_display_mode_reflow.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
Test for Display Mode
+
+
+
+
+
+
+
+
+
Mozilla Bug 1256084
+
+
+
+
+
+
+
+
+
diff --git a/layout/style/test/display_mode_reflow_iframe.html b/layout/style/test/display_mode_reflow_iframe.html
new file mode 100644
index 000000000000..c05880ce7f2f
--- /dev/null
+++ b/layout/style/test/display_mode_reflow_iframe.html
@@ -0,0 +1,23 @@
+
+
+
+
Display Mode Reflow inner frame
+
+
+
+
+
+
+
+
+
diff --git a/layout/style/test/mochitest.ini b/layout/style/test/mochitest.ini
index 418bf287e1fb..3d03d53efe75 100644
--- a/layout/style/test/mochitest.ini
+++ b/layout/style/test/mochitest.ini
@@ -8,6 +8,7 @@ support-files =
chrome/match.png
chrome/mismatch.png
descriptor_database.js
+ display_mode_reflow_iframe.html
empty.html
media_queries_dynamic_xbl_binding.xml
media_queries_dynamic_xbl_iframe.html
diff --git a/layout/style/test/property_database.js b/layout/style/test/property_database.js
index 79f46279b0c0..e1ad7078b0ba 100644
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -7013,6 +7013,15 @@ if (IsCSSPropertyPrefEnabled("layout.css.prefixes.webkit")) {
alias_for: "filter",
subproperties: [ "filter" ],
};
+ gCSSProperties["-webkit-text-fill-color"] = {
+ domProp: "webkitTextFillColor",
+ inherited: true,
+ type: CSS_TYPE_LONGHAND,
+ prerequisites: { "color": "black" },
+ initial_values: [ "currentColor", "black", "#000", "#000000", "rgb(0,0,0)" ],
+ other_values: [ "red", "rgba(255,255,255,0.5)", "transparent" ],
+ invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000", "000000", "ff00ff", "rgb(255,xxx,255)" ]
+ };
gCSSProperties["-webkit-text-size-adjust"] = {
domProp: "webkitTextSizeAdjust",
inherited: true,
diff --git a/layout/style/test/test_bug657143.html b/layout/style/test/test_bug657143.html
index 4a498ef704ef..4b9980eb7911 100644
--- a/layout/style/test/test_bug657143.html
+++ b/layout/style/test/test_bug657143.html
@@ -1,107 +1,132 @@
-
-
-
-
-
Test for Bug 657143
-
-
-
-
-
-
Mozilla Bug 657143
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
Test for Bug 657143
+
+
+
+
+
+
Mozilla Bug 657143
+
+
+
+
+
+
+
+
+
+
diff --git a/layout/style/test/test_transitions_events.html b/layout/style/test/test_transitions_events.html
index d861bc7a612a..bf91578ae8e0 100644
--- a/layout/style/test/test_transitions_events.html
+++ b/layout/style/test/test_transitions_events.html
@@ -23,6 +23,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=531585
text-decoration-color: black; /* don't derive from color */
outline-color: black; /* don't derive from color */
text-emphasis-color: black; /* don't derive from color */
+ -webkit-text-fill-color: black; /* don't derive from color */
}
#four {
@@ -75,6 +76,7 @@ var got_one_target_borderleft = false;
var got_one_target_columnrule = false;
var got_one_target_textdecorationcolor = false;
var got_one_target_textemphasiscolor = false;
+var got_one_target_webkittextfillcolor = false;
var got_one_target_outlinecolor = false;
var got_two_target = false;
var got_three_top = false;
@@ -198,6 +200,12 @@ $("one").addEventListener("transitionend",
got_one_target_textemphasiscolor = true;
event.stopPropagation();
break;
+ case "-webkit-text-fill-color":
+ ok(!got_one_target_webkittextfillcolor,
+ "transitionend on one on target (-webkit-text-fill-color)");
+ got_one_target_webkittextfillcolor = true;
+ event.stopPropagation();
+ break;
case "outline-color":
ok(!got_one_target_outlinecolor,
"transitionend on one on target (outline-color)");
@@ -226,6 +234,9 @@ started_test(); // text-decoration-color on #one
if (SpecialPowers.getBoolPref("layout.css.text-emphasis.enabled")) {
started_test(); // text-emphasis-color on #one
}
+if (SpecialPowers.getBoolPref("layout.css.prefixes.webkit")) {
+ started_test(); // -webkit-text-fill-color on #one
+}
started_test(); // outline-color on #one
$("one").style.color = "lime";
diff --git a/layout/style/test/test_transitions_per_property.html b/layout/style/test/test_transitions_per_property.html
index b11c51ea6f90..4256f2e51804 100644
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -257,6 +257,8 @@ var supported_properties = {
test_length_clamped, test_percent_clamped ],
"word-spacing": [ test_length_transition, test_length_unclamped ],
"z-index": [ test_integer_transition, test_pos_integer_or_auto_transition ],
+ "-webkit-text-fill-color": [ test_color_transition,
+ test_border_color_transition ]
};
if (SupportsMaskShorthand()) {
diff --git a/layout/svg/SVGFEImageFrame.cpp b/layout/svg/SVGFEImageFrame.cpp
index 9cdd1a6424ea..5316ad17ed52 100644
--- a/layout/svg/SVGFEImageFrame.cpp
+++ b/layout/svg/SVGFEImageFrame.cpp
@@ -27,6 +27,12 @@ protected:
: SVGFEImageFrameBase(aContext)
{
AddStateBits(NS_FRAME_SVG_LAYOUT | NS_FRAME_IS_NONDISPLAY);
+
+ // This frame isn't actually displayed, but it contains an image and we want
+ // to use the nsImageLoadingContent machinery for managing images, which
+ // requires visibility tracking, so we enable visibility tracking and
+ // forcibly mark it visible below.
+ EnableVisibilityTracking();
}
public:
@@ -60,6 +66,9 @@ public:
nsIAtom* aAttribute,
int32_t aModType) override;
+ void OnVisibilityChange(Visibility aNewVisibility,
+ Maybe
aNonvisibleAction = Nothing()) override;
+
virtual bool UpdateOverflow() override {
// We don't maintain a visual overflow rect
return false;
@@ -77,13 +86,12 @@ NS_IMPL_FRAMEARENA_HELPERS(SVGFEImageFrame)
/* virtual */ void
SVGFEImageFrame::DestroyFrom(nsIFrame* aDestructRoot)
{
+ DecApproximateVisibleCount();
+
nsCOMPtr imageLoader =
do_QueryInterface(SVGFEImageFrameBase::mContent);
-
if (imageLoader) {
imageLoader->FrameDestroyed(this);
- imageLoader
- ->DecrementVisibleCount(nsIImageLoadingContent::ON_NONVISIBLE_NO_ACTION);
}
SVGFEImageFrameBase::DestroyFrom(aDestructRoot);
@@ -99,14 +107,13 @@ SVGFEImageFrame::Init(nsIContent* aContent,
"content element that doesn't support the right interfaces");
SVGFEImageFrameBase::Init(aContent, aParent, aPrevInFlow);
+
+ // We assume that feImage's are always visible.
+ IncApproximateVisibleCount();
+
nsCOMPtr imageLoader =
do_QueryInterface(SVGFEImageFrameBase::mContent);
-
if (imageLoader) {
- // We assume that feImage's are always visible.
- // Increment the visible count before calling FrameCreated so that
- // FrameCreated will actually track the image correctly.
- imageLoader->IncrementVisibleCount();
imageLoader->FrameCreated(this);
}
}
@@ -140,3 +147,19 @@ SVGFEImageFrame::AttributeChanged(int32_t aNameSpaceID,
return SVGFEImageFrameBase::AttributeChanged(aNameSpaceID,
aAttribute, aModType);
}
+
+void
+SVGFEImageFrame::OnVisibilityChange(Visibility aNewVisibility,
+ Maybe aNonvisibleAction)
+{
+ nsCOMPtr imageLoader =
+ do_QueryInterface(SVGFEImageFrameBase::mContent);
+ if (!imageLoader) {
+ MOZ_ASSERT_UNREACHABLE("Should have an nsIImageLoadingContent");
+ return;
+ }
+
+ imageLoader->OnVisibilityChange(aNewVisibility, aNonvisibleAction);
+
+ SVGFEImageFrameBase::OnVisibilityChange(aNewVisibility, aNonvisibleAction);
+}
diff --git a/layout/svg/nsSVGImageFrame.cpp b/layout/svg/nsSVGImageFrame.cpp
index 970f6616a46b..c35780e09fce 100644
--- a/layout/svg/nsSVGImageFrame.cpp
+++ b/layout/svg/nsSVGImageFrame.cpp
@@ -54,8 +54,13 @@ class nsSVGImageFrame : public nsSVGImageFrameBase,
NS_NewSVGImageFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
protected:
- explicit nsSVGImageFrame(nsStyleContext* aContext) : nsSVGImageFrameBase(aContext),
- mReflowCallbackPosted(false) {}
+ explicit nsSVGImageFrame(nsStyleContext* aContext)
+ : nsSVGImageFrameBase(aContext)
+ , mReflowCallbackPosted(false)
+ {
+ EnableVisibilityTracking();
+ }
+
virtual ~nsSVGImageFrame();
public:
@@ -75,6 +80,10 @@ public:
virtual nsresult AttributeChanged(int32_t aNameSpaceID,
nsIAtom* aAttribute,
int32_t aModType) override;
+
+ void OnVisibilityChange(Visibility aNewVisibility,
+ Maybe aNonvisibleAction = Nothing()) override;
+
virtual void Init(nsIContent* aContent,
nsContainerFrame* aParent,
nsIFrame* aPrevInFlow) override;
@@ -222,6 +231,20 @@ nsSVGImageFrame::AttributeChanged(int32_t aNameSpaceID,
aAttribute, aModType);
}
+void
+nsSVGImageFrame::OnVisibilityChange(Visibility aNewVisibility,
+ Maybe aNonvisibleAction)
+{
+ nsCOMPtr imageLoader = do_QueryInterface(mContent);
+ if (!imageLoader) {
+ return;
+ }
+
+ imageLoader->OnVisibilityChange(aNewVisibility, aNonvisibleAction);
+
+ nsSVGImageFrameBase::OnVisibilityChange(aNewVisibility, aNonvisibleAction);
+}
+
gfx::Matrix
nsSVGImageFrame::GetRasterImageTransform(int32_t aNativeWidth,
int32_t aNativeHeight)
@@ -526,7 +549,16 @@ nsSVGImageFrame::ReflowFinished()
{
mReflowCallbackPosted = false;
- nsLayoutUtils::UpdateImageVisibilityForFrame(this);
+ // XXX(seth): We don't need this. The purpose of updating visibility
+ // synchronously is to ensure that animated images start animating
+ // immediately. In the short term, however,
+ // nsImageLoadingContent::OnUnlockedDraw() is enough to ensure that
+ // animations start as soon as the image is painted for the first time, and in
+ // the long term we want to update visibility information from the display
+ // list whenever we paint, so we don't actually need to do this. However, to
+ // avoid behavior changes during the transition from the old image visibility
+ // code, we'll leave it in for now.
+ UpdateVisibilitySynchronously();
return false;
}
diff --git a/media/mtransport/third_party/nICEr/src/ice/ice_candidate.c b/media/mtransport/third_party/nICEr/src/ice/ice_candidate.c
index 8b5488865168..f10c5fb43e00 100644
--- a/media/mtransport/third_party/nICEr/src/ice/ice_candidate.c
+++ b/media/mtransport/third_party/nICEr/src/ice/ice_candidate.c
@@ -430,7 +430,7 @@ int nr_ice_candidate_compute_priority(nr_ice_candidate *cand)
if(r=NR_reg_get_uchar(NR_ICE_REG_PREF_TYPE_RELAYED_TCP,&type_preference))
ABORT(r);
}
- stun_priority=31-cand->stun_server->index;
+ stun_priority=31-cand->stun_server->id;
break;
case SERVER_REFLEXIVE:
if(cand->base.protocol == IPPROTO_UDP) {
@@ -440,7 +440,7 @@ int nr_ice_candidate_compute_priority(nr_ice_candidate *cand)
if(r=NR_reg_get_uchar(NR_ICE_REG_PREF_TYPE_SRV_RFLX_TCP,&type_preference))
ABORT(r);
}
- stun_priority=31-cand->stun_server->index;
+ stun_priority=31-cand->stun_server->id;
break;
case PEER_REFLEXIVE:
if(cand->base.protocol == IPPROTO_UDP) {
diff --git a/media/mtransport/third_party/nICEr/src/ice/ice_component.c b/media/mtransport/third_party/nICEr/src/ice/ice_component.c
index 4222a726d9e3..6cf407506fea 100644
--- a/media/mtransport/third_party/nICEr/src/ice/ice_component.c
+++ b/media/mtransport/third_party/nICEr/src/ice/ice_component.c
@@ -243,6 +243,8 @@ static int nr_ice_component_initialize_udp(struct nr_ice_ctx_ *ctx,nr_ice_compon
if(ctx->stun_servers[j].transport!=IPPROTO_UDP)
continue;
+ /* Ensure id is set (nr_ice_ctx_set_stun_servers does not) */
+ ctx->stun_servers[j].id = j;
if(r=nr_ice_candidate_create(ctx,component,
isock,sock,SERVER_REFLEXIVE,0,
&ctx->stun_servers[j],component->component_id,&cand))
@@ -272,6 +274,8 @@ static int nr_ice_component_initialize_udp(struct nr_ice_ctx_ *ctx,nr_ice_compon
continue;
if (!(ctx->flags & NR_ICE_CTX_FLAGS_RELAY_ONLY)) {
+ /* Ensure id is set with a unique value */
+ ctx->turn_servers[j].turn_server.id = j + ctx->stun_server_ct;
/* srvrflx */
if(r=nr_ice_candidate_create(ctx,component,
isock,sock,SERVER_REFLEXIVE,0,
diff --git a/media/mtransport/third_party/nICEr/src/ice/ice_ctx.c b/media/mtransport/third_party/nICEr/src/ice/ice_ctx.c
index ee48f303df59..346c06f45713 100644
--- a/media/mtransport/third_party/nICEr/src/ice/ice_ctx.c
+++ b/media/mtransport/third_party/nICEr/src/ice/ice_ctx.c
@@ -108,7 +108,6 @@ int nr_ice_fetch_stun_servers(int ct, nr_ice_stun_server **out)
if(r=nr_ip4_port_to_transport_addr(ntohl(addr_int), port, IPPROTO_UDP,
&servers[i].u.addr))
ABORT(r);
- servers[i].index=i;
servers[i].type = NR_ICE_STUN_SERVER_TYPE_ADDR;
RFREE(addr);
addr=0;
@@ -299,8 +298,6 @@ int nr_ice_fetch_turn_servers(int ct, nr_ice_turn_server **out)
data.data=0;
}
- servers[i].turn_server.index=i;
-
RFREE(addr);
addr=0;
}
diff --git a/media/mtransport/third_party/nICEr/src/ice/ice_ctx.h b/media/mtransport/third_party/nICEr/src/ice/ice_ctx.h
index 76d7587aa503..67b9d73827f4 100644
--- a/media/mtransport/third_party/nICEr/src/ice/ice_ctx.h
+++ b/media/mtransport/third_party/nICEr/src/ice/ice_ctx.h
@@ -61,7 +61,7 @@ typedef struct nr_ice_stun_server_ {
UINT2 port;
} dnsname;
} u;
- int index;
+ int id;
int transport;
} nr_ice_stun_server;
diff --git a/media/mtransport/third_party/nICEr/src/ice/ice_media_stream.c b/media/mtransport/third_party/nICEr/src/ice/ice_media_stream.c
index 8c808d13a244..ba7281992605 100644
--- a/media/mtransport/third_party/nICEr/src/ice/ice_media_stream.c
+++ b/media/mtransport/third_party/nICEr/src/ice/ice_media_stream.c
@@ -319,19 +319,10 @@ static void nr_ice_media_stream_check_timer_cb(NR_SOCKET s, int h, void *cb_arg)
int r,_status;
nr_ice_media_stream *stream=cb_arg;
nr_ice_cand_pair *pair = 0;
- int timer_val;
- int timer_multiplier;
+ int timer_multiplier=stream->pctx->active_streams ? stream->pctx->active_streams : 1;
+ int timer_val=stream->pctx->ctx->Ta*timer_multiplier;
- timer_multiplier=stream->pctx->active_streams;
- /* Once the checks are completed we don't have an active streams any more,
- * but we still need to process triggered checks. */
- if (stream->ice_state == NR_ICE_MEDIA_STREAM_CHECKS_COMPLETED) {
- assert(timer_multiplier==0);
- timer_multiplier=1;
- }
-
- assert(timer_multiplier!=0);
- timer_val=stream->pctx->ctx->Ta*timer_multiplier;
+ assert(timer_val>0);
r_log(LOG_ICE,LOG_DEBUG,"ICE-PEER(%s): check timer expired for media stream %s",stream->pctx->label,stream->label);
stream->timer=0;
diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
index 7f0da96efef8..e17f510d3a71 100644
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
@@ -2208,6 +2208,10 @@ PeerConnectionImpl::AddTrack(MediaStreamTrack& aTrack,
CSFLogError(logTag, "%s: Track is not in stream", __FUNCTION__);
return NS_ERROR_FAILURE;
}
+ if (!aMediaStream.OwnsTrack(aTrack)) {
+ CSFLogError(logTag, "%s: Track is not in owned stream (Bug 1259236)", __FUNCTION__);
+ return NS_ERROR_NOT_IMPLEMENTED;
+ }
uint32_t num = mMedia->LocalStreamsLength();
std::string streamId = PeerConnectionImpl::GetStreamId(aMediaStream);
diff --git a/media/webrtc/signaling/test/FakeMediaStreams.h b/media/webrtc/signaling/test/FakeMediaStreams.h
index 2bdf27eba047..8bfbdc11639c 100644
--- a/media/webrtc/signaling/test/FakeMediaStreams.h
+++ b/media/webrtc/signaling/test/FakeMediaStreams.h
@@ -414,6 +414,12 @@ public:
((mHintContents & HINT_CONTENTS_VIDEO) && aTrack.AsVideoStreamTrack());
}
+ bool
+ OwnsTrack(const Fake_MediaStreamTrack& aTrack) const
+ {
+ return HasTrack(aTrack);
+ }
+
void SetTrackEnabled(mozilla::TrackID aTrackID, bool aEnabled) {}
Fake_MediaStreamTrack*
diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
index 4049f89778e4..19cfbfe9ac3d 100644
--- a/memory/mozjemalloc/jemalloc.c
+++ b/memory/mozjemalloc/jemalloc.c
@@ -547,12 +547,11 @@ static const bool isthreaded = true;
#define CACHELINE ((size_t)(1U << CACHELINE_2POW))
/*
- * Smallest size class to support. On Windows the smallest allocation size
- * must be 8 bytes on 32-bit, 16 bytes on 64-bit. On Linux and Mac, even
- * malloc(1) must reserve a word's worth of memory (see Mozilla bug 691003).
+ * Smallest size class to support. On Linux and Mac, even malloc(1) must
+ * reserve a word's worth of memory (see Mozilla bug 691003).
*/
#ifdef MOZ_MEMORY_WINDOWS
-#define TINY_MIN_2POW (sizeof(void*) == 8 ? 4 : 3)
+#define TINY_MIN_2POW 1
#else
#define TINY_MIN_2POW (sizeof(void*) == 8 ? 3 : 2)
#endif
diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js
index 98402da3fba4..7f1583792773 100644
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -803,8 +803,8 @@ pref("app.orientation.default", "");
// back to the system.
pref("memory.free_dirty_pages", true);
-pref("layout.imagevisibility.numscrollportwidths", 1);
-pref("layout.imagevisibility.numscrollportheights", 1);
+pref("layout.framevisibility.numscrollportwidths", 1);
+pref("layout.framevisibility.numscrollportheights", 1);
pref("layers.enable-tiles", true);
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 36b067817832..51672c2b6ea5 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -952,11 +952,11 @@ pref("nglayout.debug.widget_update_flashing", false);
// Enable/disable display list invalidation logging --- useful for debugging.
pref("nglayout.debug.invalidation", false);
-// Whether image visibility is enabled globally (ie we will try to unlock images
-// that are not visible).
-pref("layout.imagevisibility.enabled", true);
-pref("layout.imagevisibility.numscrollportwidths", 0);
-pref("layout.imagevisibility.numscrollportheights", 1);
+// Whether frame visibility tracking is enabled globally.
+pref("layout.framevisibility.enabled", true);
+
+pref("layout.framevisibility.numscrollportwidths", 0);
+pref("layout.framevisibility.numscrollportheights", 1);
// scrollbar snapping region
// 0 - off
diff --git a/moz.configure b/moz.configure
index df6f8c486c79..4c58b6b58275 100644
--- a/moz.configure
+++ b/moz.configure
@@ -5,7 +5,6 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
include('build/moz.configure/init.configure')
-include('build/moz.configure/checks.configure')
# Note:
# - Gecko-specific options and rules should go in toolkit/moz.configure.
diff --git a/netwerk/protocol/about/nsAboutProtocolHandler.cpp b/netwerk/protocol/about/nsAboutProtocolHandler.cpp
index 91664952e0c9..cc25aa8b9cdd 100644
--- a/netwerk/protocol/about/nsAboutProtocolHandler.cpp
+++ b/netwerk/protocol/about/nsAboutProtocolHandler.cpp
@@ -4,6 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "base/basictypes.h"
+#include "mozilla/ArrayUtils.h"
#include "nsAboutProtocolHandler.h"
#include "nsIURI.h"
@@ -18,6 +19,7 @@
#include "nsAutoPtr.h"
#include "nsIWritablePropertyBag2.h"
#include "nsIChannel.h"
+#include "nsIScriptError.h"
static NS_DEFINE_CID(kSimpleURICID, NS_SIMPLEURI_CID);
static NS_DEFINE_CID(kNestedAboutURICID, NS_NESTEDABOUTURI_CID);
@@ -183,9 +185,23 @@ nsAboutProtocolHandler::NewChannel2(nsIURI* uri,
// set the LoadInfo on the newly created channel yet, as
// an interim solution we set the LoadInfo here if not
// available on the channel. Bug 1087720
- nsCOMPtr loadInfo;
- (*result)->GetLoadInfo(getter_AddRefs(loadInfo));
- if (!loadInfo) {
+ nsCOMPtr loadInfo = (*result)->GetLoadInfo();
+ if (aLoadInfo != loadInfo) {
+ if (loadInfo) {
+ NS_ASSERTION(false,
+ "nsIAboutModule->newChannel(aURI, aLoadInfo) needs to set LoadInfo");
+ const char16_t* params[] = {
+ MOZ_UTF16("nsIAboutModule->newChannel(aURI)"),
+ MOZ_UTF16("nsIAboutModule->newChannel(aURI, aLoadInfo)")
+ };
+ nsContentUtils::ReportToConsole(
+ nsIScriptError::warningFlag,
+ NS_LITERAL_CSTRING("Security by Default"),
+ nullptr, // aDocument
+ nsContentUtils::eNECKO_PROPERTIES,
+ "APIDeprecationWarning",
+ params, mozilla::ArrayLength(params));
+ }
(*result)->SetLoadInfo(aLoadInfo);
}
diff --git a/netwerk/protocol/http/Http2Stream.cpp b/netwerk/protocol/http/Http2Stream.cpp
index 7801f3df62b4..e1b946868304 100644
--- a/netwerk/protocol/http/Http2Stream.cpp
+++ b/netwerk/protocol/http/Http2Stream.cpp
@@ -555,8 +555,7 @@ Http2Stream::GenerateOpen()
firstFrameFlags |= Http2Session::kFlag_END_STREAM;
} else if (head->IsPost() ||
head->IsPut() ||
- head->IsConnect() ||
- head->IsOptions()) {
+ head->IsConnect()) {
// place fin in a data frame even for 0 length messages for iterop
} else if (!mRequestBodyLenRemaining) {
// for other HTTP extension methods, rely on the content-length
diff --git a/netwerk/test/TestCookie.cpp b/netwerk/test/TestCookie.cpp
index 00fb67a43cae..b35e51ee8b51 100644
--- a/netwerk/test/TestCookie.cpp
+++ b/netwerk/test/TestCookie.cpp
@@ -4,6 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "TestCommon.h"
+#include "TestHarness.h"
#include "nsIServiceManager.h"
#include "nsICookieService.h"
#include "nsICookieManager.h"
@@ -186,18 +187,6 @@ InitPrefs(nsIPrefBranch *aPrefBranch)
aPrefBranch->SetIntPref(kCookiesMaxPerHost, 50);
}
-class ScopedXPCOM
-{
-public:
- ScopedXPCOM() : rv(NS_InitXPCOM2(nullptr, nullptr, nullptr)) { }
- ~ScopedXPCOM()
- {
- if (NS_SUCCEEDED(rv))
- NS_ShutdownXPCOM(nullptr);
- }
-
- nsresult rv;
-};
int
main(int32_t argc, char *argv[])
@@ -207,9 +196,7 @@ main(int32_t argc, char *argv[])
bool allTestsPassed = true;
- ScopedXPCOM xpcom;
- if (NS_FAILED(xpcom.rv))
- return -1;
+ ScopedXPCOM xpcom("TestCookie");
{
nsresult rv0;
diff --git a/old-configure.in b/old-configure.in
index d4468148d1b6..8ec9bc8c1cb1 100644
--- a/old-configure.in
+++ b/old-configure.in
@@ -1393,9 +1393,9 @@ case "$target" in
fi
MOZ_GFX_OPTIMIZE_MOBILE=1
- MOZ_OPTIMIZE_FLAGS="-Os -fno-reorder-functions"
+ MOZ_OPTIMIZE_FLAGS="-Os"
if test -z "$CLANG_CC"; then
- MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
+ MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_FLAGS"
fi
;;
diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py
index 45d1f70505b1..a1e97e82cb4e 100644
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -56,6 +56,8 @@ from ..frontend.data import (
JavaJarData,
Library,
LocalInclude,
+ ObjdirFiles,
+ ObjdirPreprocessedFiles,
PerSourceFlag,
Program,
SharedLibrary,
@@ -582,7 +584,13 @@ class RecursiveMakeBackend(CommonBackend):
self._process_final_target_files(obj, obj.files, backend_file)
elif isinstance(obj, FinalTargetPreprocessedFiles):
- self._process_final_target_pp_files(obj, obj.files, backend_file)
+ self._process_final_target_pp_files(obj, obj.files, backend_file, 'DIST_FILES')
+
+ elif isinstance(obj, ObjdirFiles):
+ self._process_objdir_files(obj, obj.files, backend_file)
+
+ elif isinstance(obj, ObjdirPreprocessedFiles):
+ self._process_final_target_pp_files(obj, obj.files, backend_file, 'OBJDIR_PP_FILES')
elif isinstance(obj, AndroidResDirs):
# Order matters.
@@ -1267,20 +1275,38 @@ class RecursiveMakeBackend(CommonBackend):
backend_file.write('%s_TARGET := %s\n' % (target_var, tier))
backend_file.write('INSTALL_TARGETS += %s\n' % target_var)
- def _process_final_target_pp_files(self, obj, files, backend_file):
+ def _process_final_target_pp_files(self, obj, files, backend_file, name):
# Bug 1177710 - We'd like to install these via manifests as
# preprocessed files. But they currently depend on non-standard flags
# being added via some Makefiles, so for now we just pass them through
# to the underlying Makefile.in.
+ #
+ # Note that if this becomes a manifest, OBJDIR_PP_FILES will likely
+ # still need to use PP_TARGETS internally because we can't have an
+ # install manifest for the root of the objdir.
+ for i, (path, files) in enumerate(files.walk()):
+ self._no_skip['misc'].add(backend_file.relobjdir)
+ var = '%s_%d' % (name, i)
+ for f in files:
+ backend_file.write('%s += %s\n' % (
+ var, self._pretty_path(f, backend_file)))
+ backend_file.write('%s_PATH := $(DEPTH)/%s\n'
+ % (var, mozpath.join(obj.install_target, path)))
+ backend_file.write('%s_TARGET := misc\n' % var)
+ backend_file.write('PP_TARGETS += %s\n' % var)
+
+ def _process_objdir_files(self, obj, files, backend_file):
+ # We can't use an install manifest for the root of the objdir, since it
+ # would delete all the other files that get put there by the build
+ # system.
for i, (path, files) in enumerate(files.walk()):
self._no_skip['misc'].add(backend_file.relobjdir)
for f in files:
- backend_file.write('DIST_FILES_%d += %s\n' % (
+ backend_file.write('OBJDIR_%d_FILES += %s\n' % (
i, self._pretty_path(f, backend_file)))
- backend_file.write('DIST_FILES_%d_PATH := $(DEPTH)/%s\n'
- % (i, mozpath.join(obj.install_target, path)))
- backend_file.write('DIST_FILES_%d_TARGET := misc\n' % i)
- backend_file.write('PP_TARGETS += DIST_FILES_%d\n' % i)
+ backend_file.write('OBJDIR_%d_DEST := $(topobjdir)/%s\n' % (i, path))
+ backend_file.write('OBJDIR_%d_TARGET := misc\n' % i)
+ backend_file.write('INSTALL_TARGETS += OBJDIR_%d\n' % i)
def _process_chrome_manifest_entry(self, obj, backend_file):
fragment = Makefile()
diff --git a/python/mozbuild/mozbuild/frontend/context.py b/python/mozbuild/mozbuild/frontend/context.py
index e613a0de593c..a11912cac03e 100644
--- a/python/mozbuild/mozbuild/frontend/context.py
+++ b/python/mozbuild/mozbuild/frontend/context.py
@@ -1087,6 +1087,19 @@ VARIABLES = {
"""Like ``FINAL_TARGET_FILES``, with preprocessing.
"""),
+ 'OBJDIR_FILES': (ContextDerivedTypedHierarchicalStringList(Path), list,
+ """List of files to be installed anywhere in the objdir. Use sparingly.
+
+ ``OBJDIR_FILES`` is similar to FINAL_TARGET_FILES, but it allows copying
+ anywhere in the object directory. This is intended for various one-off
+ cases, not for general use. If you wish to add entries to OBJDIR_FILES,
+ please consult a build peer.
+ """),
+
+ 'OBJDIR_PP_FILES': (ContextDerivedTypedHierarchicalStringList(Path), list,
+ """Like ``OBJDIR_FILES``, with preprocessing. Use sparingly.
+ """),
+
'FINAL_LIBRARY': (unicode, unicode,
"""Library in which the objects of the current directory will be linked.
diff --git a/python/mozbuild/mozbuild/frontend/data.py b/python/mozbuild/mozbuild/frontend/data.py
index 8c37a37599e1..e3c25a65586d 100644
--- a/python/mozbuild/mozbuild/frontend/data.py
+++ b/python/mozbuild/mozbuild/frontend/data.py
@@ -823,6 +823,36 @@ class FinalTargetPreprocessedFiles(ContextDerived):
self.files = files
+class ObjdirFiles(ContextDerived):
+ """Sandbox container object for OBJDIR_FILES, which is a
+ HierarchicalStringList.
+ """
+ __slots__ = ('files')
+
+ def __init__(self, sandbox, files):
+ ContextDerived.__init__(self, sandbox)
+ self.files = files
+
+ @property
+ def install_target(self):
+ return ''
+
+
+class ObjdirPreprocessedFiles(ContextDerived):
+ """Sandbox container object for OBJDIR_PP_FILES, which is a
+ HierarchicalStringList.
+ """
+ __slots__ = ('files')
+
+ def __init__(self, sandbox, files):
+ ContextDerived.__init__(self, sandbox)
+ self.files = files
+
+ @property
+ def install_target(self):
+ return ''
+
+
class TestHarnessFiles(FinalTargetFiles):
"""Sandbox container object for TEST_HARNESS_FILES,
which is a HierarchicalStringList.
diff --git a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py
index 0d01f16fca45..8c4f6cc3604d 100644
--- a/python/mozbuild/mozbuild/frontend/emitter.py
+++ b/python/mozbuild/mozbuild/frontend/emitter.py
@@ -53,6 +53,8 @@ from .data import (
Library,
Linkable,
LocalInclude,
+ ObjdirFiles,
+ ObjdirPreprocessedFiles,
PerSourceFlag,
PreprocessedTestWebIDLFile,
PreprocessedWebIDLFile,
@@ -830,6 +832,8 @@ class TreeMetadataEmitter(LoggingMixin):
('EXPORTS', Exports),
('FINAL_TARGET_FILES', FinalTargetFiles),
('FINAL_TARGET_PP_FILES', FinalTargetPreprocessedFiles),
+ ('OBJDIR_FILES', ObjdirFiles),
+ ('OBJDIR_PP_FILES', ObjdirPreprocessedFiles),
('SDK_FILES', SdkFiles),
('TEST_HARNESS_FILES', TestHarnessFiles),
):
@@ -853,12 +857,13 @@ class TreeMetadataEmitter(LoggingMixin):
if mozpath.split(base)[0] == 'res':
has_resources = True
for f in files:
- if (var == 'FINAL_TARGET_PP_FILES' and
+ if ((var == 'FINAL_TARGET_PP_FILES' or
+ var == 'OBJDIR_PP_FILES') and
not isinstance(f, SourcePath)):
raise SandboxValidationError(
('Only source directory paths allowed in ' +
- 'FINAL_TARGET_PP_FILES: %s')
- % (f,), context)
+ '%s: %s')
+ % (var, f,), context)
if not isinstance(f, ObjDirPath):
path = f.full_path
if '*' not in path and not os.path.exists(path):
diff --git a/security/manager/pki/nsNSSDialogs.cpp b/security/manager/pki/nsNSSDialogs.cpp
index 616b63f521af..b6a2c8f1bf83 100644
--- a/security/manager/pki/nsNSSDialogs.cpp
+++ b/security/manager/pki/nsNSSDialogs.cpp
@@ -7,32 +7,31 @@
/*
* Dialog services for PIP.
*/
-#include "nsCOMPtr.h"
-#include "nsString.h"
-#include "nsXPIDLString.h"
-#include "nsReadableUtils.h"
#include "mozIDOMWindow.h"
-#include "nsIDialogParamBlock.h"
+#include "nsArray.h"
+#include "nsCOMPtr.h"
+#include "nsDateTimeFormatCID.h"
+#include "nsEmbedCID.h"
#include "nsIComponentManager.h"
-#include "nsIServiceManager.h"
-#include "nsIStringBundle.h"
+#include "nsIDateTimeFormat.h"
+#include "nsIDialogParamBlock.h"
#include "nsIInterfaceRequestor.h"
#include "nsIInterfaceRequestorUtils.h"
-#include "nsIX509Cert.h"
-#include "nsIX509CertDB.h"
-#include "nsIDateTimeFormat.h"
-#include "nsDateTimeFormatCID.h"
-#include "nsPromiseFlatString.h"
-
-#include "nsNSSDialogs.h"
#include "nsIKeygenThread.h"
-#include "nsIProtectedAuthThread.h"
-#include "nsNSSDialogHelper.h"
-#include "nsIWindowWatcher.h"
-#include "nsIX509CertValidity.h"
-
-#include "nsEmbedCID.h"
#include "nsIPromptService.h"
+#include "nsIProtectedAuthThread.h"
+#include "nsIServiceManager.h"
+#include "nsIStringBundle.h"
+#include "nsIWindowWatcher.h"
+#include "nsIX509CertDB.h"
+#include "nsIX509Cert.h"
+#include "nsIX509CertValidity.h"
+#include "nsNSSDialogHelper.h"
+#include "nsNSSDialogs.h"
+#include "nsPromiseFlatString.h"
+#include "nsReadableUtils.h"
+#include "nsString.h"
+#include "nsXPIDLString.h"
#define PIPSTRING_BUNDLE_URL "chrome://pippki/locale/pippki.properties"
@@ -109,7 +108,7 @@ nsNSSDialogs::ConfirmDownloadCACert(nsIInterfaceRequestor *ctx,
{
nsresult rv;
- nsCOMPtr dlgArray(do_CreateInstance(NS_ARRAY_CONTRACTID));
+ nsCOMPtr dlgArray = nsArrayBase::Create();
if (!dlgArray) {
return NS_ERROR_FAILURE;
}
@@ -360,7 +359,7 @@ nsNSSDialogs::GetPKCS12FilePassword(nsIInterfaceRequestor* ctx,
NS_IMETHODIMP
nsNSSDialogs::ViewCert(nsIInterfaceRequestor* ctx, nsIX509Cert* cert)
{
- nsCOMPtr dlgArray(do_CreateInstance(NS_ARRAY_CONTRACTID));
+ nsCOMPtr dlgArray = nsArrayBase::Create();
if (!dlgArray) {
return NS_ERROR_FAILURE;
}
diff --git a/security/manager/ssl/nsCertTree.cpp b/security/manager/ssl/nsCertTree.cpp
index b63e6fbc7e59..a97fac2960af 100644
--- a/security/manager/ssl/nsCertTree.cpp
+++ b/security/manager/ssl/nsCertTree.cpp
@@ -4,25 +4,24 @@
#include "nsCertTree.h"
-#include "pkix/pkixtypes.h"
-#include "nsNSSComponent.h" // for PIPNSS string bundle calls.
+#include "mozilla/Logging.h"
+#include "nsArray.h"
+#include "nsArrayUtils.h"
+#include "nsHashKeys.h"
+#include "nsISupportsPrimitives.h"
#include "nsITreeColumns.h"
+#include "nsIX509CertDB.h"
#include "nsIX509Cert.h"
#include "nsIX509CertValidity.h"
-#include "nsIX509CertDB.h"
-#include "nsXPIDLString.h"
-#include "nsReadableUtils.h"
-#include "nsUnicharUtils.h"
-#include "nsNSSCertificate.h"
#include "nsNSSCertHelper.h"
-#include "nsIMutableArray.h"
-#include "nsArrayUtils.h"
-#include "nsISupportsPrimitives.h"
-#include "nsXPCOMCID.h"
+#include "nsNSSCertificate.h"
+#include "nsNSSComponent.h" // for PIPNSS string bundle calls.
+#include "nsReadableUtils.h"
#include "nsTHashtable.h"
-#include "nsHashKeys.h"
-
-#include "mozilla/Logging.h"
+#include "nsUnicharUtils.h"
+#include "nsXPCOMCID.h"
+#include "nsXPIDLString.h"
+#include "pkix/pkixtypes.h"
using namespace mozilla;
@@ -685,7 +684,7 @@ nsCertTree::UpdateUIContents()
mNumOrgs = CountOrganizations();
mTreeArray = new treeArrayEl[mNumOrgs];
- mCellText = do_CreateInstance(NS_ARRAY_CONTRACTID);
+ mCellText = nsArrayBase::Create();
if (count) {
uint32_t j = 0;
diff --git a/security/manager/ssl/nsNSSASN1Object.cpp b/security/manager/ssl/nsNSSASN1Object.cpp
index d118e78246e1..6b52d8c9408f 100644
--- a/security/manager/ssl/nsNSSASN1Object.cpp
+++ b/security/manager/ssl/nsNSSASN1Object.cpp
@@ -2,12 +2,13 @@
* 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 "nsNSSASN1Object.h"
-#include "nsIComponentManager.h"
-#include "secasn1.h"
-#include "nsReadableUtils.h"
-#include "nsIMutableArray.h"
+
+#include "nsArray.h"
#include "nsArrayUtils.h"
+#include "nsIComponentManager.h"
+#include "nsReadableUtils.h"
#include "nsXPCOMCID.h"
+#include "secasn1.h"
NS_IMPL_ISUPPORTS(nsNSSASN1Sequence, nsIASN1Sequence, nsIASN1Object)
NS_IMPL_ISUPPORTS(nsNSSASN1PrintableItem, nsIASN1PrintableItem, nsIASN1Object)
@@ -222,7 +223,7 @@ NS_IMETHODIMP
nsNSSASN1Sequence::GetASN1Objects(nsIMutableArray * *aASN1Objects)
{
if (!mASN1Objects) {
- mASN1Objects = do_CreateInstance(NS_ARRAY_CONTRACTID);
+ mASN1Objects = nsArrayBase::Create();
}
*aASN1Objects = mASN1Objects;
NS_IF_ADDREF(*aASN1Objects);
diff --git a/security/manager/ssl/nsNSSCertificate.cpp b/security/manager/ssl/nsNSSCertificate.cpp
index c30f634591f5..c0eef24d5747 100644
--- a/security/manager/ssl/nsNSSCertificate.cpp
+++ b/security/manager/ssl/nsNSSCertificate.cpp
@@ -16,7 +16,7 @@
#include "pkix/pkixtypes.h"
#include "nsNSSComponent.h" // for PIPNSS string bundle calls.
#include "nsCOMPtr.h"
-#include "nsIMutableArray.h"
+#include "nsArray.h"
#include "nsNSSCertValidity.h"
#include "nsPKCS12Blob.h"
#include "nsPK11TokenDB.h"
@@ -841,7 +841,6 @@ nsNSSCertificate::GetChain(nsIArray** _rvChain)
return NS_ERROR_NOT_AVAILABLE;
NS_ENSURE_ARG(_rvChain);
- nsresult rv;
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("Getting chain for \"%s\"\n", mCert->nickname));
mozilla::pkix::Time now(mozilla::pkix::Now());
@@ -904,10 +903,9 @@ nsNSSCertificate::GetChain(nsIArray** _rvChain)
}
// enumerate the chain for scripting purposes
- nsCOMPtr array =
- do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
- if (NS_FAILED(rv)) {
- goto done;
+ nsCOMPtr array = nsArrayBase::Create();
+ if (!array) {
+ return NS_ERROR_FAILURE;
}
CERTCertListNode* node;
for (node = CERT_LIST_HEAD(nssChain.get());
@@ -920,9 +918,7 @@ nsNSSCertificate::GetChain(nsIArray** _rvChain)
}
*_rvChain = array;
NS_IF_ADDREF(*_rvChain);
- rv = NS_OK;
-done:
- return rv;
+ return NS_OK;
}
NS_IMETHODIMP
diff --git a/security/manager/ssl/nsNSSCertificateDB.cpp b/security/manager/ssl/nsNSSCertificateDB.cpp
index bc47a2f77372..2a31ba5932cb 100644
--- a/security/manager/ssl/nsNSSCertificateDB.cpp
+++ b/security/manager/ssl/nsNSSCertificateDB.cpp
@@ -15,6 +15,7 @@
#include "SharedSSLState.h"
#include "mozilla/Base64.h"
#include "mozilla/unused.h"
+#include "nsArray.h"
#include "nsArrayUtils.h"
#include "nsCOMPtr.h"
#include "nsCRT.h"
@@ -450,10 +451,9 @@ nsNSSCertificateDB::ImportCertificates(uint8_t* data, uint32_t length,
return NS_ERROR_FAILURE;
}
- nsresult rv;
- nsCOMPtr array = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
- if (NS_FAILED(rv)) {
- return rv;
+ nsCOMPtr array = nsArrayBase::Create();
+ if (!array) {
+ return NS_ERROR_FAILURE;
}
// Now let's create some certs to work with
@@ -465,7 +465,7 @@ nsNSSCertificateDB::ImportCertificates(uint8_t* data, uint32_t length,
if (!cert) {
return NS_ERROR_FAILURE;
}
- rv = array->AppendElement(cert, false);
+ nsresult rv = array->AppendElement(cert, false);
if (NS_FAILED(rv)) {
return rv;
}
diff --git a/security/manager/ssl/tests/compiled/TestCertDB.cpp b/security/manager/ssl/tests/compiled/TestCertDB.cpp
index c905440ff3b9..232396f406e7 100644
--- a/security/manager/ssl/tests/compiled/TestCertDB.cpp
+++ b/security/manager/ssl/tests/compiled/TestCertDB.cpp
@@ -7,12 +7,13 @@
#include "nsIPrefService.h"
#include "nsIX509CertDB.h"
#include "nsServiceManagerUtils.h"
+#include "TestHarness.h"
int
main(int argc, char* argv[])
{
+ ScopedXPCOM xpcom("TestCertDB");
{
- NS_InitXPCOM2(nullptr, nullptr, nullptr);
nsCOMPtr prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
if (!prefs) {
return -1;
@@ -29,6 +30,5 @@ main(int argc, char* argv[])
}
} // this scopes the nsCOMPtrs
// no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
- NS_ShutdownXPCOM(nullptr);
return 0;
}
diff --git a/security/manager/ssl/tests/unit/test_pkcs11_insert_remove.js b/security/manager/ssl/tests/unit/test_pkcs11_insert_remove.js
index 019f9202da90..16c66b288a2f 100644
--- a/security/manager/ssl/tests/unit/test_pkcs11_insert_remove.js
+++ b/security/manager/ssl/tests/unit/test_pkcs11_insert_remove.js
@@ -45,9 +45,22 @@ SmartcardObserver.prototype = {
break;
}
}
- equal(testTokenLabelFound, this.type == "smartcard-insert",
+ let testTokenShouldBePresent = this.type == "smartcard-insert";
+ equal(testTokenLabelFound, testTokenShouldBePresent,
"Should find test token only when the test module is loaded");
+ // Test that the token is findable by name only when the test module is
+ // loaded.
+ // Note: Again, this test is located here out of convenience.
+ if (testTokenShouldBePresent) {
+ notEqual(gTokenDB.findTokenByName(gExpectedTokenLabel), null,
+ "Test token should be findable by name");
+ } else {
+ throws(() => gTokenDB.findTokenByName(gExpectedTokenLabel),
+ /NS_ERROR_FAILURE/,
+ "Non-present test token should not be findable by name");
+ }
+
Services.obs.removeObserver(this, this.type);
do_test_finished();
}
diff --git a/security/manager/ssl/tests/unit/test_pkcs11_list.js b/security/manager/ssl/tests/unit/test_pkcs11_module.js
similarity index 65%
rename from security/manager/ssl/tests/unit/test_pkcs11_list.js
rename to security/manager/ssl/tests/unit/test_pkcs11_module.js
index 788bbf9ad90c..bfd17dcecc77 100644
--- a/security/manager/ssl/tests/unit/test_pkcs11_list.js
+++ b/security/manager/ssl/tests/unit/test_pkcs11_module.js
@@ -3,15 +3,11 @@
// http://creativecommons.org/publicdomain/zero/1.0/
"use strict";
-// Tests the methods for listing PKCS #11 modules and slots via loading and
-// unloading a test PKCS #11 module.
-
-// Note: Tests for listing PKCS #11 tokens are located in
-// test_pkcs11_insert_remove.js out of convenience.
+// Tests the methods and attributes for interfacing with a PKCS #11 module and
+// the module database.
// Ensure that the appropriate initialization has happened.
do_get_profile();
-Cc["@mozilla.org/psm;1"].getService(Ci.nsISupports);
const gModuleDB = Cc["@mozilla.org/security/pkcs11moduledb;1"]
.getService(Ci.nsIPKCS11ModuleDB);
@@ -24,11 +20,17 @@ function checkTestModuleNotPresent() {
let module = modules.getNext().QueryInterface(Ci.nsIPKCS11Module);
notEqual(module.name, "PKCS11 Test Module",
"Non-test module name shouldn't equal 'PKCS11 Test Module'");
+ ok(!(module.libName && module.libName.includes("pkcs11testmodule")),
+ "Non-test module lib name should not include 'pkcs11testmodule'");
}
+
+ throws(() => gModuleDB.findModuleByName("PKCS11 Test Module"),
+ /NS_ERROR_FAILURE/, "Test module should not be findable by name");
}
/**
* Checks that the test module exists in the module list.
+ * Also checks various attributes of the test module for correctness.
*
* @returns {nsIPKCS11Module}
* The test module.
@@ -46,15 +48,20 @@ function checkTestModuleExists() {
}
}
notEqual(testModule, null, "Test module should have been found");
+ notEqual(testModule.libName, null, "Test module lib name should not be null");
+ ok(testModule.libName.includes(ctypes.libraryName("pkcs11testmodule")),
+ "Test module lib name should include lib name of 'pkcs11testmodule'");
+
+ notEqual(gModuleDB.findModuleByName("PKCS11 Test Module"), null,
+ "Test module should be findable by name");
return testModule;
}
function run_test() {
- let libraryName = ctypes.libraryName("pkcs11testmodule");
let libraryFile = Services.dirsvc.get("CurWorkD", Ci.nsILocalFile);
libraryFile.append("pkcs11testmodule");
- libraryFile.append(libraryName);
+ libraryFile.append(ctypes.libraryName("pkcs11testmodule"));
ok(libraryFile.exists(), "The pkcs11testmodule file should exist");
// Check that if we have never added the test module, that we don't find it
@@ -88,7 +95,22 @@ function run_test() {
}
equal(testModuleSlotCount, 1, "Test module should only have one slot");
+ // Check that finding the test slot by name is possible, and that trying to
+ // find a non-present slot fails.
+ notEqual(testModule.findSlotByName("Test PKCS11 Slot"), null,
+ "Test slot should be findable by name");
+ throws(() => testModule.findSlotByName("Not Present"), /NS_ERROR_FAILURE/,
+ "Non-present slot should not be findable by name");
+
// Check that deleting the test module makes it disappear from the module list.
pkcs11.deleteModule("PKCS11 Test Module");
checkTestModuleNotPresent();
+
+ // Check miscellaneous module DB methods and attributes.
+ notEqual(gModuleDB.getInternal(), null,
+ "The internal module should be present");
+ notEqual(gModuleDB.getInternalFIPS(), null,
+ "The internal FIPS module should be present");
+ ok(gModuleDB.canToggleFIPS, "It should be possible to toggle FIPS");
+ ok(!gModuleDB.isFIPSEnabled, "FIPS should not be enabled");
}
diff --git a/security/manager/ssl/tests/unit/test_pkcs11_slot.js b/security/manager/ssl/tests/unit/test_pkcs11_slot.js
new file mode 100644
index 000000000000..98cc77796bfb
--- /dev/null
+++ b/security/manager/ssl/tests/unit/test_pkcs11_slot.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/publicdomain/zero/1.0/
+"use strict";
+
+// Tests the methods and attributes for interfacing with a PKCS #11 slot.
+
+// Ensure that the appropriate initialization has happened.
+do_get_profile();
+
+function run_test() {
+ let libraryFile = Services.dirsvc.get("CurWorkD", Ci.nsILocalFile);
+ libraryFile.append("pkcs11testmodule");
+ libraryFile.append(ctypes.libraryName("pkcs11testmodule"));
+ ok(libraryFile.exists(), "The pkcs11testmodule file should exist");
+
+ let pkcs11 = Cc["@mozilla.org/security/pkcs11;1"].getService(Ci.nsIPKCS11);
+ do_register_cleanup(() => {
+ pkcs11.deleteModule("PKCS11 Test Module");
+ });
+ pkcs11.addModule("PKCS11 Test Module", libraryFile.path, 0, 0);
+
+ let moduleDB = Cc["@mozilla.org/security/pkcs11moduledb;1"]
+ .getService(Ci.nsIPKCS11ModuleDB);
+ let testModule = moduleDB.findModuleByName("PKCS11 Test Module");
+ let testSlot = testModule.findSlotByName("Test PKCS11 Slot");
+
+ equal(testSlot.name, "Test PKCS11 Slot",
+ "Actual and expected name should match");
+ equal(testSlot.desc, "Test PKCS11 Slot",
+ "Actual and expected description should match");
+ equal(testSlot.manID, "Test PKCS11 Manufacturer ID",
+ "Actual and expected manufacturer ID should match");
+ equal(testSlot.HWVersion, "0.0",
+ "Actual and expected hardware version should match");
+ equal(testSlot.FWVersion, "0.0",
+ "Actual and expected firmware version should match");
+ // Note: testSlot.status is not tested because the implementation calls
+ // PK11_IsPresent(), which checks whether the test token is present.
+ // The test module inserts and removes the test token in a tight loop,
+ // so the result might not be deterministic.
+}
diff --git a/security/manager/ssl/tests/unit/test_pkcs11_token.js b/security/manager/ssl/tests/unit/test_pkcs11_token.js
new file mode 100644
index 000000000000..32fe4e3a19dd
--- /dev/null
+++ b/security/manager/ssl/tests/unit/test_pkcs11_token.js
@@ -0,0 +1,105 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/publicdomain/zero/1.0/
+"use strict";
+
+// Tests the methods and attributes for interfacing with a PKCS #11 token, using
+// the internal key token.
+// Note: We don't use the test token in the test PKCS #11 module because it is
+// inconvenient to test. See the top level comment in
+// test_pkcs11_insert_remove.js for why. However, some token DB tests are
+// located in that file out of convenience.
+
+// Ensure that the appropriate initialization has happened.
+do_get_profile();
+
+function checkBasicAttributes(token) {
+ let strBundleSvc = Cc["@mozilla.org/intl/stringbundle;1"]
+ .getService(Ci.nsIStringBundleService);
+ let bundle =
+ strBundleSvc.createBundle("chrome://pipnss/locale/pipnss.properties");
+
+ let expectedTokenName = bundle.GetStringFromName("PrivateTokenDescription");
+ equal(token.tokenName, expectedTokenName,
+ "Actual and expected name should match");
+ equal(token.tokenLabel, expectedTokenName,
+ "Actual and expected label should match");
+ equal(token.tokenManID, bundle.GetStringFromName("ManufacturerID"),
+ "Actual and expected manufacturer ID should match");
+ equal(token.tokenHWVersion, "0.0",
+ "Actual and expected hardware version should match");
+ equal(token.tokenFWVersion, "0.0",
+ "Actual and expected firmware version should match");
+ equal(token.tokenSerialNumber, "0000000000000000",
+ "Actual and expected serial number should match");
+}
+
+/**
+ * Checks the various password related features of the given token.
+ * The token should already have been init with a password and be logged into.
+ * The password of the token will be reset after calling this function.
+ *
+ * @param {nsIPK11Token} token
+ * The token to test.
+ * @param {String} initialPW
+ * The password that the token should have been init with.
+ */
+function checkPasswordFeaturesAndResetPassword(token, initialPW) {
+ ok(!token.needsUserInit,
+ "Token should not need user init after setting a password");
+
+ equal(token.minimumPasswordLength, 0,
+ "Actual and expected min password length should match");
+
+ token.setAskPasswordDefaults(10, 20);
+ equal(token.getAskPasswordTimes(), 10,
+ "Actual and expected ask password times should match");
+ equal(token.getAskPasswordTimeout(), 20,
+ "Actual and expected ask password timeout should match");
+
+ ok(token.checkPassword(initialPW),
+ "checkPassword() should succeed if the correct initial password is given");
+ token.changePassword(initialPW, "newPW");
+ ok(token.checkPassword("newPW"),
+ "checkPassword() should succeed if the correct new password is given");
+
+ ok(!token.checkPassword("wrongPW"),
+ "checkPassword() should fail if an incorrect password is given");
+ ok(!token.isLoggedIn(),
+ "Token should be logged out after an incorrect password was given");
+ ok(!token.needsUserInit,
+ "Token should still be init with a password even if an incorrect " +
+ "password was given");
+
+ token.reset();
+ ok(token.needsUserInit,
+ "Token should need password init after reset");
+}
+
+function run_test() {
+ let tokenDB = Cc["@mozilla.org/security/pk11tokendb;1"]
+ .getService(Ci.nsIPK11TokenDB);
+ let token = tokenDB.getInternalKeyToken();
+ notEqual(token, null, "The internal token should be present");
+
+ checkBasicAttributes(token);
+
+ ok(!token.isLoggedIn(), "Token should not be logged into yet");
+ let initialPW = "foo 1234567890`~!#$%^&*()-_=+{[}]|\\:;'\",<.>/?";
+ token.initPassword(initialPW);
+ token.login(/*force*/ false);
+ ok(token.isLoggedIn(), "Token should now be logged into");
+
+ checkPasswordFeaturesAndResetPassword(token, initialPW);
+
+ // We reset the password previously, so we need to initialize again.
+ token.initPassword("arbitrary");
+ token.logoutSimple();
+ ok(!token.isLoggedIn(),
+ "Token should be logged out after calling logoutSimple()");
+
+ ok(!token.isHardwareToken(),
+ "The internal token should not be considered a hardware token");
+ ok(token.isFriendly(),
+ "The internal token should always be considered friendly");
+}
diff --git a/security/manager/ssl/tests/unit/xpcshell-smartcards.ini b/security/manager/ssl/tests/unit/xpcshell-smartcards.ini
index dc9b12d3df3f..fb443eb1e216 100644
--- a/security/manager/ssl/tests/unit/xpcshell-smartcards.ini
+++ b/security/manager/ssl/tests/unit/xpcshell-smartcards.ini
@@ -6,6 +6,8 @@ skip-if = toolkit == 'android' || toolkit == 'gonk'
support-files =
[test_pkcs11_insert_remove.js]
-[test_pkcs11_list.js]
+[test_pkcs11_module.js]
[test_pkcs11_no_events_after_removal.js]
[test_pkcs11_safe_mode.js]
+[test_pkcs11_slot.js]
+[test_pkcs11_token.js]
diff --git a/services/fxaccounts/tests/xpcshell/xpcshell.ini b/services/fxaccounts/tests/xpcshell/xpcshell.ini
index 548ae32908af..2f2fef9c9058 100644
--- a/services/fxaccounts/tests/xpcshell/xpcshell.ini
+++ b/services/fxaccounts/tests/xpcshell/xpcshell.ini
@@ -1,11 +1,11 @@
[DEFAULT]
head = head.js ../../../common/tests/unit/head_helpers.js ../../../common/tests/unit/head_http.js
tail =
-skip-if = toolkit == 'android'
+skip-if = (toolkit == 'android' || appname == 'thunderbird')
[test_accounts.js]
[test_accounts_device_registration.js]
-skip-if = (appname == 'b2g' || appname == 'thunderbird')
+skip-if = appname == 'b2g'
[test_client.js]
skip-if = toolkit == 'gonk' # times out, bug 1073639
[test_credentials.js]
@@ -22,6 +22,6 @@ reason = FxAccountsManager is only available for B2G for now
[test_profile_client.js]
[test_push_service.js]
[test_web_channel.js]
-skip-if = (appname == 'b2g' || appname == 'thunderbird') # fxa web channels only used on desktop
+skip-if = appname == 'b2g' # fxa web channels only used on desktop
[test_profile.js]
[test_storage_manager.js]
diff --git a/testing/taskcluster/tasks/branches/try/job_flags.yml b/testing/taskcluster/tasks/branches/try/job_flags.yml
index 42242afc343d..c1604e092beb 100644
--- a/testing/taskcluster/tasks/branches/try/job_flags.yml
+++ b/testing/taskcluster/tasks/branches/try/job_flags.yml
@@ -34,23 +34,23 @@ builds:
- Linux
types:
opt:
- task: tasks/builds/opt_linux32_clobber.yml
+ task: tasks/builds/opt_linux32.yml
debug:
- task: tasks/builds/dbg_linux32_clobber.yml
+ task: tasks/builds/dbg_linux32.yml
linux64:
platforms:
- Linux64
types:
opt:
- task: tasks/builds/opt_linux64_clobber.yml
+ task: tasks/builds/opt_linux64.yml
debug:
- task: tasks/builds/dbg_linux64_clobber.yml
+ task: tasks/builds/dbg_linux64.yml
linux64-st-an:
platforms:
- Linux64 Static Analysis
types:
opt:
- task: tasks/builds/opt_linux64_st-an_clobber.yml
+ task: tasks/builds/opt_linux64_st-an.yml
linux64-haz:
platforms:
- Linux64
@@ -68,15 +68,15 @@ builds:
- MacOSX64
types:
opt:
- task: tasks/builds/opt_macosx64_clobber.yml
+ task: tasks/builds/opt_macosx64.yml
debug:
- task: tasks/builds/dbg_macosx64_clobber.yml
+ task: tasks/builds/dbg_macosx64.yml
macosx64-st-an:
platforms:
- MacOSX64 Static Analysis
types:
opt:
- task: tasks/builds/opt_macosx64_st-an_clobber.yml
+ task: tasks/builds/opt_macosx64_st-an.yml
sm-plain:
platforms:
- Linux64
@@ -136,49 +136,49 @@ post-build:
tests:
cppunit:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_cppunit.yml
crashtest:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_crashtest.yml
crashtest-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_crashtest_e10s.yml
firefox-ui-functional:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional.yml
firefox-ui-functional-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_e10s.yml
gtest:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_gtest.yml
jittests:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_jittests.yml
jsreftest:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_jsreftest.yml
jsreftest-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_jsreftest_e10s.yml
marionette:
allowed_build_tasks:
tasks/builds/b2g_emulator_x86_kk_opt.yml:
task: tasks/tests/b2g_emulator_marionette.yml
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_marionette.yml
marionette-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_marionette_e10s.yml
mochitest:
allowed_build_tasks:
@@ -186,47 +186,47 @@ tests:
task: tasks/tests/b2g_emulator_mochitest.yml
tasks/builds/b2g_emulator_x86_kk_opt.yml:
task: tasks/tests/b2g_emulator_mochitest.yml
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_plain.yml
mochitest-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_plain_e10s.yml
mochitest-a11y:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_a11y.yml
mochitest-browser-chrome:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_bc.yml
mochitest-browser-chrome-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_bc_e10s.yml
mochitest-chrome:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_chrome.yml
mochitest-devtools-chrome:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_dt.yml
mochitest-jetpack:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_jetpack.yml
mochitest-media:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_media.yml
mochitest-media-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_media_e10s.yml
mochitest-webgl:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_mochitest_gl.yml
reftest:
allowed_build_tasks:
@@ -234,29 +234,29 @@ tests:
task: tasks/tests/b2g_emulator_reftest.yml
tasks/builds/b2g_emulator_x86_kk_opt.yml:
task: tasks/tests/b2g_emulator_reftest.yml
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_reftest.yml
reftest-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_reftest_e10s.yml
web-platform-tests:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_web_platform_tests.yml
web-platform-tests-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_web_platform_tests_e10s.yml
web-platform-tests-reftests:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_web_platform_tests_reftests.yml
web-platform-tests-reftests-e10s:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_web_platform_tests_reftests_e10s.yml
xpcshell:
allowed_build_tasks:
- tasks/builds/dbg_linux64_clobber.yml:
+ tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_xpcshell.yml
diff --git a/testing/taskcluster/tasks/builds/linux32_clobber.yml b/testing/taskcluster/tasks/builds/base_linux32.yml
similarity index 89%
rename from testing/taskcluster/tasks/builds/linux32_clobber.yml
rename to testing/taskcluster/tasks/builds/base_linux32.yml
index 2973a616ccfc..973f8617d5cc 100644
--- a/testing/taskcluster/tasks/builds/linux32_clobber.yml
+++ b/testing/taskcluster/tasks/builds/base_linux32.yml
@@ -12,11 +12,12 @@ task:
scopes:
- 'docker-worker:cache:tooltool-cache'
- 'docker-worker:relengapi-proxy:tooltool.download.public'
+ - 'docker-worker:cache:level-{{level}}-{{project}}-build-linux32-workspace'
payload:
cache:
- # "clobber" means no workspace cache; non-clobber subclasses should add that
tooltool-cache: '/home/worker/tooltool-cache'
+ level-{{level}}-{{project}}-build-linux32-workspace: '/home/worker/workspace'
features:
relengAPIProxy: true
@@ -49,3 +50,4 @@ task:
locations:
build: 'public/build/target.tar.bz2'
tests: 'public/build/target.tests.zip'
+
diff --git a/testing/taskcluster/tasks/builds/linux64_clobber.yml b/testing/taskcluster/tasks/builds/base_linux64.yml
similarity index 87%
rename from testing/taskcluster/tasks/builds/linux64_clobber.yml
rename to testing/taskcluster/tasks/builds/base_linux64.yml
index 87de862de265..676ec6c75b56 100644
--- a/testing/taskcluster/tasks/builds/linux64_clobber.yml
+++ b/testing/taskcluster/tasks/builds/base_linux64.yml
@@ -8,11 +8,12 @@ task:
scopes:
- 'docker-worker:cache:tooltool-cache'
- 'docker-worker:relengapi-proxy:tooltool.download.public'
+ - 'docker-worker:cache:level-{{level}}-{{project}}-build-{{build_name}}-workspace'
payload:
cache:
- # "clobber" means no workspace cache; non-clobber subclasses should add that
tooltool-cache: '/home/worker/tooltool-cache'
+ level-{{level}}-{{project}}-build-{{build_name}}-workspace: '/home/worker/workspace'
features:
relengAPIProxy: true
diff --git a/testing/taskcluster/tasks/builds/opt_macosx64_clobber.yml b/testing/taskcluster/tasks/builds/base_macosx64.yml
similarity index 79%
rename from testing/taskcluster/tasks/builds/opt_macosx64_clobber.yml
rename to testing/taskcluster/tasks/builds/base_macosx64.yml
index 0ecbb2c25213..ca57996bdfe5 100644
--- a/testing/taskcluster/tasks/builds/opt_macosx64_clobber.yml
+++ b/testing/taskcluster/tasks/builds/base_macosx64.yml
@@ -1,23 +1,21 @@
$inherits:
from: 'tasks/builds/firefox_base.yml'
- variables:
- build_name: 'macosx64'
- build_type: 'opt'
task:
- metadata:
- name: '[TC] MacOSX64 Opt'
- description: 'MacOSX64 Opt'
-
- workerType: opt-macosx64
scopes:
- 'docker-worker:cache:tooltool-cache'
+ - 'docker-worker:cache:level-{{level}}-{{project}}-build-{{build_name}}-workspace'
- 'docker-worker:relengapi-proxy:tooltool.download.internal'
- 'docker-worker:relengapi-proxy:tooltool.download.public'
+ routes:
+ - 'index.buildbot.branches.{{project}}.{{build_name}}'
+ - 'index.buildbot.revisions.{{head_rev}}.{{project}}.{{build_name}}'
+
payload:
cache:
tooltool-cache: '/home/worker/tooltool-cache'
+ level-{{level}}-{{project}}-build-{{build_name}}-workspace: '/home/worker/workspace'
features:
relengAPIProxy: true
@@ -49,3 +47,4 @@ task:
locations:
build: 'public/build/target.dmg'
tests: 'public/build/target.tests.zip'
+
diff --git a/testing/taskcluster/tasks/builds/dbg_linux32.yml b/testing/taskcluster/tasks/builds/dbg_linux32.yml
index 1d0e4acf0000..40b65af6dddf 100644
--- a/testing/taskcluster/tasks/builds/dbg_linux32.yml
+++ b/testing/taskcluster/tasks/builds/dbg_linux32.yml
@@ -1,10 +1,24 @@
$inherits:
- from: 'tasks/builds/dbg_linux32_clobber.yml'
+ from: 'tasks/builds/base_linux32.yml'
+ variables:
+ build_name: 'linux32'
+ build_type: 'dbg'
task:
- # same as clobber, but with a cached workspace
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-linux32-workspace'
+ metadata:
+ name: '[TC] Linux32 Dbg'
+ description: 'Linux32 Dbg'
+
+ workerType: dbg-linux32
payload:
- cache:
- level-{{level}}-{{project}}-build-linux32-workspace: '/home/worker/workspace'
+ env:
+ MH_CUSTOM_BUILD_VARIANT_CFG: 'debug'
+
+ extra:
+ treeherder:
+ groupSymbol: tc
+ groupName: Submitted by taskcluster
+ symbol: B
+ collection:
+ debug: true
+
diff --git a/testing/taskcluster/tasks/builds/dbg_linux32_clobber.yml b/testing/taskcluster/tasks/builds/dbg_linux32_clobber.yml
deleted file mode 100644
index 679549d33669..000000000000
--- a/testing/taskcluster/tasks/builds/dbg_linux32_clobber.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-$inherits:
- from: 'tasks/builds/linux32_clobber.yml'
- variables:
- build_name: 'linux32'
- build_type: 'dbg'
-task:
- metadata:
- name: '[TC] Linux32 Dbg'
- description: 'Linux32 Dbg'
-
- workerType: dbg-linux32
-
- payload:
- env:
- MH_CUSTOM_BUILD_VARIANT_CFG: 'debug'
-
- extra:
- treeherder:
- groupSymbol: tc
- groupName: Submitted by taskcluster
- symbol: B
- collection:
- debug: true
-
diff --git a/testing/taskcluster/tasks/builds/dbg_linux64.yml b/testing/taskcluster/tasks/builds/dbg_linux64.yml
index ea522acb2e5a..878ea01f188e 100644
--- a/testing/taskcluster/tasks/builds/dbg_linux64.yml
+++ b/testing/taskcluster/tasks/builds/dbg_linux64.yml
@@ -1,10 +1,28 @@
$inherits:
- from: 'tasks/builds/dbg_linux64_clobber.yml'
+ from: 'tasks/builds/base_linux64.yml'
+ variables:
+ build_name: 'linux64'
+ build_type: 'dbg'
task:
- # same as clobber, but with a cached workspace
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-linux64-workspace'
+ metadata:
+ name: '[TC] Linux64 Dbg'
+ description: 'Linux64 Dbg'
+
+ routes:
+ - 'index.buildbot.branches.{{project}}.linux64'
+ - 'index.buildbot.revisions.{{head_rev}}.{{project}}.linux64'
+
+ workerType: dbg-linux64
payload:
- cache:
- level-{{level}}-{{project}}-build-linux64-workspace: '/home/worker/workspace'
+ env:
+ MH_CUSTOM_BUILD_VARIANT_CFG: 'debug'
+
+ extra:
+ treeherder:
+ groupSymbol: tc
+ groupName: Submitted by taskcluster
+ symbol: B
+ collection:
+ debug: true
+
diff --git a/testing/taskcluster/tasks/builds/dbg_linux64_clobber.yml b/testing/taskcluster/tasks/builds/dbg_linux64_clobber.yml
deleted file mode 100644
index 3d4f2f59ec68..000000000000
--- a/testing/taskcluster/tasks/builds/dbg_linux64_clobber.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-$inherits:
- from: 'tasks/builds/linux64_clobber.yml'
- variables:
- build_name: 'linux64'
- build_type: 'dbg'
-task:
- metadata:
- name: '[TC] Linux64 Dbg'
- description: 'Linux64 Dbg'
-
- routes:
- - 'index.buildbot.branches.{{project}}.linux64'
- - 'index.buildbot.revisions.{{head_rev}}.{{project}}.linux64'
-
- workerType: dbg-linux64
-
- payload:
- env:
- MH_CUSTOM_BUILD_VARIANT_CFG: 'debug'
-
- extra:
- treeherder:
- groupSymbol: tc
- groupName: Submitted by taskcluster
- symbol: B
- collection:
- debug: true
-
diff --git a/testing/taskcluster/tasks/builds/dbg_macosx64.yml b/testing/taskcluster/tasks/builds/dbg_macosx64.yml
index a7370a8f8959..89d93fb56f60 100644
--- a/testing/taskcluster/tasks/builds/dbg_macosx64.yml
+++ b/testing/taskcluster/tasks/builds/dbg_macosx64.yml
@@ -1,5 +1,5 @@
$inherits:
- from: 'tasks/builds/opt_macosx64.yml'
+ from: 'tasks/builds/base_macosx64.yml'
variables:
build_name: 'macosx64'
build_type: 'dbg'
diff --git a/testing/taskcluster/tasks/builds/dbg_macosx64_clobber.yml b/testing/taskcluster/tasks/builds/dbg_macosx64_clobber.yml
deleted file mode 100644
index a53ad42ac834..000000000000
--- a/testing/taskcluster/tasks/builds/dbg_macosx64_clobber.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-$inherits:
- from: 'tasks/builds/opt_macosx64_clobber.yml'
- variables:
- build_name: 'macosx64'
- build_type: 'dbg'
-task:
- metadata:
- name: '[TC] MacOSX64 Dbg'
- description: 'MacOSX64 Dbg'
-
- workerType: dbg-macosx64
-
- payload:
- env:
- MH_CUSTOM_BUILD_VARIANT_CFG: 'cross-debug'
- extra:
- treeherder:
- groupSymbol: tc
- groupName: Submitted by taskcluster
- symbol: B
- collection:
- debug: true
diff --git a/testing/taskcluster/tasks/builds/opt_linux32.yml b/testing/taskcluster/tasks/builds/opt_linux32.yml
index 17e8c49cccb7..181713f24b72 100644
--- a/testing/taskcluster/tasks/builds/opt_linux32.yml
+++ b/testing/taskcluster/tasks/builds/opt_linux32.yml
@@ -1,10 +1,18 @@
$inherits:
- from: 'tasks/builds/opt_linux32_clobber.yml'
+ from: 'tasks/builds/base_linux32.yml'
+ variables:
+ build_name: 'linux32'
+ build_type: 'opt'
task:
- # same as clobber, but with a cached workspace
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-linux32-workspace'
+ metadata:
+ name: '[TC] Linux32 Opt'
+ description: 'Linux32 Opt'
+
+ workerType: opt-linux32
+
+ extra:
+ treeherder:
+ groupSymbol: tc
+ groupName: Submitted by taskcluster
+ symbol: B
- payload:
- cache:
- level-{{level}}-{{project}}-build-linux32-workspace: '/home/worker/workspace'
diff --git a/testing/taskcluster/tasks/builds/opt_linux32_clobber.yml b/testing/taskcluster/tasks/builds/opt_linux32_clobber.yml
deleted file mode 100644
index ee56161c6e82..000000000000
--- a/testing/taskcluster/tasks/builds/opt_linux32_clobber.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-$inherits:
- from: 'tasks/builds/linux32_clobber.yml'
- variables:
- build_name: 'linux32'
- build_type: 'opt'
-task:
- metadata:
- name: '[TC] Linux32 Opt'
- description: 'Linux32 Opt'
-
- workerType: opt-linux32
-
- extra:
- treeherder:
- groupSymbol: tc
- groupName: Submitted by taskcluster
- symbol: B
-
diff --git a/testing/taskcluster/tasks/builds/opt_linux64.yml b/testing/taskcluster/tasks/builds/opt_linux64.yml
index e3b270897d93..ceda4b7082c7 100644
--- a/testing/taskcluster/tasks/builds/opt_linux64.yml
+++ b/testing/taskcluster/tasks/builds/opt_linux64.yml
@@ -1,10 +1,22 @@
$inherits:
- from: 'tasks/builds/opt_linux64_clobber.yml'
+ from: 'tasks/builds/base_linux64.yml'
+ variables:
+ build_name: 'linux64'
+ build_type: 'opt'
task:
- # same as clobber, but with a cached workspace
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-linux64-workspace'
+ metadata:
+ name: '[TC] Linux64 Opt'
+ description: 'Linux64 Opt'
+
+ routes:
+ - 'index.buildbot.branches.{{project}}.linux64'
+ - 'index.buildbot.revisions.{{head_rev}}.{{project}}.linux64'
+
+ workerType: opt-linux64
+
+ extra:
+ treeherder:
+ groupSymbol: tc
+ groupName: Submitted by taskcluster
+ symbol: B
- payload:
- cache:
- level-{{level}}-{{project}}-build-linux64-workspace: '/home/worker/workspace'
diff --git a/testing/taskcluster/tasks/builds/opt_linux64_artifact.yml b/testing/taskcluster/tasks/builds/opt_linux64_artifact.yml
index 3c52a9b6048f..c8c98a908375 100644
--- a/testing/taskcluster/tasks/builds/opt_linux64_artifact.yml
+++ b/testing/taskcluster/tasks/builds/opt_linux64_artifact.yml
@@ -1,5 +1,5 @@
$inherits:
- from: 'tasks/builds/linux64_clobber.yml'
+ from: 'tasks/builds/base_linux64.yml'
variables:
build_name: 'linux64-artifact'
build_type: 'opt'
diff --git a/testing/taskcluster/tasks/builds/opt_linux64_clobber.yml b/testing/taskcluster/tasks/builds/opt_linux64_clobber.yml
deleted file mode 100644
index e0643543ca0f..000000000000
--- a/testing/taskcluster/tasks/builds/opt_linux64_clobber.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-$inherits:
- from: 'tasks/builds/linux64_clobber.yml'
- variables:
- build_name: 'linux64'
- build_type: 'opt'
-task:
- metadata:
- name: '[TC] Linux64 Opt'
- description: 'Linux64 Opt'
-
- routes:
- - 'index.buildbot.branches.{{project}}.linux64'
- - 'index.buildbot.revisions.{{head_rev}}.{{project}}.linux64'
-
- workerType: opt-linux64
-
- extra:
- treeherder:
- groupSymbol: tc
- groupName: Submitted by taskcluster
- symbol: B
-
diff --git a/testing/taskcluster/tasks/builds/opt_linux64_st-an.yml b/testing/taskcluster/tasks/builds/opt_linux64_st-an.yml
index f1b502c22d34..badac290163f 100644
--- a/testing/taskcluster/tasks/builds/opt_linux64_st-an.yml
+++ b/testing/taskcluster/tasks/builds/opt_linux64_st-an.yml
@@ -1,6 +1,5 @@
$inherits:
- # inherit clobber since we want to use a different workspace cache
- from: 'tasks/builds/linux64_clobber.yml'
+ from: 'tasks/builds/base_linux64.yml'
variables:
build_name: 'linux64-st-an'
build_type: 'opt'
@@ -9,9 +8,6 @@ task:
name: '[TC] Linux64 Static Analysis Opt'
description: 'Linux64 Static Analysis Opt'
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-linux64-st-an-workspace'
-
routes:
- 'index.buildbot.branches.{{project}}.linux64-st-an'
- 'index.buildbot.revisions.{{head_rev}}.{{project}}.linux64-st-an'
@@ -19,8 +15,6 @@ task:
workerType: opt-linux64
payload:
- cache:
- level-{{level}}-{{project}}-build-linux64-st-an-workspace: '/home/worker/workspace'
env:
MOZHARNESS_SCRIPT: 'mozharness/scripts/fx_desktop_build.py'
MOZHARNESS_CONFIG: 'builds/releng_sub_linux_configs/64_stat_and_opt.py balrog/production.py'
diff --git a/testing/taskcluster/tasks/builds/opt_linux64_st-an_clobber.yml b/testing/taskcluster/tasks/builds/opt_linux64_st-an_clobber.yml
deleted file mode 100644
index 573e2014c5ce..000000000000
--- a/testing/taskcluster/tasks/builds/opt_linux64_st-an_clobber.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-$inherits:
- from: 'tasks/builds/linux64_clobber.yml'
- variables:
- build_name: 'linux64-st-an'
- build_type: 'opt'
-task:
- metadata:
- name: '[TC] Linux64 Static Analysis Opt'
- description: 'Linux64 Static Analysis Opt'
-
- routes:
- - 'index.buildbot.branches.{{project}}.linux64-st-an'
- - 'index.buildbot.revisions.{{head_rev}}.{{project}}.linux64-st-an'
-
- workerType: opt-linux64
-
- payload:
- env:
- MOZHARNESS_SCRIPT: 'mozharness/scripts/fx_desktop_build.py'
- MOZHARNESS_CONFIG: 'builds/releng_sub_linux_configs/64_stat_and_opt.py balrog/production.py'
- MOZHARNESS_ACTIONS: 'get-secrets build generate-build-stats'
- DIST_UPLOADS: ''
- DIST_TARGET_UPLOADS: ''
-
- extra:
- treeherder:
- groupSymbol: "?"
- symbol: S
diff --git a/testing/taskcluster/tasks/builds/opt_macosx64.yml b/testing/taskcluster/tasks/builds/opt_macosx64.yml
index 06901a4745f6..8e1f703eda0a 100644
--- a/testing/taskcluster/tasks/builds/opt_macosx64.yml
+++ b/testing/taskcluster/tasks/builds/opt_macosx64.yml
@@ -1,14 +1,11 @@
$inherits:
- from: 'tasks/builds/opt_macosx64_clobber.yml'
+ from: 'tasks/builds/base_macosx64.yml'
+ variables:
+ build_name: 'macosx64'
+ build_type: 'opt'
task:
- # same as clobber, but with a cached workspace
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-macosx64-workspace'
+ metadata:
+ name: '[TC] MacOSX64 Opt'
+ description: 'MacOSX64 Opt'
- routes:
- - 'index.buildbot.branches.{{project}}.macosx64'
- - 'index.buildbot.revisions.{{head_rev}}.{{project}}.macosx64'
-
- payload:
- cache:
- level-{{level}}-{{project}}-build-macosx64-workspace: '/home/worker/workspace'
+ workerType: opt-macosx64
diff --git a/testing/taskcluster/tasks/builds/opt_macosx64_st-an.yml b/testing/taskcluster/tasks/builds/opt_macosx64_st-an.yml
index 6e4d2b9e7ea2..123ac9098eb5 100644
--- a/testing/taskcluster/tasks/builds/opt_macosx64_st-an.yml
+++ b/testing/taskcluster/tasks/builds/opt_macosx64_st-an.yml
@@ -1,22 +1,16 @@
$inherits:
- from: 'tasks/builds/opt_macosx64_clobber.yml'
+ from: 'tasks/builds/base_macosx64.yml'
variables:
build_name: 'macosx64-st-an'
+ build_type: 'opt'
task:
metadata:
name: '[TC] MacOSX64 Static Analysis Opt'
description: 'MacOSX64 Static Analysis Opt'
- scopes:
- - 'docker-worker:cache:level-{{level}}-{{project}}-build-macosx64-st-an-workspace'
-
- routes:
- - 'index.buildbot.branches.{{project}}.macosx64-st-an'
- - 'index.buildbot.revisions.{{head_rev}}.{{project}}.macosx64-st-an'
+ workerType: opt-macosx64
payload:
- cache:
- level-{{level}}-{{project}}-build-macosx64-st-an-workspace: '/home/worker/workspace'
env:
MH_CUSTOM_BUILD_VARIANT_CFG: 'cross-opt'
DIST_UPLOADS: ''
diff --git a/testing/taskcluster/tasks/builds/opt_macosx64_st-an_clobber.yml b/testing/taskcluster/tasks/builds/opt_macosx64_st-an_clobber.yml
deleted file mode 100644
index 7df2505d64ab..000000000000
--- a/testing/taskcluster/tasks/builds/opt_macosx64_st-an_clobber.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-$inherits:
- from: 'tasks/builds/opt_macosx64_clobber.yml'
- variables:
- build_name: 'macosx64-st-an'
-task:
- metadata:
- name: '[TC] MacOSX64 Static Analysis Opt'
- description: 'MacOSX64 Static Analysis Opt'
-
- routes:
- - 'index.buildbot.branches.{{project}}.macosx64-st-an'
- - 'index.buildbot.revisions.{{head_rev}}.{{project}}.macosx64-st-an'
-
- payload:
- env:
- MH_CUSTOM_BUILD_VARIANT_CFG: 'cross-opt'
- DIST_UPLOADS: ''
- DIST_TARGET_UPLOADS: ''
- extra:
- treeherder:
- groupSymbol: "?"
- groupName: Submitted by taskcluster
- symbol: S
diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json
index 635b0b2ee5fa..d7f510e560ae 100644
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -34820,6 +34820,44 @@
}
]
},
+ "reftest": {
+ "compat/webkit-text-fill-color-property-001a.html": [
+ {
+ "path": "compat/webkit-text-fill-color-property-001a.html",
+ "references": [
+ [
+ "/compat/webkit-text-fill-color-property-001-ref.html",
+ "=="
+ ]
+ ],
+ "url": "/compat/webkit-text-fill-color-property-001a.html"
+ }
+ ],
+ "compat/webkit-text-fill-color-property-001b.html": [
+ {
+ "path": "compat/webkit-text-fill-color-property-001b.html",
+ "references": [
+ [
+ "/compat/webkit-text-fill-color-property-001-ref.html",
+ "=="
+ ]
+ ],
+ "url": "/compat/webkit-text-fill-color-property-001b.html"
+ }
+ ],
+ "compat/webkit-text-fill-color-property-001c.html": [
+ {
+ "path": "compat/webkit-text-fill-color-property-001c.html",
+ "references": [
+ [
+ "/compat/webkit-text-fill-color-property-001-ref.html",
+ "=="
+ ]
+ ],
+ "url": "/compat/webkit-text-fill-color-property-001c.html"
+ }
+ ]
+ },
"testharness": {
"js/builtins/Promise-incumbent-global.sub.html": [
{
@@ -34836,7 +34874,44 @@
]
}
},
- "reftest_nodes": {}
+ "reftest_nodes": {
+ "compat/webkit-text-fill-color-property-001a.html": [
+ {
+ "path": "compat/webkit-text-fill-color-property-001a.html",
+ "references": [
+ [
+ "/compat/webkit-text-fill-color-property-001-ref.html",
+ "=="
+ ]
+ ],
+ "url": "/compat/webkit-text-fill-color-property-001a.html"
+ }
+ ],
+ "compat/webkit-text-fill-color-property-001b.html": [
+ {
+ "path": "compat/webkit-text-fill-color-property-001b.html",
+ "references": [
+ [
+ "/compat/webkit-text-fill-color-property-001-ref.html",
+ "=="
+ ]
+ ],
+ "url": "/compat/webkit-text-fill-color-property-001b.html"
+ }
+ ],
+ "compat/webkit-text-fill-color-property-001c.html": [
+ {
+ "path": "compat/webkit-text-fill-color-property-001c.html",
+ "references": [
+ [
+ "/compat/webkit-text-fill-color-property-001-ref.html",
+ "=="
+ ]
+ ],
+ "url": "/compat/webkit-text-fill-color-property-001c.html"
+ }
+ ]
+ }
},
"reftest_nodes": {
"2dcontext/building-paths/canvas_complexshapes_arcto_001.htm": [
diff --git a/testing/web-platform/meta/compat/webkit-text-fill-color-property-001a.html.ini b/testing/web-platform/meta/compat/webkit-text-fill-color-property-001a.html.ini
new file mode 100644
index 000000000000..cf71de05968c
--- /dev/null
+++ b/testing/web-platform/meta/compat/webkit-text-fill-color-property-001a.html.ini
@@ -0,0 +1,3 @@
+[webkit-text-fill-color-001a.html]
+ type: reftest
+ prefs: [layout.css.prefixes.webkit:true]
diff --git a/testing/web-platform/meta/compat/webkit-text-fill-color-property-001b.html.ini b/testing/web-platform/meta/compat/webkit-text-fill-color-property-001b.html.ini
new file mode 100644
index 000000000000..66c80e330dc4
--- /dev/null
+++ b/testing/web-platform/meta/compat/webkit-text-fill-color-property-001b.html.ini
@@ -0,0 +1,3 @@
+[webkit-text-fill-color-001b.html]
+ type: reftest
+ prefs: [layout.css.prefixes.webkit:true]
diff --git a/testing/web-platform/meta/compat/webkit-text-fill-color-property-001c.html.ini b/testing/web-platform/meta/compat/webkit-text-fill-color-property-001c.html.ini
new file mode 100644
index 000000000000..c76d9e1a5e3f
--- /dev/null
+++ b/testing/web-platform/meta/compat/webkit-text-fill-color-property-001c.html.ini
@@ -0,0 +1,3 @@
+[webkit-text-fill-color-001c.html]
+ type: reftest
+ prefs: [layout.css.prefixes.webkit:true]
diff --git a/testing/web-platform/tests/compat/webkit-text-fill-color-property-001-ref.html b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001-ref.html
new file mode 100644
index 000000000000..8d9b8cc22e77
--- /dev/null
+++ b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001-ref.html
@@ -0,0 +1,6 @@
+
+
+webkit-text-fill-color: untouched
+
+
+These texts should be green
diff --git a/testing/web-platform/tests/compat/webkit-text-fill-color-property-001a.html b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001a.html
new file mode 100644
index 000000000000..363f5608efa3
--- /dev/null
+++ b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001a.html
@@ -0,0 +1,9 @@
+
+
+webkit-text-fill-color: green
+
+
+
+
+
+These texts should be green
diff --git a/testing/web-platform/tests/compat/webkit-text-fill-color-property-001b.html b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001b.html
new file mode 100644
index 000000000000..3b9a68cf7777
--- /dev/null
+++ b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001b.html
@@ -0,0 +1,9 @@
+
+
+webkit-text-fill-color: green
+
+
+
+
+
+These texts should be green
diff --git a/testing/web-platform/tests/compat/webkit-text-fill-color-property-001c.html b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001c.html
new file mode 100644
index 000000000000..54d60076230f
--- /dev/null
+++ b/testing/web-platform/tests/compat/webkit-text-fill-color-property-001c.html
@@ -0,0 +1,9 @@
+
+
+webkit-text-fill-color: green
+
+
+
+
+
+These texts should be green
diff --git a/testing/xpcshell/moz-http2/moz-http2.js b/testing/xpcshell/moz-http2/moz-http2.js
index c2a1d155d6c8..bc1739910c39 100644
--- a/testing/xpcshell/moz-http2/moz-http2.js
+++ b/testing/xpcshell/moz-http2/moz-http2.js
@@ -204,7 +204,7 @@ function handleRequest(req, res) {
var push, push1, push1a, push2, push3;
// PushService tests.
- var pushPushServer1, pushPushServer2, pushPushServer3;
+ var pushPushServer1, pushPushServer2, pushPushServer3, pushPushServer4;
if (req.httpVersionMajor === 2) {
res.setHeader('X-Connection-Http2', 'yes');
@@ -608,7 +608,8 @@ function handleRequest(req, res) {
{ hostname: 'localhost:' + serverPort, port: serverPort,
path : '/pushNotificationsDeliver1', method : 'GET',
headers: { 'Encryption-Key': 'keyid="notification1"; dh="BO_tgGm-yvYAGLeRe16AvhzaUcpYRiqgsGOlXpt0DRWDRGGdzVLGlEVJMygqAUECarLnxCiAOHTP_znkedrlWoU"',
- 'Encryption': 'keyid="notification1";salt="uAZaiXpOSfOLJxtOCZ09dA"'
+ 'Encryption': 'keyid="notification1";salt="uAZaiXpOSfOLJxtOCZ09dA"',
+ 'Content-Encoding': 'aesgcm128',
}
});
pushPushServer1.writeHead(200, {
@@ -624,7 +625,8 @@ function handleRequest(req, res) {
{ hostname: 'localhost:' + serverPort, port: serverPort,
path : '/pushNotificationsDeliver3', method : 'GET',
headers: { 'Encryption-Key': 'keyid="notification2"; dh="BKVdQcgfncpNyNWsGrbecX0zq3eHIlHu5XbCGmVcxPnRSbhjrA6GyBIeGdqsUL69j5Z2CvbZd-9z1UBH0akUnGQ"',
- 'Encryption': 'keyid="notification2";salt="vFn3t3M_k42zHBdpch3VRw"'
+ 'Encryption': 'keyid="notification2";salt="vFn3t3M_k42zHBdpch3VRw"',
+ 'Content-Encoding': 'aesgcm128',
}
});
pushPushServer2.writeHead(200, {
@@ -640,7 +642,8 @@ function handleRequest(req, res) {
{ hostname: 'localhost:' + serverPort, port: serverPort,
path : '/pushNotificationsDeliver3', method : 'GET',
headers: { 'Encryption-Key': 'keyid="notification3";dh="BD3xV_ACT8r6hdIYES3BJj1qhz9wyv7MBrG9vM2UCnjPzwE_YFVpkD-SGqE-BR2--0M-Yf31wctwNsO1qjBUeMg"',
- 'Encryption': 'keyid="notification3"; salt="DFq188piWU7osPBgqn4Nlg"; rs=24'
+ 'Encryption': 'keyid="notification3"; salt="DFq188piWU7osPBgqn4Nlg"; rs=24',
+ 'Content-Encoding': 'aesgcm128',
}
});
pushPushServer3.writeHead(200, {
@@ -651,6 +654,23 @@ function handleRequest(req, res) {
return;
}
+ else if (u.pathname == "/pushNotifications/subscription4") {
+ pushPushServer4 = res.push(
+ { hostname: 'localhost:' + serverPort, port: serverPort,
+ path : '/pushNotificationsDeliver4', method : 'GET',
+ headers: { 'Crypto-Key': 'keyid="notification4";dh="BJScXUUTcs7D8jJWI1AOxSgAKkF7e56ay4Lek52TqDlWo1yGd5czaxFWfsuP4j7XNWgGYm60-LKpSUMlptxPFVQ"',
+ 'Encryption': 'keyid="notification4"; salt="sn9p2QqF3V6KBclda8vx7w"',
+ 'Content-Encoding': 'aesgcm',
+ }
+ });
+ pushPushServer4.writeHead(200, {
+ 'subresource' : '1'
+ });
+
+ pushPushServer4.end('9eba7ba6192544a39bd9e9b58e702d0748f1776b27f6616cdc55d29ed5a015a6db8f2dd82cd5751a14315546194ff1c18458ab91eb36c9760ccb042670001fd9964557a079553c3591ee131ceb259389cfffab3ab873f873caa6a72e87d262b8684c3260e5940b992234deebf57a9ff3a8775742f3cbcb152d249725a28326717e19cce8506813a155eff5df9bdba9e3ae8801d3cc2b7e7f2f1b6896e63d1fdda6f85df704b1a34db7b2dd63eba11ede154300a318c6f83c41a3d32356a196e36bc905b99195fd91ae4ff3f545c42d17f1fdc1d5bd2bf7516d0765e3a859fffac84f46160b79cedda589f74c25357cf6988cd8ba83867ebd86e4579c9d3b00a712c77fcea3b663007076e21f9819423faa830c2176ff1001c1690f34be26229a191a938517', 'hex');
+ return;
+ }
+
else if ((u.pathname === "/pushNotificationsDeliver1") ||
(u.pathname === "/pushNotificationsDeliver2") ||
(u.pathname === "/pushNotificationsDeliver3")) {
diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp
index d87a3a66bbab..f2e628c9981c 100644
--- a/toolkit/xre/nsEmbedFunctions.cpp
+++ b/toolkit/xre/nsEmbedFunctions.cpp
@@ -612,9 +612,11 @@ XRE_InitChildProcess(int aArgc,
return NS_ERROR_FAILURE;
}
+#ifdef MOZ_CRASHREPORTER
#if defined(XP_WIN) || defined(XP_MACOSX)
CrashReporter::InitChildProcessTmpDir();
#endif
+#endif
#if defined(XP_WIN)
// Set child processes up such that they will get killed after the
diff --git a/widget/windows/nsClipboard.cpp b/widget/windows/nsClipboard.cpp
index 3e5959b18763..56a652cbdb44 100644
--- a/widget/windows/nsClipboard.cpp
+++ b/widget/windows/nsClipboard.cpp
@@ -88,7 +88,7 @@ nsClipboard::Observe(nsISupports *aSubject, const char *aTopic,
}
//-------------------------------------------------------------------------
-UINT nsClipboard::GetFormat(const char* aMimeStr)
+UINT nsClipboard::GetFormat(const char* aMimeStr, bool aMapHTMLMime)
{
UINT format;
@@ -106,7 +106,7 @@ UINT nsClipboard::GetFormat(const char* aMimeStr)
strcmp(aMimeStr, kFilePromiseMime) == 0)
format = CF_HDROP;
else if (strcmp(aMimeStr, kNativeHTMLMime) == 0 ||
- strcmp(aMimeStr, kHTMLMime) == 0)
+ aMapHTMLMime && strcmp(aMimeStr, kHTMLMime) == 0)
format = CF_HTML;
else
format = ::RegisterClipboardFormatW(NS_ConvertASCIItoUTF16(aMimeStr).get());
@@ -169,7 +169,9 @@ nsresult nsClipboard::SetupNativeDataObject(nsITransferable * aTransferable, IDa
if ( currentFlavor ) {
nsXPIDLCString flavorStr;
currentFlavor->ToString(getter_Copies(flavorStr));
- UINT format = GetFormat(flavorStr);
+ // When putting data onto the clipboard, we want to maintain kHTMLMime
+ // ("text/html") and not map it to CF_HTML here since this will be done below.
+ UINT format = GetFormat(flavorStr, false);
// Now tell the native IDataObject about both our mime type and
// the native data format
diff --git a/widget/windows/nsClipboard.h b/widget/windows/nsClipboard.h
index 2083f247f6d7..87a7ae9d4bf3 100644
--- a/widget/windows/nsClipboard.h
+++ b/widget/windows/nsClipboard.h
@@ -51,7 +51,13 @@ public:
static nsresult GetNativeDataOffClipboard(nsIWidget * aWindow, UINT aIndex, UINT aFormat, void ** aData, uint32_t * aLen);
static nsresult GetNativeDataOffClipboard(IDataObject * aDataObject, UINT aIndex, UINT aFormat, const char * aMIMEImageFormat, void ** aData, uint32_t * aLen);
static nsresult GetGlobalData(HGLOBAL aHGBL, void ** aData, uint32_t * aLen);
- static UINT GetFormat(const char* aMimeStr);
+
+ // This function returns the internal Windows clipboard format identifier
+ // for a given Mime string. The default is to map kHTMLMime ("text/html")
+ // to the clipboard format CF_HTML ("HTLM Format"), but it can also be
+ // registered as clipboard format "text/html" to support previous versions
+ // of Gecko.
+ static UINT GetFormat(const char* aMimeStr, bool aMapHTMLMime = true);
static UINT CF_HTML;
diff --git a/widget/windows/nsDragService.cpp b/widget/windows/nsDragService.cpp
index 5c2c189a7026..f41f11a3bf17 100644
--- a/widget/windows/nsDragService.cpp
+++ b/widget/windows/nsDragService.cpp
@@ -541,14 +541,6 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, bool *_retval)
if (mDataObject->QueryGetData(&fe) == S_OK)
*_retval = true; // found it!
}
- else if (strcmp(aDataFlavor, kHTMLMime) == 0) {
- // If the client wants html, maybe it's in "HTML Format".
- format = nsClipboard::GetFormat(kHTMLMime);
- SET_FORMATETC(fe, format, 0, DVASPECT_CONTENT, -1,
- TYMED_HGLOBAL);
- if (mDataObject->QueryGetData(&fe) == S_OK)
- *_retval = true; // found it!
- }
} // else try again
}
diff --git a/xpcom/tests/TestTArray.cpp b/xpcom/tests/TestTArray.cpp
index 6d186cb4d58d..469a9704d012 100644
--- a/xpcom/tests/TestTArray.cpp
+++ b/xpcom/tests/TestTArray.cpp
@@ -18,6 +18,7 @@
#include "nsComponentManagerUtils.h"
#include "nsXPCOM.h"
#include "nsIFile.h"
+#include "TestHarness.h"
using namespace mozilla;
@@ -1194,8 +1195,7 @@ int main(int argc, char **argv) {
if (argc > 1)
count = atoi(argv[1]);
- if (NS_FAILED(NS_InitXPCOM2(nullptr, nullptr, nullptr)))
- return -1;
+ ScopedXPCOM xpcom("TestTArray");
bool success = true;
while (count--) {
@@ -1206,7 +1206,6 @@ int main(int argc, char **argv) {
success = false;
}
}
-
- NS_ShutdownXPCOM(nullptr);
+
return success ? 0 : -1;
}