Esempio n. 1
0
  def testInnerClassNativesBothInnerAndOuter(self):
    test_data = """
    class MyOuterClass {
      private native int nativeInit();
      class MyOtherInnerClass {
        @NativeCall("MyOtherInnerClass")
        private native int nativeInit();
      }
    }
    """
    natives = jni_generator.ExtractNatives(test_data, 'int')
    golden_natives = [
        NativeMethod(return_type='int', static=False,
                     name='Init', params=[],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='int', static=False,
                     name='Init', params=[],
                     java_class_name='MyOtherInnerClass',
                     type='function')
    ]
    self.assertListEquals(golden_natives, natives)
    jni_params = jni_generator.JniParams('')
    h = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni',
                                             natives, [], [], jni_params,
                                             TestOptions())
    self.assertGoldenTextEquals(h.GetContent())

    content = {}
    h2 = jni_registration_generator.HeaderGenerator(
        '', 'org/chromium/TestJni', natives, jni_params, content, True)
    h2.AddContent()
    self.assertGoldenTextEquals(
        jni_registration_generator.CreateFromDict(content),
        suffix='Registrations')
Esempio n. 2
0
 def testInnerClassNativesMultiple(self):
   test_data = """
   class MyInnerClass {
     @NativeCall("MyInnerClass")
     private native int nativeInit();
   }
   class MyOtherInnerClass {
     @NativeCall("MyOtherInnerClass")
     private native int nativeInit();
   }
   """
   natives = jni_generator.ExtractNatives(test_data, 'int')
   golden_natives = [
       NativeMethod(return_type='int', static=False,
                    name='Init', params=[],
                    java_class_name='MyInnerClass',
                    type='function'),
       NativeMethod(return_type='int', static=False,
                    name='Init', params=[],
                    java_class_name='MyOtherInnerClass',
                    type='function')
   ]
   self.assertListEquals(golden_natives, natives)
   jni_params = jni_generator.JniParams('')
   h = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni',
                                            natives, [], [], jni_params,
                                            TestOptions())
   self.assertGoldenTextEquals(h.GetContent())
Esempio n. 3
0
 def testNativesLong(self):
     test_options = TestOptions()
     test_options.ptr_type = 'long'
     test_data = """"
 private native void nativeDestroy(long nativeChromeBrowserProvider);
 """
     jni_generator.JniParams.ExtractImportsAndInnerClasses(test_data)
     natives = jni_generator.ExtractNatives(test_data,
                                            test_options.ptr_type)
     golden_natives = [
         NativeMethod(return_type='void',
                      static=False,
                      name='Destroy',
                      params=[
                          Param(datatype='long',
                                name='nativeChromeBrowserProvider')
                      ],
                      java_class_name=None,
                      type='method',
                      p0_type='ChromeBrowserProvider',
                      ptr_type=test_options.ptr_type),
     ]
     self.assertListEquals(golden_natives, natives)
     h = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni',
                                              natives, [], [], test_options)
     self.assertGoldenTextEquals(h.GetContent())
Esempio n. 4
0
  def testNatives(self):
    test_data = """"
    import android.graphics.Bitmap;
    import android.view.View;

    interface OnFrameAvailableListener {}
    private native int nativeInit();
    private native void nativeDestroy(int nativeChromeBrowserProvider);
    private native long nativeAddBookmark(
            int nativeChromeBrowserProvider,
            String url, String title, boolean isFolder, long parentId);
    private static native String nativeGetDomainAndRegistry(String url);
    private static native void nativeCreateHistoricalTabFromState(
            byte[] state, int tab_index);
    private native byte[] nativeGetStateAsByteArray(View view);
    private static native String[] nativeGetAutofillProfileGUIDs();
    private native void nativeSetRecognitionResults(
            int sessionId, String[] results);
    private native long nativeAddBookmarkFromAPI(
            int nativeChromeBrowserProvider,
            String url, Long created, Boolean isBookmark,
            Long date, byte[] favicon, String title, Integer visits);
    native int nativeFindAll(String find);
    private static native OnFrameAvailableListener nativeGetInnerClass();
    private native Bitmap nativeQueryBitmap(
            int nativeChromeBrowserProvider,
            String[] projection, String selection,
            String[] selectionArgs, String sortOrder);
    private native void nativeGotOrientation(
            int nativeDataFetcherImplAndroid,
            double alpha, double beta, double gamma);
    private static native Throwable nativeMessWithJavaException(Throwable e);
    """
    jni_params = jni_generator.JniParams(
        'org/chromium/example/jni_generator/SampleForTests')
    jni_params.ExtractImportsAndInnerClasses(test_data)
    natives = jni_generator.ExtractNatives(test_data, 'int')
    golden_natives = [
        NativeMethod(return_type='int', static=False,
                     name='Init',
                     params=[],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='void', static=False, name='Destroy',
                     params=[Param(datatype='int',
                                   name='nativeChromeBrowserProvider')],
                     java_class_name=None,
                     type='method',
                     p0_type='ChromeBrowserProvider'),
        NativeMethod(return_type='long', static=False, name='AddBookmark',
                     params=[Param(datatype='int',
                                   name='nativeChromeBrowserProvider'),
                             Param(datatype='String',
                                   name='url'),
                             Param(datatype='String',
                                   name='title'),
                             Param(datatype='boolean',
                                   name='isFolder'),
                             Param(datatype='long',
                                   name='parentId')],
                     java_class_name=None,
                     type='method',
                     p0_type='ChromeBrowserProvider'),
        NativeMethod(return_type='String', static=True,
                     name='GetDomainAndRegistry',
                     params=[Param(datatype='String',
                                   name='url')],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='void', static=True,
                     name='CreateHistoricalTabFromState',
                     params=[Param(datatype='byte[]',
                                   name='state'),
                             Param(datatype='int',
                                   name='tab_index')],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='byte[]', static=False,
                     name='GetStateAsByteArray',
                     params=[Param(datatype='View', name='view')],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='String[]', static=True,
                     name='GetAutofillProfileGUIDs', params=[],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='void', static=False,
                     name='SetRecognitionResults',
                     params=[Param(datatype='int', name='sessionId'),
                             Param(datatype='String[]', name='results')],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='long', static=False,
                     name='AddBookmarkFromAPI',
                     params=[Param(datatype='int',
                                   name='nativeChromeBrowserProvider'),
                             Param(datatype='String',
                                   name='url'),
                             Param(datatype='Long',
                                   name='created'),
                             Param(datatype='Boolean',
                                   name='isBookmark'),
                             Param(datatype='Long',
                                   name='date'),
                             Param(datatype='byte[]',
                                   name='favicon'),
                             Param(datatype='String',
                                   name='title'),
                             Param(datatype='Integer',
                                   name='visits')],
                     java_class_name=None,
                     type='method',
                     p0_type='ChromeBrowserProvider'),
        NativeMethod(return_type='int', static=False,
                     name='FindAll',
                     params=[Param(datatype='String',
                                   name='find')],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='OnFrameAvailableListener', static=True,
                     name='GetInnerClass',
                     params=[],
                     java_class_name=None,
                     type='function'),
        NativeMethod(return_type='Bitmap',
                     static=False,
                     name='QueryBitmap',
                     params=[Param(datatype='int',
                                   name='nativeChromeBrowserProvider'),
                             Param(datatype='String[]',
                                   name='projection'),
                             Param(datatype='String',
                                   name='selection'),
                             Param(datatype='String[]',
                                   name='selectionArgs'),
                             Param(datatype='String',
                                   name='sortOrder'),
                            ],
                     java_class_name=None,
                     type='method',
                     p0_type='ChromeBrowserProvider'),
        NativeMethod(return_type='void', static=False,
                     name='GotOrientation',
                     params=[Param(datatype='int',
                                   name='nativeDataFetcherImplAndroid'),
                             Param(datatype='double',
                                   name='alpha'),
                             Param(datatype='double',
                                   name='beta'),
                             Param(datatype='double',
                                   name='gamma'),
                            ],
                     java_class_name=None,
                     type='method',
                     p0_type='content::DataFetcherImplAndroid'),
        NativeMethod(return_type='Throwable', static=True,
                     name='MessWithJavaException',
                     params=[Param(datatype='Throwable', name='e')],
                     java_class_name=None,
                     type='function')
    ]
    self.assertListEquals(golden_natives, natives)
    h1 = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni',
                                              natives, [], [], jni_params,
                                              TestOptions())
    self.assertGoldenTextEquals(h1.GetContent())
    content = {}
    h2 = jni_registration_generator.HeaderGenerator(
        '', 'org/chromium/TestJni', natives, jni_params, content, True)
    h2.AddContent()
    self.assertGoldenTextEquals(
        jni_registration_generator.CreateFromDict(content),
        suffix='Registrations')
Esempio n. 5
0
    def testInnerClassNativesBothInnerAndOuter(self):
        test_data = """
    class MyOuterClass {
      private native int nativeInit();
      class MyOtherInnerClass {
        @NativeCall("MyOtherInnerClass")
        private native int nativeInit();
      }
    }
    """
        natives = jni_generator.ExtractNatives(test_data)
        golden_natives = [
            NativeMethod(return_type='int',
                         static=False,
                         name='Init',
                         params=[],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='int',
                         static=False,
                         name='Init',
                         params=[],
                         java_class_name='MyOtherInnerClass',
                         type='function')
        ]
        self.assertListEquals(golden_natives, natives)
        h = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni',
                                                 natives, [])
        golden_content = """\
// Copyright (c) 2012 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 file is autogenerated by
//     base/android/jni_generator/jni_generator_tests.py
// For
//     org/chromium/TestJni

#ifndef org_chromium_TestJni_JNI
#define org_chromium_TestJni_JNI

#include <jni.h>

#include "base/android/jni_android.h"
#include "base/android/scoped_java_ref.h"
#include "base/basictypes.h"
#include "base/logging.h"

using base::android::ScopedJavaLocalRef;

// Step 1: forward declarations.
namespace {
const char kMyOtherInnerClassClassPath[] =
    "org/chromium/TestJni$MyOtherInnerClass";
const char kTestJniClassPath[] = "org/chromium/TestJni";
// Leaking this jclass as we cannot use LazyInstance from some threads.
jclass g_TestJni_clazz = NULL;
}  // namespace

static jint Init(JNIEnv* env, jobject obj);

static jint Init(JNIEnv* env, jobject obj);

// Step 2: method stubs.

// Step 3: GetMethodIDs and RegisterNatives.
static void GetMethodIDsImpl(JNIEnv* env) {
  g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
      base::android::GetUnscopedClass(env, kTestJniClassPath)));
}

static bool RegisterNativesImpl(JNIEnv* env) {
  GetMethodIDsImpl(env);

  static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
    { "nativeInit",
"("
")"
"I", reinterpret_cast<void*>(Init) },
  };
  const int kMethodsMyOtherInnerClassSize =
      arraysize(kMethodsMyOtherInnerClass);

  if (env->RegisterNatives(g_MyOtherInnerClass_clazz,
                           kMethodsMyOtherInnerClass,
                           kMethodsMyOtherInnerClassSize) < 0) {
    LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
    return false;
  }

  static const JNINativeMethod kMethodsTestJni[] = {
    { "nativeInit",
"("
")"
"I", reinterpret_cast<void*>(Init) },
  };
  const int kMethodsTestJniSize = arraysize(kMethodsTestJni);

  if (env->RegisterNatives(g_TestJni_clazz,
                           kMethodsTestJni,
                           kMethodsTestJniSize) < 0) {
    LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
    return false;
  }

  return true;
}

#endif  // org_chromium_TestJni_JNI
"""
        self.assertTextEquals(golden_content, h.GetContent())
Esempio n. 6
0
    def testNatives(self):
        test_data = """"
    private native int nativeInit();
    private native void nativeDestroy(int nativeChromeBrowserProvider);
    private native long nativeAddBookmark(
            int nativeChromeBrowserProvider,
            String url, String title, boolean isFolder, long parentId);
    private static native String nativeGetDomainAndRegistry(String url);
    private static native void nativeCreateHistoricalTabFromState(
            byte[] state, int tab_index);
    private native byte[] nativeGetStateAsByteArray(ContentView view);
    private static native String[] nativeGetAutofillProfileGUIDs();
    private native void nativeSetRecognitionResults(
            int sessionId, String[] results);
    private native long nativeAddBookmarkFromAPI(
            int nativeChromeBrowserProvider,
            String url, Long created, Boolean isBookmark,
            Long date, byte[] favicon, String title, Integer visits);
    native int nativeFindAll(String find);
    private static native BookmarkNode nativeGetDefaultBookmarkFolder();
    private native SQLiteCursor nativeQueryBookmarkFromAPI(
            int nativeChromeBrowserProvider,
            String[] projection, String selection,
            String[] selectionArgs, String sortOrder);
    private native void nativeGotOrientation(
            int nativeDataFetcherImplAndroid,
            double alpha, double beta, double gamma);
    """
        natives = jni_generator.ExtractNatives(test_data)
        golden_natives = [
            NativeMethod(return_type='int',
                         static=False,
                         name='Init',
                         params=[],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='void',
                         static=False,
                         name='Destroy',
                         params=[
                             Param(datatype='int',
                                   name='nativeChromeBrowserProvider')
                         ],
                         java_class_name=None,
                         type='method',
                         p0_type='ChromeBrowserProvider'),
            NativeMethod(return_type='long',
                         static=False,
                         name='AddBookmark',
                         params=[
                             Param(datatype='int',
                                   name='nativeChromeBrowserProvider'),
                             Param(datatype='String', name='url'),
                             Param(datatype='String', name='title'),
                             Param(datatype='boolean', name='isFolder'),
                             Param(datatype='long', name='parentId')
                         ],
                         java_class_name=None,
                         type='method',
                         p0_type='ChromeBrowserProvider'),
            NativeMethod(return_type='String',
                         static=True,
                         name='GetDomainAndRegistry',
                         params=[Param(datatype='String', name='url')],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='void',
                         static=True,
                         name='CreateHistoricalTabFromState',
                         params=[
                             Param(datatype='byte[]', name='state'),
                             Param(datatype='int', name='tab_index')
                         ],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='byte[]',
                         static=False,
                         name='GetStateAsByteArray',
                         params=[Param(datatype='ContentView', name='view')],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='String[]',
                         static=True,
                         name='GetAutofillProfileGUIDs',
                         params=[],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='void',
                         static=False,
                         name='SetRecognitionResults',
                         params=[
                             Param(datatype='int', name='sessionId'),
                             Param(datatype='String[]', name='results')
                         ],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='long',
                         static=False,
                         name='AddBookmarkFromAPI',
                         params=[
                             Param(datatype='int',
                                   name='nativeChromeBrowserProvider'),
                             Param(datatype='String', name='url'),
                             Param(datatype='Long', name='created'),
                             Param(datatype='Boolean', name='isBookmark'),
                             Param(datatype='Long', name='date'),
                             Param(datatype='byte[]', name='favicon'),
                             Param(datatype='String', name='title'),
                             Param(datatype='Integer', name='visits')
                         ],
                         java_class_name=None,
                         type='method',
                         p0_type='ChromeBrowserProvider'),
            NativeMethod(return_type='int',
                         static=False,
                         name='FindAll',
                         params=[Param(datatype='String', name='find')],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='BookmarkNode',
                         static=True,
                         name='GetDefaultBookmarkFolder',
                         params=[],
                         java_class_name=None,
                         type='function'),
            NativeMethod(return_type='SQLiteCursor',
                         static=False,
                         name='QueryBookmarkFromAPI',
                         params=[
                             Param(datatype='int',
                                   name='nativeChromeBrowserProvider'),
                             Param(datatype='String[]', name='projection'),
                             Param(datatype='String', name='selection'),
                             Param(datatype='String[]', name='selectionArgs'),
                             Param(datatype='String', name='sortOrder'),
                         ],
                         java_class_name=None,
                         type='method',
                         p0_type='ChromeBrowserProvider'),
            NativeMethod(return_type='void',
                         static=False,
                         name='GotOrientation',
                         params=[
                             Param(datatype='int',
                                   name='nativeDataFetcherImplAndroid'),
                             Param(datatype='double', name='alpha'),
                             Param(datatype='double', name='beta'),
                             Param(datatype='double', name='gamma'),
                         ],
                         java_class_name=None,
                         type='method',
                         p0_type='device_orientation::DataFetcherImplAndroid'),
        ]
        self.assertListEquals(golden_natives, natives)
        h = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni',
                                                 natives, [])
        golden_content = """\
// Copyright (c) 2012 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 file is autogenerated by
//     base/android/jni_generator/jni_generator_tests.py
// For
//     org/chromium/TestJni

#ifndef org_chromium_TestJni_JNI
#define org_chromium_TestJni_JNI

#include <jni.h>

#include "base/android/jni_android.h"
#include "base/android/scoped_java_ref.h"
#include "base/basictypes.h"
#include "base/logging.h"

using base::android::ScopedJavaLocalRef;

// Step 1: forward declarations.
namespace {
const char kTestJniClassPath[] = "org/chromium/TestJni";
// Leaking this jclass as we cannot use LazyInstance from some threads.
jclass g_TestJni_clazz = NULL;
}  // namespace

static jint Init(JNIEnv* env, jobject obj);

static jstring GetDomainAndRegistry(JNIEnv* env, jclass clazz,
    jstring url);

static void CreateHistoricalTabFromState(JNIEnv* env, jclass clazz,
    jbyteArray state,
    jint tab_index);

static jbyteArray GetStateAsByteArray(JNIEnv* env, jobject obj,
    jobject view);

static jobjectArray GetAutofillProfileGUIDs(JNIEnv* env, jclass clazz);

static void SetRecognitionResults(JNIEnv* env, jobject obj,
    jint sessionId,
    jobjectArray results);

static jint FindAll(JNIEnv* env, jobject obj,
    jstring find);

static jobject GetDefaultBookmarkFolder(JNIEnv* env, jclass clazz);

// Step 2: method stubs.
static void Destroy(JNIEnv* env, jobject obj,
    jint nativeChromeBrowserProvider) {
  DCHECK(nativeChromeBrowserProvider) << "Destroy";
  ChromeBrowserProvider* native =
      reinterpret_cast<ChromeBrowserProvider*>(nativeChromeBrowserProvider);
  return native->Destroy(env, obj);
}

static jlong AddBookmark(JNIEnv* env, jobject obj,
    jint nativeChromeBrowserProvider,
    jstring url,
    jstring title,
    jboolean isFolder,
    jlong parentId) {
  DCHECK(nativeChromeBrowserProvider) << "AddBookmark";
  ChromeBrowserProvider* native =
      reinterpret_cast<ChromeBrowserProvider*>(nativeChromeBrowserProvider);
  return native->AddBookmark(env, obj, url, title, isFolder, parentId);
}

static jlong AddBookmarkFromAPI(JNIEnv* env, jobject obj,
    jint nativeChromeBrowserProvider,
    jstring url,
    jobject created,
    jobject isBookmark,
    jobject date,
    jbyteArray favicon,
    jstring title,
    jobject visits) {
  DCHECK(nativeChromeBrowserProvider) << "AddBookmarkFromAPI";
  ChromeBrowserProvider* native =
      reinterpret_cast<ChromeBrowserProvider*>(nativeChromeBrowserProvider);
  return native->AddBookmarkFromAPI(env, obj, url, created, isBookmark, date,
      favicon, title, visits);
}

static jobject QueryBookmarkFromAPI(JNIEnv* env, jobject obj,
    jint nativeChromeBrowserProvider,
    jobjectArray projection,
    jstring selection,
    jobjectArray selectionArgs,
    jstring sortOrder) {
  DCHECK(nativeChromeBrowserProvider) << "QueryBookmarkFromAPI";
  ChromeBrowserProvider* native =
      reinterpret_cast<ChromeBrowserProvider*>(nativeChromeBrowserProvider);
  return native->QueryBookmarkFromAPI(env, obj, projection, selection,
      selectionArgs, sortOrder).Release();
}

static void GotOrientation(JNIEnv* env, jobject obj,
    jint nativeDataFetcherImplAndroid,
    jdouble alpha,
    jdouble beta,
    jdouble gamma) {
  DCHECK(nativeDataFetcherImplAndroid) << "GotOrientation";
  DataFetcherImplAndroid* native =
    reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid);
  return native->GotOrientation(env, obj, alpha, beta, gamma);
}

// Step 3: GetMethodIDs and RegisterNatives.
static void GetMethodIDsImpl(JNIEnv* env) {
  g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
      base::android::GetUnscopedClass(env, kTestJniClassPath)));
}

static bool RegisterNativesImpl(JNIEnv* env) {
  GetMethodIDsImpl(env);

  static const JNINativeMethod kMethodsTestJni[] = {
    { "nativeInit",
"("
")"
"I", reinterpret_cast<void*>(Init) },
    { "nativeDestroy",
"("
"I"
")"
"V", reinterpret_cast<void*>(Destroy) },
    { "nativeAddBookmark",
"("
"I"
"Ljava/lang/String;"
"Ljava/lang/String;"
"Z"
"J"
")"
"J", reinterpret_cast<void*>(AddBookmark) },
    { "nativeGetDomainAndRegistry",
"("
"Ljava/lang/String;"
")"
"Ljava/lang/String;", reinterpret_cast<void*>(GetDomainAndRegistry) },
    { "nativeCreateHistoricalTabFromState",
"("
"[B"
"I"
")"
"V", reinterpret_cast<void*>(CreateHistoricalTabFromState) },
    { "nativeGetStateAsByteArray",
"("
"Lorg/chromium/content/browser/ContentView;"
")"
"[B", reinterpret_cast<void*>(GetStateAsByteArray) },
    { "nativeGetAutofillProfileGUIDs",
"("
")"
"[Ljava/lang/String;", reinterpret_cast<void*>(GetAutofillProfileGUIDs) },
    { "nativeSetRecognitionResults",
"("
"I"
"[Ljava/lang/String;"
")"
"V", reinterpret_cast<void*>(SetRecognitionResults) },
    { "nativeAddBookmarkFromAPI",
"("
"I"
"Ljava/lang/String;"
"Ljava/lang/Long;"
"Ljava/lang/Boolean;"
"Ljava/lang/Long;"
"[B"
"Ljava/lang/String;"
"Ljava/lang/Integer;"
")"
"J", reinterpret_cast<void*>(AddBookmarkFromAPI) },
    { "nativeFindAll",
"("
"Ljava/lang/String;"
")"
"I", reinterpret_cast<void*>(FindAll) },
    { "nativeGetDefaultBookmarkFolder",
"("
")"
"Lcom/google/android/apps/chrome/ChromeBrowserProvider$BookmarkNode;",
    reinterpret_cast<void*>(GetDefaultBookmarkFolder) },
    { "nativeQueryBookmarkFromAPI",
"("
"I"
"[Ljava/lang/String;"
"Ljava/lang/String;"
"[Ljava/lang/String;"
"Ljava/lang/String;"
")"
"Lcom/google/android/apps/chrome/database/SQLiteCursor;",
    reinterpret_cast<void*>(QueryBookmarkFromAPI) },
    { "nativeGotOrientation",
"("
"I"
"D"
"D"
"D"
")"
"V", reinterpret_cast<void*>(GotOrientation) },
  };
  const int kMethodsTestJniSize = arraysize(kMethodsTestJni);

  if (env->RegisterNatives(g_TestJni_clazz,
                           kMethodsTestJni,
                           kMethodsTestJniSize) < 0) {
    LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
    return false;
  }

  return true;
}

#endif  // org_chromium_TestJni_JNI
"""
        self.assertTextEquals(golden_content, h.GetContent())