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