Trackers use navigator.hardwareConcurrency as yet another source of entropy to fingerprint users. The Firefox Hardware Report says 70% of Firefox users have exactly 2 cores. When the privacy.resistFingerprinting pref is set, we want to blend into the crowd so spoof navigator.hardwareConcurrency = 2 to reduce user uniqueness. This pref was added in bug 1345322 for the Tor uplift project.
https://metrics.mozilla.com/firefox-hardware-report/#goto-cpu-and-memory
MozReview-Commit-ID: CDWAaxjRpqe
--HG--
extra : rebase_source : a24eabf1d0b0ea1706478306287634dae38a8c52
We have to run the navigator checks in sub-iframes as we need to set preferences which affect navigator's API
which may or may not be already initialised with the current settings. The sub-iframes will have a navigator
object set up with the expected preferences for the test.
The iframes all call into the parent to publish the test results, this is because the SimpleTest infrastructure
doesn't cope with results being published from sub-iframes.
MozReview-Commit-ID: GFVQHMVkbMP
--HG--
rename : dom/power/test/test_bug957899.html => dom/power/test/test_bug957899_iframe.html
rename : dom/presentation/tests/mochitest/test_presentation_availability.html => dom/presentation/tests/mochitest/test_presentation_availability_iframe.html
rename : dom/tests/mochitest/gamepad/test_check_timestamp.html => dom/tests/mochitest/gamepad/test_check_timestamp_iframe.html
rename : dom/tests/mochitest/gamepad/test_gamepad_connect_events.html => dom/tests/mochitest/gamepad/test_gamepad_connect_events_iframe.html
rename : dom/tests/mochitest/gamepad/test_gamepad_extensions.html => dom/tests/mochitest/gamepad/test_gamepad_extensions_iframe.html
rename : dom/tests/mochitest/gamepad/test_gamepad_frame_state_sync.html => dom/tests/mochitest/gamepad/test_gamepad_frame_state_sync_iframe.html
rename : dom/tests/mochitest/gamepad/test_gamepad_hidden_frame.html => dom/tests/mochitest/gamepad/test_gamepad_hidden_frame_iframe.html
rename : dom/tests/mochitest/gamepad/test_gamepad.html => dom/tests/mochitest/gamepad/test_gamepad_iframe.html
rename : dom/tests/mochitest/gamepad/test_navigator_gamepads.html => dom/tests/mochitest/gamepad/test_navigator_gamepads_iframe.html
rename : dom/tests/mochitest/geolocation/test_geolocation_is_undefined_when_pref_is_off.html => dom/tests/mochitest/geolocation/test_geolocation_is_undefined_when_pref_is_off_iframe.html
rename : dom/workers/test/test_navigator.html => dom/workers/test/test_navigator_iframe.html
rename : dom/workers/test/test_navigator.js => dom/workers/test/test_navigator_iframe.js
extra : rebase_source : fe0f3e342cb55b5e9da7038acb59b5e2a5c8767e
Some interface tests into mochitest is failure on android beta and release.
test_serviceworker_interfaces.js has nonReleaseAndroid flag, so we should use it into test_interfaces.js and test_worker_interfaces.js
MozReview-Commit-ID: A1aHrTXwGil
--HG--
extra : rebase_source : 0990ec8a50b664ac711ee4977a104286f40ae07e
This patch is generated by the following sed script:
find . ! -wholename '*/.hg*' -type f \( -iname '*.html' -o -iname '*.xhtml' -o -iname '*.xul' -o -iname '*.js' \) -exec sed -i -e 's/\(\(text\|application\)\/javascript\);version=1.[0-9]/\1/g' {} \;
MozReview-Commit-ID: AzhtdwJwVNg
--HG--
extra : rebase_source : e8f90249454c0779d926f87777f457352961748d
Intl API (ECMA-402) already supports most web browsers such as Edge (including Windows 10 Mobile), Chrome (including Android), and upcoming Safari 10(https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_0.html).
Also IDN2008 support, and number control by <input type="number"> require ICU. And, although gfx has own unicode table, we want to remove this if ICU is supported on all platform.
Also, new L20N framework (aka L20N) wants to use Intl API to localize UI.
So I would like to use ICU as default on Fennec Android.
Negative issue is file size. ICU has big table, file size of libxul.so will be following. This support requires additional 4.4MB.
before this ... 26287379 bytes
after this ... 30692696 bytes
Although android OS already has ICU, ICU version is different per OS version. And our ICU requirement is 50.1+ (Android 4.0 uses ICU 48) and exported fucntion name of ICU has ICU version suffix. So we cannot use it.
MozReview-Commit-ID: 5R5iNMzWNjS
--HG--
extra : rebase_source : fceb3ee320f885e7c03749f76cf0ad7699a21c2c