summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormichaelbai <michaelbai@chromium.org>2015-09-18 14:01:08 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-18 21:01:43 +0000
commitf35c662156e94e1344ffdb2230b1240e81c231b1 (patch)
treefcd325dddbe60d577a3bc401843cd36b581927a2
parent2436ed21a5d41eac9168c22d9a7c7f654dba401d (diff)
downloadchromium_src-f35c662156e94e1344ffdb2230b1240e81c231b1.zip
chromium_src-f35c662156e94e1344ffdb2230b1240e81c231b1.tar.gz
chromium_src-f35c662156e94e1344ffdb2230b1240e81c231b1.tar.bz2
Generate ResourceRewriter.java through dependency graph
- Added create-resource-rewriter option to generate ResourceRewriter.java when building Java lib - Added system_webview_glue_java target and make system_webview_apk to depend on it. - Removed unnecessary com.android.webview.chromium.R, there is no new resource added in this package. BUG=492166 Review URL: https://codereview.chromium.org/1340383003 Cr-Commit-Position: refs/heads/master@{#349764}
-rw-r--r--android_webview/android_webview.gyp13
-rw-r--r--android_webview/apk/system_webview_apk_common.gypi4
-rw-r--r--android_webview/apk/system_webview_glue_common.gypi42
-rw-r--r--android_webview/glue/java/src/com/android/webview/chromium/ResourceRewriter.java24
-rw-r--r--android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java3
-rw-r--r--android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java3
-rwxr-xr-xbuild/android/gyp/generate_resource_rewriter.py84
-rw-r--r--build/java.gypi3
8 files changed, 144 insertions, 32 deletions
diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp
index 17cb5af..9a390f9 100644
--- a/android_webview/android_webview.gyp
+++ b/android_webview/android_webview.gyp
@@ -404,11 +404,22 @@
'includes': [ '../build/java.gypi' ],
},
{
+ 'target_name': 'system_webview_glue_java',
+ 'variables': {
+ 'android_sdk_jar': '../third_party/android_platform/webview/frameworks_6.0.jar',
+ 'java_in_dir': 'glue/java',
+ },
+ 'includes': [ 'apk/system_webview_glue_common.gypi' ],
+ },
+ {
'target_name': 'system_webview_apk',
+ 'dependencies': [
+ 'system_webview_glue_java',
+ ],
'variables': {
'apk_name': 'SystemWebView',
'android_sdk_jar': '../third_party/android_platform/webview/frameworks_6.0.jar',
- 'java_in_dir': 'glue/java',
+ 'java_in_dir': '../build/android/empty',
'resource_dir': 'apk/java/res',
},
'includes': [ 'apk/system_webview_apk_common.gypi' ],
diff --git a/android_webview/apk/system_webview_apk_common.gypi b/android_webview/apk/system_webview_apk_common.gypi
index decd716..2ccb878 100644
--- a/android_webview/apk/system_webview_apk_common.gypi
+++ b/android_webview/apk/system_webview_apk_common.gypi
@@ -8,15 +8,11 @@
'type': 'none',
'dependencies': [
'<(DEPTH)/android_webview/android_webview.gyp:libwebviewchromium',
- '<(DEPTH)/android_webview/android_webview.gyp:android_webview_java',
- '<(DEPTH)/android_webview/android_webview.gyp:android_webview_pak',
],
'variables': {
'native_lib_target': 'libwebviewchromium',
'native_lib_version_name': '<(version_full)',
'never_lint': 1,
- 'R_package': 'com.android.webview.chromium',
- 'R_package_relpath': 'com/android/webview/chromium',
'shared_resources': 1,
'extensions_to_not_compress': '.lpak,.pak,.bin,.dat',
'asset_location': '<(INTERMEDIATE_DIR)/assets/',
diff --git a/android_webview/apk/system_webview_glue_common.gypi b/android_webview/apk/system_webview_glue_common.gypi
new file mode 100644
index 0000000..9b15be4
--- /dev/null
+++ b/android_webview/apk/system_webview_glue_common.gypi
@@ -0,0 +1,42 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# This is shared between system_webview_glue_java and system_webview_glue_next_java
+{
+ 'type': 'none',
+ 'dependencies': [
+ '<(DEPTH)/android_webview/android_webview.gyp:android_webview_java',
+ '<(DEPTH)/android_webview/android_webview.gyp:android_webview_pak',
+ ],
+ 'variables': {
+ 'never_lint': 1,
+ 'resource_rewriter_package': 'com.android.webview.chromium',
+ 'resource_rewriter_dir': '<(intermediate_dir)/resource_rewriter',
+ 'resource_rewriter_path': '<(resource_rewriter_dir)/com/android/webview/chromium/ResourceRewriter.java',
+ 'additional_input_paths': ['<(resource_rewriter_path)'],
+ 'generated_src_dirs': ['<(resource_rewriter_dir)'],
+ },
+ 'actions': [
+ # Generate ResourceRewriter.java
+ {
+ 'action_name': 'generate_resource_rewriter',
+ 'message': 'generate ResourceRewriter for <(_target_name)',
+ 'inputs':[
+ '<(DEPTH)/build/android/gyp/util/build_utils.py',
+ '<(DEPTH)/build/android/gyp/generate_resource_rewriter.py',
+ '>@(dependencies_res_zip_paths)',
+ ],
+ 'outputs': [
+ '<(resource_rewriter_path)',
+ ],
+ 'action': [
+ 'python', '<(DEPTH)/build/android/gyp/generate_resource_rewriter.py',
+ '--package-name', '<(resource_rewriter_package)',
+ '--dep-packages', '>(additional_res_packages)',
+ '--output-dir', '<(resource_rewriter_dir)',
+ ],
+ },
+ ],
+ 'includes': [ '../../build/java.gypi' ],
+}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/ResourceRewriter.java b/android_webview/glue/java/src/com/android/webview/chromium/ResourceRewriter.java
deleted file mode 100644
index 6f2902c..0000000
--- a/android_webview/glue/java/src/com/android/webview/chromium/ResourceRewriter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package com.android.webview.chromium;
-
-/**
- * Helper class used to fix up resource ids.
- */
-class ResourceRewriter {
- /**
- * Rewrite the R 'constants' for the WebView library apk.
- */
- public static void rewriteRValues(final int packageId) {
- // This list must be kept up to date to include all R classes depended on directly or
- // indirectly by android_webview_java.
- // TODO(torne): find a better way to do this, http://crbug.com/492166.
- com.android.webview.chromium.R.onResourcesLoaded(packageId);
- org.chromium.android_webview.R.onResourcesLoaded(packageId);
- org.chromium.components.web_contents_delegate_android.R.onResourcesLoaded(packageId);
- org.chromium.content.R.onResourcesLoaded(packageId);
- org.chromium.ui.R.onResourcesLoaded(packageId);
- }
-}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
index 850f9d0..94e67dd 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
@@ -206,7 +206,8 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
} else {
Log.w(TAG, msg);
TextView warningLabel = new TextView(mContext);
- warningLabel.setText(mContext.getString(R.string.private_browsing_warning));
+ warningLabel.setText(mContext.getString(
+ org.chromium.android_webview.R.string.private_browsing_warning));
mWebView.addView(warningLabel);
}
}
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
index 18a0596..289fde8 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
@@ -1160,7 +1160,8 @@ public class WebViewContentsClientAdapter extends AwContentsClient {
// The ic_play_circle_outline_black_48dp icon is transparent so we need to draw it
// on a gray background.
Bitmap poster = BitmapFactory.decodeResource(
- mContext.getResources(), R.drawable.ic_play_circle_outline_black_48dp);
+ mContext.getResources(),
+ org.chromium.android_webview.R.drawable.ic_play_circle_outline_black_48dp);
result = Bitmap.createBitmap(
poster.getWidth(), poster.getHeight(), poster.getConfig());
result.eraseColor(Color.GRAY);
diff --git a/build/android/gyp/generate_resource_rewriter.py b/build/android/gyp/generate_resource_rewriter.py
index 43ff883..2c892b6 100755
--- a/build/android/gyp/generate_resource_rewriter.py
+++ b/build/android/gyp/generate_resource_rewriter.py
@@ -3,3 +3,87 @@
# Copyright (c) 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+
+"""Generate ResourceRewriter.java which overwrites the given package's
+ resource id.
+"""
+
+import argparse
+import os
+import sys
+
+from util import build_utils
+
+# Import jinja2 from third_party/jinja2
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),
+ '..',
+ '..',
+ '..',
+ 'third_party')))
+import jinja2
+
+RESOURCE_REWRITER="""/* AUTO-GENERATED FILE. DO NOT MODIFY. */
+
+package {{ package }};
+/**
+ * Helper class used to fix up resource ids.
+ */
+class ResourceRewriter {
+ /**
+ * Rewrite the R 'constants' for the WebView.
+ */
+ public static void rewriteRValues(final int packageId) {
+ {% for res_package in res_packages %}
+ {{ res_package }}.R.onResourcesLoaded(packageId);
+ {% endfor %}
+ }
+}
+"""
+
+def ParseArgs(args):
+ """Parses command line options.
+
+ Returns:
+ An Namespace from argparse.parse_args()
+ """
+ parser = argparse.ArgumentParser(prog='generate_resource_rewriter')
+
+ parser.add_argument('--package-name',
+ required=True,
+ help='The package name of ResourceRewriter.')
+ parser.add_argument('--dep-packages',
+ required=True,
+ help='A list of packages whose resource id will be'
+ 'overwritten in ResourceRewriter.')
+ parser.add_argument('--output-dir',
+ required=True,
+ help='A output directory of generated'
+ ' ResourceRewriter.java')
+
+ return parser.parse_args(args)
+
+
+def CreateResourceRewriter(package, res_packages, output_dir):
+ output_dir = os.path.join(output_dir, *package.split('.'))
+ build_utils.MakeDirectory(output_dir)
+ java_path = os.path.join(output_dir, 'ResourceRewriter.java')
+ template = jinja2.Template(RESOURCE_REWRITER,
+ trim_blocks=True,
+ lstrip_blocks=True)
+ output = template.render(package=package, res_packages=res_packages)
+ with open(java_path, 'w') as f:
+ f.write(output)
+
+
+def main():
+ options = ParseArgs(sys.argv[1:])
+
+ CreateResourceRewriter(
+ options.package_name,
+ build_utils.ParseGypList(options.dep_packages),
+ options.output_dir)
+ return 0
+
+if __name__ == '__main__':
+ sys.exit(main())
+
diff --git a/build/java.gypi b/build/java.gypi
index 885a1fa..c97b07e 100644
--- a/build/java.gypi
+++ b/build/java.gypi
@@ -187,7 +187,8 @@
'python', '<(DEPTH)/build/android/gyp/process_resources.py',
'--android-sdk', '<(android_sdk)',
'--aapt-path', '<(android_aapt_path)',
- '--non-constant-id',
+ # Need to generate onResourcesLoaded() in R.java, so could be used in java lib.
+ '--shared-resources',
'--android-manifest', '<(android_manifest)',
'--custom-package', '<(R_package)',