Closed Bug 1669036 Opened 5 years ago Closed 4 years ago

Add a new section showing third-party modules info to the about:support page

Categories

(Firefox :: Launcher Process, enhancement)

Unspecified
Windows
enhancement

Tracking

()

RESOLVED FIXED
85 Branch
Tracking Status
firefox85 --- fixed

People

(Reporter: toshi, Assigned: toshi)

References

(Blocks 1 open bug)

Details

Attachments

(13 files, 1 obsolete file)

47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
73.42 KB, image/png
Details
60.01 KB, image/png
Details
40.68 KB, image/png
Details
47 bytes, text/x-phabricator-request
Details | Review

We plan to introduce a way to disclose third-party modules to the users (Bug 1669035). As the first step, we plan to add a new section to the about:support page, showing all information we have about third-party modules. It's mostly included in the third-party modules ping.

This is a test-only change adding a new testsuite to test the infrastructure
of the third-party modules ping.

This patch refactors the function design to convert UntrustedModulesData
to a JS object by introducing UntrustedModulesDataSerializer, with which
we can serialize multiple data objects into a single JS object
with more flexibility.

Depends on D93823

This patch adds a method to merge two CombinedStacks instances.

Depends on D93824

This patch makes UntrustedModulesData copyable in order to keep its instances
in the browser process even after we invoke Telemetry.getUntrustedModuleLoadEvents().

Depends on D93825

This patch introduces a new strcuture UntrustedModulesBackupData, which is
designed to hold multiple UntrustedModulesData instances as a hash table whose
key is a pair of PID and ProcessType.

With this structure, when Telemetry.getUntrustedModuleLoadEvents() is invoked,
an instance of UntrustedModulesData is transferred from each process to the
main process as usual, and then we not only convert it to a JS object to present
to the method's caller, but also copy an instance of UntrustedModulesData
into the UntrustedModulesBackupData so that we can retrieve it later.

Depends on D93826

The method Telemetry.getUntrustedModuleLoadEvents() used to move data, meaning
once it was called, the returned data was removed from the application so that
the same data will never be returned again.

This patch introduces two options INCLUDE_OLD_LOADEVENTS and KEEP_LOADEVENTS_NEW
to pass to the method, each of them is explained by the comment if nsITelemetry.idl.
Internally UntrustedModulesBackupService holds two storages "Staging" and "Settled".
We use the "Staging" to keep new instances, and "Settled" to keep old instances.

Depends on D93828

This patch introduces a new flag INCLUDE_PRIVATE_FIELDS_IN_LOADEVENTS
to the Telemetry.getUntrustedModuleLoadEvents() to include a file
object instead of the string field resolvedDllName so that the JS
caller can have more flexibility.

Depends on D93829

This patch introduces a new flag EXCLUDE_STACKINFO_FROM_LOADEVENTS to
the Telemetry.getUntrustedModuleLoadEvents() to excude the "combinedStacks"
field. With this flag, we can merge an instance of UntrustedModulesData
into a JS object directly without involving UntrustedModulesBackupData.

Depends on D93830

The new section is displayed when the browser.enableAboutThirdParty pref is true.

Depends on D93831

Attachment #9182091 - Attachment description: Bug 1669036 - Part5: Introduce UntrustedModulesBackupData → Bug 1669036 - Part4: Introduce UntrustedModulesBackupData
Attachment #9182092 - Attachment description: Bug 1669036 - Part6: Add the process type to the key of a per-proc object of the third-party module ping → Bug 1669036 - Part5: Add the process type to the key of a per-proc object of the third-party module ping
Attachment #9182093 - Attachment description: Bug 1669036 - Part7: Introduce options for Telemetry.getUntrustedModuleLoadEvents() to control data → Bug 1669036 - Part6: Introduce options for Telemetry.getUntrustedModuleLoadEvents() to control data
Attachment #9182094 - Attachment description: Bug 1669036 - Part8: Add INCLUDE_PRIVATE_FIELDS_IN_LOADEVENTS → Bug 1669036 - Part7: Add INCLUDE_PRIVATE_FIELDS_IN_LOADEVENTS
Attachment #9182095 - Attachment description: Bug 1669036 - Part9: Add EXCLUDE_STACKINFO_FROM_LOADEVENTS → Bug 1669036 - Part8: Add EXCLUDE_STACKINFO_FROM_LOADEVENTS
Attachment #9182096 - Attachment description: Bug 1669036 - Part10: Add a new section "Third-Party Modules" to about:support → Bug 1669036 - Part9: Add a new section "Third-Party Modules" to about:support
Attachment #9182090 - Attachment is obsolete: true

Cleaned up columns and added icons.

This patch moves the following SVGs from browser to toolkit so that a subsequent
patch can load panel-icon-folder.svg and connection-mixed-active-loaded.svg from
toolkit. The other two SVGs are moved to minimize a change in CSS and JS.

  • panel-icon-folder.svg
  • panel-icon-magnifier.svg
  • connection-mixed-active-loaded.svg
  • connection-mixed-passive-loaded.svg
Attachment #9182096 - Attachment description: Bug 1669036 - Part9: Add a new section "Third-Party Modules" to about:support → Bug 1669036 - Part10: Add a new section "Third-Party Modules" to about:support
Pushed by nbeleuzu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/2e779792d865 Part1: Add a new GTest suite UntrustedModulesFixture r=aklotz
Pushed by nbeleuzu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/9d35204f6569 Part2: Introduce UntrustedModulesDataSerializer r=aklotz https://hg.mozilla.org/integration/autoland/rev/cf29ad24eea5 Part3: Add CombinedStacks::AddStacks to append CombinedStacks to CombinedStacks. r=janerik https://hg.mozilla.org/integration/autoland/rev/91549922741f Part4: Introduce UntrustedModulesBackupData r=aklotz https://hg.mozilla.org/integration/autoland/rev/a025cdac711c Part5: Add the process type to the key of a per-proc object of the third-party module ping r=aklotz https://hg.mozilla.org/integration/autoland/rev/cd782ea33949 Part6: Introduce options for Telemetry.getUntrustedModuleLoadEvents() to control data r=aklotz,janerik https://hg.mozilla.org/integration/autoland/rev/2d3dd096f49f Part7: Add INCLUDE_PRIVATE_FIELDS_IN_LOADEVENTS r=aklotz,janerik https://hg.mozilla.org/integration/autoland/rev/ad3942a4c1f2 Part8: Add EXCLUDE_STACKINFO_FROM_LOADEVENTS r=aklotz,janerik https://hg.mozilla.org/integration/autoland/rev/d5b6e9d6b7aa Part9: Move some SVGs from browser to toolkit to use them from about:support. r=dao https://hg.mozilla.org/integration/autoland/rev/3d158bac444d Part10: Add a new section "Third-Party Modules" to about:support r=fluent-reviewers,jaws,Gijs

Hmm, this build error only happened on build-linux64-base-toolchains/debug. Updated the Part3 patch to fix it.

Flags: needinfo?(tkikuchi)
Pushed by nbeleuzu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d1c79db20cb3 Part1: Add a new GTest suite UntrustedModulesFixture r=aklotz https://hg.mozilla.org/integration/autoland/rev/301794281a55 Part2: Introduce UntrustedModulesDataSerializer r=aklotz https://hg.mozilla.org/integration/autoland/rev/1a8a04a7ae1f Part3: Add CombinedStacks::AddStacks to append CombinedStacks to CombinedStacks. r=janerik https://hg.mozilla.org/integration/autoland/rev/ace784f1e51b Part4: Introduce UntrustedModulesBackupData r=aklotz https://hg.mozilla.org/integration/autoland/rev/b56353063d54 Part5: Add the process type to the key of a per-proc object of the third-party module ping r=aklotz https://hg.mozilla.org/integration/autoland/rev/5d5f43a4d5d0 Part6: Introduce options for Telemetry.getUntrustedModuleLoadEvents() to control data r=aklotz,janerik https://hg.mozilla.org/integration/autoland/rev/5b4ce8205662 Part7: Add INCLUDE_PRIVATE_FIELDS_IN_LOADEVENTS r=aklotz,janerik https://hg.mozilla.org/integration/autoland/rev/3dd198cecf8c Part8: Add EXCLUDE_STACKINFO_FROM_LOADEVENTS r=aklotz,janerik https://hg.mozilla.org/integration/autoland/rev/bb888d44201a Part9: Move some SVGs from browser to toolkit to use them from about:support. r=dao https://hg.mozilla.org/integration/autoland/rev/d9f8cdf2877b Part10: Add a new section "Third-Party Modules" to about:support r=fluent-reviewers,jaws,Gijs
See Also: → 1681915
Regressions: 1681936
Regressions: 1691684
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: