Add UI for mainline modules licenses.

Added a module licenses option that lives in Legal information settings.
Clicking that option opens module licenses page, which displays every
module by name, filtered to exclude modules without license files.
Clicking a module in the list opens HTMLViewer.

Created ModuleLicensesProvider, a new ContentProvider that serves as a
redirect for the Uris sent to HTMLViewer so that they open asset files.
In order to provide the redirect, the provider will write the license file
to a file in Settings' cache directory when the license does not exist
in the cache or is outdated. The provider then opens that cached file.

Fixes: 135183006
Test: robotests
Change-Id: I7d69da34780c8c4efb150d0c0411078c12bc80d8
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ef68318..ccddcc8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -986,6 +986,18 @@
                 android:value="true" />
         </activity>
 
+        <activity android:name=".Settings$ModuleLicensesActivity"
+                  android:label="@string/module_license_title">
+            <intent-filter>
+                <action android:name="android.settings.MODULE_LICENSES" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.deviceinfo.legal.ModuleLicensesDashboard" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity>
+
         <activity
             android:name="Settings$ManageApplicationsActivity"
             android:label="@string/applications_settings">
@@ -2662,6 +2674,12 @@
                 android:resource="@xml/file_paths" />
         </provider>
 
+        <provider
+            android:name=".deviceinfo.legal.ModuleLicenseProvider"
+            android:authorities="com.android.settings.module_licenses"
+            android:grantUriPermissions="true"
+            android:exported="false"/>
+
         <activity android:name=".sim.SimPreferenceDialog"
             android:theme="@style/Theme.AlertDialog"
             android:excludeFromRecents="true" />