Bug 1277359 - Add chrome-only navigator.cpuHasSSE2 api. r=smaug
Make the host's support for SSE2 instructions available to
javascript so we can report that status in update pings.
MozReview-Commit-ID: FhWPjLxKRZy
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -763,16 +763,22 @@ Navigator::HardwareConcurrency()
workers::RuntimeService* rts = workers::RuntimeService::GetOrCreateService();
if (!rts) {
return 1;
}
return rts->ClampedHardwareConcurrency();
}
+bool
+Navigator::CpuHasSSE2()
+{
+ return mozilla::supports_sse2();
+}
+
void
Navigator::RefreshMIMEArray()
{
if (mMimeTypes) {
mMimeTypes->Refresh();
}
}
--- a/dom/base/Navigator.h
+++ b/dom/base/Navigator.h
@@ -193,16 +193,17 @@ public:
bool CookieEnabled();
void GetBuildID(nsString& aBuildID, ErrorResult& aRv)
{
aRv = GetBuildID(aBuildID);
}
PowerManager* GetMozPower(ErrorResult& aRv);
bool JavaEnabled(ErrorResult& aRv);
uint64_t HardwareConcurrency();
+ bool CpuHasSSE2();
bool TaintEnabled()
{
return false;
}
void AddIdleObserver(MozIdleObserver& aObserver, ErrorResult& aRv);
void RemoveIdleObserver(MozIdleObserver& aObserver, ErrorResult& aRv);
already_AddRefed<WakeLock> RequestWakeLock(const nsAString &aTopic,
ErrorResult& aRv);
--- a/dom/webidl/Navigator.webidl
+++ b/dom/webidl/Navigator.webidl
@@ -229,16 +229,22 @@ partial interface Navigator {
* The returned MozWakeLock object is a token of the lock. You can
* unlock the lock via the object's |unlock| method. The lock is released
* automatically when its associated window is unloaded.
*
* @param aTopic resource name
*/
[Throws, Pref="dom.wakelock.enabled", Func="Navigator::HasWakeLockSupport", UnsafeInPrerendering]
MozWakeLock requestWakeLock(DOMString aTopic);
+
+ /**
+ * Make CPU instruction subset information available for UpdateUtils.
+ */
+ [ChromeOnly]
+ readonly attribute boolean cpuHasSSE2;
};
partial interface Navigator {
[Throws, Pref="device.storage.enabled"]
readonly attribute DeviceStorageAreaListener deviceStorageAreaListener;
};
// nsIDOMNavigatorDeviceStorage
@@ -398,8 +404,11 @@ partial interface Navigator {
readonly attribute boolean mozE10sEnabled;
};
#endif
[NoInterfaceObject, Exposed=(Window,Worker)]
interface NavigatorConcurrentHardware {
readonly attribute unsigned long long hardwareConcurrency;
};
+
+partial interface Navigator {
+};