#33939: Decide which components of Fenix to rip out, disable, or use
----------------------------------------------+----------------------------
 Reporter:  gk                                |          Owner:  tbb-team
     Type:  task                              |         Status:  new
 Priority:  High                              |      Milestone:
Component:  Applications/Tor Browser          |        Version:
 Severity:  Normal                            |     Resolution:
 Keywords:  tbb-mobile, TorBrowserTeam202006  |  Actual Points:
Parent ID:  #33661                            |         Points:
 Reviewer:                                    |        Sponsor:
                                              |  Sponsor58-must
----------------------------------------------+----------------------------

Comment (by sysrqb):

 Replying to [comment:3 sysrqb]:
 > The follow list partitions the dependencies into "include", "exclude",
 "disable", and "must-audit" sets
 >
 > "Must Audit" includes dependencies that we could allow depending on
 their implementation
 >
 > "Disable" includes dependencies that we probably do not want and we
 should always use "Dummy" implementations
 >
 > "Disable" and "Exclude" may merge into a single set.
 >
 > === Include ===
 > {{{
 > > # GeckoView
 > > mozilla_browser_engine_gecko_nightly -> org.mozilla.components
 :browser-engine-gecko-nightly
 > > mozilla_browser_engine_gecko_beta -> org.mozilla.components:browser-
 engine-gecko-beta

 #34177

 > {{{
 > >
 > > # Kotlin std library
 > > kotlin_stdlib -> org.jetbrains.kotlin:kotlin-stdlib-jdk7
 > >
 > > # Import/enable coroutine functionality in Kotlin
 > > kotlin_coroutines -> org.jetbrains.kotlinx:kotlinx-coroutines-core
 > > kotlin_coroutines_android -> org.jetbrains.kotlinx:kotlinx-coroutines-
 android
 > >
 > > # AndroidX compatibility libraries
 > > androidx_appcompat -> androidx.appcompat:appcompat
 > > androidx_constraintlayout ->
 androidx.constraintlayout:constraintlayout
 > > androidx_coordinatorlayout ->
 androidx.coordinatorlayout:coordinatorlayout

 Presumed safe.

 > {{{
 > >
 > > # Dynamically (?) creates license list
 > > osslicenses_library -> com.google.android.gms:play-services-oss-
 licenses

 It seems like `play-services-oss-licenses` is closed source? :(

 The [https://github.com/google/play-services-plugins/tree/oss-licenses-
 plugin-v0.9.5/oss-licenses-
 plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin plugin]
 seems fine and is a gradle build-time thing. As I understand it, the
 plugin grabs all of the `<license>` elements from the dependencies and
 places them in some-format in `res/raw/third_party_license_metadata`.
 Then, `com.google.android.gms.oss.licenses.OssLicensesMenuActivity` takes
 that `third_party_license` file and renders it. Therefore, `play-services-
 oss-licenses` *should* be proxy-safe, but I'd feel better if we could
 audit the code.

 > {{{
 > >
 > > # High-level descriptions/contracts of a browser engine
 > > mozilla_concept_engine -> org.mozilla.components:concept-engine

 No references to `net`, `tcp`, `udp`, `write`, `read`, `send`, `recv`,
 `launch`, `startActivity`. `Uri` is only used for parsing a string.
 `write` used for serializing data (in memory). `connect` in
 `Engine::speculativeConnect()` interface.
 > {{{
 > >
 > > # High-level descriptions/contracts of a storage layer
 > > mozilla_concept_storage -> org.mozilla.components:concept-storage

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `launch`, `startActivity`.

 > {{{
 > >
 > > # High-level descriptions/contracts of a browser toolbar
 > > mozilla_concept_toolbar -> org.mozilla.components:concept-toolbar

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `launch`, `startActivity`.

 > {{{
 > >
 > > # High-level descriptions/contracts of a tabs tray component
 > > mozilla_concept_tabstray -> org.mozilla.components:concept-tabstray

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `launch`, `startActivity`.

 > {{{
 > >
 > > # A customizable Awesome Bar implementation for browsers
 > > mozilla_browser_awesomebar -> org.mozilla.components:browser-
 awesomebar

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `startActivity`. `launch` used for coroutines.

 > {{{
 > >
 > > # APIs for managing localized and customizable domain lists
 > > mozilla_browser_domains -> org.mozilla.components:browser-domains

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `startActivity`. `launch` used for coroutines.

 > {{{
 > >
 > > # A customizable tabs tray for browsers implementation
 > > mozilla_browser_tabstray -> org.mozilla.components:browser-tabstray

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `launch`, `startActivity`.

 > {{{
 > >
 > > # A generic menu implementation with customizable items
 > > mozilla_browser_menu -> org.mozilla.components:browser-menu

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `startActivity`. `launch` used for coroutines.

 > {{{
 > >
 > > # Search plugins and companion code to load, parse and use them
 > > mozilla_browser_search -> org.mozilla.components:browser-search

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `send`,
 `recv`, `startActivity`. `launch` used for coroutines. `Uri` is used for
 local Search Engine files.

 > {{{
 > >
 > > # A generic representation of a browser Session and a SessionManager
 to link browser sessions to underlying Engine Sessions and SessionStorage
 > > mozilla_browser_session -> org.mozilla.components:browser-session

 No references to `net`, `connect`, `tcp`, `udp`, `send`, `recv`,
 `startActivity`. `write` and `read` used for reading/writing session
 history/state files. `load` for receiving load requests from the OS. `Uri`
 is only used for parsing a string. #34427

 > {{{
 > >
 > > # A customizable toolbar for browsers
 > > mozilla_browser_toolbar -> org.mozilla.components:browser-toolbar

 No references to `net`, `tcp`, `udp`, `write`, `read`, or `Uri`. `connect`
 is used for setting `ConstraintSet` for the UI. `launch` used for
 coroutines.

 > {{{
 > >
 > > # Contains building blocks for features implemented as web extensions
 > > mozilla_support_extensions -> org.mozilla.components:support-
 webextensions


 No references to `net`, `tcp`, `udp`, `write`, `read`, `Uri`, `recv`,
 `launch`, `startActivity`. `connect` used for
 [https://developer.mozilla.org/en-US/docs/Mozilla/Add-
 ons/WebExtensions/API/runtime/connectNative NativeMessaging]. `send` for
 sending messages from a webextension into Content.

 > {{{
 > >
 > > # Provides functionality for managing add-ons
 > > mozilla_feature_addons -> org.mozilla.components:feature-addons

 No references to `net`, `connect`, `tcp`, `udp`, `Uri`, `send`, `recv`,
 `startActivity`. `read`/`write` used for caching on disk a list of
 installed addons. The AddOn's feature periodically triggers an update
 check which is handled by Gecko. `launch` used for coroutines.

 > {{{
 > >
 > > # Ties together an FxaAccountManager with the tabs feature, to
 facilitate OAuth authentication flows managed by the account manager
 > > mozilla_feature_accounts -> org.mozilla.components:feature-accounts

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `send`,
 `recv`, `launch`, `startActivity`. `Uri` is only used for parsing a
 string. `launch` used for coroutines.

 > {{{
 > >
 > > # Connects a concept-awesomebar implementation to a concept-toolbar
 implementation and provides implementations of various suggestion
 providers
 > > mozilla_feature_awesomebar -> org.mozilla.components:feature-
 awesomebar

 No references to `net`, `tcp`, `udp`, `write`, `read`, `Uri`, `send`,
 `recv`, `launch`, `startActivity`. `ClipboardSuggestionProvider` triggers
 a `speculativeConnect` when a suggestion is created. Nifty.
 > {{{
 > >
 > > # Displaying context menus when *long-pressing* web content
 > > mozilla_feature_contextmenu -> org.mozilla.components:feature-
 contextmenu

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `recv`, `launch`. `startActivity` is called when "Share link" transfers
 control to the operating system with a request to show the user a
 "Chooser" menu. `send` comes with `sendSearch()` where a search query is
 initiatiated based on text selection (when the user requests the search).

 > {{{
 > >
 > > # Providing Custom Tabs functionality in browsers
 > > mozilla_feature_customtabs -> org.mozilla.components:feature-
 customtabs

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `recv`.
 `Uri` is used for parsing a string, and it is passed to Android OS for
 letting the OS (or user) to choose which app should open/handle that
 request. `launch` used for coroutines. `send` from `sendWithSession` for
 mutating a PendingIntent with a session's Uri.

 #34428

 DigitalAssetLinksHandler triggers [https://developers.google.com/digital-
 asset-links/reference/rest/v1/assetlinks/check background request].

 #34429
 #21657
 > {{{
 > >
 > > # Provides website media related features
 > > mozilla_feature_media -> org.mozilla.components:feature-media

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `Uri`,
 `send`, `recv`, `startActivity`. `launch` used for coroutines, and
 creating a PendingIntent for itself that is used when a notification is
 pressed. And MediaService?

 > {{{
 > >
 > > # Handles common prompt dialogs from web content like select, option
 and menu html elements
 > > mozilla_feature_prompts -> org.mozilla.components:feature-prompts

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `send`,
 `recv`. `startActivity` is an abstract function. Also, `startActivity` is
 called for launching a Camera app ("capture"). `Uri` is used for passing
 around file paths.
 #33661

 > {{{
 > >
 > > # Connects an (concept) engine implementation with the browser search
 module
 > > mozilla_feature_search -> org.mozilla.components:feature-search

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `recv`,
 `Uri`, `launch`, `startActivity`. `send` is seen:
 {{{
 /**
  * May be implemented by client code in order to allow a component to
 start searches.
  */
 interface SearchAdapter {

     /**
      * Called by the component to indicate that the user should be shown a
 search.
      */
     fun sendSearch(isPrivate: Boolean, text: String)
 }}}

 > {{{
 > >
 > > # Connects an (concept) engine implementation with the browser session
 module
 > > mozilla_feature_session -> org.mozilla.components:feature-session

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `send`, `read`,
 `recv`, `launch`, `startActivity`. `Uri` is used for saving history state.

 #34431

 > {{{
 > >
 > > # Connects a (concept) toolbar implementation with the browser session
 module
 > > mozilla_feature_toolbar -> org.mozilla.components:feature-toolbar

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `recv`,
 `Uri`, `startActivity`. `send` and `launch` used for coroutines.

 > {{{
 > >
 > > # Connects a trabs tray implementation with the session and toolbar
 modules
 > > mozilla_feature_tabs -> org.mozilla.components:feature-tabs

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `recv`,
 `Uri`, `send`, `launch`, `startActivity`

 > {{{
 > >
 > > # Provides Find in Page functionality
 > > mozilla_feature_findinpage -> org.mozilla.components:feature-
 findinpage

 No references to `net`, `connect`, `tcp`, `udp`, `write`, `read`, `recv`,
 `Uri`, `send`, `launch`, `startActivity`

 (I'll finish the remainder tomorrow, and begin auditing/eliminating
 dependencies from Must Audit)

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/33939#comment:13>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs

Reply via email to