Closed Bug 1885936 Opened 3 months ago Closed 16 days ago

Collect Gamepad API related metrics

Categories

(Core :: Privacy: Anti-Tracking, task)

task

Tracking

()

RESOLVED FIXED
128 Branch
Tracking Status
firefox128 --- fixed

People

(Reporter: timhuang, Assigned: timhuang)

References

(Blocks 1 open bug, Regressed 1 open bug)

Details

Attachments

(5 files)

No description provided.
Assignee: nobody → tihuang
Status: NEW → ASSIGNED
Attachment #9397240 - Flags: data-review?(chutten)
Attachment #9397240 - Flags: data-review?(chutten) → data-review?(sbetancourt)

To collect the gamepad information on the user device, we introduce a
chrome only function called RequestAllGamepads to Navigator. The
function will return a promise which resolves when we get all gamepads
info from the parent process.

Note that we cannot rely on The existing navigator.getGamepads()
function because it cannot allow us collecting gamepads info
without the user interacts with the gamepads.

We might need to call ChromeOnly functions to collect user
characteristics data. To achieve this, this patches introduces two
functions to UserCharacteristicsChild, collectUserCharacteristicsData()
and collectUserCharacteristicsDataWithDelay() for different collecting
timing.

Depends on D207979

Attachment #9397240 - Flags: data-review?(sbetancourt) → data-review+
Pushed by tihuang@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/93619e887bb7
Part 1: Introduce a chrome only function for getting all gamepads. r=cmartin,webidl,emilio
https://hg.mozilla.org/integration/autoland/rev/03205a0f59e6
Part 2: Add data collecting functions to UserCharacteristicsChild. r=tschuster
https://hg.mozilla.org/integration/autoland/rev/6cc4da44b050
Part 3: Implement data collection for gamepads. r=tschuster
https://hg.mozilla.org/integration/autoland/rev/935c80ed4a38
Part 4: Add a test for Gamepad metrics collection. r=tschuster

Backed out for causing for causing bpnu bustages related to Gamepad.

[task 2024-05-15T13:04:37.010Z] 13:04:37     INFO -  dom/html/HTMLDetailsElement.obj
[task 2024-05-15T13:04:37.011Z] 13:04:37     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/html'
[task 2024-05-15T13:04:37.173Z] 13:04:37     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/gamepad'
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang-cl -fms-compatibility-version=19.39 -Xclang -std=c++17 -Xclang -ivfsoverlay -Xclang /builds/worker/fetches/vs/overlay.yaml -FoGamepadPlatformService.obj -c  -I/builds/worker/workspace/obj-build/dist/stl_wrappers -guard:cf -DNDEBUG=1 -DTRIMMED=1 -DUNICODE -D_UNICODE -D_CRT_RAND_S -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -D_SECURE_ATL -DCHROMIUM_BUILD -DU_STATIC_IMPLEMENTATION -DWIN32 -D_WIN32 -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DWINAPI_NO_BUNDLED_LIBRARIES -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/dom/gamepad -I/builds/worker/workspace/obj-build/dom/gamepad -I/builds/worker/checkouts/gecko/dom/gamepad/ipc -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/dom/base -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -MD -FI /builds/worker/workspace/obj-build/mozilla-config.h -DMOZILLA_CLIENT -fcrash-diagnostics-dir=/builds/worker/artifacts -TP -Zc:sizedDealloc- -D_HAS_EXCEPTIONS=0 -Gy -Zc:inline -Gw -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -GR- -Z7 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -Oy- -Werror -W3 -Wbitfield-enum-conversion -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wenum-compare-conditional -Wenum-float-conversion -Wvolatile -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-unknown-pragmas -Wno-ignored-pragmas -Wno-deprecated-declarations -Wno-microsoft-enum-value -Wno-microsoft-include -Wno-invalid-noreturn -Wno-inconsistent-missing-override -Wno-implicit-exception-spec-mismatch -Wno-microsoft-exception-spec -Wno-unused-local-typedef -Wno-ignored-attributes -Wno-used-but-marked-unused -Wno-psabi -Wthread-safety -Wno-error=builtin-macro-redefined -Wno-vla-cxx-extension -Wno-unknown-warning-option -fno-strict-aliasing -Xclang -ffp-contract=off  -Xclang -MP -Xclang -dependency-file -Xclang .deps/GamepadPlatformService.obj.pp -Xclang -MT -Xclang GamepadPlatformService.obj   /builds/worker/checkouts/gecko/dom/gamepad/GamepadPlatformService.cpp
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/checkouts/gecko/dom/gamepad/GamepadPlatformService.cpp:7:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/GamepadPlatformService.h:10:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/GamepadBinding.h:6:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/js/CallAndConstruct.h:15:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/js/RootingAPI.h:11:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/DebugOnly.h:17:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/stl_wrappers/utility:54:
[task 2024-05-15T13:04:37.184Z] 13:04:37    ERROR -  /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/utility(466,10): error: field has incomplete type 'mozilla::dom::GamepadAdded'
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -    466 |     _Ty2 second; // the second stored value
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |          ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/dom/GamepadPlatformService.h(128,27): note: in instantiation of template class 'std::pair<const mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded>' requested here
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -    128 |     for (const auto& elem : mGamepadAdded) {
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |                           ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/dom/GamepadPlatformService.h(21,7): note: forward declaration of 'mozilla::dom::GamepadAdded'
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -     21 | class GamepadAdded;
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |       ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/checkouts/gecko/dom/gamepad/GamepadPlatformService.cpp:7:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/GamepadPlatformService.h:13:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/workspace/obj-build/dist/stl_wrappers/map:54:
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  In file included from /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/map:12:
[task 2024-05-15T13:04:37.184Z] 13:04:37    ERROR -  /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/xtree(1281,16): error: no matching member function for call to '_Freenode'
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -   1281 |         _Node::_Freenode(_Getal(), _Erasednode); // delete erased node
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |         ~~~~~~~^~~~~~~~~
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/xtree(1295,13): note: in instantiation of member function 'std::_Tree<std::_Tmap_traits<mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded, std::less<mozilla::dom::GamepadHandle>, std::allocator<std::pair<const mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded>>, false>>::_Erase_unchecked' requested here
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -   1295 |             _Erase_unchecked(_First++);
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |             ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/xtree(1305,9): note: in instantiation of member function 'std::_Tree<std::_Tmap_traits<mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded, std::less<mozilla::dom::GamepadHandle>, std::allocator<std::pair<const mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded>>, false>>::_Erase_unchecked' requested here
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -   1305 |         _Erase_unchecked(_First, _Last);
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |         ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/xtree(1334,16): note: in instantiation of member function 'std::_Tree<std::_Tmap_traits<mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded, std::less<mozilla::dom::GamepadHandle>, std::allocator<std::pair<const mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded>>, false>>::_Erase' requested here
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -   1334 |         return _Erase(_Eqrange(_Keyval));
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |                ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/checkouts/gecko/dom/gamepad/GamepadPlatformService.cpp(154,17): note: in instantiation of member function 'std::_Tree<std::_Tmap_traits<mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded, std::less<mozilla::dom::GamepadHandle>, std::allocator<std::pair<const mozilla::dom::GamepadHandle, mozilla::dom::GamepadAdded>>, false>>::erase' requested here
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -    154 |   mGamepadAdded.erase(aHandle);
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |                 ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  /builds/worker/fetches/vs/VC/Tools/MSVC/14.39.33519/include/xtree(379,17): note: candidate template ignored: substitution failure [with _Alloc = _Alnode]
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -    379 |     static void _Freenode(_Alloc& _Al, _Nodeptr _Ptr) noexcept {
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -        |                 ^
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  2 errors generated.
[task 2024-05-15T13:04:37.184Z] 13:04:37    ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:689: GamepadPlatformService.obj] Error 1
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/gamepad'
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/gamepad'
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  dom/gamepad/GamepadPose.obj
[task 2024-05-15T13:04:37.184Z] 13:04:37     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/gamepad'
[task 2024-05-15T13:04:37.478Z] 13:04:37     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/filesystem'
[task 2024-05-15T13:04:37.481Z] 13:04:37     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang-cl -fms-compatibility-version=19.39 -Xclang -std=c++17 -Xclang -ivfsoverlay -Xclang /builds/worker/fetches/vs/overlay.yaml -FoPFileSystemRequestParent.obj -c  -I/builds/worker/workspace/obj-build/dist/stl_wrappers -guard:cf -DNDEBUG=1 -DTRIMMED=1 -DUNICODE -D_UNICODE -D_CRT_RAND_S -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -D_SECURE_ATL -DCHROMIUM_BUILD -DU_STATIC_IMPLEMENTATION -DWIN32 -D_WIN32 -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DWINAPI_NO_BUNDLED_LIBRARIES -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/dom/filesystem -I/builds/worker/workspace/obj-build/dom/filesystem -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/dom/base -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -MD -FI /builds/worker/workspace/obj-build/mozilla-config.h -DMOZILLA_CLIENT -fcrash-diagnostics-dir=/builds/worker/artifacts -TP -Zc:sizedDealloc- -D_HAS_EXCEPTIONS=0 -Gy -Zc:inline -Gw -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -GR- -Z7 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -Oy- -Werror -W3 -Wbitfield-enum-conversion -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wenum-compare-conditional -Wenum-float-conversion -Wvolatile -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-unknown-pragmas -Wno-ignored-pragmas -Wno-deprecated-declarations -Wno-microsoft-enum-value -Wno-microsoft-include -Wno-invalid-noreturn -Wno-inconsistent-missing-override -Wno-implicit-exception-spec-mismatch -Wno-microsoft-exception-spec -Wno-unused-local-typedef -Wno-ignored-attributes -Wno-used-but-marked-unused -Wno-psabi -Wthread-safety -Wno-error=builtin-macro-redefined -Wno-vla-cxx-extension -Wno-unknown-warning-option -fno-strict-aliasing -Xclang -ffp-contract=off  -Xclang -MP -Xclang -dependency-file -Xclang .deps/PFileSystemRequestParent.obj.pp -Xclang -MT -Xclang PFileSystemRequestParent.obj   /builds/worker/workspace/obj-build/ipc/ipdl/PFileSystemRequestParent.cpp
[task 2024-05-15T13:04:37.482Z] 13:04:37     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/filesystem'
[task 2024-05-15T13:04:37.482Z] 13:04:37     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/filesystem'
[task 2024-05-15T13:04:37.482Z] 13:04:37     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/filesystem'
[task 2024-05-15T13:04:37.482Z] 13:04:37     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/gamepad'
[task 2024-05-15T13:04:37.483Z] 13:04:37     INFO -  dom/gamepad/GamepadRemapping.obj
Flags: needinfo?(tihuang)
Flags: needinfo?(tihuang)
Pushed by tihuang@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ec2fc7cf8802
Part 1: Introduce a chrome only function for getting all gamepads. r=cmartin,webidl,emilio
https://hg.mozilla.org/integration/autoland/rev/70cb77b906b0
Part 2: Add data collecting functions to UserCharacteristicsChild. r=tschuster
https://hg.mozilla.org/integration/autoland/rev/efe99fce4d0a
Part 3: Implement data collection for gamepads. r=tschuster
https://hg.mozilla.org/integration/autoland/rev/6459cc1b5bbf
Part 4: Add a test for Gamepad metrics collection. r=tschuster
Regressions: 1897001
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: