xref: /aosp_15_r20/frameworks/base/mime/Android.bp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker// Copyright (C) 2019 The Android Open Source Project
2*d57664e9SAndroid Build Coastguard Worker//
3*d57664e9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d57664e9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d57664e9SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d57664e9SAndroid Build Coastguard Worker//
7*d57664e9SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*d57664e9SAndroid Build Coastguard Worker//
9*d57664e9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d57664e9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d57664e9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d57664e9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d57664e9SAndroid Build Coastguard Worker// limitations under the License.
14*d57664e9SAndroid Build Coastguard Worker
15*d57664e9SAndroid Build Coastguard Workerpackage {
16*d57664e9SAndroid Build Coastguard Worker    // See: http://go/android-license-faq
17*d57664e9SAndroid Build Coastguard Worker    // A large-scale-change added 'default_applicable_licenses' to import
18*d57664e9SAndroid Build Coastguard Worker    // all of the 'license_kinds' from "frameworks_base_license"
19*d57664e9SAndroid Build Coastguard Worker    // to get the below license kinds:
20*d57664e9SAndroid Build Coastguard Worker    //   SPDX-license-identifier-Apache-2.0
21*d57664e9SAndroid Build Coastguard Worker    default_applicable_licenses: ["frameworks_base_license"],
22*d57664e9SAndroid Build Coastguard Worker}
23*d57664e9SAndroid Build Coastguard Worker
24*d57664e9SAndroid Build Coastguard Workerjava_defaults {
25*d57664e9SAndroid Build Coastguard Worker    name: "mimemap-defaults",
26*d57664e9SAndroid Build Coastguard Worker    srcs: [
27*d57664e9SAndroid Build Coastguard Worker        "java/android/content/type/DefaultMimeMapFactory.java",
28*d57664e9SAndroid Build Coastguard Worker    ],
29*d57664e9SAndroid Build Coastguard Worker    sdk_version: "core_platform",
30*d57664e9SAndroid Build Coastguard Worker}
31*d57664e9SAndroid Build Coastguard Worker
32*d57664e9SAndroid Build Coastguard Workerjava_library {
33*d57664e9SAndroid Build Coastguard Worker    name: "mimemap",
34*d57664e9SAndroid Build Coastguard Worker    defaults: ["mimemap-defaults"],
35*d57664e9SAndroid Build Coastguard Worker    static_libs: ["mimemap-res.jar"],
36*d57664e9SAndroid Build Coastguard Worker    visibility: [
37*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base:__subpackages__",
38*d57664e9SAndroid Build Coastguard Worker    ],
39*d57664e9SAndroid Build Coastguard Worker}
40*d57664e9SAndroid Build Coastguard Worker
41*d57664e9SAndroid Build Coastguard Workerjava_library {
42*d57664e9SAndroid Build Coastguard Worker    name: "mimemap-testing",
43*d57664e9SAndroid Build Coastguard Worker    defaults: ["mimemap-defaults"],
44*d57664e9SAndroid Build Coastguard Worker    static_libs: ["mimemap-testing-res.jar"],
45*d57664e9SAndroid Build Coastguard Worker    jarjar_rules: "jarjar-rules.txt",
46*d57664e9SAndroid Build Coastguard Worker    visibility: [
47*d57664e9SAndroid Build Coastguard Worker        "//cts/tests/tests/mimemap:__subpackages__",
48*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base:__subpackages__",
49*d57664e9SAndroid Build Coastguard Worker    ],
50*d57664e9SAndroid Build Coastguard Worker}
51*d57664e9SAndroid Build Coastguard Worker
52*d57664e9SAndroid Build Coastguard Worker// The mimemap-res.jar and mimemap-testing-res.jar genrules produce a .jar that
53*d57664e9SAndroid Build Coastguard Worker// has the resource file in a subdirectory res/ and testres/, respectively.
54*d57664e9SAndroid Build Coastguard Worker// They need to be in different paths because one of them ends up in a
55*d57664e9SAndroid Build Coastguard Worker// bootclasspath jar whereas the other one ends up in a test jar. Bootclasspath
56*d57664e9SAndroid Build Coastguard Worker// resources hide test or application resources under the same path because
57*d57664e9SAndroid Build Coastguard Worker// ClassLoader.getResource(String) consults the parent ClassLoader first.
58*d57664e9SAndroid Build Coastguard Worker//
59*d57664e9SAndroid Build Coastguard Worker// Further notes:
60*d57664e9SAndroid Build Coastguard Worker//  - the "cp" command will flatten any directory paths that occur in $(in),
61*d57664e9SAndroid Build Coastguard Worker//    but here they happen to already be in the root directory. If we needed
62*d57664e9SAndroid Build Coastguard Worker//    to preserve sub paths then we might want to zip the files first and then
63*d57664e9SAndroid Build Coastguard Worker//    unzip them below the new parent directory.
64*d57664e9SAndroid Build Coastguard Worker//  - the path names "res/" and "testres/" and duplicated in .java source files
65*d57664e9SAndroid Build Coastguard Worker//    (DefaultMimeMapFactory.java and MimeMapTest.java, as of October 2019).
66*d57664e9SAndroid Build Coastguard Workerjava_genrule {
67*d57664e9SAndroid Build Coastguard Worker    name: "mimemap-res.jar",
68*d57664e9SAndroid Build Coastguard Worker    tools: [
69*d57664e9SAndroid Build Coastguard Worker        "soong_zip",
70*d57664e9SAndroid Build Coastguard Worker    ],
71*d57664e9SAndroid Build Coastguard Worker    srcs: [":mime.types.minimized"],
72*d57664e9SAndroid Build Coastguard Worker    out: ["mimemap-res.jar"],
73*d57664e9SAndroid Build Coastguard Worker    cmd: "mkdir $(genDir)/res/ && cp $(in) $(genDir)/res/ && $(location soong_zip) -C $(genDir) -o $(out) -D $(genDir)/res/",
74*d57664e9SAndroid Build Coastguard Worker}
75*d57664e9SAndroid Build Coastguard Worker
76*d57664e9SAndroid Build Coastguard Worker// The same as mimemap-res.jar except that the resources are placed in a different directory.
77*d57664e9SAndroid Build Coastguard Worker// They get bundled with CTS so that CTS can compare a device's MimeMap implementation vs.
78*d57664e9SAndroid Build Coastguard Worker// the stock Android one from when CTS was built.
79*d57664e9SAndroid Build Coastguard Workerjava_genrule {
80*d57664e9SAndroid Build Coastguard Worker    name: "mimemap-testing-res.jar",
81*d57664e9SAndroid Build Coastguard Worker    tools: [
82*d57664e9SAndroid Build Coastguard Worker        "soong_zip",
83*d57664e9SAndroid Build Coastguard Worker    ],
84*d57664e9SAndroid Build Coastguard Worker    srcs: [":mime.types.minimized"],
85*d57664e9SAndroid Build Coastguard Worker    out: ["mimemap-testing-res.jar"],
86*d57664e9SAndroid Build Coastguard Worker    cmd: "mkdir $(genDir)/testres/ && cp $(in) $(genDir)/testres/ && $(location soong_zip) -C $(genDir) -o $(out) -D $(genDir)/testres/",
87*d57664e9SAndroid Build Coastguard Worker}
88*d57664e9SAndroid Build Coastguard Worker
89*d57664e9SAndroid Build Coastguard Worker// Combination of all *mime.types.minimized resources.
90*d57664e9SAndroid Build Coastguard Workerfilegroup {
91*d57664e9SAndroid Build Coastguard Worker    name: "mime.types.minimized",
92*d57664e9SAndroid Build Coastguard Worker    visibility: [
93*d57664e9SAndroid Build Coastguard Worker        "//visibility:private",
94*d57664e9SAndroid Build Coastguard Worker    ],
95*d57664e9SAndroid Build Coastguard Worker    device_common_srcs: [
96*d57664e9SAndroid Build Coastguard Worker        ":debian.mime.types.minimized",
97*d57664e9SAndroid Build Coastguard Worker        ":android.mime.types.minimized",
98*d57664e9SAndroid Build Coastguard Worker        ":vendor.mime.types.minimized",
99*d57664e9SAndroid Build Coastguard Worker    ],
100*d57664e9SAndroid Build Coastguard Worker}
101*d57664e9SAndroid Build Coastguard Worker
102*d57664e9SAndroid Build Coastguard Workerjava_genrule {
103*d57664e9SAndroid Build Coastguard Worker    name: "android.mime.types.minimized",
104*d57664e9SAndroid Build Coastguard Worker    visibility: [
105*d57664e9SAndroid Build Coastguard Worker        "//visibility:private",
106*d57664e9SAndroid Build Coastguard Worker    ],
107*d57664e9SAndroid Build Coastguard Worker    out: ["android.mime.types"],
108*d57664e9SAndroid Build Coastguard Worker    srcs: [
109*d57664e9SAndroid Build Coastguard Worker        "java-res/android.mime.types",
110*d57664e9SAndroid Build Coastguard Worker    ],
111*d57664e9SAndroid Build Coastguard Worker    //    strip comments            normalize whitepace       drop empty lines
112*d57664e9SAndroid Build Coastguard Worker    cmd: "awk '{gsub(/#.*$$/,\"\"); $$1=$$1; print;}' $(in) | grep ' ' > $(out)",
113*d57664e9SAndroid Build Coastguard Worker}
114*d57664e9SAndroid Build Coastguard Worker
115*d57664e9SAndroid Build Coastguard Worker// Unlike the other *mime.types files, vendor.mime.types gets '?' prepended to
116*d57664e9SAndroid Build Coastguard Worker// every field so that its mappings will never overwrite earlier mappings by
117*d57664e9SAndroid Build Coastguard Worker// the other resource files. http://b/141842825
118*d57664e9SAndroid Build Coastguard Workerjava_genrule {
119*d57664e9SAndroid Build Coastguard Worker    name: "vendor.mime.types.minimized",
120*d57664e9SAndroid Build Coastguard Worker    visibility: [
121*d57664e9SAndroid Build Coastguard Worker        "//visibility:private",
122*d57664e9SAndroid Build Coastguard Worker    ],
123*d57664e9SAndroid Build Coastguard Worker    out: ["vendor.mime.types"],
124*d57664e9SAndroid Build Coastguard Worker    srcs: [
125*d57664e9SAndroid Build Coastguard Worker        "java-res/vendor.mime.types",
126*d57664e9SAndroid Build Coastguard Worker    ],
127*d57664e9SAndroid Build Coastguard Worker    //    strip comments            normalize whitepace       drop empty lines           prepend ? to fields that are missing it
128*d57664e9SAndroid Build Coastguard Worker    cmd: "awk '{gsub(/#.*$$/,\"\"); $$1=$$1; print;}' $(in) | (grep ' ' || echo -n '') | awk '{for(i=1;i<=NF;i++) { sub(/^\\??/, \"?\", $$i); }; print}' > $(out)",
129*d57664e9SAndroid Build Coastguard Worker}
130