diff --git a/dom/base/nsDocumentEncoder.cpp b/dom/base/nsDocumentEncoder.cpp index 66d384e63903..04b94be09847 100644 --- a/dom/base/nsDocumentEncoder.cpp +++ b/dom/base/nsDocumentEncoder.cpp @@ -1396,17 +1396,12 @@ nsHTMLCopyEncoder::SetSelection(nsISelection* aSelection) nullptr, nullptr); if (styleContext) { const nsStyleText* textStyle = styleContext->StyleText(); - switch (textStyle->mWhiteSpace) { - case NS_STYLE_WHITESPACE_PRE: - case NS_STYLE_WHITESPACE_PRE_WRAP: - case NS_STYLE_WHITESPACE_PRE_LINE: - case NS_STYLE_WHITESPACE_PRE_SPACE: + if (textStyle->WhiteSpaceOrNewlineIsSignificant()) { // Copy as plaintext for all preformatted elements mIsTextWidget = true; - break; } + break; } - break; } } diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp index 6d6edb239791..3f95ccd14b9a 100644 --- a/js/src/vm/Debugger.cpp +++ b/js/src/vm/Debugger.cpp @@ -90,6 +90,7 @@ extern const Class DebuggerSource_class; enum { JSSLOT_DEBUGSOURCE_OWNER, + JSSLOT_DEBUGSOURCE_TEXT, JSSLOT_DEBUGSOURCE_COUNT }; @@ -4848,7 +4849,7 @@ DebuggerSource_construct(JSContext *cx, unsigned argc, Value *vp) return false; } -static JSObject * +static NativeObject * DebuggerSource_checkThis(JSContext *cx, const CallArgs &args, const char *fnname) { if (!args.thisv().isObject()) { @@ -4863,18 +4864,20 @@ DebuggerSource_checkThis(JSContext *cx, const CallArgs &args, const char *fnname return nullptr; } + NativeObject *nthisobj = &thisobj->as(); + if (!GetSourceReferent(thisobj)) { JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_PROTO, "Debugger.Frame", fnname, "prototype object"); return nullptr; } - return thisobj; + return nthisobj; } #define THIS_DEBUGSOURCE_REFERENT(cx, argc, vp, fnname, args, obj, sourceObject) \ CallArgs args = CallArgsFromVp(argc, vp); \ - RootedObject obj(cx, DebuggerSource_checkThis(cx, args, fnname)); \ + RootedNativeObject obj(cx, DebuggerSource_checkThis(cx, args, fnname)); \ if (!obj) \ return false; \ RootedScriptSource sourceObject(cx, GetSourceReferent(obj)); \ @@ -4885,6 +4888,12 @@ static bool DebuggerSource_getText(JSContext *cx, unsigned argc, Value *vp) { THIS_DEBUGSOURCE_REFERENT(cx, argc, vp, "(get text)", args, obj, sourceObject); + Value textv = obj->getReservedSlot(JSSLOT_DEBUGSOURCE_TEXT); + if (!textv.isUndefined()) { + MOZ_ASSERT(textv.isString()); + args.rval().set(textv); + return true; + } ScriptSource *ss = sourceObject->source(); bool hasSourceData = ss->hasSourceData(); @@ -4897,6 +4906,7 @@ DebuggerSource_getText(JSContext *cx, unsigned argc, Value *vp) return false; args.rval().setString(str); + obj->setReservedSlot(JSSLOT_DEBUGSOURCE_TEXT, args.rval()); return true; } diff --git a/media/webrtc/signaling/test/moz.build b/media/webrtc/signaling/test/moz.build index 66478e472d44..991f03f63db4 100644 --- a/media/webrtc/signaling/test/moz.build +++ b/media/webrtc/signaling/test/moz.build @@ -149,3 +149,5 @@ if CONFIG['OS_TARGET'] in ('Linux', 'DragonFly', 'FreeBSD', 'NetBSD', if CONFIG['OS_TARGET'] == 'Darwin': OS_LIBS += CONFIG['TK_LIBS'] + +FAIL_ON_WARNINGS = True diff --git a/media/webrtc/signaling/test/sdp_unittests.cpp b/media/webrtc/signaling/test/sdp_unittests.cpp index 74f8e47a104c..f30f7fd95da8 100644 --- a/media/webrtc/signaling/test/sdp_unittests.cpp +++ b/media/webrtc/signaling/test/sdp_unittests.cpp @@ -1513,7 +1513,7 @@ TEST_P(NewSdpTest, CheckFormatParameters) { video_format_params[0].parameters.get())); ASSERT_EQ((uint32_t)0x42a01e, h264_parameters->profile_level_id); ASSERT_EQ(0U, h264_parameters->packetization_mode); - ASSERT_EQ(false, h264_parameters->level_asymmetry_allowed); + ASSERT_FALSE(static_cast(h264_parameters->level_asymmetry_allowed)); ASSERT_EQ(0U, h264_parameters->max_mbps); ASSERT_EQ(0U, h264_parameters->max_fs); ASSERT_EQ(0U, h264_parameters->max_cpb); @@ -1529,7 +1529,7 @@ TEST_P(NewSdpTest, CheckFormatParameters) { video_format_params[1].parameters.get()); ASSERT_EQ((uint32_t)0x42a00d, h264_parameters->profile_level_id); ASSERT_EQ(1U, h264_parameters->packetization_mode); - ASSERT_EQ(true, h264_parameters->level_asymmetry_allowed); + ASSERT_TRUE(static_cast(h264_parameters->level_asymmetry_allowed)); ASSERT_EQ(42000U, h264_parameters->max_mbps); ASSERT_EQ(1400U, h264_parameters->max_fs); ASSERT_EQ(1000U, h264_parameters->max_cpb); diff --git a/mobile/android/base/tests/testBackButtonInEditMode.java b/mobile/android/base/tests/testBackButtonInEditMode.java index 861b973a9947..b391f7920950 100644 --- a/mobile/android/base/tests/testBackButtonInEditMode.java +++ b/mobile/android/base/tests/testBackButtonInEditMode.java @@ -14,15 +14,15 @@ public class testBackButtonInEditMode extends UITest { // Verify back button behavior for edit mode. mToolbar.enterEditingMode() .assertIsUrlEditTextSelected(); - testBackPressInEditMode(); - testExitUsingBackButton(); + checkBackPressInEditMode(); + checkExitUsingBackButton(); // Verify back button behavior in edit mode after input. mToolbar.enterEditingMode() .enterUrl("dummy") .assertIsUrlEditTextSelected(); - testBackPressInEditMode(); - testExitUsingBackButton(); + checkBackPressInEditMode(); + checkExitUsingBackButton(); // Verify the swipe behavior in edit mode. mToolbar.enterEditingMode() @@ -30,17 +30,17 @@ public class testBackButtonInEditMode extends UITest { mAboutHome.swipeToPanelOnLeft(); mToolbar.assertIsUrlEditTextNotSelected() .assertIsEditing(); - testExitUsingBackButton(); + checkExitUsingBackButton(); } - public void testBackPressInEditMode() { + private void checkBackPressInEditMode() { // Press back button and verify URLEditText is not selected. getSolo().goBack(); mToolbar.assertIsUrlEditTextNotSelected() .assertIsEditing(); } - public void testExitUsingBackButton() { + private void checkExitUsingBackButton() { getSolo().goBack(); mToolbar.assertIsNotEditing(); } diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build index 6a8fa09302bd..1867122ef217 100644 --- a/toolkit/xre/moz.build +++ b/toolkit/xre/moz.build @@ -170,5 +170,5 @@ CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS'] if CONFIG['MOZ_WIDGET_GTK']: CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] -if CONFIG['OS_TARGET'] != 'Darwin': +if CONFIG['_MSC_VER']: FAIL_ON_WARNINGS = True diff --git a/uriloader/exthandler/tests/unit_ipc/xpcshell.ini b/uriloader/exthandler/tests/unit_ipc/xpcshell.ini index a031e3fed45d..11d551cdc906 100644 --- a/uriloader/exthandler/tests/unit_ipc/xpcshell.ini +++ b/uriloader/exthandler/tests/unit_ipc/xpcshell.ini @@ -4,5 +4,4 @@ tail = [test_encoding.js] # Bug 676995: test hangs consistently on Android -# Bug 984194: broken on comm-central -skip-if = (os == "android" || buildapp == '../mail') +skip-if = (os == "android") diff --git a/xpcom/string/crashtests/1113005-frame.html b/xpcom/string/crashtests/1113005-frame.html new file mode 100644 index 000000000000..505fc22f1efc --- /dev/null +++ b/xpcom/string/crashtests/1113005-frame.html @@ -0,0 +1,5 @@ +
+ diff --git a/xpcom/string/crashtests/1113005.html b/xpcom/string/crashtests/1113005.html new file mode 100644 index 000000000000..e377bb637f46 --- /dev/null +++ b/xpcom/string/crashtests/1113005.html @@ -0,0 +1,2 @@ + + diff --git a/xpcom/string/crashtests/crashtests.list b/xpcom/string/crashtests/crashtests.list index 7a83acaf82f7..8562f1ad8467 100644 --- a/xpcom/string/crashtests/crashtests.list +++ b/xpcom/string/crashtests/crashtests.list @@ -1,2 +1,3 @@ load 394275-1.html load 395651-1.html +load 1113005.html diff --git a/xpcom/string/nsTStringObsolete.cpp b/xpcom/string/nsTStringObsolete.cpp index bb091a3fb24a..fc6213326fb1 100644 --- a/xpcom/string/nsTStringObsolete.cpp +++ b/xpcom/string/nsTStringObsolete.cpp @@ -499,13 +499,16 @@ nsTString_CharT::ReplaceSubstring( const self_type& aTarget, const self_type& aN } // Make sure that we can mutate our buffer. + // Note that we always allocate at least an mLength sized buffer, because the + // rest of the algorithm relies on having access to all of the original + // string. In other words, we over-allocate in the shrinking case. char_type* oldData; uint32_t oldFlags; if (!MutatePrep(XPCOM_MAX(mLength, newLength), &oldData, &oldFlags)) return; if (oldData) { // Copy all of the old data to the new buffer. - char_traits::copy(mData, oldData, XPCOM_MAX(mLength, newLength)); + char_traits::copy(mData, oldData, mLength); ::ReleaseData(oldData, oldFlags); }