| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import("//build/config/android/rules.gni") | 5 import("//build/config/android/rules.gni") |
| 6 import("shell_apk_version.gni") | 6 import("shell_apk_version.gni") |
| 7 | 7 |
| 8 declare_args() { | 8 declare_args() { |
| 9 # The origin URL of the WebAPK. Used to generate a unique package name for |
| 10 # WebAPK. Example: "foo.com" |
| 11 webapk_manifest_package_origin = "template" |
| 12 |
| 9 # The browser that the WebAPK will be bound to. | 13 # The browser that the WebAPK will be bound to. |
| 10 webapk_runtime_host = "com.google.android.apps.chrome" | 14 webapk_runtime_host = "com.google.android.apps.chrome" |
| 11 | 15 |
| 12 # The Url of the Web Manifest file. | 16 # The Url of the Web Manifest file. |
| 13 webapk_web_manifest_url = "https://www.template.com/manifest.json" | 17 webapk_web_manifest_url = "https://www.template.com/manifest.json" |
| 14 | 18 |
| 15 # Murmur2 hash of the homescreen icon. The hash should be of the icon as it is | 19 # Murmur2 hash of the homescreen icon. The hash should be of the icon as it is |
| 16 # available from the web. The icon bytes should not be transformed (e.g. | 20 # available from the web. The icon bytes should not be transformed (e.g. |
| 17 # decoded / encoded) prior to taking the hash. | 21 # decoded / encoded) prior to taking the hash. |
| 18 webapk_icon_murmur2_hash = "0" | 22 webapk_icon_murmur2_hash = "0" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 37 # Path part of |webapk_scope_url|. | 41 # Path part of |webapk_scope_url|. |
| 38 webapk_scope_url_path = "/" | 42 webapk_scope_url_path = "/" |
| 39 | 43 |
| 40 # Android version code for the WebAPK. | 44 # Android version code for the WebAPK. |
| 41 webapk_version_code = "1" | 45 webapk_version_code = "1" |
| 42 | 46 |
| 43 # Android version name for the WebAPK. | 47 # Android version name for the WebAPK. |
| 44 webapk_version_name = "1.0" | 48 webapk_version_name = "1.0" |
| 45 } | 49 } |
| 46 | 50 |
| 51 shell_apk_manifest_package = |
| 52 "org.chromium.webapk.$webapk_manifest_package_origin" |
| 53 |
| 47 shell_apk_manifest = "$target_gen_dir/shell_apk_manifest/AndroidManifest.xml" | 54 shell_apk_manifest = "$target_gen_dir/shell_apk_manifest/AndroidManifest.xml" |
| 48 shell_apk_manifest_javatests = | |
| 49 "$target_gen_dir/shell_apk_manifest_javatests/AndroidManifest.xml" | |
| 50 | 55 |
| 51 jinja_template("shell_apk_manifest") { | 56 jinja_template("shell_apk_manifest") { |
| 52 input = "AndroidManifest.xml" | 57 input = "AndroidManifest.xml" |
| 53 output = shell_apk_manifest | 58 output = shell_apk_manifest |
| 54 | 59 |
| 55 variables = [ | 60 variables = [ |
| 56 "shell_apk_version=$shell_apk_version", | 61 "shell_apk_version=$shell_apk_version", |
| 57 "manifest_package=org.chromium.webapk", | 62 "manifest_package=$shell_apk_manifest_package", |
| 58 "runtime_host=$webapk_runtime_host", | 63 "runtime_host=$webapk_runtime_host", |
| 59 "start_url=$webapk_start_url", | 64 "start_url=$webapk_start_url", |
| 60 "name=$webapk_name", | 65 "name=$webapk_name", |
| 61 "short_name=$webapk_short_name", | 66 "short_name=$webapk_short_name", |
| 62 "scope_url=$webapk_scope_url", | 67 "scope_url=$webapk_scope_url", |
| 63 "display_mode=$webapk_display_mode", | 68 "display_mode=$webapk_display_mode", |
| 64 "orientation=$webapk_orientation", | 69 "orientation=$webapk_orientation", |
| 65 "theme_color=$webapk_theme_color", | 70 "theme_color=$webapk_theme_color", |
| 66 "background_color=$webapk_background_color", | 71 "background_color=$webapk_background_color", |
| 67 "icon_urls_and_icon_murmur2_hashes=$webapk_icon_urls_and_icon_murmur2_hashes
", | 72 "icon_urls_and_icon_murmur2_hashes=$webapk_icon_urls_and_icon_murmur2_hashes
", |
| 68 "scope_url_scheme=$webapk_scope_url_scheme", | 73 "scope_url_scheme=$webapk_scope_url_scheme", |
| 69 "scope_url_host=$webapk_scope_url_host", | 74 "scope_url_host=$webapk_scope_url_host", |
| 70 "scope_url_path=$webapk_scope_url_path", | 75 "scope_url_path=$webapk_scope_url_path", |
| 71 "web_manifest_url=$webapk_web_manifest_url", | 76 "web_manifest_url=$webapk_web_manifest_url", |
| 72 "version_code=$webapk_version_code", | 77 "version_code=$webapk_version_code", |
| 73 "version_name=$webapk_version_name", | 78 "version_name=$webapk_version_name", |
| 74 ] | 79 ] |
| 75 } | 80 } |
| 76 | 81 |
| 77 # Manifest for instrumentation tests. Cannot be customized via GN args. | |
| 78 jinja_template("shell_apk_manifest_javatests") { | |
| 79 input = "AndroidManifest.xml" | |
| 80 output = shell_apk_manifest_javatests | |
| 81 | |
| 82 variables = [ | |
| 83 "shell_apk_version=$shell_apk_version", | |
| 84 "manifest_package=org.chromium.webapk.test", | |
| 85 "runtime_host=org.chromium.chrome", | |
| 86 "start_url=https://www.template.com/home_page", | |
| 87 "name=Test", | |
| 88 "short_name=Test", | |
| 89 "scope_url=https://www.template.com", | |
| 90 "display_mode=standalone", | |
| 91 "orientation=portrait", | |
| 92 "theme_color=2147483648L", # HostBrowserLauncher#MANIFEST_COLOR_INVALID_OR_
MISSING | |
| 93 "background_color=2147483648L", # HostBrowserLauncher#MANIFEST_COLOR_INVALI
D_OR_MISSING | |
| 94 "icon_urls_and_icon_murmur2_hashes=", | |
| 95 "scope_url_scheme=https", | |
| 96 "scope_url_host=template.com", | |
| 97 "scope_url_path=/", | |
| 98 "web_manifest_url=https://www.template.com/manifest.json", | |
| 99 "version_code=1", | |
| 100 "version_name=1.0", | |
| 101 ] | |
| 102 } | |
| 103 | |
| 104 android_resources("shell_apk_resources") { | 82 android_resources("shell_apk_resources") { |
| 105 resource_dirs = [ "res" ] | 83 resource_dirs = [ "res" ] |
| 106 custom_package = "org.chromium.webapk.shell_apk" | 84 custom_package = "org.chromium.webapk.shell_apk" |
| 107 } | 85 } |
| 108 | 86 |
| 109 android_library("webapk_java") { | 87 android_library("webapk_java") { |
| 110 java_files = [ | 88 java_files = [ |
| 111 "src/org/chromium/webapk/shell_apk/DexLoader.java", | 89 "src/org/chromium/webapk/shell_apk/DexLoader.java", |
| 112 "src/org/chromium/webapk/shell_apk/HostBrowserClassLoader.java", | 90 "src/org/chromium/webapk/shell_apk/HostBrowserClassLoader.java", |
| 113 "src/org/chromium/webapk/shell_apk/MainActivity.java", | 91 "src/org/chromium/webapk/shell_apk/MainActivity.java", |
| 114 "src/org/chromium/webapk/shell_apk/NotificationSettingsLauncherActivity.java
", | 92 "src/org/chromium/webapk/shell_apk/NotificationSettingsLauncherActivity.java
", |
| 115 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService.java", | 93 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService.java", |
| 116 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService0.java", | 94 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService0.java", |
| 117 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService1.java", | 95 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService1.java", |
| 118 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService2.java", | 96 "src/org/chromium/webapk/shell_apk/WebApkSandboxedProcessService2.java", |
| 119 "src/org/chromium/webapk/shell_apk/WebApkServiceFactory.java", | 97 "src/org/chromium/webapk/shell_apk/WebApkServiceFactory.java", |
| 120 "src/org/chromium/webapk/shell_apk/WebApkUtils.java", | 98 "src/org/chromium/webapk/shell_apk/WebApkUtils.java", |
| 121 ] | 99 ] |
| 122 deps = [ | 100 deps = [ |
| 123 ":shell_apk_resources", | 101 ":shell_apk_resources", |
| 124 "//chrome/android/webapk/libs/common:common_java", | 102 "//chrome/android/webapk/libs/common:common_java", |
| 125 ] | 103 ] |
| 126 } | 104 } |
| 127 | 105 |
| 128 template("webapk_tmpl") { | |
| 129 android_apk(target_name) { | |
| 130 forward_variables_from(invoker, | |
| 131 [ | |
| 132 "android_manifest", | |
| 133 "android_manifest_dep", | |
| 134 "apk_name", | |
| 135 ]) | |
| 136 deps = [ | |
| 137 ":webapk_java", | |
| 138 ] | |
| 139 never_incremental = true | |
| 140 | |
| 141 # Force 32 bit mode on 64 bit devices. | |
| 142 native_lib_placeholders = [ "libfoo.so" ] | |
| 143 | |
| 144 if (!is_java_debug) { | |
| 145 proguard_enabled = true | |
| 146 proguard_configs = [ | |
| 147 "//chrome/android/java/proguard.flags", | |
| 148 "//base/android/proguard/chromium_apk.flags", | |
| 149 "//base/android/proguard/chromium_code.flags", | |
| 150 ] | |
| 151 } | |
| 152 } | |
| 153 } | |
| 154 | |
| 155 # Template for WebAPK. When a WebAPK is generated: | 106 # Template for WebAPK. When a WebAPK is generated: |
| 156 # - Android manifest is customized to the website. | 107 # - Android manifest is customized to the website. |
| 157 # - App icon is extracted from the website and added to the APK's resources. | 108 # - App icon is extracted from the website and added to the APK's resources. |
| 158 webapk_tmpl("webapk") { | 109 android_apk("webapk") { |
| 159 android_manifest = shell_apk_manifest | 110 android_manifest = shell_apk_manifest |
| 160 android_manifest_dep = ":shell_apk_manifest" | 111 android_manifest_dep = ":shell_apk_manifest" |
| 161 apk_name = "webapk" | 112 apk_name = "WebApk.$webapk_manifest_package_origin" |
| 162 } | 113 deps = [ |
| 163 | 114 ":webapk_java", |
| 164 # WebAPK for instrumentation tests. | 115 ] |
| 165 webapk_tmpl("webapk_javatests") { | 116 if (!is_java_debug) { |
| 166 android_manifest = shell_apk_manifest_javatests | 117 proguard_enabled = true |
| 167 android_manifest_dep = ":shell_apk_manifest_javatests" | 118 proguard_configs = [ |
| 168 apk_name = "webapk_javatests" | 119 "//chrome/android/java/proguard.flags", |
| 120 "//base/android/proguard/chromium_apk.flags", |
| 121 "//base/android/proguard/chromium_code.flags", |
| 122 ] |
| 123 } |
| 169 } | 124 } |
| 170 | 125 |
| 171 android_library("shell_apk_javatests") { | 126 android_library("shell_apk_javatests") { |
| 172 testonly = true | 127 testonly = true |
| 173 java_files = | 128 java_files = |
| 174 [ "javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java" ] | 129 [ "javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java" ] |
| 175 deps = [ | 130 deps = [ |
| 176 ":webapk_java", | 131 ":webapk_java", |
| 177 "//base:base_java", | 132 "//base:base_java", |
| 178 "//base:base_java_test_support", | 133 "//base:base_java_test_support", |
| 179 "//chrome/android/webapk/libs/common:common_java", | 134 "//chrome/android/webapk/libs/common:common_java", |
| 180 "//content/public/test/android:content_java_test_support", | 135 "//content/public/test/android:content_java_test_support", |
| 181 "//third_party/android_support_test_runner:runner_java", | 136 "//third_party/android_support_test_runner:runner_java", |
| 182 ] | 137 ] |
| 183 srcjar_deps = [ "javatests/dex_optimizer:dex_optimizer_service_aidl" ] | 138 srcjar_deps = [ "javatests/dex_optimizer:dex_optimizer_service_aidl" ] |
| 184 } | 139 } |
| 185 | 140 |
| 186 junit_binary("webapk_shell_apk_junit_tests") { | 141 junit_binary("webapk_shell_apk_junit_tests") { |
| 187 java_files = [ | 142 java_files = [ |
| 188 "junit/src/org/chromium/webapk/shell_apk/HostBrowserClassLoaderTest.java", | 143 "junit/src/org/chromium/webapk/shell_apk/HostBrowserClassLoaderTest.java", |
| 189 "junit/src/org/chromium/webapk/shell_apk/MainActivityTest.java", | 144 "junit/src/org/chromium/webapk/shell_apk/MainActivityTest.java", |
| 190 ] | 145 ] |
| 191 deps = [ | 146 deps = [ |
| 192 ":webapk_java", | 147 ":webapk_java", |
| 193 "//chrome/android/webapk/libs/common:common_java", | 148 "//chrome/android/webapk/libs/common:common_java", |
| 194 "//chrome/android/webapk/test:junit_test_support", | 149 "//chrome/android/webapk/test:junit_test_support", |
| 195 ] | 150 ] |
| 196 } | 151 } |
| OLD | NEW |