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