Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8951)

Unified Diff: base/android/jni_generator/jni_generator.py

Issue 11339013: Android: passes a list of qualified JNI parameters as a param to the generator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/android/jni_generator/jni_generator.py
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
index 85d8ce8077e2404148b8e1aa9579346f5fd42df6..56aa6a518cb732c55f0a62e15e6c0da29824dbe0 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -22,7 +22,7 @@ import textwrap
import zipfile
UNKNOWN_JAVA_TYPE_PREFIX = 'UNKNOWN_JAVA_TYPE: '
-
+APP_PARAM_LIST = []
Yaron 2012/10/29 17:49:18 Nit: don't shorten. Call it APPLICATION_PARAM_LIST
bulach 2012/10/29 18:57:06 Done.
class ParseError(Exception):
"""Exception thrown when we can't parse the input file."""
@@ -140,6 +140,7 @@ def JavaParamToJni(param):
'Landroid/graphics/RectF',
'Landroid/graphics/Matrix',
'Landroid/graphics/Point',
+ 'Landroid/graphics/SurfaceTexture',
'Landroid/graphics/SurfaceTexture$OnFrameAvailableListener',
'Landroid/media/MediaPlayer',
'Landroid/os/Message',
@@ -151,65 +152,6 @@ def JavaParamToJni(param):
'Ljava/nio/ByteBuffer',
'Ljava/util/Vector',
]
- app_param_list = [
- 'Landroid/graphics/SurfaceTexture',
- 'Lcom/google/android/apps/chrome/ChromeContextMenuInfo',
- 'Lcom/google/android/apps/chrome/ChromeWindow',
- 'Lcom/google/android/apps/chrome/GoogleLocationSettingsHelperImpl',
- 'Lcom/google/android/apps/chrome/OmniboxSuggestion',
- 'Lcom/google/android/apps/chrome/PageInfoViewer',
- 'Lcom/google/android/apps/chrome/Tab',
- 'Lcom/google/android/apps/chrome/infobar/AutoLogin',
- '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/android_webview/AwContents',
- 'Lorg/chromium/android_webview/AwContentsClient',
- 'Lorg/chromium/android_webview/AwHttpAuthHandler',
- 'Lorg/chromium/android_webview/AwContentsIoThreadClient',
- 'Lorg/chromium/android_webview/AwWebContentsDelegate',
- 'Lorg/chromium/android_webview/InterceptedRequestData',
- 'Lorg/chromium/android_webview/JsPromptResultReceiver',
- 'Lorg/chromium/android_webview/JsResultHandler',
- 'Lorg/chromium/android_webview/JsResultReceiver',
- 'Lorg/chromium/base/SystemMessageHandler',
- 'Lorg/chromium/chrome/browser/autofill/AutofillExternalDelegate',
- 'Lorg/chromium/chrome/browser/autofill/AutofillSuggestion',
- 'Lorg/chromium/chrome/browser/ChromeBrowserProvider$BookmarkNode',
- 'Lorg/chromium/chrome/browser/ChromeHttpAuthHandler',
- 'Lorg/chromium/chrome/browser/ChromeWebContentsDelegateAndroid',
- 'Lorg/chromium/chrome/browser/FindMatchRectsDetails',
- 'Lorg/chromium/chrome/browser/FindNotificationDetails',
- 'Lorg/chromium/chrome/browser/GoogleLocationSettingsHelper',
- 'Lorg/chromium/chrome/browser/GoogleLocationSettingsHelperStub',
- 'Lorg/chromium/chrome/browser/JavascriptAppModalDialog',
- 'Lorg/chromium/chrome/browser/ProcessUtils',
- ('Lorg/chromium/chrome/browser/component/navigation_interception/'
- 'InterceptNavigationDelegate'),
- ('Lorg/chromium/chrome/browser/component/web_contents_delegate_android/'
- 'WebContentsDelegateAndroid'),
- 'Lorg/chromium/chrome/browser/database/SQLiteCursor',
- 'Lorg/chromium/content/app/SandboxedProcessService',
- 'Lorg/chromium/content/browser/ContainerViewDelegate',
- 'Lorg/chromium/content/browser/ContentVideoView',
- 'Lorg/chromium/content/browser/ContentViewCore',
- 'Lorg/chromium/content/browser/DeviceOrientation',
- 'Lorg/chromium/content/browser/JavaInputStream',
- 'Lorg/chromium/content/browser/LocationProvider',
- 'Lorg/chromium/content/browser/SandboxedProcessArgs',
- 'Lorg/chromium/content/browser/SandboxedProcessConnection',
- 'Lorg/chromium/content/browser/TouchPoint',
- 'Lorg/chromium/content/browser/WaitableNativeEvent',
- 'Lorg/chromium/content/browser/WebContentsObserverAndroid',
- 'Lorg/chromium/content/common/DeviceInfo',
- 'Lorg/chromium/content/common/SurfaceTextureListener',
- 'Lorg/chromium/media/MediaPlayerListener',
- 'Lorg/chromium/net/NetworkChangeNotifier',
- 'Lorg/chromium/net/ProxyChangeListener',
- 'Lorg/chromium/ui/gfx/NativeWindow',
- 'Lorg/chromium/ui/SelectFileDialog',
- ]
if param == 'byte[][]':
return '[[B'
prefix = ''
@@ -225,7 +167,7 @@ def JavaParamToJni(param):
if '/' in param:
# Coming from javap, use the fully qualified param directly.
return 'L' + param + ';'
- for qualified_name in object_param_list + app_param_list:
+ for qualified_name in object_param_list + APP_PARAM_LIST:
if (qualified_name.endswith('/' + param) or
qualified_name.endswith('$' + param.replace('.', '$')) or
qualified_name == 'L' + param):
@@ -1011,6 +953,19 @@ def GenerateJNIHeader(input_file, output_file, namespace):
print output
+def ReadExtraAppParamList(extra_app_param_files):
+ if not extra_app_param_files:
+ return
+ for extra_app_param_file in set(extra_app_param_files):
+ with file(extra_app_param_file, 'r') as f:
+ contents = f.read()
+ global APP_PARAM_LIST
+ tmp_globals = {'APP_PARAM_LIST': APP_PARAM_LIST}
+ tmp_locals = {}
+ exec(contents) in tmp_globals, tmp_locals
Yaron 2012/10/29 17:49:18 I'm not really keen on exec'ing external files. Ca
bulach 2012/10/29 18:57:06 sounds reasonable, stripping out comments is not t
+ APP_PARAM_LIST = tmp_locals['APP_PARAM_LIST']
+
+
def main(argv):
usage = """usage: %prog [OPTIONS]
This script will parse the given java source code extracting the native
@@ -1034,7 +989,13 @@ See SampleForTests.java for more details.
option_parser.add_option('--output_dir',
help='The output directory. Must be used with '
'--input')
+ option_parser.add_option('--app_param_list',
+ help='A file name containing a list with extra '
+ 'fully-qualified param names. Can be used multiple '
+ 'times.',
+ action='append')
options, args = option_parser.parse_args(argv)
+ ReadExtraAppParamList(options.app_param_list)
if options.jar_file:
input_file = ExtractJarInputFile(options.jar_file, options.input_file,
options.output_dir)

Powered by Google App Engine
This is Rietveld 408576698