diff --git a/browser/base/content/aboutcerterror/aboutCertError.xhtml b/browser/base/content/aboutcerterror/aboutCertError.xhtml index a46073878341..9371fbc7e818 100644 --- a/browser/base/content/aboutcerterror/aboutCertError.xhtml +++ b/browser/base/content/aboutcerterror/aboutCertError.xhtml @@ -80,7 +80,8 @@ }; replaceWithHost(intro); - if (getCSSClass() == "expertBadCert") { + var cssClass = getCSSClass(); + if (cssClass == "expertBadCert") { toggle('technicalContent'); toggle('expertContent'); } @@ -88,8 +89,12 @@ // Disallow overrides if this is a Strict-Transport-Security // host and the cert is bad (STS Spec section 7.3) or if the // certerror is in a frame (bug 633691). - if (getCSSClass() == "badStsCert" || window != top) + if (cssClass == "badStsCert" || window != top) { document.getElementById("expertContent").setAttribute("hidden", "true"); + } + if (cssClass != "badStsCert") { + document.getElementById("badStsCertExplanation").setAttribute("hidden", "true"); + } var tech = document.getElementById("technicalContentText"); if (tech) @@ -214,6 +219,7 @@
&certerror.whatShouldIDo.content;
+&certerror.whatShouldIDo.badStsCertExplanation;
You should see a green square.
+ + + diff --git a/layout/reftests/svg/filters/css-filters/blur-calc-negative.html b/layout/reftests/svg/filters/css-filters/blur-calc-negative.html new file mode 100644 index 000000000000..694c6cfc97c3 --- /dev/null +++ b/layout/reftests/svg/filters/css-filters/blur-calc-negative.html @@ -0,0 +1,28 @@ + + + + +You should see a green square.
+ + + diff --git a/layout/reftests/svg/filters/css-filters/blur-calc-ref.html b/layout/reftests/svg/filters/css-filters/blur-calc-ref.html new file mode 100644 index 000000000000..8f3567274931 --- /dev/null +++ b/layout/reftests/svg/filters/css-filters/blur-calc-ref.html @@ -0,0 +1,23 @@ + + + + +You should see a blurred green square.
+ + + diff --git a/layout/reftests/svg/filters/css-filters/blur-calc.html b/layout/reftests/svg/filters/css-filters/blur-calc.html new file mode 100644 index 000000000000..e4dc87e7d75d --- /dev/null +++ b/layout/reftests/svg/filters/css-filters/blur-calc.html @@ -0,0 +1,28 @@ + + + + +You should see a blurred green square.
+ + + diff --git a/layout/reftests/svg/filters/css-filters/reftest.list b/layout/reftests/svg/filters/css-filters/reftest.list index b5bc0ec94af6..b18ba158fcca 100644 --- a/layout/reftests/svg/filters/css-filters/reftest.list +++ b/layout/reftests/svg/filters/css-filters/reftest.list @@ -5,6 +5,8 @@ default-preferences pref(layout.css.filters.enabled,true) == blur.html blur-ref.html == blur.svg blur-ref.svg +== blur-calc.html blur-calc-ref.html +== blur-calc-negative.html blur-calc-negative-ref.html == blur-zero-radius.html blur-zero-radius-ref.html == blur-zoomed-page.html blur-zoomed-page-ref.html == brightness.html brightness-ref.html diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp index 547b067db9de..c8e76dda427e 100644 --- a/layout/style/nsRuleNode.cpp +++ b/layout/style/nsRuleNode.cpp @@ -8708,7 +8708,9 @@ nsRuleNode::SetStyleFilterToCSSValue(nsStyleFilter* aStyleFilter, int32_t mask = SETCOORD_PERCENT | SETCOORD_FACTOR; if (type == NS_STYLE_FILTER_BLUR) { - mask = SETCOORD_LENGTH | SETCOORD_STORE_CALC; + mask = SETCOORD_LENGTH | + SETCOORD_CALC_LENGTH_ONLY | + SETCOORD_CALC_CLAMP_NONNEGATIVE; } else if (type == NS_STYLE_FILTER_HUE_ROTATE) { mask = SETCOORD_ANGLE; } diff --git a/mobile/android/base/mozglue/GeckoLoader.java.in b/mobile/android/base/mozglue/GeckoLoader.java.in index a5ae4278c375..872821b9ae2e 100644 --- a/mobile/android/base/mozglue/GeckoLoader.java.in +++ b/mobile/android/base/mozglue/GeckoLoader.java.in @@ -249,7 +249,7 @@ public final class GeckoLoader { loadMozGlue(context); loadLibsSetup(context); - loadSQLiteLibsNative(apkName, false); + loadSQLiteLibsNative(apkName); } public static void loadNSSLibs(final Context context, final String apkName) { @@ -262,7 +262,7 @@ public final class GeckoLoader { loadMozGlue(context); loadLibsSetup(context); - loadNSSLibsNative(apkName, false); + loadNSSLibsNative(apkName); } /** @@ -537,6 +537,6 @@ public final class GeckoLoader { // These methods are implemented in mozglue/android/APKOpen.cpp public static native void nativeRun(String args); private static native void loadGeckoLibsNative(String apkName); - private static native void loadSQLiteLibsNative(String apkName, boolean shouldExtract); - private static native void loadNSSLibsNative(String apkName, boolean shouldExtract); + private static native void loadSQLiteLibsNative(String apkName); + private static native void loadNSSLibsNative(String apkName); } diff --git a/mobile/android/components/build/nsShellService.h b/mobile/android/components/build/nsShellService.h index f80569d48931..5663b773ab99 100644 --- a/mobile/android/components/build/nsShellService.h +++ b/mobile/android/components/build/nsShellService.h @@ -15,11 +15,10 @@ public: NS_DECL_ISUPPORTS NS_DECL_NSISHELLSERVICE - nsShellService() {}; + nsShellService() {} private: - ~nsShellService() {}; - + ~nsShellService() {} }; #define nsShellService_CID \ diff --git a/mozglue/android/APKOpen.cpp b/mozglue/android/APKOpen.cpp index a91cc8df1011..c7a9f4e8df07 100644 --- a/mozglue/android/APKOpen.cpp +++ b/mozglue/android/APKOpen.cpp @@ -317,11 +317,7 @@ Java_org_mozilla_gecko_mozglue_GeckoLoader_loadGeckoLibsNative(JNIEnv *jenv, jcl } extern "C" NS_EXPORT void JNICALL -Java_org_mozilla_gecko_mozglue_GeckoLoader_loadSQLiteLibsNative(JNIEnv *jenv, jclass jGeckoAppShellClass, jstring jApkName, jboolean jShouldExtract) { - if (jShouldExtract) { - putenv("MOZ_LINKER_EXTRACT=1"); - } - +Java_org_mozilla_gecko_mozglue_GeckoLoader_loadSQLiteLibsNative(JNIEnv *jenv, jclass jGeckoAppShellClass, jstring jApkName) { const char* str; // XXX: java doesn't give us true UTF8, we should figure out something // better to do here @@ -339,11 +335,7 @@ Java_org_mozilla_gecko_mozglue_GeckoLoader_loadSQLiteLibsNative(JNIEnv *jenv, jc } extern "C" NS_EXPORT void JNICALL -Java_org_mozilla_gecko_mozglue_GeckoLoader_loadNSSLibsNative(JNIEnv *jenv, jclass jGeckoAppShellClass, jstring jApkName, jboolean jShouldExtract) { - if (jShouldExtract) { - putenv("MOZ_LINKER_EXTRACT=1"); - } - +Java_org_mozilla_gecko_mozglue_GeckoLoader_loadNSSLibsNative(JNIEnv *jenv, jclass jGeckoAppShellClass, jstring jApkName) { const char* str; // XXX: java doesn't give us true UTF8, we should figure out something // better to do here diff --git a/netwerk/base/src/Tickler.cpp b/netwerk/base/src/Tickler.cpp index bc56effbfcac..dc9c29f6fe46 100644 --- a/netwerk/base/src/Tickler.cpp +++ b/netwerk/base/src/Tickler.cpp @@ -225,9 +225,9 @@ class TicklerTimer MOZ_FINAL : public nsITimerCallback mTickler = do_GetWeakReference(aTickler); } - ~TicklerTimer() {}; - private: + ~TicklerTimer() {} + nsWeakPtr mTickler; }; diff --git a/netwerk/protocol/device/AndroidCaptureProvider.h b/netwerk/protocol/device/AndroidCaptureProvider.h index 92f7cb141c6c..03f02870979f 100644 --- a/netwerk/protocol/device/AndroidCaptureProvider.h +++ b/netwerk/protocol/device/AndroidCaptureProvider.h @@ -17,9 +17,11 @@ #include "mozilla/ReentrantMonitor.h" class AndroidCaptureProvider MOZ_FINAL : public nsDeviceCaptureProvider { + private: + ~AndroidCaptureProvider(); + public: AndroidCaptureProvider(); - ~AndroidCaptureProvider(); NS_DECL_THREADSAFE_ISUPPORTS @@ -28,9 +30,11 @@ class AndroidCaptureProvider MOZ_FINAL : public nsDeviceCaptureProvider { }; class AndroidCameraInputStream MOZ_FINAL : public nsIAsyncInputStream, mozilla::net::CameraStreamImpl::FrameCallback { + private: + ~AndroidCameraInputStream(); + public: AndroidCameraInputStream(); - ~AndroidCameraInputStream(); NS_IMETHODIMP Init(nsACString& aContentType, nsCaptureParams* aParams); diff --git a/netwerk/system/android/nsAndroidNetworkLinkService.h b/netwerk/system/android/nsAndroidNetworkLinkService.h index 2fbfdf806aba..9fdda7cae052 100644 --- a/netwerk/system/android/nsAndroidNetworkLinkService.h +++ b/netwerk/system/android/nsAndroidNetworkLinkService.h @@ -16,6 +16,8 @@ public: NS_DECL_NSINETWORKLINKSERVICE nsAndroidNetworkLinkService(); + +private: virtual ~nsAndroidNetworkLinkService(); }; diff --git a/profile/dirserviceprovider/ProfileUnlockerWin.cpp b/profile/dirserviceprovider/ProfileUnlockerWin.cpp index a06b115982fd..705ee8524b2b 100644 --- a/profile/dirserviceprovider/ProfileUnlockerWin.cpp +++ b/profile/dirserviceprovider/ProfileUnlockerWin.cpp @@ -171,8 +171,12 @@ ProfileUnlockerWin::Unlock(uint32_t aSeverity) if (error != ERROR_SUCCESS) { return NS_ERROR_FAILURE; } + if (numEntries == 0) { + // Nobody else is locking the file; the other process must have terminated + return NS_OK; + } - nsresult rv; + nsresult rv = NS_ERROR_FAILURE; for (UINT i = 0; i < numEntries; ++i) { rv = TryToTerminate(info[i].Process); if (NS_SUCCEEDED(rv)) { @@ -188,6 +192,12 @@ ProfileUnlockerWin::Unlock(uint32_t aSeverity) nsresult ProfileUnlockerWin::TryToTerminate(RM_UNIQUE_PROCESS& aProcess) { + // Subtle: If the target process terminated before this call to OpenProcess, + // this call will still succeed. This is because the restart manager session + // internally retains a handle to the target process. The rules for Windows + // PIDs state that the PID of a terminated process remains valid as long as + // at least one handle to that process remains open, so when we reach this + // point the PID is still valid and the process will open successfully. DWORD accessRights = PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE; nsAutoHandle otherProcess(::OpenProcess(accessRights, FALSE, aProcess.dwProcessId)); @@ -207,7 +217,19 @@ ProfileUnlockerWin::TryToTerminate(RM_UNIQUE_PROCESS& aProcess) WCHAR imageName[MAX_PATH]; DWORD imageNameLen = MAX_PATH; if (!mQueryFullProcessImageName(otherProcess, 0, imageName, &imageNameLen)) { - return NS_ERROR_FAILURE; + // The error codes for this function are not very descriptive. There are + // actually two failure cases here: Either the call failed because the + // process is no longer running, or it failed for some other reason. We + // need to know which case that is. + DWORD otherProcessExitCode; + if (!::GetExitCodeProcess(otherProcess, &otherProcessExitCode) || + otherProcessExitCode == STILL_ACTIVE) { + // The other process is still running. + return NS_ERROR_FAILURE; + } + // The other process must have terminated. We should return NS_OK so that + // this process may proceed with startup. + return NS_OK; } nsCOMPtr