Bug 1611554: Part 3 - Use jinja templates to generate GeckoChildProcessServices.java and AndroidManifest_overlay.xml; r=geckoview-reviewers,agi

This patch converts `GeckoChildProcessServices.java` into a jinja template.
We also add an overlay generated from a jinja template for `AndroidManifest.xml`
that provides the definitions for content process services.

Note that even though Gradle supports simple substitution of variables in
manifests, I opted not to use that functionality. Since we need the more
powerful template functionality that jinja provides, I felt that having multiple
ways to substitute information into the manifest would be confusing, so we're
using jinja exclusively.

Differential Revision: https://phabricator.services.mozilla.com/D82578
This commit is contained in:
Aaron Klotz 2021-01-13 01:19:15 +00:00
Родитель ae684a1dee
Коммит b55bf5ac03
5 изменённых файлов: 35 добавлений и 116 удалений

Просмотреть файл

@ -43,8 +43,6 @@
android:required="true"/>
<application>
<!-- New child services must also be added to the Fennec AndroidManifest.xml.in -->
<service
android:name="org.mozilla.gecko.media.MediaManager"
android:enabled="true"
@ -59,58 +57,6 @@
android:isolatedProcess="false"
android:process=":gmplugin">
</service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab0" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab0"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab1" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab1"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab2" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab2"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab3" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab3"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab4" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab4"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab5" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab5"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab6" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab6"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab7" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab7"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab8" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab8"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab9" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab9"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab10" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab10"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab11" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab11"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab12" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab12"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab13" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab13"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab14" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab14"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab15" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab15"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab16" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab16"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab17" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab17"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab18" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab18"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab19" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab19"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab20" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab20"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab21" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab21"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab22" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab22"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab23" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab23"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab24" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab24"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab25" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab25"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab26" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab26"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab27" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab27"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab28" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab28"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab29" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab29"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab30" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab30"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab31" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab31"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab32" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab32"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab33" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab33"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab34" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab34"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab35" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab35"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab36" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab36"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab37" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab37"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab38" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab38"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab39" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab39"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab40" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab40"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab41" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab41"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab42" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab42"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab43" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab43"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab44" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab44"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab45" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab45"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab46" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab46"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab47" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab47"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab48" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab48"></service>
<service android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab49" android:enabled="true" android:exported="false" android:isolatedProcess="false" android:process=":tab49"></service>
<service
android:name="org.mozilla.gecko.process.GeckoChildProcessServices$socket"
android:enabled="true"

Просмотреть файл

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.mozilla.geckoview">
<application>
{% for id in range(0, MOZ_ANDROID_CONTENT_SERVICE_COUNT | int) %}
<service
android:name="org.mozilla.gecko.process.GeckoChildProcessServices$tab{{ id }}"
android:enabled="true"
android:exported="false"
android:isolatedProcess="{{ 'true' if MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS else 'false' }}"
android:process=":tab{{ id }}">
</service>
{% endfor %}
</application>
</manifest>

Просмотреть файл

@ -1,62 +0,0 @@
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.process;
public class GeckoChildProcessServices {
public static final class gmplugin extends GeckoServiceChildProcess {}
public static final class socket extends GeckoServiceChildProcess {}
public static final class tab0 extends GeckoServiceChildProcess {}
public static final class tab1 extends GeckoServiceChildProcess {}
public static final class tab2 extends GeckoServiceChildProcess {}
public static final class tab3 extends GeckoServiceChildProcess {}
public static final class tab4 extends GeckoServiceChildProcess {}
public static final class tab5 extends GeckoServiceChildProcess {}
public static final class tab6 extends GeckoServiceChildProcess {}
public static final class tab7 extends GeckoServiceChildProcess {}
public static final class tab8 extends GeckoServiceChildProcess {}
public static final class tab9 extends GeckoServiceChildProcess {}
public static final class tab10 extends GeckoServiceChildProcess {}
public static final class tab11 extends GeckoServiceChildProcess {}
public static final class tab12 extends GeckoServiceChildProcess {}
public static final class tab13 extends GeckoServiceChildProcess {}
public static final class tab14 extends GeckoServiceChildProcess {}
public static final class tab15 extends GeckoServiceChildProcess {}
public static final class tab16 extends GeckoServiceChildProcess {}
public static final class tab17 extends GeckoServiceChildProcess {}
public static final class tab18 extends GeckoServiceChildProcess {}
public static final class tab19 extends GeckoServiceChildProcess {}
public static final class tab20 extends GeckoServiceChildProcess {}
public static final class tab21 extends GeckoServiceChildProcess {}
public static final class tab22 extends GeckoServiceChildProcess {}
public static final class tab23 extends GeckoServiceChildProcess {}
public static final class tab24 extends GeckoServiceChildProcess {}
public static final class tab25 extends GeckoServiceChildProcess {}
public static final class tab26 extends GeckoServiceChildProcess {}
public static final class tab27 extends GeckoServiceChildProcess {}
public static final class tab28 extends GeckoServiceChildProcess {}
public static final class tab29 extends GeckoServiceChildProcess {}
public static final class tab30 extends GeckoServiceChildProcess {}
public static final class tab31 extends GeckoServiceChildProcess {}
public static final class tab32 extends GeckoServiceChildProcess {}
public static final class tab33 extends GeckoServiceChildProcess {}
public static final class tab34 extends GeckoServiceChildProcess {}
public static final class tab35 extends GeckoServiceChildProcess {}
public static final class tab36 extends GeckoServiceChildProcess {}
public static final class tab37 extends GeckoServiceChildProcess {}
public static final class tab38 extends GeckoServiceChildProcess {}
public static final class tab39 extends GeckoServiceChildProcess {}
public static final class tab40 extends GeckoServiceChildProcess {}
public static final class tab41 extends GeckoServiceChildProcess {}
public static final class tab42 extends GeckoServiceChildProcess {}
public static final class tab43 extends GeckoServiceChildProcess {}
public static final class tab44 extends GeckoServiceChildProcess {}
public static final class tab45 extends GeckoServiceChildProcess {}
public static final class tab46 extends GeckoServiceChildProcess {}
public static final class tab47 extends GeckoServiceChildProcess {}
public static final class tab48 extends GeckoServiceChildProcess {}
public static final class tab49 extends GeckoServiceChildProcess {}
}

Просмотреть файл

@ -0,0 +1,15 @@
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.process;
public class GeckoChildProcessServices {
public static final class gmplugin extends GeckoServiceChildProcess {}
public static final class socket extends GeckoServiceChildProcess {}
{% for id in range(0, MOZ_ANDROID_CONTENT_SERVICE_COUNT | int) %}
public static final class tab{{ id }} extends GeckoServiceChildProcess {}
{% endfor %}
}

Просмотреть файл

@ -30,6 +30,7 @@ license:
- js/src/devtools/rootAnalysis/t/
- mobile/android/components/extensions
- mobile/android/geckoview/src/main/AndroidManifest.xml
- mobile/android/geckoview/src/main/AndroidManifest_overlay.jinja
- mobile/android/geckoview/src/main/res/drawable/ic_generic_file.xml
- mobile/android/geckoview_example/src/main
# might not work with license