summaryrefslogtreecommitdiffstats
path: root/base/android
diff options
context:
space:
mode:
authoryfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-23 17:53:53 +0000
committeryfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-23 17:53:53 +0000
commitefd3b9e8d4b409c7dd7537e36b016e586dbcbac6 (patch)
treec872b316e86f64b3bc8dadca563d0adfdd320053 /base/android
parent3ae1f4ccb245deb6458acccb1ad7ad8a18f26ece (diff)
downloadchromium_src-efd3b9e8d4b409c7dd7537e36b016e586dbcbac6.zip
chromium_src-efd3b9e8d4b409c7dd7537e36b016e586dbcbac6.tar.gz
chromium_src-efd3b9e8d4b409c7dd7537e36b016e586dbcbac6.tar.bz2
Update jni_generator with latest from downstream.
Adds the option to specify a jar file and specific classes from which to extract JNI headers. Review URL: https://chromiumcodereview.appspot.com/10414057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138519 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/android')
-rw-r--r--base/android/jni_generator/SampleForTests.java2
-rwxr-xr-xbase/android/jni_generator/jni_generator.py95
-rwxr-xr-xbase/android/jni_generator/jni_generator_tests.py36
3 files changed, 88 insertions, 45 deletions
diff --git a/base/android/jni_generator/SampleForTests.java b/base/android/jni_generator/SampleForTests.java
index a081921..6a15666 100644
--- a/base/android/jni_generator/SampleForTests.java
+++ b/base/android/jni_generator/SampleForTests.java
@@ -74,7 +74,7 @@ class SampleForTests {
void methodThatThrowsException() throws Exception {}
//------------------------------------------------------------------------------------------------
- // Java fields which are accessed from C++ code must be annotated with @AccessedByNative to
+ // Java fields which are accessed from C++ code only must be annotated with @AccessedByNative to
// prevent them being eliminated when unreferenced code is stripped.
@AccessedByNative
private int javaField;
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
index 17b6aea..54a4510 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -19,7 +19,7 @@ from string import Template
import subprocess
import sys
import textwrap
-
+import zipfile
UNKNOWN_JAVA_TYPE_PREFIX = 'UNKNOWN_JAVA_TYPE: '
@@ -150,36 +150,43 @@ def JavaParamToJni(param):
]
app_param_list = [
'Landroid/graphics/SurfaceTexture',
- 'Lcom/android/chrome/ChromeBrowserProvider$BookmarkNode',
- 'Lcom/android/chrome/JSModalDialog',
- 'Lcom/android/chrome/OmniboxSuggestion',
- 'Lcom/android/chrome/PageInfoViewer',
- 'Lcom/android/chrome/Tab',
- 'Lcom/android/chrome/database/SQLiteCursor',
- 'Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar',
- ('Lcom/android/chrome/preferences/ChromeNativePreferences$'
+ 'Lcom/google/android/apps/chrome/AutofillData',
+ 'Lcom/google/android/apps/chrome/ChromeBrowserProvider$BookmarkNode',
+ 'Lcom/google/android/apps/chrome/ChromeHttpAuthHandler',
+ 'Lcom/google/android/apps/chrome/ChromeContextMenuInfo',
+ 'Lcom/google/android/apps/chrome/OmniboxSuggestion',
+ 'Lcom/google/android/apps/chrome/PageInfoViewer',
+ 'Lcom/google/android/apps/chrome/Tab',
+ 'Lcom/google/android/apps/chrome/database/SQLiteCursor',
+ 'Lcom/google/android/apps/chrome/infobar/InfoBarContainer',
+ 'Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar',
+ ('Lcom/google/android/apps/chrome/preferences/ChromeNativePreferences$'
'PasswordListObserver'),
'Lorg/chromium/base/SystemMessageHandler',
- 'Lorg/chromium/chromeview/AutofillData',
- 'Lorg/chromium/chromeview/ChromeHttpAuthHandler',
- 'Lorg/chromium/chromeview/ChromeVideoView',
- 'Lorg/chromium/chromeview/ChromeView',
- 'Lorg/chromium/chromeview/ChromeView$ChromeViewContextMenuInfo',
- ('Lorg/chromium/chromeview/ChromeView$'
+ 'Lorg/chromium/chrome/browser/JSModalDialog',
+ 'Lorg/chromium/chrome/browser/SelectFileDialog',
+ 'Lorg/chromium/content/browser/ChromeVideoView',
+ 'Lorg/chromium/content/browser/ContentView',
+ ('Lorg/chromium/content/browser/ContentView$'
'FindResultReceivedListener$FindNotificationDetails'),
- 'Lorg/chromium/chromeview/ChromeViewClient',
- 'Lorg/chromium/chromeview/DeviceInfo',
- 'Lorg/chromium/chromeview/DeviceOrientation',
- 'Lorg/chromium/chromeview/JavaInputStream',
- 'Lorg/chromium/chromeview/LocationProvider',
- 'Lorg/chromium/chromeview/SandboxedProcessArgs',
- 'Lorg/chromium/chromeview/SandboxedProcessConnection',
- 'Lorg/chromium/chromeview/SandboxedProcessService',
- 'Lorg/chromium/chromeview/SelectFileDialog',
- 'Lorg/chromium/chromeview/SurfaceTextureListener',
- 'Lorg/chromium/chromeview/TouchPoint',
+ 'Lorg/chromium/content/browser/ChromeViewClient',
+ 'Lorg/chromium/content/browser/ContentHttpAuthHandler',
+ 'Lorg/chromium/content/browser/DeviceInfo',
+ 'Lorg/chromium/content/browser/DeviceOrientation',
+ 'Lorg/chromium/content/browser/FileChooserParams',
+ 'Lorg/chromium/content/browser/InterceptedRequestData',
+ 'Lorg/chromium/content/browser/JavaInputStream',
+ 'Lorg/chromium/content/browser/LocationProvider',
+ 'Lorg/chromium/content/browser/SandboxedProcessArgs',
+ 'Lorg/chromium/content/browser/SandboxedProcessConnection',
+ 'Lorg/chromium/content/browser/SandboxedProcessService',
+ 'Lorg/chromium/content/browser/SurfaceTextureListener',
+ 'Lorg/chromium/content/browser/TouchPoint',
+ 'Lorg/chromium/content/browser/WaitableNativeEvent',
'Lorg/chromium/media/MediaPlayerListener',
'Lorg/chromium/net/NetworkChangeNotifier',
+ 'Lorg/chromium/net/ProxyChangeListener',
+ 'Lorg/chromium/net/NetworkChangeNotifier',
]
if param == 'byte[][]':
return '[[B'
@@ -870,6 +877,35 @@ def WrapOutput(output):
return '\n'.join(ret)
+def ExtractInputFiles(jar_file, input_files, out_dirs):
+ """Extracts input files from jar and returns them as list of filenames.
+
+ The input files are extracted to the same directory that the generated jni
+ headers will be placed in. This is passed as an argument to script.
+
+ Args:
+ jar_file: the jar file containing the input files to extract
+ input_files: the list of files to extract from the jar file
+ out_dirs: the name of the directories to extract to
+
+ Returns:
+ a list of file names of extracted input files
+ """
+ jar_file = zipfile.ZipFile(jar_file)
+ extracted_file_names = []
+
+ for (input_file, out_dir) in zip(input_files, out_dirs):
+ out_dir = os.path.join(out_dir, os.path.dirname(input_file))
+ if not os.path.exists(out_dir):
+ os.makedirs(out_dir)
+ extracted_file_name = os.path.join(out_dir, os.path.basename(input_file))
+ with open(extracted_file_name, 'w') as outfile:
+ outfile.write(jar_file.read(input_file))
+ extracted_file_names.append(extracted_file_name)
+
+ return extracted_file_names
+
+
def GenerateJNIHeaders(input_files, output_files, use_javap, namespace):
for i in xrange(len(input_files)):
try:
@@ -928,6 +964,9 @@ See SampleForTests.java for more details.
help='Saves the output to file(s) (the first half of'
' args specify the java input files, the second'
' half specify the header output files.')
+ option_parser.add_option('-j', dest='jar_file',
+ help='Extract the list of input files from'
+ ' a specified jar file.')
option_parser.add_option('-p', dest='javap_class',
action='store_true',
default=False,
@@ -944,6 +983,10 @@ See SampleForTests.java for more details.
output_files = input_files[len(input_files) / 2:]
input_files = input_files[:len(input_files) / 2]
CheckFilenames(input_files, output_files)
+ if options.jar_file:
+ # CheckFileNames guarantees same length for inputs and outputs
+ out_dirs = map(os.path.dirname, output_files)
+ input_files = ExtractInputFiles(options.jar_file, input_files, out_dirs)
GenerateJNIHeaders(input_files, output_files, options.javap_class,
options.namespace)
diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py
index 159c34d..112909f 100755
--- a/base/android/jni_generator/jni_generator_tests.py
+++ b/base/android/jni_generator/jni_generator_tests.py
@@ -62,7 +62,7 @@ class TestGenerator(unittest.TestCase):
private static native String nativeGetDomainAndRegistry(String url);
private static native void nativeCreateHistoricalTabFromState(
byte[] state, int tab_index);
- private native byte[] nativeGetStateAsByteArray(ChromeView view);
+ private native byte[] nativeGetStateAsByteArray(ContentView view);
private static native String[] nativeGetAutofillProfileGUIDs();
private native void nativeSetRecognitionResults(
int sessionId, String[] results);
@@ -123,7 +123,7 @@ class TestGenerator(unittest.TestCase):
type='function'),
NativeMethod(return_type='byte[]', static=False,
name='GetStateAsByteArray',
- params=[Param(datatype='ChromeView', name='view')],
+ params=[Param(datatype='ContentView', name='view')],
java_class_name='',
type='function'),
NativeMethod(return_type='String[]', static=True,
@@ -371,7 +371,7 @@ static bool RegisterNativesImpl(JNIEnv* env) {
"V", reinterpret_cast<void*>(CreateHistoricalTabFromState) },
{ "nativeGetStateAsByteArray",
"("
-"Lorg/chromium/chromeview/ChromeView;"
+"Lorg/chromium/content/browser/ContentView;"
")"
"[B", reinterpret_cast<void*>(GetStateAsByteArray) },
{ "nativeGetAutofillProfileGUIDs",
@@ -404,7 +404,7 @@ static bool RegisterNativesImpl(JNIEnv* env) {
{ "nativeGetDefaultBookmarkFolder",
"("
")"
-"Lcom/android/chrome/ChromeBrowserProvider$BookmarkNode;",
+"Lcom/google/android/apps/chrome/ChromeBrowserProvider$BookmarkNode;",
reinterpret_cast<void*>(GetDefaultBookmarkFolder) },
{ "nativeQueryBookmarkFromAPI",
"("
@@ -414,7 +414,7 @@ static bool RegisterNativesImpl(JNIEnv* env) {
"[Ljava/lang/String;"
"Ljava/lang/String;"
")"
-"Lcom/android/chrome/database/SQLiteCursor;",
+"Lcom/google/android/apps/chrome/database/SQLiteCursor;",
reinterpret_cast<void*>(QueryBookmarkFromAPI) },
{ "nativeGotOrientation",
"("
@@ -783,10 +783,10 @@ static bool RegisterNativesImpl(JNIEnv* env) {
void dismiss();
@SuppressWarnings("unused")
@CalledByNative
- private static boolean shouldShowAutoLogin(ChromeView chromeView,
+ private static boolean shouldShowAutoLogin(ContentView contentView,
String realm, String account, String args) {
AccountManagerContainer accountManagerContainer =
- new AccountManagerContainer((Activity)chromeView.getContext(),
+ new AccountManagerContainer((Activity)contentView.getContext(),
realm, account, args);
String[] logins = accountManagerContainer.getAccountLogins(null);
return logins.length != 0;
@@ -855,7 +855,7 @@ static bool RegisterNativesImpl(JNIEnv* env) {
name='shouldShowAutoLogin',
method_id_var_name='shouldShowAutoLogin',
java_class_name='',
- params=[Param(datatype='ChromeView', name='chromeView'),
+ params=[Param(datatype='ContentView', name='contentView'),
Param(datatype='String', name='realm'),
Param(datatype='String', name='account'),
Param(datatype='String', name='args')],
@@ -988,7 +988,7 @@ static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) {
static jmethodID g_TestJni_shouldShowAutoLogin = 0;
static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject
- chromeView,
+ contentView,
jstring realm,
jstring account,
jstring args) {
@@ -997,7 +997,7 @@ static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject
DCHECK(g_TestJni_shouldShowAutoLogin);
jboolean ret =
env->CallStaticBooleanMethod(g_TestJni_clazz,
- g_TestJni_shouldShowAutoLogin, chromeView, realm, account, args);
+ g_TestJni_shouldShowAutoLogin, contentView, realm, account, args);
base::android::CheckException(env);
return ret;
}
@@ -1065,7 +1065,7 @@ static void GetMethodIDsImpl(JNIEnv* env) {
"Ljava/lang/String;"
"Landroid/graphics/Bitmap;"
")"
-"Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar;");
+"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;");
g_TestJni_showAutoLoginInfoBar =
base::android::GetMethodID(
@@ -1078,7 +1078,7 @@ static void GetMethodIDsImpl(JNIEnv* env) {
"Ljava/lang/String;"
"Ljava/lang/String;"
")"
-"Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar;");
+"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;");
g_InfoBar_dismiss =
base::android::GetMethodID(
@@ -1095,7 +1095,7 @@ static void GetMethodIDsImpl(JNIEnv* env) {
"shouldShowAutoLogin",
"("
-"Lorg/chromium/chromeview/ChromeView;"
+"Lorg/chromium/content/browser/ContentView;"
"Ljava/lang/String;"
"Ljava/lang/String;"
"Ljava/lang/String;"
@@ -1167,14 +1167,14 @@ scooby doo
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-package org.chromium.chromeview;
+package org.chromium.content.browser;
-import org.chromium.chromeview.legacy.DownloadListener;
+import org.chromium.base.BuildInfo;
"""
- self.assertEquals('org/chromium/chromeview/Foo',
+ self.assertEquals('org/chromium/content/browser/Foo',
jni_generator.ExtractFullyQualifiedJavaClassName(
- 'org/chromium/chromeview/Foo.java', contents))
- self.assertEquals('org/chromium/chromeview/Foo',
+ 'org/chromium/content/browser/Foo.java', contents))
+ self.assertEquals('org/chromium/content/browser/Foo',
jni_generator.ExtractFullyQualifiedJavaClassName(
'frameworks/Foo.java', contents))
self.assertRaises(SyntaxError,