Commit 5c473ec0 authored by Eric Stevenson's avatar Eric Stevenson Committed by Commit Bot

JNI refactor: @NativeMethods conversion (//components).

This CL was generated by
//base/android/jni_generator/jni_refactorer.py.

Bug: 929661
Change-Id: I1e633b64e04b6acfbe63c141ecd287020d43b536
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1814696Reviewed-by: default avatarNico Weber <thakis@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Reviewed-by: default avatarSam Maier <smaier@chromium.org>
Auto-Submit: Eric Stevenson <estevenson@chromium.org>
Commit-Queue: Eric Stevenson <estevenson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#699934}
parent ba19e614
...@@ -14,7 +14,7 @@ import android.os.Bundle; ...@@ -14,7 +14,7 @@ import android.os.Bundle;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import org.chromium.base.FileUtils; import org.chromium.base.FileUtils;
import org.chromium.components.aboutui.CreditUtils; import org.chromium.components.aboutui.CreditUtilsJni;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
...@@ -50,7 +50,7 @@ public class LicenseContentProvider ...@@ -50,7 +50,7 @@ public class LicenseContentProvider
public void writeDataToPipe( public void writeDataToPipe(
ParcelFileDescriptor output, Uri uri, String mimeType, Bundle opts, String filename) { ParcelFileDescriptor output, Uri uri, String mimeType, Bundle opts, String filename) {
if (WebViewApkApplication.initializeNative()) { if (WebViewApkApplication.initializeNative()) {
CreditUtils.nativeWriteCreditsHtml(output.detachFd()); CreditUtilsJni.get().writeCreditsHtml(output.detachFd());
} else { } else {
// Missing native library means we're the webview stub and licenses are stored as an // Missing native library means we're the webview stub and licenses are stored as an
// asset. // asset.
......
...@@ -16,7 +16,7 @@ import android.os.ParcelFileDescriptor; ...@@ -16,7 +16,7 @@ import android.os.ParcelFileDescriptor;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.library_loader.ProcessInitException; import org.chromium.base.library_loader.ProcessInitException;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer; import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.components.aboutui.CreditUtils; import org.chromium.components.aboutui.CreditUtilsJni;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
...@@ -55,7 +55,7 @@ public class LicenseContentProvider ...@@ -55,7 +55,7 @@ public class LicenseContentProvider
} }
} }
}); });
CreditUtils.nativeWriteCreditsHtml(output.detachFd()); CreditUtilsJni.get().writeCreditsHtml(output.detachFd());
} }
@Override @Override
......
...@@ -13,5 +13,7 @@ android_library("aboutui_java") { ...@@ -13,5 +13,7 @@ android_library("aboutui_java") {
java_files = [ "java/src/org/chromium/components/aboutui/CreditUtils.java" ] java_files = [ "java/src/org/chromium/components/aboutui/CreditUtils.java" ]
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
...@@ -5,12 +5,16 @@ ...@@ -5,12 +5,16 @@
package org.chromium.components.aboutui; package org.chromium.components.aboutui;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
/** Credits-related utilities. */ /** Credits-related utilities. */
@JNINamespace("about_ui") @JNINamespace("about_ui")
public class CreditUtils { public class CreditUtils {
private CreditUtils() {} private CreditUtils() {}
/** Writes the chrome://credits HTML to the given descriptor. */ @NativeMethods
public static native void nativeWriteCreditsHtml(int fd); public interface Natives {
/** Writes the chrome://credits HTML to the given descriptor. */
void writeCreditsHtml(int fd);
}
} }
...@@ -100,10 +100,12 @@ android_library("autofill_java") { ...@@ -100,10 +100,12 @@ android_library("autofill_java") {
android_library("provider_java") { android_library("provider_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//components/autofill/core/common/mojom:mojo_types_java", "//components/autofill/core/common/mojom:mojo_types_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/autofill/AutofillProvider.java", "java/src/org/chromium/components/autofill/AutofillProvider.java",
"java/src/org/chromium/components/autofill/FormData.java", "java/src/org/chromium/components/autofill/FormData.java",
......
...@@ -11,6 +11,7 @@ import android.view.autofill.AutofillValue; ...@@ -11,6 +11,7 @@ import android.view.autofill.AutofillValue;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
/** /**
...@@ -132,7 +133,8 @@ public abstract class AutofillProvider { ...@@ -132,7 +133,8 @@ public abstract class AutofillProvider {
* @param formData the form to fill. * @param formData the form to fill.
*/ */
protected void autofill(long nativeAutofillProvider, FormData formData) { protected void autofill(long nativeAutofillProvider, FormData formData) {
nativeOnAutofillAvailable(nativeAutofillProvider, formData); AutofillProviderJni.get().onAutofillAvailable(
nativeAutofillProvider, AutofillProvider.this, formData);
} }
/** /**
...@@ -147,6 +149,9 @@ public abstract class AutofillProvider { ...@@ -147,6 +149,9 @@ public abstract class AutofillProvider {
@CalledByNative @CalledByNative
protected abstract void onDidFillAutofillFormData(); protected abstract void onDidFillAutofillFormData();
private native void nativeOnAutofillAvailable( @NativeMethods
long nativeAutofillProviderAndroid, FormData formData); interface Natives {
void onAutofillAvailable(
long nativeAutofillProviderAndroid, AutofillProvider caller, FormData formData);
}
} }
...@@ -6,6 +6,7 @@ package org.chromium.components.autofill; ...@@ -6,6 +6,7 @@ package org.chromium.components.autofill;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -35,10 +36,11 @@ public class FormData { ...@@ -35,10 +36,11 @@ public class FormData {
} }
private void popupFormFields(int fieldCount) { private void popupFormFields(int fieldCount) {
FormFieldData formFieldData = nativeGetNextFormFieldData(mNativeObj); FormFieldData formFieldData =
FormDataJni.get().getNextFormFieldData(mNativeObj, FormData.this);
while (formFieldData != null) { while (formFieldData != null) {
mFields.add(formFieldData); mFields.add(formFieldData);
formFieldData = nativeGetNextFormFieldData(mNativeObj); formFieldData = FormDataJni.get().getNextFormFieldData(mNativeObj, FormData.this);
} }
assert mFields.size() == fieldCount; assert mFields.size() == fieldCount;
} }
...@@ -48,5 +50,8 @@ public class FormData { ...@@ -48,5 +50,8 @@ public class FormData {
mNativeObj = 0; mNativeObj = 0;
} }
private native FormFieldData nativeGetNextFormFieldData(long nativeFormDataAndroid); @NativeMethods
interface Natives {
FormFieldData getNextFormFieldData(long nativeFormDataAndroid, FormData caller);
}
} }
...@@ -22,8 +22,10 @@ source_set("android") { ...@@ -22,8 +22,10 @@ source_set("android") {
android_library("java") { android_library("java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//content/public/android:content_java", "//content/public/android:content_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/content_capture/ContentCaptureConsumer.java", "java/src/org/chromium/components/content_capture/ContentCaptureConsumer.java",
"java/src/org/chromium/components/content_capture/ContentCaptureController.java", "java/src/org/chromium/components/content_capture/ContentCaptureController.java",
......
...@@ -6,6 +6,7 @@ package org.chromium.components.content_capture; ...@@ -6,6 +6,7 @@ package org.chromium.components.content_capture;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
/** /**
* The abstract class to provide the whitelist and the runtime control of if ContentCapture should * The abstract class to provide the whitelist and the runtime control of if ContentCapture should
...@@ -25,7 +26,7 @@ public abstract class ContentCaptureController { ...@@ -25,7 +26,7 @@ public abstract class ContentCaptureController {
} }
protected ContentCaptureController() { protected ContentCaptureController() {
mNativeContentCaptureController = nativeInit(this); mNativeContentCaptureController = ContentCaptureControllerJni.get().init(this);
} }
/** /**
...@@ -59,10 +60,14 @@ public abstract class ContentCaptureController { ...@@ -59,10 +60,14 @@ public abstract class ContentCaptureController {
* @param isRegex to indicate that the corresponding whitelist is the regex or not. * @param isRegex to indicate that the corresponding whitelist is the regex or not.
*/ */
protected void setWhitelist(String[] whitelist, boolean[] isRegex) { protected void setWhitelist(String[] whitelist, boolean[] isRegex) {
nativeSetWhitelist(mNativeContentCaptureController, whitelist, isRegex); ContentCaptureControllerJni.get().setWhitelist(
mNativeContentCaptureController, ContentCaptureController.this, whitelist, isRegex);
} }
private static native long nativeInit(Object contentCaptureController); @NativeMethods
private native void nativeSetWhitelist( interface Natives {
long nativeContentCaptureController, String[] whitelist, boolean[] isRegex); long init(Object contentCaptureController);
void setWhitelist(long nativeContentCaptureController, ContentCaptureController caller,
String[] whitelist, boolean[] isRegex);
}
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
package org.chromium.components.content_capture; package org.chromium.components.content_capture;
import org.chromium.base.CommandLine; import org.chromium.base.CommandLine;
import org.chromium.base.annotations.NativeMethods;
/** /**
* The class to get if feature is enabled from native. * The class to get if feature is enabled from native.
...@@ -12,11 +13,15 @@ public class ContentCaptureFeatures { ...@@ -12,11 +13,15 @@ public class ContentCaptureFeatures {
private static final String FLAG = "dump-captured-content-to-logcat-for-testing"; private static final String FLAG = "dump-captured-content-to-logcat-for-testing";
public static boolean isEnabled() { public static boolean isEnabled() {
return nativeIsEnabled(); return ContentCaptureFeaturesJni.get().isEnabled();
} }
public static boolean isDumpForTestingEnabled() { public static boolean isDumpForTestingEnabled() {
return CommandLine.getInstance().hasSwitch(FLAG); return CommandLine.getInstance().hasSwitch(FLAG);
} }
private static native boolean nativeIsEnabled();
@NativeMethods
interface Natives {
boolean isEnabled();
}
} }
...@@ -6,6 +6,7 @@ package org.chromium.components.content_capture; ...@@ -6,6 +6,7 @@ package org.chromium.components.content_capture;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import java.util.Arrays; import java.util.Arrays;
...@@ -20,7 +21,7 @@ public class ContentCaptureReceiverManager { ...@@ -20,7 +21,7 @@ public class ContentCaptureReceiverManager {
private ContentCaptureConsumer mContentCaptureConsumer; private ContentCaptureConsumer mContentCaptureConsumer;
public static ContentCaptureReceiverManager createOrGet(WebContents webContents) { public static ContentCaptureReceiverManager createOrGet(WebContents webContents) {
return nativeCreateOrGet(webContents); return ContentCaptureReceiverManagerJni.get().createOrGet(webContents);
} }
@CalledByNative @CalledByNative
...@@ -51,8 +52,9 @@ public class ContentCaptureReceiverManager { ...@@ -51,8 +52,9 @@ public class ContentCaptureReceiverManager {
@CalledByNative @CalledByNative
private void didRemoveContent(Object[] session, long[] data) { private void didRemoveContent(Object[] session, long[] data) {
FrameSession frameSession = toFrameSession(session); FrameSession frameSession = toFrameSession(session);
if (mContentCaptureConsumer != null) if (mContentCaptureConsumer != null) {
mContentCaptureConsumer.onContentRemoved(frameSession, data); mContentCaptureConsumer.onContentRemoved(frameSession, data);
}
if (sDump.booleanValue()) { if (sDump.booleanValue()) {
Log.i(TAG, "Removed Content: %s", frameSession.get(0) + " " + Arrays.toString(data)); Log.i(TAG, "Removed Content: %s", frameSession.get(0) + " " + Arrays.toString(data));
} }
...@@ -71,5 +73,8 @@ public class ContentCaptureReceiverManager { ...@@ -71,5 +73,8 @@ public class ContentCaptureReceiverManager {
return frameSession; return frameSession;
} }
private static native ContentCaptureReceiverManager nativeCreateOrGet(WebContents webContents); @NativeMethods
interface Natives {
ContentCaptureReceiverManager createOrGet(WebContents webContents);
}
} }
...@@ -23,7 +23,9 @@ java_cpp_enum("java_enums_srcjar") { ...@@ -23,7 +23,9 @@ java_cpp_enum("java_enums_srcjar") {
android_library("java") { android_library("java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
srcjar_deps = [ ":java_enums_srcjar" ] srcjar_deps = [ ":java_enums_srcjar" ]
java_files = _jni_sources java_files = _jni_sources
} }
...@@ -62,7 +64,9 @@ generate_jni("java_handler_jni_headers") { ...@@ -62,7 +64,9 @@ generate_jni("java_handler_jni_headers") {
android_library("handler_java") { android_library("handler_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = _java_handler_jni_sources java_files = _java_handler_jni_sources
} }
......
...@@ -8,6 +8,7 @@ import androidx.annotation.Nullable; ...@@ -8,6 +8,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import java.util.concurrent.atomic.AtomicReferenceArray; import java.util.concurrent.atomic.AtomicReferenceArray;
...@@ -74,7 +75,7 @@ public class CrashKeys { ...@@ -74,7 +75,7 @@ public class CrashKeys {
public void set(@CrashKeyIndex int keyIndex, @Nullable String value) { public void set(@CrashKeyIndex int keyIndex, @Nullable String value) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
if (mFlushed) { if (mFlushed) {
nativeSet(keyIndex, value); CrashKeysJni.get().set(CrashKeys.this, keyIndex, value);
return; return;
} }
mValues.set(keyIndex, value); mValues.set(keyIndex, value);
...@@ -90,10 +91,13 @@ public class CrashKeys { ...@@ -90,10 +91,13 @@ public class CrashKeys {
assert !mFlushed; assert !mFlushed;
for (@CrashKeyIndex int i = 0; i < mValues.length(); i++) { for (@CrashKeyIndex int i = 0; i < mValues.length(); i++) {
nativeSet(i, mValues.getAndSet(i, null)); CrashKeysJni.get().set(CrashKeys.this, i, mValues.getAndSet(i, null));
} }
mFlushed = true; mFlushed = true;
} }
private native void nativeSet(int key, String value); @NativeMethods
interface Natives {
void set(CrashKeys caller, int key, String value);
}
} }
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.crash.browser; package org.chromium.components.crash.browser;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.annotations.UsedByReflection; import org.chromium.base.annotations.UsedByReflection;
import org.chromium.base.library_loader.NativeLibraries; import org.chromium.base.library_loader.NativeLibraries;
...@@ -19,8 +20,11 @@ final class CrashpadMain { ...@@ -19,8 +20,11 @@ final class CrashpadMain {
} catch (UnsatisfiedLinkError e) { } catch (UnsatisfiedLinkError e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
nativeCrashpadMain(argv); CrashpadMainJni.get().crashpadMain(argv);
} }
private static native void nativeCrashpadMain(String[] argv); @NativeMethods
interface Natives {
void crashpadMain(String[] argv);
}
} }
...@@ -7,9 +7,11 @@ import("//build/config/android/rules.gni") ...@@ -7,9 +7,11 @@ import("//build/config/android/rules.gni")
android_library("dom_distiller_content_java") { android_library("dom_distiller_content_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//components/dom_distiller/core/android:dom_distiller_core_java", "//components/dom_distiller/core/android:dom_distiller_core_java",
"//content/public/android:content_java", "//content/public/android:content_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ "java/src/org/chromium/components/dom_distiller/content/DistillablePageUtils.java" ] java_files = [ "java/src/org/chromium/components/dom_distiller/content/DistillablePageUtils.java" ]
} }
......
...@@ -6,6 +6,7 @@ package org.chromium.components.dom_distiller.content; ...@@ -6,6 +6,7 @@ package org.chromium.components.dom_distiller.content;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
/** /**
...@@ -30,7 +31,7 @@ public final class DistillablePageUtils { ...@@ -30,7 +31,7 @@ public final class DistillablePageUtils {
public static void setDelegate(WebContents webContents, public static void setDelegate(WebContents webContents,
PageDistillableDelegate delegate) { PageDistillableDelegate delegate) {
nativeSetDelegate(webContents, delegate); DistillablePageUtilsJni.get().setDelegate(webContents, delegate);
} }
@CalledByNative @CalledByNative
...@@ -41,6 +42,8 @@ public final class DistillablePageUtils { ...@@ -41,6 +42,8 @@ public final class DistillablePageUtils {
} }
} }
private static native void nativeSetDelegate( @NativeMethods
WebContents webContents, PageDistillableDelegate delegate); interface Natives {
void setDelegate(WebContents webContents, PageDistillableDelegate delegate);
}
} }
...@@ -7,7 +7,9 @@ import("//build/config/android/rules.gni") ...@@ -7,7 +7,9 @@ import("//build/config/android/rules.gni")
android_library("dom_distiller_core_java") { android_library("dom_distiller_core_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/dom_distiller/core/DomDistillerService.java", "java/src/org/chromium/components/dom_distiller/core/DomDistillerService.java",
"java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java", "java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java",
......
...@@ -6,6 +6,7 @@ package org.chromium.components.dom_distiller.core; ...@@ -6,6 +6,7 @@ package org.chromium.components.dom_distiller.core;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -31,12 +32,13 @@ public final class DistilledPagePrefs { ...@@ -31,12 +32,13 @@ public final class DistilledPagePrefs {
/** /**
* Wrapper for dom_distiller::android::DistilledPagePrefsObserverAndroid. * Wrapper for dom_distiller::android::DistilledPagePrefsObserverAndroid.
*/ */
private static class DistilledPagePrefsObserverWrapper { static class DistilledPagePrefsObserverWrapper {
private final Observer mDistilledPagePrefsObserver; private final Observer mDistilledPagePrefsObserver;
private final long mNativeDistilledPagePrefsObserverAndroidPtr; private final long mNativeDistilledPagePrefsObserverAndroidPtr;
public DistilledPagePrefsObserverWrapper(Observer observer) { public DistilledPagePrefsObserverWrapper(Observer observer) {
mNativeDistilledPagePrefsObserverAndroidPtr = nativeInitObserverAndroid(this); mNativeDistilledPagePrefsObserverAndroidPtr =
DistilledPagePrefsJni.get().initObserverAndroid(this);
mDistilledPagePrefsObserver = observer; mDistilledPagePrefsObserver = observer;
} }
...@@ -56,7 +58,8 @@ public final class DistilledPagePrefs { ...@@ -56,7 +58,8 @@ public final class DistilledPagePrefs {
} }
public void destroy() { public void destroy() {
nativeDestroyObserverAndroid(mNativeDistilledPagePrefsObserverAndroidPtr); DistilledPagePrefsJni.get().destroyObserverAndroid(
mNativeDistilledPagePrefsObserverAndroidPtr);
} }
public long getNativePtr() { public long getNativePtr() {
...@@ -65,7 +68,8 @@ public final class DistilledPagePrefs { ...@@ -65,7 +68,8 @@ public final class DistilledPagePrefs {
} }
DistilledPagePrefs(long distilledPagePrefsPtr) { DistilledPagePrefs(long distilledPagePrefsPtr) {
mDistilledPagePrefsAndroid = nativeInit(distilledPagePrefsPtr); mDistilledPagePrefsAndroid =
DistilledPagePrefsJni.get().init(DistilledPagePrefs.this, distilledPagePrefsPtr);
mObserverMap = new HashMap<Observer, DistilledPagePrefsObserverWrapper>(); mObserverMap = new HashMap<Observer, DistilledPagePrefsObserverWrapper>();
} }
...@@ -77,7 +81,8 @@ public final class DistilledPagePrefs { ...@@ -77,7 +81,8 @@ public final class DistilledPagePrefs {
if (mObserverMap.containsKey(obs)) return false; if (mObserverMap.containsKey(obs)) return false;
DistilledPagePrefsObserverWrapper wrappedObserver = DistilledPagePrefsObserverWrapper wrappedObserver =
new DistilledPagePrefsObserverWrapper(obs); new DistilledPagePrefsObserverWrapper(obs);
nativeAddObserver(mDistilledPagePrefsAndroid, wrappedObserver.getNativePtr()); DistilledPagePrefsJni.get().addObserver(mDistilledPagePrefsAndroid, DistilledPagePrefs.this,
wrappedObserver.getNativePtr());
mObserverMap.put(obs, wrappedObserver); mObserverMap.put(obs, wrappedObserver);
return true; return true;
} }
...@@ -89,57 +94,58 @@ public final class DistilledPagePrefs { ...@@ -89,57 +94,58 @@ public final class DistilledPagePrefs {
public boolean removeObserver(Observer obs) { public boolean removeObserver(Observer obs) {
DistilledPagePrefsObserverWrapper wrappedObserver = mObserverMap.remove(obs); DistilledPagePrefsObserverWrapper wrappedObserver = mObserverMap.remove(obs);
if (wrappedObserver == null) return false; if (wrappedObserver == null) return false;
nativeRemoveObserver(mDistilledPagePrefsAndroid, wrappedObserver.getNativePtr()); DistilledPagePrefsJni.get().removeObserver(mDistilledPagePrefsAndroid,
DistilledPagePrefs.this, wrappedObserver.getNativePtr());
wrappedObserver.destroy(); wrappedObserver.destroy();
return true; return true;
} }
public void setFontFamily(@FontFamily int fontFamily) { public void setFontFamily(@FontFamily int fontFamily) {
nativeSetFontFamily(mDistilledPagePrefsAndroid, fontFamily); DistilledPagePrefsJni.get().setFontFamily(
mDistilledPagePrefsAndroid, DistilledPagePrefs.this, fontFamily);
} }
public @FontFamily int getFontFamily() { public @FontFamily int getFontFamily() {
return nativeGetFontFamily(mDistilledPagePrefsAndroid); return DistilledPagePrefsJni.get().getFontFamily(
mDistilledPagePrefsAndroid, DistilledPagePrefs.this);
} }
public void setTheme(@Theme int theme) { public void setTheme(@Theme int theme) {
nativeSetTheme(mDistilledPagePrefsAndroid, theme); DistilledPagePrefsJni.get().setTheme(
mDistilledPagePrefsAndroid, DistilledPagePrefs.this, theme);
} }
public @Theme int getTheme() { public @Theme int getTheme() {
return nativeGetTheme(mDistilledPagePrefsAndroid); return DistilledPagePrefsJni.get().getTheme(
mDistilledPagePrefsAndroid, DistilledPagePrefs.this);
} }
public void setFontScaling(float scaling) { public void setFontScaling(float scaling) {
nativeSetFontScaling(mDistilledPagePrefsAndroid, scaling); DistilledPagePrefsJni.get().setFontScaling(
mDistilledPagePrefsAndroid, DistilledPagePrefs.this, scaling);
} }
public float getFontScaling() { public float getFontScaling() {
return nativeGetFontScaling(mDistilledPagePrefsAndroid); return DistilledPagePrefsJni.get().getFontScaling(
mDistilledPagePrefsAndroid, DistilledPagePrefs.this);
} }
private native long nativeInit(long distilledPagePrefPtr); @NativeMethods
interface Natives {
private native void nativeSetFontFamily(long nativeDistilledPagePrefsAndroid, int fontFamily); long init(DistilledPagePrefs caller, long distilledPagePrefPtr);
void setFontFamily(
private native int nativeGetFontFamily(long nativeDistilledPagePrefsAndroid); long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller, int fontFamily);
int getFontFamily(long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller);
private native void nativeSetTheme(long nativeDistilledPagePrefsAndroid, int theme); void setTheme(long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller, int theme);
int getTheme(long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller);
private native int nativeGetTheme(long nativeDistilledPagePrefsAndroid); void setFontScaling(
long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller, float scaling);
private native void nativeSetFontScaling(long nativeDistilledPagePrefsAndroid, float scaling); float getFontScaling(long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller);
void addObserver(long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller,
private native float nativeGetFontScaling(long nativeDistilledPagePrefsAndroid); long nativeObserverPtr);
void removeObserver(long nativeDistilledPagePrefsAndroid, DistilledPagePrefs caller,
private native void nativeAddObserver(long nativeDistilledPagePrefsAndroid, long nativeObserverPtr);
long nativeObserverPtr); long initObserverAndroid(DistilledPagePrefsObserverWrapper caller);
void destroyObserverAndroid(long nativeDistilledPagePrefsObserverAndroid);
private native void nativeRemoveObserver(long nativeDistilledPagePrefsAndroid, }
long nativeObserverPtr);
private static native long nativeInitObserverAndroid(DistilledPagePrefsObserverWrapper caller);
private static native void nativeDestroyObserverAndroid(
long nativeDistilledPagePrefsObserverAndroid);
} }
...@@ -7,6 +7,7 @@ package org.chromium.components.dom_distiller.core; ...@@ -7,6 +7,7 @@ package org.chromium.components.dom_distiller.core;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
/** /**
* Wrapper for native dom_distiller::DomDistillerService. * Wrapper for native dom_distiller::DomDistillerService.
...@@ -20,7 +21,7 @@ public final class DomDistillerService { ...@@ -20,7 +21,7 @@ public final class DomDistillerService {
private DomDistillerService(long nativeDomDistillerAndroidServicePtr) { private DomDistillerService(long nativeDomDistillerAndroidServicePtr) {
mDomDistillerServiceAndroid = nativeDomDistillerAndroidServicePtr; mDomDistillerServiceAndroid = nativeDomDistillerAndroidServicePtr;
mDistilledPagePrefs = new DistilledPagePrefs( mDistilledPagePrefs = new DistilledPagePrefs(
nativeGetDistilledPagePrefsPtr(mDomDistillerServiceAndroid)); DomDistillerServiceJni.get().getDistilledPagePrefsPtr(mDomDistillerServiceAndroid));
} }
public DistilledPagePrefs getDistilledPagePrefs() { public DistilledPagePrefs getDistilledPagePrefs() {
...@@ -28,11 +29,13 @@ public final class DomDistillerService { ...@@ -28,11 +29,13 @@ public final class DomDistillerService {
} }
public boolean hasEntry(String entryId) { public boolean hasEntry(String entryId) {
return nativeHasEntry(mDomDistillerServiceAndroid, entryId); return DomDistillerServiceJni.get().hasEntry(
mDomDistillerServiceAndroid, DomDistillerService.this, entryId);
} }
public String getUrlForEntry(String entryId) { public String getUrlForEntry(String entryId) {
return nativeGetUrlForEntry(mDomDistillerServiceAndroid, entryId); return DomDistillerServiceJni.get().getUrlForEntry(
mDomDistillerServiceAndroid, DomDistillerService.this, entryId);
} }
@CalledByNative @CalledByNative
...@@ -41,9 +44,12 @@ public final class DomDistillerService { ...@@ -41,9 +44,12 @@ public final class DomDistillerService {
return new DomDistillerService(nativeDomDistillerServiceAndroid); return new DomDistillerService(nativeDomDistillerServiceAndroid);
} }
private native boolean nativeHasEntry(long nativeDomDistillerServiceAndroid, String entryId); @NativeMethods
private native String nativeGetUrlForEntry( interface Natives {
long nativeDomDistillerServiceAndroid, String entryId); boolean hasEntry(
private static native long nativeGetDistilledPagePrefsPtr( long nativeDomDistillerServiceAndroid, DomDistillerService caller, String entryId);
long nativeDomDistillerServiceAndroid); String getUrlForEntry(
long nativeDomDistillerServiceAndroid, DomDistillerService caller, String entryId);
long getDistilledPagePrefsPtr(long nativeDomDistillerServiceAndroid);
}
} }
...@@ -8,6 +8,7 @@ import android.text.TextUtils; ...@@ -8,6 +8,7 @@ import android.text.TextUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
/** /**
* Wrapper for the dom_distiller::url_utils. * Wrapper for the dom_distiller::url_utils.
...@@ -28,7 +29,7 @@ public final class DomDistillerUrlUtils { ...@@ -28,7 +29,7 @@ public final class DomDistillerUrlUtils {
public static String getDistillerViewUrlFromUrl(String scheme, String url) { public static String getDistillerViewUrlFromUrl(String scheme, String url) {
assert scheme != null; assert scheme != null;
if (TextUtils.isEmpty(url)) return url; if (TextUtils.isEmpty(url)) return url;
return nativeGetDistillerViewUrlFromUrl(scheme, url); return DomDistillerUrlUtilsJni.get().getDistillerViewUrlFromUrl(scheme, url);
} }
/** /**
...@@ -39,7 +40,7 @@ public final class DomDistillerUrlUtils { ...@@ -39,7 +40,7 @@ public final class DomDistillerUrlUtils {
*/ */
public static String getOriginalUrlFromDistillerUrl(String url) { public static String getOriginalUrlFromDistillerUrl(String url) {
if (TextUtils.isEmpty(url)) return url; if (TextUtils.isEmpty(url)) return url;
return nativeGetOriginalUrlFromDistillerUrl(url); return DomDistillerUrlUtilsJni.get().getOriginalUrlFromDistillerUrl(url);
} }
/** /**
...@@ -50,17 +51,20 @@ public final class DomDistillerUrlUtils { ...@@ -50,17 +51,20 @@ public final class DomDistillerUrlUtils {
*/ */
public static boolean isDistilledPage(String url) { public static boolean isDistilledPage(String url) {
if (TextUtils.isEmpty(url)) return false; if (TextUtils.isEmpty(url)) return false;
return nativeIsDistilledPage(url); return DomDistillerUrlUtilsJni.get().isDistilledPage(url);
} }
public static String getValueForKeyInUrl(String url, String key) { public static String getValueForKeyInUrl(String url, String key) {
assert key != null; assert key != null;
if (TextUtils.isEmpty(url)) return null; if (TextUtils.isEmpty(url)) return null;
return nativeGetValueForKeyInUrl(url, key); return DomDistillerUrlUtilsJni.get().getValueForKeyInUrl(url, key);
} }
private static native String nativeGetDistillerViewUrlFromUrl(String scheme, String url); @NativeMethods
private static native String nativeGetOriginalUrlFromDistillerUrl(String viewerUrl); interface Natives {
private static native boolean nativeIsDistilledPage(String url); String getDistillerViewUrlFromUrl(String scheme, String url);
private static native String nativeGetValueForKeyInUrl(String url, String key); String getOriginalUrlFromDistillerUrl(String viewerUrl);
boolean isDistilledPage(String url);
String getValueForKeyInUrl(String url, String key);
}
} }
...@@ -105,7 +105,9 @@ if (is_android) { ...@@ -105,7 +105,9 @@ if (is_android) {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
generate_jni("jni_headers") { generate_jni("jni_headers") {
......
...@@ -12,6 +12,7 @@ import org.chromium.base.ContextUtils; ...@@ -12,6 +12,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
/** /**
* Helper class for publishing download files to the public download collection. * Helper class for publishing download files to the public download collection.
...@@ -296,7 +297,7 @@ public class DownloadCollectionBridge { ...@@ -296,7 +297,7 @@ public class DownloadCollectionBridge {
* @return number of days for an intermediate download to expire. * @return number of days for an intermediate download to expire.
*/ */
public static int getExpirationDurationInDays() { public static int getExpirationDurationInDays() {
return nativeGetExpirationDurationInDays(); return DownloadCollectionBridgeJni.get().getExpirationDurationInDays();
} }
/** /**
...@@ -309,5 +310,8 @@ public class DownloadCollectionBridge { ...@@ -309,5 +310,8 @@ public class DownloadCollectionBridge {
return getDownloadCollectionBridge().getDisplayNameForUri(downloadUri); return getDownloadCollectionBridge().getDisplayNameForUri(downloadUri);
} }
private static native int nativeGetExpirationDurationInDays(); @NativeMethods
interface Natives {
int getExpirationDurationInDays();
}
} }
...@@ -44,8 +44,10 @@ if (is_android) { ...@@ -44,8 +44,10 @@ if (is_android) {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//net/android:net_java", "//net/android:net_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
generate_jni("jni_headers") { generate_jni("jni_headers") {
......
...@@ -7,6 +7,7 @@ package org.chromium.components.download; ...@@ -7,6 +7,7 @@ package org.chromium.components.download;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.NetworkChangeNotifierAutoDetect; import org.chromium.net.NetworkChangeNotifierAutoDetect;
import org.chromium.net.NetworkChangeNotifierAutoDetect.Observer; import org.chromium.net.NetworkChangeNotifierAutoDetect.Observer;
import org.chromium.net.RegistrationPolicyAlwaysRegister; import org.chromium.net.RegistrationPolicyAlwaysRegister;
...@@ -59,7 +60,8 @@ public final class NetworkStatusListenerAndroid implements Observer { ...@@ -59,7 +60,8 @@ public final class NetworkStatusListenerAndroid implements Observer {
@Override @Override
public void onConnectionTypeChanged(int newConnectionType) { public void onConnectionTypeChanged(int newConnectionType) {
if (mNativePtr != 0) { if (mNativePtr != 0) {
nativeNotifyNetworkChange(mNativePtr, newConnectionType); NetworkStatusListenerAndroidJni.get().notifyNetworkChange(
mNativePtr, NetworkStatusListenerAndroid.this, newConnectionType);
} }
} }
...@@ -87,6 +89,9 @@ public final class NetworkStatusListenerAndroid implements Observer { ...@@ -87,6 +89,9 @@ public final class NetworkStatusListenerAndroid implements Observer {
@Override @Override
public void purgeActiveNetworkList(long[] activeNetIds) {} public void purgeActiveNetworkList(long[] activeNetIds) {}
private native void nativeNotifyNetworkChange( @NativeMethods
long nativeNetworkStatusListenerAndroid, int connectionType); interface Natives {
void notifyNetworkChange(long nativeNetworkStatusListenerAndroid,
NetworkStatusListenerAndroid caller, int connectionType);
}
} }
...@@ -42,9 +42,11 @@ android_library("content_view_java") { ...@@ -42,9 +42,11 @@ android_library("content_view_java") {
android_library("view_java") { android_library("view_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//ui/android:ui_java", "//ui/android:ui_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ "java/src/org/chromium/components/embedder_support/view/ContentViewRenderView.java" ] java_files = [ "java/src/org/chromium/components/embedder_support/view/ContentViewRenderView.java" ]
} }
...@@ -147,10 +149,12 @@ android_library("web_contents_delegate_java") { ...@@ -147,10 +149,12 @@ android_library("web_contents_delegate_java") {
deps = [ deps = [
":web_contents_delegate_java_resources", ":web_contents_delegate_java_resources",
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:com_android_support_support_compat_java", "//third_party/android_deps:com_android_support_support_compat_java",
"//ui/android:ui_java", "//ui/android:ui_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/embedder_support/delegate/ColorChooserAndroid.java", "java/src/org/chromium/components/embedder_support/delegate/ColorChooserAndroid.java",
"java/src/org/chromium/components/embedder_support/delegate/ColorPickerAdvanced.java", "java/src/org/chromium/components/embedder_support/delegate/ColorPickerAdvanced.java",
......
...@@ -9,6 +9,7 @@ import android.content.Context; ...@@ -9,6 +9,7 @@ import android.content.Context;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
/** /**
...@@ -26,7 +27,8 @@ public class ColorChooserAndroid { ...@@ -26,7 +27,8 @@ public class ColorChooserAndroid {
@Override @Override
public void onColorChanged(int color) { public void onColorChanged(int color) {
mDialog.dismiss(); mDialog.dismiss();
nativeOnColorChosen(mNativeColorChooserAndroid, color); ColorChooserAndroidJni.get().onColorChosen(
mNativeColorChooserAndroid, ColorChooserAndroid.this, color);
} }
}; };
...@@ -72,6 +74,9 @@ public class ColorChooserAndroid { ...@@ -72,6 +74,9 @@ public class ColorChooserAndroid {
array[index] = new ColorSuggestion(color, label); array[index] = new ColorSuggestion(color, label);
} }
// Implemented in color_chooser_android.cc @NativeMethods
private native void nativeOnColorChosen(long nativeColorChooserAndroid, int color); interface Natives {
// Implemented in color_chooser_android.cc
void onColorChosen(long nativeColorChooserAndroid, ColorChooserAndroid caller, int color);
}
} }
...@@ -15,6 +15,7 @@ import android.widget.FrameLayout; ...@@ -15,6 +15,7 @@ import android.widget.FrameLayout;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -66,25 +67,28 @@ public class ContentViewRenderView extends FrameLayout { ...@@ -66,25 +67,28 @@ public class ContentViewRenderView extends FrameLayout {
assert !mSurfaceView.getHolder().getSurface().isValid() assert !mSurfaceView.getHolder().getSurface().isValid()
: "Surface created before native library loaded."; : "Surface created before native library loaded.";
assert rootWindow != null; assert rootWindow != null;
mNativeContentViewRenderView = nativeInit(rootWindow); mNativeContentViewRenderView =
ContentViewRenderViewJni.get().init(ContentViewRenderView.this, rootWindow);
assert mNativeContentViewRenderView != 0; assert mNativeContentViewRenderView != 0;
mWindowAndroid = rootWindow; mWindowAndroid = rootWindow;
mSurfaceCallback = new SurfaceHolder.Callback() { mSurfaceCallback = new SurfaceHolder.Callback() {
@Override @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
assert mNativeContentViewRenderView != 0; assert mNativeContentViewRenderView != 0;
nativeSurfaceChanged( ContentViewRenderViewJni.get().surfaceChanged(mNativeContentViewRenderView,
mNativeContentViewRenderView, format, width, height, holder.getSurface()); ContentViewRenderView.this, format, width, height, holder.getSurface());
if (mWebContents != null) { if (mWebContents != null) {
nativeOnPhysicalBackingSizeChanged( ContentViewRenderViewJni.get().onPhysicalBackingSizeChanged(
mNativeContentViewRenderView, mWebContents, width, height); mNativeContentViewRenderView, ContentViewRenderView.this, mWebContents,
width, height);
} }
} }
@Override @Override
public void surfaceCreated(SurfaceHolder holder) { public void surfaceCreated(SurfaceHolder holder) {
assert mNativeContentViewRenderView != 0; assert mNativeContentViewRenderView != 0;
nativeSurfaceCreated(mNativeContentViewRenderView); ContentViewRenderViewJni.get().surfaceCreated(
mNativeContentViewRenderView, ContentViewRenderView.this);
// On pre-M Android, layers start in the hidden state until a relayout happens. // On pre-M Android, layers start in the hidden state until a relayout happens.
// There is a bug that manifests itself when entering overlay mode on pre-M devices, // There is a bug that manifests itself when entering overlay mode on pre-M devices,
...@@ -99,7 +103,8 @@ public class ContentViewRenderView extends FrameLayout { ...@@ -99,7 +103,8 @@ public class ContentViewRenderView extends FrameLayout {
@Override @Override
public void surfaceDestroyed(SurfaceHolder holder) { public void surfaceDestroyed(SurfaceHolder holder) {
assert mNativeContentViewRenderView != 0; assert mNativeContentViewRenderView != 0;
nativeSurfaceDestroyed(mNativeContentViewRenderView); ContentViewRenderViewJni.get().surfaceDestroyed(
mNativeContentViewRenderView, ContentViewRenderView.this);
} }
}; };
mSurfaceView.getHolder().addCallback(mSurfaceCallback); mSurfaceView.getHolder().addCallback(mSurfaceCallback);
...@@ -155,7 +160,8 @@ public class ContentViewRenderView extends FrameLayout { ...@@ -155,7 +160,8 @@ public class ContentViewRenderView extends FrameLayout {
public void destroy() { public void destroy() {
mSurfaceView.getHolder().removeCallback(mSurfaceCallback); mSurfaceView.getHolder().removeCallback(mSurfaceCallback);
mWindowAndroid = null; mWindowAndroid = null;
nativeDestroy(mNativeContentViewRenderView); ContentViewRenderViewJni.get().destroy(
mNativeContentViewRenderView, ContentViewRenderView.this);
mNativeContentViewRenderView = 0; mNativeContentViewRenderView = 0;
} }
...@@ -165,10 +171,12 @@ public class ContentViewRenderView extends FrameLayout { ...@@ -165,10 +171,12 @@ public class ContentViewRenderView extends FrameLayout {
if (webContents != null) { if (webContents != null) {
webContents.setSize(mWidth, mHeight); webContents.setSize(mWidth, mHeight);
nativeOnPhysicalBackingSizeChanged( ContentViewRenderViewJni.get().onPhysicalBackingSizeChanged(
mNativeContentViewRenderView, webContents, mWidth, mHeight); mNativeContentViewRenderView, ContentViewRenderView.this, webContents, mWidth,
mHeight);
} }
nativeSetCurrentWebContents(mNativeContentViewRenderView, webContents); ContentViewRenderViewJni.get().setCurrentWebContents(
mNativeContentViewRenderView, ContentViewRenderView.this, webContents);
} }
/** /**
...@@ -201,7 +209,8 @@ public class ContentViewRenderView extends FrameLayout { ...@@ -201,7 +209,8 @@ public class ContentViewRenderView extends FrameLayout {
public void setOverlayVideoMode(boolean enabled) { public void setOverlayVideoMode(boolean enabled) {
int format = enabled ? PixelFormat.TRANSLUCENT : PixelFormat.OPAQUE; int format = enabled ? PixelFormat.TRANSLUCENT : PixelFormat.OPAQUE;
mSurfaceView.getHolder().setFormat(format); mSurfaceView.getHolder().setFormat(format);
nativeSetOverlayVideoMode(mNativeContentViewRenderView, enabled); ContentViewRenderViewJni.get().setOverlayVideoMode(
mNativeContentViewRenderView, ContentViewRenderView.this, enabled);
} }
@CalledByNative @CalledByNative
...@@ -216,16 +225,19 @@ public class ContentViewRenderView extends FrameLayout { ...@@ -216,16 +225,19 @@ public class ContentViewRenderView extends FrameLayout {
} }
} }
private native long nativeInit(WindowAndroid rootWindow); @NativeMethods
private native void nativeDestroy(long nativeContentViewRenderView); interface Natives {
private native void nativeSetCurrentWebContents( long init(ContentViewRenderView caller, WindowAndroid rootWindow);
long nativeContentViewRenderView, WebContents webContents); void destroy(long nativeContentViewRenderView, ContentViewRenderView caller);
private native void nativeOnPhysicalBackingSizeChanged( void setCurrentWebContents(long nativeContentViewRenderView, ContentViewRenderView caller,
long nativeContentViewRenderView, WebContents webContents, int width, int height); WebContents webContents);
private native void nativeSurfaceCreated(long nativeContentViewRenderView); void onPhysicalBackingSizeChanged(long nativeContentViewRenderView,
private native void nativeSurfaceDestroyed(long nativeContentViewRenderView); ContentViewRenderView caller, WebContents webContents, int width, int height);
private native void nativeSurfaceChanged( void surfaceCreated(long nativeContentViewRenderView, ContentViewRenderView caller);
long nativeContentViewRenderView, int format, int width, int height, Surface surface); void surfaceDestroyed(long nativeContentViewRenderView, ContentViewRenderView caller);
private native void nativeSetOverlayVideoMode( void surfaceChanged(long nativeContentViewRenderView, ContentViewRenderView caller,
long nativeContentViewRenderView, boolean enabled); int format, int width, int height, Surface surface);
void setOverlayVideoMode(
long nativeContentViewRenderView, ContentViewRenderView caller, boolean enabled);
}
} }
...@@ -137,10 +137,12 @@ if (is_android) { ...@@ -137,10 +137,12 @@ if (is_android) {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//components/feature_engagement/public:public_java", "//components/feature_engagement/public:public_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_java", "//ui/android:ui_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
generate_jni("jni_headers") { generate_jni("jni_headers") {
......
...@@ -11,6 +11,7 @@ import org.chromium.base.Callback; ...@@ -11,6 +11,7 @@ import org.chromium.base.Callback;
import org.chromium.base.CommandLine; import org.chromium.base.CommandLine;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.feature_engagement.Tracker; import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.feature_engagement.TriggerState; import org.chromium.components.feature_engagement.TriggerState;
import org.chromium.ui.UiSwitches; import org.chromium.ui.UiSwitches;
...@@ -25,7 +26,7 @@ public class TrackerImpl implements Tracker { ...@@ -25,7 +26,7 @@ public class TrackerImpl implements Tracker {
* A JNI-wrapper for the native DisplayLockHandle. * A JNI-wrapper for the native DisplayLockHandle.
* The C++ counterpart is DisplayLockHandleAndroid. * The C++ counterpart is DisplayLockHandleAndroid.
*/ */
private static class DisplayLockHandleAndroid implements DisplayLockHandle { static class DisplayLockHandleAndroid implements DisplayLockHandle {
@CalledByNative("DisplayLockHandleAndroid") @CalledByNative("DisplayLockHandleAndroid")
private static DisplayLockHandleAndroid create(long nativePtr) { private static DisplayLockHandleAndroid create(long nativePtr) {
return new DisplayLockHandleAndroid(nativePtr); return new DisplayLockHandleAndroid(nativePtr);
...@@ -45,7 +46,7 @@ public class TrackerImpl implements Tracker { ...@@ -45,7 +46,7 @@ public class TrackerImpl implements Tracker {
@Override @Override
public void release() { public void release() {
assert mNativePtr != 0; assert mNativePtr != 0;
nativeRelease(mNativePtr); TrackerImplJni.get().release(mNativePtr);
assert mNativePtr == 0; assert mNativePtr == 0;
} }
} }
...@@ -67,7 +68,7 @@ public class TrackerImpl implements Tracker { ...@@ -67,7 +68,7 @@ public class TrackerImpl implements Tracker {
@Override @Override
public void notifyEvent(String event) { public void notifyEvent(String event) {
assert mNativePtr != 0; assert mNativePtr != 0;
nativeNotifyEvent(mNativePtr, event); TrackerImplJni.get().notifyEvent(mNativePtr, TrackerImpl.this, event);
} }
@Override @Override
...@@ -78,26 +79,26 @@ public class TrackerImpl implements Tracker { ...@@ -78,26 +79,26 @@ public class TrackerImpl implements Tracker {
} }
assert mNativePtr != 0; assert mNativePtr != 0;
return nativeShouldTriggerHelpUI(mNativePtr, feature); return TrackerImplJni.get().shouldTriggerHelpUI(mNativePtr, TrackerImpl.this, feature);
} }
@Override @Override
public boolean wouldTriggerHelpUI(String feature) { public boolean wouldTriggerHelpUI(String feature) {
assert mNativePtr != 0; assert mNativePtr != 0;
return nativeWouldTriggerHelpUI(mNativePtr, feature); return TrackerImplJni.get().wouldTriggerHelpUI(mNativePtr, TrackerImpl.this, feature);
} }
@Override @Override
@TriggerState @TriggerState
public int getTriggerState(String feature) { public int getTriggerState(String feature) {
assert mNativePtr != 0; assert mNativePtr != 0;
return nativeGetTriggerState(mNativePtr, feature); return TrackerImplJni.get().getTriggerState(mNativePtr, TrackerImpl.this, feature);
} }
@Override @Override
public void dismissed(String feature) { public void dismissed(String feature) {
assert mNativePtr != 0; assert mNativePtr != 0;
nativeDismissed(mNativePtr, feature); TrackerImplJni.get().dismissed(mNativePtr, TrackerImpl.this, feature);
} }
@Override @Override
...@@ -105,19 +106,19 @@ public class TrackerImpl implements Tracker { ...@@ -105,19 +106,19 @@ public class TrackerImpl implements Tracker {
@Nullable @Nullable
public DisplayLockHandle acquireDisplayLock() { public DisplayLockHandle acquireDisplayLock() {
assert mNativePtr != 0; assert mNativePtr != 0;
return nativeAcquireDisplayLock(mNativePtr); return TrackerImplJni.get().acquireDisplayLock(mNativePtr, TrackerImpl.this);
} }
@Override @Override
public boolean isInitialized() { public boolean isInitialized() {
assert mNativePtr != 0; assert mNativePtr != 0;
return nativeIsInitialized(mNativePtr); return TrackerImplJni.get().isInitialized(mNativePtr, TrackerImpl.this);
} }
@Override @Override
public void addOnInitializedCallback(Callback<Boolean> callback) { public void addOnInitializedCallback(Callback<Boolean> callback) {
assert mNativePtr != 0; assert mNativePtr != 0;
nativeAddOnInitializedCallback(mNativePtr, callback); TrackerImplJni.get().addOnInitializedCallback(mNativePtr, TrackerImpl.this, callback);
} }
@CalledByNative @CalledByNative
...@@ -131,15 +132,20 @@ public class TrackerImpl implements Tracker { ...@@ -131,15 +132,20 @@ public class TrackerImpl implements Tracker {
return mNativePtr; return mNativePtr;
} }
private native void nativeNotifyEvent(long nativeTrackerImplAndroid, String event); @NativeMethods
private native boolean nativeShouldTriggerHelpUI(long nativeTrackerImplAndroid, String feature); interface Natives {
private native boolean nativeWouldTriggerHelpUI(long nativeTrackerImplAndroid, String feature); void notifyEvent(long nativeTrackerImplAndroid, TrackerImpl caller, String event);
@TriggerState boolean shouldTriggerHelpUI(
private native int nativeGetTriggerState(long nativeTrackerImplAndroid, String feature); long nativeTrackerImplAndroid, TrackerImpl caller, String feature);
private native void nativeDismissed(long nativeTrackerImplAndroid, String feature); boolean wouldTriggerHelpUI(
private native DisplayLockHandleAndroid nativeAcquireDisplayLock(long nativeTrackerImplAndroid); long nativeTrackerImplAndroid, TrackerImpl caller, String feature);
private native boolean nativeIsInitialized(long nativeTrackerImplAndroid); int getTriggerState(long nativeTrackerImplAndroid, TrackerImpl caller, String feature);
private native void nativeAddOnInitializedCallback( void dismissed(long nativeTrackerImplAndroid, TrackerImpl caller, String feature);
long nativeTrackerImplAndroid, Callback<Boolean> callback); DisplayLockHandleAndroid acquireDisplayLock(
private static native void nativeRelease(long nativeDisplayLockHandleAndroid); long nativeTrackerImplAndroid, TrackerImpl caller);
boolean isInitialized(long nativeTrackerImplAndroid, TrackerImpl caller);
void addOnInitializedCallback(
long nativeTrackerImplAndroid, TrackerImpl caller, Callback<Boolean> callback);
void release(long nativeDisplayLockHandleAndroid);
}
} }
...@@ -13,10 +13,12 @@ generate_jni("jni_headers") { ...@@ -13,10 +13,12 @@ generate_jni("jni_headers") {
android_library("gcm_driver_java") { android_library("gcm_driver_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_sdk:android_gcm_java", "//third_party/android_sdk:android_gcm_java",
"//third_party/jsr-305:jsr_305_javalib", "//third_party/jsr-305:jsr_305_javalib",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/gcm_driver/GCMDriver.java", "java/src/org/chromium/components/gcm_driver/GCMDriver.java",
......
...@@ -11,6 +11,7 @@ import org.chromium.base.ThreadUtils; ...@@ -11,6 +11,7 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.AsyncTask; import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
...@@ -112,8 +113,8 @@ public class GCMDriver { ...@@ -112,8 +113,8 @@ public class GCMDriver {
} }
@Override @Override
protected void onPostExecute(String registrationId) { protected void onPostExecute(String registrationId) {
nativeOnRegisterFinished(mNativeGCMDriverAndroid, appId, registrationId, GCMDriverJni.get().onRegisterFinished(mNativeGCMDriverAndroid, GCMDriver.this,
!registrationId.isEmpty()); appId, registrationId, !registrationId.isEmpty());
} }
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} }
...@@ -135,7 +136,8 @@ public class GCMDriver { ...@@ -135,7 +136,8 @@ public class GCMDriver {
@Override @Override
protected void onPostExecute(Boolean success) { protected void onPostExecute(Boolean success) {
nativeOnUnregisterFinished(mNativeGCMDriverAndroid, appId, success); GCMDriverJni.get().onUnregisterFinished(
mNativeGCMDriverAndroid, GCMDriver.this, appId, success);
} }
} }
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
...@@ -149,9 +151,10 @@ public class GCMDriver { ...@@ -149,9 +151,10 @@ public class GCMDriver {
throw new RuntimeException("Failed to instantiate GCMDriver."); throw new RuntimeException("Failed to instantiate GCMDriver.");
} }
sInstance.nativeOnMessageReceived(sInstance.mNativeGCMDriverAndroid, message.getAppId(), GCMDriverJni.get().onMessageReceived(sInstance.mNativeGCMDriverAndroid, sInstance,
message.getSenderId(), message.getMessageId(), message.getCollapseKey(), message.getAppId(), message.getSenderId(), message.getMessageId(),
message.getRawData(), message.getDataKeysAndValuesArray()); message.getCollapseKey(), message.getRawData(),
message.getDataKeysAndValuesArray());
} }
@VisibleForTesting @VisibleForTesting
...@@ -161,11 +164,14 @@ public class GCMDriver { ...@@ -161,11 +164,14 @@ public class GCMDriver {
sInstance.mSubscriber = subscriber; sInstance.mSubscriber = subscriber;
} }
private native void nativeOnRegisterFinished(long nativeGCMDriverAndroid, String appId, @NativeMethods
String registrationId, boolean success); interface Natives {
private native void nativeOnUnregisterFinished(long nativeGCMDriverAndroid, String appId, void onRegisterFinished(long nativeGCMDriverAndroid, GCMDriver caller, String appId,
boolean success); String registrationId, boolean success);
private native void nativeOnMessageReceived(long nativeGCMDriverAndroid, String appId, void onUnregisterFinished(
String senderId, String messageId, String collapseKey, byte[] rawData, long nativeGCMDriverAndroid, GCMDriver caller, String appId, boolean success);
String[] dataKeysAndValues); void onMessageReceived(long nativeGCMDriverAndroid, GCMDriver caller, String appId,
String senderId, String messageId, String collapseKey, byte[] rawData,
String[] dataKeysAndValues);
}
} }
...@@ -20,8 +20,10 @@ android_library("instance_id_driver_java") { ...@@ -20,8 +20,10 @@ android_library("instance_id_driver_java") {
deps = [ deps = [
"$google_play_services_package:google_play_services_iid_java", "$google_play_services_package:google_play_services_iid_java",
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//components/gcm_driver/android:gcm_driver_java", "//components/gcm_driver/android:gcm_driver_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
srcjar_deps = srcjar_deps =
[ "//components/gcm_driver/instance_id:instance_id_java_enums_srcjar" ] [ "//components/gcm_driver/instance_id:instance_id_java_enums_srcjar" ]
......
...@@ -8,6 +8,7 @@ import android.os.Bundle; ...@@ -8,6 +8,7 @@ import android.os.Bundle;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.task.AsyncTask; import org.chromium.base.task.AsyncTask;
import org.chromium.components.gcm_driver.InstanceIDFlags; import org.chromium.components.gcm_driver.InstanceIDFlags;
import org.chromium.components.gcm_driver.LazySubscriptionsManager; import org.chromium.components.gcm_driver.LazySubscriptionsManager;
...@@ -77,7 +78,8 @@ public class InstanceIDBridge { ...@@ -77,7 +78,8 @@ public class InstanceIDBridge {
} }
@Override @Override
protected void sendResultToNative(String id) { protected void sendResultToNative(String id) {
nativeDidGetID(mNativeInstanceIDAndroid, requestId, id); InstanceIDBridgeJni.get().didGetID(
mNativeInstanceIDAndroid, InstanceIDBridge.this, requestId, id);
} }
}.execute(); }.execute();
} }
...@@ -92,7 +94,8 @@ public class InstanceIDBridge { ...@@ -92,7 +94,8 @@ public class InstanceIDBridge {
} }
@Override @Override
protected void sendResultToNative(Long creationTime) { protected void sendResultToNative(Long creationTime) {
nativeDidGetCreationTime(mNativeInstanceIDAndroid, requestId, creationTime); InstanceIDBridgeJni.get().didGetCreationTime(
mNativeInstanceIDAndroid, InstanceIDBridge.this, requestId, creationTime);
} }
}.execute(); }.execute();
} }
...@@ -131,7 +134,8 @@ public class InstanceIDBridge { ...@@ -131,7 +134,8 @@ public class InstanceIDBridge {
} }
@Override @Override
protected void sendResultToNative(String token) { protected void sendResultToNative(String token) {
nativeDidGetToken(mNativeInstanceIDAndroid, requestId, token); InstanceIDBridgeJni.get().didGetToken(
mNativeInstanceIDAndroid, InstanceIDBridge.this, requestId, token);
} }
}.execute(); }.execute();
} }
...@@ -161,7 +165,8 @@ public class InstanceIDBridge { ...@@ -161,7 +165,8 @@ public class InstanceIDBridge {
} }
@Override @Override
protected void sendResultToNative(Boolean success) { protected void sendResultToNative(Boolean success) {
nativeDidDeleteToken(mNativeInstanceIDAndroid, requestId, success); InstanceIDBridgeJni.get().didDeleteToken(
mNativeInstanceIDAndroid, InstanceIDBridge.this, requestId, success);
} }
}.execute(); }.execute();
} }
...@@ -181,21 +186,12 @@ public class InstanceIDBridge { ...@@ -181,21 +186,12 @@ public class InstanceIDBridge {
} }
@Override @Override
protected void sendResultToNative(Boolean success) { protected void sendResultToNative(Boolean success) {
nativeDidDeleteID(mNativeInstanceIDAndroid, requestId, success); InstanceIDBridgeJni.get().didDeleteID(
mNativeInstanceIDAndroid, InstanceIDBridge.this, requestId, success);
} }
}.execute(); }.execute();
} }
private native void nativeDidGetID(long nativeInstanceIDAndroid, int requestId, String id);
private native void nativeDidGetCreationTime(
long nativeInstanceIDAndroid, int requestId, long creationTime);
private native void nativeDidGetToken(
long nativeInstanceIDAndroid, int requestId, String token);
private native void nativeDidDeleteToken(
long nativeInstanceIDAndroid, int requestId, boolean success);
private native void nativeDidDeleteID(
long nativeInstanceIDAndroid, int requestId, boolean success);
/** /**
* Custom {@link AsyncTask} wrapper. As usual, this performs work on a background thread, then * Custom {@link AsyncTask} wrapper. As usual, this performs work on a background thread, then
* sends the result back on the UI thread. Key differences: * sends the result back on the UI thread. Key differences:
...@@ -243,4 +239,18 @@ public class InstanceIDBridge { ...@@ -243,4 +239,18 @@ public class InstanceIDBridge {
} }
} }
} }
@NativeMethods
interface Natives {
void didGetID(
long nativeInstanceIDAndroid, InstanceIDBridge caller, int requestId, String id);
void didGetCreationTime(long nativeInstanceIDAndroid, InstanceIDBridge caller,
int requestId, long creationTime);
void didGetToken(
long nativeInstanceIDAndroid, InstanceIDBridge caller, int requestId, String token);
void didDeleteToken(long nativeInstanceIDAndroid, InstanceIDBridge caller, int requestId,
boolean success);
void didDeleteID(long nativeInstanceIDAndroid, InstanceIDBridge caller, int requestId,
boolean success);
}
} }
...@@ -238,6 +238,7 @@ if (is_android) { ...@@ -238,6 +238,7 @@ if (is_android) {
deps = [ deps = [
":proto_java", ":proto_java",
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/sync/android:sync_java", "//components/sync/android:sync_java",
"//third_party/android_deps:com_google_protobuf_protobuf_lite_java", "//third_party/android_deps:com_google_protobuf_protobuf_lite_java",
...@@ -245,6 +246,7 @@ if (is_android) { ...@@ -245,6 +246,7 @@ if (is_android) {
"//third_party/cacheinvalidation:cacheinvalidation_proto_java", "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
"//third_party/jsr-305:jsr_305_javalib", "//third_party/jsr-305:jsr_305_javalib",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"android/java/src/org/chromium/components/invalidation/InvalidationClientService.java", "android/java/src/org/chromium/components/invalidation/InvalidationClientService.java",
"android/java/src/org/chromium/components/invalidation/InvalidationService.java", "android/java/src/org/chromium/components/invalidation/InvalidationService.java",
......
...@@ -16,6 +16,7 @@ import org.chromium.base.ThreadUtils; ...@@ -16,6 +16,7 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.sync.notifier.InvalidationClientNameProvider; import org.chromium.components.sync.notifier.InvalidationClientNameProvider;
import org.chromium.components.sync.notifier.InvalidationIntentProtocol; import org.chromium.components.sync.notifier.InvalidationIntentProtocol;
import org.chromium.components.sync.notifier.InvalidationPreferences; import org.chromium.components.sync.notifier.InvalidationPreferences;
...@@ -38,8 +39,8 @@ public class InvalidationService { ...@@ -38,8 +39,8 @@ public class InvalidationService {
public void notifyInvalidationToNativeChrome( public void notifyInvalidationToNativeChrome(
int objectSource, String objectId, long version, String payload) { int objectSource, String objectId, long version, String payload) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
nativeInvalidate( InvalidationServiceJni.get().invalidate(mNativeInvalidationServiceAndroid,
mNativeInvalidationServiceAndroid, objectSource, objectId, version, payload); InvalidationService.this, objectSource, objectId, version, payload);
} }
public void requestSyncFromNativeChromeForAllTypes() { public void requestSyncFromNativeChromeForAllTypes() {
...@@ -97,6 +98,9 @@ public class InvalidationService { ...@@ -97,6 +98,9 @@ public class InvalidationService {
return InvalidationClientNameProvider.get().getInvalidatorClientName(); return InvalidationClientNameProvider.get().getInvalidatorClientName();
} }
private native void nativeInvalidate(long nativeInvalidationServiceAndroid, int objectSource, @NativeMethods
String objectId, long version, String payload); interface Natives {
void invalidate(long nativeInvalidationServiceAndroid, InvalidationService caller,
int objectSource, String objectId, long version, String payload);
}
} }
...@@ -32,5 +32,7 @@ android_library("language_bridge_java") { ...@@ -32,5 +32,7 @@ android_library("language_bridge_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.components.language; package org.chromium.components.language;
import org.chromium.base.annotations.NativeMethods;
/** /**
* A bridge to language metrics functions that require access to native code. * A bridge to language metrics functions that require access to native code.
...@@ -15,9 +16,12 @@ public class AndroidLanguageMetricsBridge { ...@@ -15,9 +16,12 @@ public class AndroidLanguageMetricsBridge {
* @param added True if the language was added, false if it was removed. * @param added True if the language was added, false if it was removed.
*/ */
public static void reportExplicitLanguageAskStateChanged(String language, boolean added) { public static void reportExplicitLanguageAskStateChanged(String language, boolean added) {
nativeReportExplicitLanguageAskStateChanged(language, added); AndroidLanguageMetricsBridgeJni.get().reportExplicitLanguageAskStateChanged(
language, added);
} }
private static native void nativeReportExplicitLanguageAskStateChanged( @NativeMethods
String language, boolean added); interface Natives {
void reportExplicitLanguageAskStateChanged(String language, boolean added);
}
} }
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.language; package org.chromium.components.language;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
...@@ -19,7 +20,7 @@ public class GeoLanguageProviderBridge { ...@@ -19,7 +20,7 @@ public class GeoLanguageProviderBridge {
*/ */
public static LinkedHashSet<String> getCurrentGeoLanguages() { public static LinkedHashSet<String> getCurrentGeoLanguages() {
LinkedHashSet<String> set = new LinkedHashSet<String>(); LinkedHashSet<String> set = new LinkedHashSet<String>();
nativeGetCurrentGeoLanguages(set); GeoLanguageProviderBridgeJni.get().getCurrentGeoLanguages(set);
return set; return set;
} }
...@@ -28,5 +29,8 @@ public class GeoLanguageProviderBridge { ...@@ -28,5 +29,8 @@ public class GeoLanguageProviderBridge {
languages.add(languageCode); languages.add(languageCode);
} }
private static native void nativeGetCurrentGeoLanguages(LinkedHashSet<String> set); @NativeMethods
interface Natives {
void getCurrentGeoLanguages(LinkedHashSet<String> set);
}
} }
...@@ -29,6 +29,7 @@ static_library("minidump_uploader") { ...@@ -29,6 +29,7 @@ static_library("minidump_uploader") {
android_library("minidump_uploader_java") { android_library("minidump_uploader_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
] ]
...@@ -45,6 +46,7 @@ android_library("minidump_uploader_java") { ...@@ -45,6 +46,7 @@ android_library("minidump_uploader_java") {
"android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java", "android/java/src/org/chromium/components/minidump_uploader/util/HttpURLConnectionFactoryImpl.java",
"android/java/src/org/chromium/components/minidump_uploader/util/NetworkPermissionUtil.java", "android/java/src/org/chromium/components/minidump_uploader/util/NetworkPermissionUtil.java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
android_library("minidump_uploader_javatests") { android_library("minidump_uploader_javatests") {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.minidump_uploader; package org.chromium.components.minidump_uploader;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
...@@ -27,7 +28,8 @@ public class CrashReportMimeWriter { ...@@ -27,7 +28,8 @@ public class CrashReportMimeWriter {
* @param destDir The directory in which to write the MIME files. * @param destDir The directory in which to write the MIME files.
*/ */
public static void rewriteMinidumpsAsMIMEs(File srcDir, File destDir) { public static void rewriteMinidumpsAsMIMEs(File srcDir, File destDir) {
nativeRewriteMinidumpsAsMIMEs(srcDir.getAbsolutePath(), destDir.getAbsolutePath()); CrashReportMimeWriterJni.get().rewriteMinidumpsAsMIMEs(
srcDir.getAbsolutePath(), destDir.getAbsolutePath());
} }
/* /*
...@@ -41,8 +43,9 @@ public class CrashReportMimeWriter { ...@@ -41,8 +43,9 @@ public class CrashReportMimeWriter {
*/ */
public static Map<String, Map<String, String>> rewriteMinidumpsAsMIMEsAndGetCrashKeys( public static Map<String, Map<String, String>> rewriteMinidumpsAsMIMEsAndGetCrashKeys(
File srcDir, File destDir) { File srcDir, File destDir) {
String[] crashesKeyValueArr = nativeRewriteMinidumpsAsMIMEsAndGetCrashKeys( String[] crashesKeyValueArr =
srcDir.getAbsolutePath(), destDir.getAbsolutePath()); CrashReportMimeWriterJni.get().rewriteMinidumpsAsMIMEsAndGetCrashKeys(
srcDir.getAbsolutePath(), destDir.getAbsolutePath());
Map<String, Map<String, String>> crashesInfoMap = new HashMap<>(); Map<String, Map<String, String>> crashesInfoMap = new HashMap<>();
Map<String, String> lastCrashInfo = new HashMap<>(); Map<String, String> lastCrashInfo = new HashMap<>();
// Keys and values for all crash files are flattened in a String array. Each key is followed // Keys and values for all crash files are flattened in a String array. Each key is followed
...@@ -65,7 +68,9 @@ public class CrashReportMimeWriter { ...@@ -65,7 +68,9 @@ public class CrashReportMimeWriter {
return crashesInfoMap; return crashesInfoMap;
} }
private static native void nativeRewriteMinidumpsAsMIMEs(String srcDir, String destDir); @NativeMethods
private static native String[] nativeRewriteMinidumpsAsMIMEsAndGetCrashKeys( interface Natives {
String srcDir, String destDir); void rewriteMinidumpsAsMIMEs(String srcDir, String destDir);
String[] rewriteMinidumpsAsMIMEsAndGetCrashKeys(String srcDir, String destDir);
}
} }
...@@ -91,11 +91,13 @@ if (is_android) { ...@@ -91,11 +91,13 @@ if (is_android) {
"android/java/src/org/chromium/components/offline_items_collection/UpdateDelta.java", "android/java/src/org/chromium/components/offline_items_collection/UpdateDelta.java",
"android/java/src/org/chromium/components/offline_items_collection/VisualsCallback.java", "android/java/src/org/chromium/components/offline_items_collection/VisualsCallback.java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
srcjar_deps = [ ":jni_enums" ] srcjar_deps = [ ":jni_enums" ]
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
] ]
} }
......
...@@ -10,6 +10,7 @@ import org.chromium.base.Callback; ...@@ -10,6 +10,7 @@ import org.chromium.base.Callback;
import org.chromium.base.ObserverList; import org.chromium.base.ObserverList;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -40,62 +41,72 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider { ...@@ -40,62 +41,72 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider {
@Override @Override
public void openItem(@LaunchLocation int location, ContentId id) { public void openItem(@LaunchLocation int location, ContentId id) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativeOpenItem(mNativeOfflineContentAggregatorBridge, location, id.namespace, id.id); OfflineContentAggregatorBridgeJni.get().openItem(mNativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge.this, location, id.namespace, id.id);
} }
@Override @Override
public void removeItem(ContentId id) { public void removeItem(ContentId id) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativeRemoveItem(mNativeOfflineContentAggregatorBridge, id.namespace, id.id); OfflineContentAggregatorBridgeJni.get().removeItem(mNativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge.this, id.namespace, id.id);
} }
@Override @Override
public void cancelDownload(ContentId id) { public void cancelDownload(ContentId id) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativeCancelDownload(mNativeOfflineContentAggregatorBridge, id.namespace, id.id); OfflineContentAggregatorBridgeJni.get().cancelDownload(
mNativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge.this,
id.namespace, id.id);
} }
@Override @Override
public void pauseDownload(ContentId id) { public void pauseDownload(ContentId id) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativePauseDownload(mNativeOfflineContentAggregatorBridge, id.namespace, id.id); OfflineContentAggregatorBridgeJni.get().pauseDownload(mNativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge.this, id.namespace, id.id);
} }
@Override @Override
public void resumeDownload(ContentId id, boolean hasUserGesture) { public void resumeDownload(ContentId id, boolean hasUserGesture) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativeResumeDownload( OfflineContentAggregatorBridgeJni.get().resumeDownload(
mNativeOfflineContentAggregatorBridge, id.namespace, id.id, hasUserGesture); mNativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge.this,
id.namespace, id.id, hasUserGesture);
} }
@Override @Override
public void getItemById(ContentId id, Callback<OfflineItem> callback) { public void getItemById(ContentId id, Callback<OfflineItem> callback) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativeGetItemById(mNativeOfflineContentAggregatorBridge, id.namespace, id.id, callback); OfflineContentAggregatorBridgeJni.get().getItemById(mNativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge.this, id.namespace, id.id, callback);
} }
@Override @Override
public void getAllItems(Callback<ArrayList<OfflineItem>> callback) { public void getAllItems(Callback<ArrayList<OfflineItem>> callback) {
if (mNativeOfflineContentAggregatorBridge == 0) return; if (mNativeOfflineContentAggregatorBridge == 0) return;
nativeGetAllItems(mNativeOfflineContentAggregatorBridge, callback); OfflineContentAggregatorBridgeJni.get().getAllItems(mNativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge.this, callback);
} }
@Override @Override
public void getVisualsForItem(ContentId id, VisualsCallback callback) { public void getVisualsForItem(ContentId id, VisualsCallback callback) {
nativeGetVisualsForItem( OfflineContentAggregatorBridgeJni.get().getVisualsForItem(
mNativeOfflineContentAggregatorBridge, id.namespace, id.id, callback); mNativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge.this,
id.namespace, id.id, callback);
} }
@Override @Override
public void getShareInfoForItem(ContentId id, ShareCallback callback) { public void getShareInfoForItem(ContentId id, ShareCallback callback) {
nativeGetShareInfoForItem( OfflineContentAggregatorBridgeJni.get().getShareInfoForItem(
mNativeOfflineContentAggregatorBridge, id.namespace, id.id, callback); mNativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge.this,
id.namespace, id.id, callback);
} }
@Override @Override
public void renameItem(ContentId id, String name, Callback</*RenameResult*/ Integer> callback) { public void renameItem(ContentId id, String name, Callback</*RenameResult*/ Integer> callback) {
nativeRenameItem( OfflineContentAggregatorBridgeJni.get().renameItem(mNativeOfflineContentAggregatorBridge,
mNativeOfflineContentAggregatorBridge, id.namespace, id.id, name, callback); OfflineContentAggregatorBridge.this, id.namespace, id.id, name, callback);
} }
@Override @Override
...@@ -168,25 +179,34 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider { ...@@ -168,25 +179,34 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider {
return new OfflineContentAggregatorBridge(nativeOfflineContentAggregatorBridge); return new OfflineContentAggregatorBridge(nativeOfflineContentAggregatorBridge);
} }
// Methods called to C++ via JNI. @NativeMethods
private native void nativeOpenItem(long nativeOfflineContentAggregatorBridge, interface Natives {
@LaunchLocation int location, String nameSpace, String id); void openItem(long nativeOfflineContentAggregatorBridge,
private native void nativeRemoveItem( OfflineContentAggregatorBridge caller, @LaunchLocation int location,
long nativeOfflineContentAggregatorBridge, String nameSpace, String id); String nameSpace, String id);
private native void nativeCancelDownload(
long nativeOfflineContentAggregatorBridge, String nameSpace, String id); void removeItem(long nativeOfflineContentAggregatorBridge,
private native void nativePauseDownload( OfflineContentAggregatorBridge caller, String nameSpace, String id);
long nativeOfflineContentAggregatorBridge, String nameSpace, String id); void cancelDownload(long nativeOfflineContentAggregatorBridge,
private native void nativeResumeDownload(long nativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge caller, String nameSpace, String id);
String nameSpace, String id, boolean hasUserGesture); void pauseDownload(long nativeOfflineContentAggregatorBridge,
private native void nativeGetItemById(long nativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge caller, String nameSpace, String id);
String nameSpace, String id, Callback<OfflineItem> callback); void resumeDownload(long nativeOfflineContentAggregatorBridge,
private native void nativeGetAllItems( OfflineContentAggregatorBridge caller, String nameSpace, String id,
long nativeOfflineContentAggregatorBridge, Callback<ArrayList<OfflineItem>> callback); boolean hasUserGesture);
private native void nativeGetVisualsForItem(long nativeOfflineContentAggregatorBridge, void getItemById(long nativeOfflineContentAggregatorBridge,
String nameSpace, String id, VisualsCallback callback); OfflineContentAggregatorBridge caller, String nameSpace, String id,
private native void nativeGetShareInfoForItem(long nativeOfflineContentAggregatorBridge, Callback<OfflineItem> callback);
String nameSpace, String id, ShareCallback callback); void getAllItems(long nativeOfflineContentAggregatorBridge,
private native void nativeRenameItem(long nativeOfflineContentAggregatorBridge, OfflineContentAggregatorBridge caller, Callback<ArrayList<OfflineItem>> callback);
String nameSpace, String id, String name, Callback</*RenameResult*/ Integer> callback); void getVisualsForItem(long nativeOfflineContentAggregatorBridge,
} OfflineContentAggregatorBridge caller, String nameSpace, String id,
\ No newline at end of file VisualsCallback callback);
void getShareInfoForItem(long nativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge caller, String nameSpace, String id,
ShareCallback callback);
void renameItem(long nativeOfflineContentAggregatorBridge,
OfflineContentAggregatorBridge caller, String nameSpace, String id, String name,
Callback</*RenameResult*/ Integer> callback);
}
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.payments; package org.chromium.components.payments;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.util.Locale; import java.util.Locale;
...@@ -33,21 +34,22 @@ public class CurrencyFormatter { ...@@ -33,21 +34,22 @@ public class CurrencyFormatter {
// Note that this pointer could leak the native object. The called must call destroy() to // Note that this pointer could leak the native object. The called must call destroy() to
// ensure that the native object is destroyed. // ensure that the native object is destroyed.
mCurrencyFormatterAndroid = mCurrencyFormatterAndroid = CurrencyFormatterJni.get().initCurrencyFormatterAndroid(
nativeInitCurrencyFormatterAndroid(currencyCode, userLocale.toString()); CurrencyFormatter.this, currencyCode, userLocale.toString());
} }
/** Will destroy the native object. This class shouldn't be used afterwards. */ /** Will destroy the native object. This class shouldn't be used afterwards. */
public void destroy() { public void destroy() {
if (mCurrencyFormatterAndroid != 0) { if (mCurrencyFormatterAndroid != 0) {
nativeDestroy(mCurrencyFormatterAndroid); CurrencyFormatterJni.get().destroy(mCurrencyFormatterAndroid, CurrencyFormatter.this);
mCurrencyFormatterAndroid = 0; mCurrencyFormatterAndroid = 0;
} }
} }
/** @return The currency code formatted for display. */ /** @return The currency code formatted for display. */
public String getFormattedCurrencyCode() { public String getFormattedCurrencyCode() {
return nativeGetFormattedCurrencyCode(mCurrencyFormatterAndroid); return CurrencyFormatterJni.get().getFormattedCurrencyCode(
mCurrencyFormatterAndroid, CurrencyFormatter.this);
} }
/** /**
...@@ -63,11 +65,18 @@ public class CurrencyFormatter { ...@@ -63,11 +65,18 @@ public class CurrencyFormatter {
public String format(String amountValue) { public String format(String amountValue) {
assert amountValue != null : "amountValue should not be null"; assert amountValue != null : "amountValue should not be null";
return nativeFormat(mCurrencyFormatterAndroid, amountValue); return CurrencyFormatterJni.get().format(
mCurrencyFormatterAndroid, CurrencyFormatter.this, amountValue);
} }
private native long nativeInitCurrencyFormatterAndroid(String currencyCode, String localeName); @NativeMethods
private native void nativeDestroy(long nativeCurrencyFormatterAndroid); interface Natives {
private native String nativeFormat(long nativeCurrencyFormatterAndroid, String amountValue); long initCurrencyFormatterAndroid(
private native String nativeGetFormattedCurrencyCode(long nativeCurrencyFormatterAndroid); CurrencyFormatter caller, String currencyCode, String localeName);
void destroy(long nativeCurrencyFormatterAndroid, CurrencyFormatter caller);
String format(
long nativeCurrencyFormatterAndroid, CurrencyFormatter caller, String amountValue);
String getFormattedCurrencyCode(
long nativeCurrencyFormatterAndroid, CurrencyFormatter caller);
}
} }
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.payments; package org.chromium.components.payments;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
/** Helper for origin security. */ /** Helper for origin security. */
@JNINamespace("payments") @JNINamespace("payments")
...@@ -17,7 +18,7 @@ public class OriginSecurityChecker { ...@@ -17,7 +18,7 @@ public class OriginSecurityChecker {
* @return Whether the origin of the URL is secure. * @return Whether the origin of the URL is secure.
*/ */
public static boolean isOriginSecure(String url) { public static boolean isOriginSecure(String url) {
return nativeIsOriginSecure(url); return OriginSecurityCheckerJni.get().isOriginSecure(url);
} }
/** /**
...@@ -27,11 +28,14 @@ public class OriginSecurityChecker { ...@@ -27,11 +28,14 @@ public class OriginSecurityChecker {
* @return Whether the scheme of the URL is cryptographic. * @return Whether the scheme of the URL is cryptographic.
*/ */
public static boolean isSchemeCryptographic(String url) { public static boolean isSchemeCryptographic(String url) {
return nativeIsSchemeCryptographic(url); return OriginSecurityCheckerJni.get().isSchemeCryptographic(url);
} }
private OriginSecurityChecker() {} private OriginSecurityChecker() {}
private static native boolean nativeIsOriginSecure(String url); @NativeMethods
private static native boolean nativeIsSchemeCryptographic(String url); interface Natives {
boolean isOriginSecure(String url);
boolean isSchemeCryptographic(String url);
}
} }
...@@ -7,6 +7,7 @@ package org.chromium.components.payments; ...@@ -7,6 +7,7 @@ package org.chromium.components.payments;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import java.net.URI; import java.net.URI;
...@@ -55,7 +56,7 @@ public class PaymentManifestDownloader { ...@@ -55,7 +56,7 @@ public class PaymentManifestDownloader {
public void initialize(WebContents webContents) { public void initialize(WebContents webContents) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativeObject == 0; assert mNativeObject == 0;
mNativeObject = nativeInit(webContents); mNativeObject = PaymentManifestDownloaderJni.get().init(webContents);
} }
/** @return Whether the native downloader is initialized. */ /** @return Whether the native downloader is initialized. */
...@@ -73,7 +74,8 @@ public class PaymentManifestDownloader { ...@@ -73,7 +74,8 @@ public class PaymentManifestDownloader {
public void downloadPaymentMethodManifest(URI methodName, ManifestDownloadCallback callback) { public void downloadPaymentMethodManifest(URI methodName, ManifestDownloadCallback callback) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativeObject != 0; assert mNativeObject != 0;
nativeDownloadPaymentMethodManifest(mNativeObject, methodName, callback); PaymentManifestDownloaderJni.get().downloadPaymentMethodManifest(
mNativeObject, PaymentManifestDownloader.this, methodName, callback);
} }
/** /**
...@@ -85,14 +87,15 @@ public class PaymentManifestDownloader { ...@@ -85,14 +87,15 @@ public class PaymentManifestDownloader {
public void downloadWebAppManifest(URI webAppManifestUri, ManifestDownloadCallback callback) { public void downloadWebAppManifest(URI webAppManifestUri, ManifestDownloadCallback callback) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativeObject != 0; assert mNativeObject != 0;
nativeDownloadWebAppManifest(mNativeObject, webAppManifestUri, callback); PaymentManifestDownloaderJni.get().downloadWebAppManifest(
mNativeObject, PaymentManifestDownloader.this, webAppManifestUri, callback);
} }
/** Destroys the native downloader. */ /** Destroys the native downloader. */
public void destroy() { public void destroy() {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativeObject != 0; assert mNativeObject != 0;
nativeDestroy(mNativeObject); PaymentManifestDownloaderJni.get().destroy(mNativeObject, PaymentManifestDownloader.this);
mNativeObject = 0; mNativeObject = 0;
} }
...@@ -101,11 +104,15 @@ public class PaymentManifestDownloader { ...@@ -101,11 +104,15 @@ public class PaymentManifestDownloader {
return methodName.toString(); return methodName.toString();
} }
private static native long nativeInit(WebContents webContents); @NativeMethods
private native void nativeDownloadPaymentMethodManifest( interface Natives {
long nativePaymentManifestDownloaderAndroid, URI methodName, long init(WebContents webContents);
ManifestDownloadCallback callback); void downloadPaymentMethodManifest(long nativePaymentManifestDownloaderAndroid,
private native void nativeDownloadWebAppManifest(long nativePaymentManifestDownloaderAndroid, PaymentManifestDownloader caller, URI methodName,
URI webAppManifestUri, ManifestDownloadCallback callback); ManifestDownloadCallback callback);
private native void nativeDestroy(long nativePaymentManifestDownloaderAndroid); void downloadWebAppManifest(long nativePaymentManifestDownloaderAndroid,
PaymentManifestDownloader caller, URI webAppManifestUri,
ManifestDownloadCallback callback);
void destroy(long nativePaymentManifestDownloaderAndroid, PaymentManifestDownloader caller);
}
} }
...@@ -7,6 +7,7 @@ package org.chromium.components.payments; ...@@ -7,6 +7,7 @@ package org.chromium.components.payments;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import java.net.URI; import java.net.URI;
...@@ -53,14 +54,16 @@ public class PaymentManifestParser { ...@@ -53,14 +54,16 @@ public class PaymentManifestParser {
public void createNative(WebContents webContents) { public void createNative(WebContents webContents) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativePaymentManifestParserAndroid == 0; assert mNativePaymentManifestParserAndroid == 0;
mNativePaymentManifestParserAndroid = nativeCreatePaymentManifestParserAndroid(webContents); mNativePaymentManifestParserAndroid =
PaymentManifestParserJni.get().createPaymentManifestParserAndroid(webContents);
} }
/** Releases the resources held by the native side. */ /** Releases the resources held by the native side. */
public void destroyNative() { public void destroyNative() {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativePaymentManifestParserAndroid != 0; assert mNativePaymentManifestParserAndroid != 0;
nativeDestroyPaymentManifestParserAndroid(mNativePaymentManifestParserAndroid); PaymentManifestParserJni.get().destroyPaymentManifestParserAndroid(
mNativePaymentManifestParserAndroid);
mNativePaymentManifestParserAndroid = 0; mNativePaymentManifestParserAndroid = 0;
} }
...@@ -79,7 +82,8 @@ public class PaymentManifestParser { ...@@ -79,7 +82,8 @@ public class PaymentManifestParser {
public void parsePaymentMethodManifest(String content, ManifestParseCallback callback) { public void parsePaymentMethodManifest(String content, ManifestParseCallback callback) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativePaymentManifestParserAndroid != 0; assert mNativePaymentManifestParserAndroid != 0;
nativeParsePaymentMethodManifest(mNativePaymentManifestParserAndroid, content, callback); PaymentManifestParserJni.get().parsePaymentMethodManifest(
mNativePaymentManifestParserAndroid, content, callback);
} }
/** /**
...@@ -91,7 +95,8 @@ public class PaymentManifestParser { ...@@ -91,7 +95,8 @@ public class PaymentManifestParser {
public void parseWebAppManifest(String content, ManifestParseCallback callback) { public void parseWebAppManifest(String content, ManifestParseCallback callback) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert mNativePaymentManifestParserAndroid != 0; assert mNativePaymentManifestParserAndroid != 0;
nativeParseWebAppManifest(mNativePaymentManifestParserAndroid, content, callback); PaymentManifestParserJni.get().parseWebAppManifest(
mNativePaymentManifestParserAndroid, content, callback);
} }
@CalledByNative @CalledByNative
...@@ -126,12 +131,13 @@ public class PaymentManifestParser { ...@@ -126,12 +131,13 @@ public class PaymentManifestParser {
manifest[sectionIndex].fingerprints[fingerprintIndex] = fingerprint; manifest[sectionIndex].fingerprints[fingerprintIndex] = fingerprint;
} }
private static native long nativeCreatePaymentManifestParserAndroid(WebContents webContents); @NativeMethods
private static native void nativeDestroyPaymentManifestParserAndroid( interface Natives {
long nativePaymentManifestParserAndroid); long createPaymentManifestParserAndroid(WebContents webContents);
private static native void nativeParsePaymentMethodManifest( void destroyPaymentManifestParserAndroid(long nativePaymentManifestParserAndroid);
long nativePaymentManifestParserAndroid, String content, void parsePaymentMethodManifest(long nativePaymentManifestParserAndroid, String content,
ManifestParseCallback callback); ManifestParseCallback callback);
private static native void nativeParseWebAppManifest(long nativePaymentManifestParserAndroid, void parseWebAppManifest(long nativePaymentManifestParserAndroid, String content,
String content, ManifestParseCallback callback); ManifestParseCallback callback);
}
} }
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.payments; package org.chromium.components.payments;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.payments.mojom.PaymentDetails; import org.chromium.payments.mojom.PaymentDetails;
import org.chromium.payments.mojom.PaymentValidationErrors; import org.chromium.payments.mojom.PaymentValidationErrors;
...@@ -19,16 +20,19 @@ public class PaymentValidator { ...@@ -19,16 +20,19 @@ public class PaymentValidator {
if (details == null) { if (details == null) {
return false; return false;
} }
return nativeValidatePaymentDetailsAndroid(details.serialize()); return PaymentValidatorJni.get().validatePaymentDetailsAndroid(details.serialize());
} }
public static boolean validatePaymentValidationErrors(PaymentValidationErrors errors) { public static boolean validatePaymentValidationErrors(PaymentValidationErrors errors) {
if (errors == null) { if (errors == null) {
return false; return false;
} }
return nativeValidatePaymentValidationErrorsAndroid(errors.serialize()); return PaymentValidatorJni.get().validatePaymentValidationErrorsAndroid(errors.serialize());
} }
private static native boolean nativeValidatePaymentDetailsAndroid(ByteBuffer buffer); @NativeMethods
private static native boolean nativeValidatePaymentValidationErrorsAndroid(ByteBuffer buffer); interface Natives {
boolean validatePaymentDetailsAndroid(ByteBuffer buffer);
boolean validatePaymentValidationErrorsAndroid(ByteBuffer buffer);
}
}; };
...@@ -12,7 +12,10 @@ _jni_sources = [ ...@@ -12,7 +12,10 @@ _jni_sources = [
android_library("policy_java") { android_library("policy_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = java_files =
_jni_sources + [ _jni_sources + [
"java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java", "java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java",
......
...@@ -8,8 +8,10 @@ import("//build/config/android/rules.gni") ...@@ -8,8 +8,10 @@ import("//build/config/android/rules.gni")
android_library("safe_browsing_java") { android_library("safe_browsing_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/safe_browsing/SafeBrowsingApiBridge.java", "java/src/org/chromium/components/safe_browsing/SafeBrowsingApiBridge.java",
"java/src/org/chromium/components/safe_browsing/SafeBrowsingApiHandler.java", "java/src/org/chromium/components/safe_browsing/SafeBrowsingApiHandler.java",
......
...@@ -7,6 +7,7 @@ package org.chromium.components.safe_browsing; ...@@ -7,6 +7,7 @@ package org.chromium.components.safe_browsing;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
...@@ -53,9 +54,10 @@ public final class SafeBrowsingApiBridge { ...@@ -53,9 +54,10 @@ public final class SafeBrowsingApiBridge {
@Override @Override
public void onUrlCheckDone( public void onUrlCheckDone(
long callbackId, int resultStatus, String metadata, long checkDelta) { long callbackId, int resultStatus, String metadata, long checkDelta) {
nativeOnUrlCheckDone(callbackId, resultStatus, metadata, checkDelta); SafeBrowsingApiBridgeJni.get().onUrlCheckDone(
callbackId, resultStatus, metadata, checkDelta);
} }
}, nativeAreLocalBlacklistsEnabled()); }, SafeBrowsingApiBridgeJni.get().areLocalBlacklistsEnabled());
return initSuccesssful ? handler : null; return initSuccesssful ? handler : null;
} }
...@@ -97,13 +99,15 @@ public final class SafeBrowsingApiBridge { ...@@ -97,13 +99,15 @@ public final class SafeBrowsingApiBridge {
return matched; return matched;
} }
private static native boolean nativeAreLocalBlacklistsEnabled();
private static native void nativeOnUrlCheckDone(
long callbackId, int resultStatus, String metadata, long checkDelta);
// Histograms // Histograms
private static void recordAllowlistLookupTimeInMs(long lookupTimeInMs) { private static void recordAllowlistLookupTimeInMs(long lookupTimeInMs) {
RecordHistogram.recordTimesHistogram( RecordHistogram.recordTimesHistogram(
"SB2.RemoteCall.LocalAllowlistLookupTime", lookupTimeInMs); "SB2.RemoteCall.LocalAllowlistLookupTime", lookupTimeInMs);
} }
@NativeMethods
interface Natives {
boolean areLocalBlacklistsEnabled();
void onUrlCheckDone(long callbackId, int resultStatus, String metadata, long checkDelta);
}
} }
...@@ -7,8 +7,10 @@ import("//build/config/android/rules.gni") ...@@ -7,8 +7,10 @@ import("//build/config/android/rules.gni")
android_library("java") { android_library("java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//content/public/android:content_java", "//content/public/android:content_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/search_engines/TemplateUrl.java", "java/src/org/chromium/components/search_engines/TemplateUrl.java",
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
package org.chromium.components.search_engines; package org.chromium.components.search_engines;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import java.util.Locale; import java.util.Locale;
...@@ -28,7 +29,7 @@ public class TemplateUrl { ...@@ -28,7 +29,7 @@ public class TemplateUrl {
* @return The name of the search engine. * @return The name of the search engine.
*/ */
public String getShortName() { public String getShortName() {
return nativeGetShortName(mTemplateUrlPtr); return TemplateUrlJni.get().getShortName(mTemplateUrlPtr);
} }
/** /**
...@@ -36,21 +37,21 @@ public class TemplateUrl { ...@@ -36,21 +37,21 @@ public class TemplateUrl {
* non-zero, for custom search engines, it will return 0. * non-zero, for custom search engines, it will return 0.
*/ */
public int getPrepopulatedId() { public int getPrepopulatedId() {
return nativeGetPrepopulatedId(mTemplateUrlPtr); return TemplateUrlJni.get().getPrepopulatedId(mTemplateUrlPtr);
} }
/** /**
* @return Whether a search engine is prepopulated or created by policy. * @return Whether a search engine is prepopulated or created by policy.
*/ */
public boolean getIsPrepopulated() { public boolean getIsPrepopulated() {
return nativeIsPrepopulatedOrCreatedByPolicy(mTemplateUrlPtr); return TemplateUrlJni.get().isPrepopulatedOrCreatedByPolicy(mTemplateUrlPtr);
} }
/** /**
* @return The keyword of the search engine. * @return The keyword of the search engine.
*/ */
public String getKeyword() { public String getKeyword() {
return nativeGetKeyword(mTemplateUrlPtr); return TemplateUrlJni.get().getKeyword(mTemplateUrlPtr);
} }
/** /**
...@@ -58,7 +59,7 @@ public class TemplateUrl { ...@@ -58,7 +59,7 @@ public class TemplateUrl {
* return 0. * return 0.
*/ */
public long getLastVisitedTime() { public long getLastVisitedTime() {
return nativeGetLastVisitedTime(mTemplateUrlPtr); return TemplateUrlJni.get().getLastVisitedTime(mTemplateUrlPtr);
} }
/** /**
...@@ -66,7 +67,7 @@ public class TemplateUrl { ...@@ -66,7 +67,7 @@ public class TemplateUrl {
* prepopulated_engines.json. * prepopulated_engines.json.
*/ */
public String getURL() { public String getURL() {
return nativeGetURL(mTemplateUrlPtr); return TemplateUrlJni.get().getURL(mTemplateUrlPtr);
} }
@Override @Override
...@@ -84,10 +85,13 @@ public class TemplateUrl { ...@@ -84,10 +85,13 @@ public class TemplateUrl {
getKeyword(), getShortName(), getIsPrepopulated()); getKeyword(), getShortName(), getIsPrepopulated());
} }
private static native String nativeGetShortName(long templateUrlPtr); @NativeMethods
private static native String nativeGetKeyword(long templateUrlPtr); interface Natives {
private static native boolean nativeIsPrepopulatedOrCreatedByPolicy(long templateUrlPtr); String getShortName(long templateUrlPtr);
private static native long nativeGetLastVisitedTime(long templateUrlPtr); String getKeyword(long templateUrlPtr);
private static native int nativeGetPrepopulatedId(long templateUrlPtr); boolean isPrepopulatedOrCreatedByPolicy(long templateUrlPtr);
private static native String nativeGetURL(long templateUrlPtr); long getLastVisitedTime(long templateUrlPtr);
int getPrepopulatedId(long templateUrlPtr);
String getURL(long templateUrlPtr);
}
} }
...@@ -14,6 +14,7 @@ import org.chromium.base.ContextUtils; ...@@ -14,6 +14,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
/** /**
* ChildAccountInfoFetcher for the Android platform. * ChildAccountInfoFetcher for the Android platform.
...@@ -81,7 +82,8 @@ public final class ChildAccountInfoFetcher { ...@@ -81,7 +82,8 @@ public final class ChildAccountInfoFetcher {
private void setIsChildAccount(boolean isChildAccount) { private void setIsChildAccount(boolean isChildAccount) {
Log.d(TAG, "Setting child account status for %s to %s", mAccount.name, Log.d(TAG, "Setting child account status for %s to %s", mAccount.name,
Boolean.toString(isChildAccount)); Boolean.toString(isChildAccount));
nativeSetIsChildAccount(mNativeAccountFetcherService, mAccountId, isChildAccount); ChildAccountInfoFetcherJni.get().setIsChildAccount(
mNativeAccountFetcherService, mAccountId, isChildAccount);
} }
@CalledByNative @CalledByNative
...@@ -90,6 +92,9 @@ public final class ChildAccountInfoFetcher { ...@@ -90,6 +92,9 @@ public final class ChildAccountInfoFetcher {
AccountManagerFacade.overrideAccountManagerFacadeForTests(delegate); AccountManagerFacade.overrideAccountManagerFacadeForTests(delegate);
} }
private static native void nativeSetIsChildAccount( @NativeMethods
long accountFetcherServicePtr, String accountId, boolean isChildAccount); interface Natives {
void setIsChildAccount(
long accountFetcherServicePtr, String accountId, boolean isChildAccount);
}
} }
...@@ -16,6 +16,7 @@ import org.chromium.base.StrictModeContext; ...@@ -16,6 +16,7 @@ import org.chromium.base.StrictModeContext;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.task.AsyncTask; import org.chromium.base.task.AsyncTask;
import org.chromium.net.NetworkChangeNotifier; import org.chromium.net.NetworkChangeNotifier;
...@@ -134,19 +135,22 @@ public final class OAuth2TokenService ...@@ -134,19 +135,22 @@ public final class OAuth2TokenService
String username, String scope, final long nativeCallback) { String username, String scope, final long nativeCallback) {
Account account = getAccountOrNullFromUsername(username); Account account = getAccountOrNullFromUsername(username);
if (account == null) { if (account == null) {
ThreadUtils.postOnUiThread(() -> nativeOAuth2TokenFetched(null, false, nativeCallback)); ThreadUtils.postOnUiThread(()
-> OAuth2TokenServiceJni.get().oAuth2TokenFetched(
null, false, nativeCallback));
return; return;
} }
String oauth2Scope = OAUTH2_SCOPE_PREFIX + scope; String oauth2Scope = OAUTH2_SCOPE_PREFIX + scope;
getAccessToken(account, oauth2Scope, new GetAccessTokenCallback() { getAccessToken(account, oauth2Scope, new GetAccessTokenCallback() {
@Override @Override
public void onGetTokenSuccess(String token) { public void onGetTokenSuccess(String token) {
nativeOAuth2TokenFetched(token, false, nativeCallback); OAuth2TokenServiceJni.get().oAuth2TokenFetched(token, false, nativeCallback);
} }
@Override @Override
public void onGetTokenFailure(boolean isTransientError) { public void onGetTokenFailure(boolean isTransientError) {
nativeOAuth2TokenFetched(null, isTransientError, nativeCallback); OAuth2TokenServiceJni.get().oAuth2TokenFetched(
null, isTransientError, nativeCallback);
} }
}); });
} }
...@@ -282,7 +286,8 @@ public final class OAuth2TokenService ...@@ -282,7 +286,8 @@ public final class OAuth2TokenService
// change (re-signin or sign out signed-in account). // change (re-signin or sign out signed-in account).
currentlySignedInAccount = null; currentlySignedInAccount = null;
} }
nativeUpdateAccountList(mNativeOAuth2TokenServiceDelegate, currentlySignedInAccount); OAuth2TokenServiceJni.get().updateAccountList(mNativeOAuth2TokenServiceDelegate,
OAuth2TokenService.this, currentlySignedInAccount);
} }
private boolean isSignedInAccountChanged(String signedInAccountName) { private boolean isSignedInAccountChanged(String signedInAccountName) {
...@@ -391,8 +396,10 @@ public final class OAuth2TokenService ...@@ -391,8 +396,10 @@ public final class OAuth2TokenService
} }
} }
private static native void nativeOAuth2TokenFetched( @NativeMethods
String authToken, boolean isTransientError, long nativeCallback); interface Natives {
private native void nativeUpdateAccountList( void oAuth2TokenFetched(String authToken, boolean isTransientError, long nativeCallback);
long nativeOAuth2TokenServiceDelegateAndroid, String currentlySignedInAccount); void updateAccountList(long nativeOAuth2TokenServiceDelegateAndroid,
OAuth2TokenService caller, String currentlySignedInAccount);
}
} }
...@@ -13,7 +13,9 @@ generate_jni("jni_headers") { ...@@ -13,7 +13,9 @@ generate_jni("jni_headers") {
android_library("java") { android_library("java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ "java/src/org/chromium/components/spellcheck/SpellCheckerSessionBridge.java" ] java_files = [ "java/src/org/chromium/components/spellcheck/SpellCheckerSessionBridge.java" ]
} }
...@@ -15,6 +15,7 @@ import android.view.textservice.TextServicesManager; ...@@ -15,6 +15,7 @@ import android.view.textservice.TextServicesManager;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -136,7 +137,8 @@ public class SpellCheckerSessionBridge implements SpellCheckerSessionListener { ...@@ -136,7 +137,8 @@ public class SpellCheckerSessionBridge implements SpellCheckerSessionListener {
} }
} }
} }
nativeProcessSpellCheckResults(mNativeSpellCheckerSessionBridge, SpellCheckerSessionBridgeJni.get().processSpellCheckResults(
mNativeSpellCheckerSessionBridge, SpellCheckerSessionBridge.this,
convertListToArray(offsets), convertListToArray(lengths), convertListToArray(offsets), convertListToArray(lengths),
suggestions.toArray(new String[suggestions.size()][])); suggestions.toArray(new String[suggestions.size()][]));
...@@ -159,6 +161,10 @@ public class SpellCheckerSessionBridge implements SpellCheckerSessionListener { ...@@ -159,6 +161,10 @@ public class SpellCheckerSessionBridge implements SpellCheckerSessionListener {
@Override @Override
public void onGetSuggestions(SuggestionsInfo[] results) {} public void onGetSuggestions(SuggestionsInfo[] results) {}
private native void nativeProcessSpellCheckResults(long nativeSpellCheckerSessionBridge, @NativeMethods
int[] offsets, int[] lengths, String[][] suggestions); interface Natives {
void processSpellCheckResults(long nativeSpellCheckerSessionBridge,
SpellCheckerSessionBridge caller, int[] offsets, int[] lengths,
String[][] suggestions);
}
} }
...@@ -8,6 +8,7 @@ import("//build/config/android/rules.gni") ...@@ -8,6 +8,7 @@ import("//build/config/android/rules.gni")
android_library("sync_java") { android_library("sync_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//net/android:net_java", "//net/android:net_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
...@@ -16,6 +17,7 @@ android_library("sync_java") { ...@@ -16,6 +17,7 @@ android_library("sync_java") {
"//third_party/cacheinvalidation:cacheinvalidation_proto_java", "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
"//third_party/jsr-305:jsr_305_javalib", "//third_party/jsr-305:jsr_305_javalib",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
srcjar_deps = [ ":java_enums" ] srcjar_deps = [ ":java_enums" ]
java_files = [ java_files = [
"java/src/org/chromium/components/sync/AndroidSyncSettings.java", "java/src/org/chromium/components/sync/AndroidSyncSettings.java",
......
...@@ -10,6 +10,7 @@ import com.google.protos.ipc.invalidation.Types; ...@@ -10,6 +10,7 @@ import com.google.protos.ipc.invalidation.Types;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
...@@ -100,7 +101,7 @@ public class ModelTypeHelper { ...@@ -100,7 +101,7 @@ public class ModelTypeHelper {
if (modelType == ModelType.PROXY_TABS) { if (modelType == ModelType.PROXY_TABS) {
return "PROXY_TABS"; return "PROXY_TABS";
} }
return nativeModelTypeToNotificationType(modelType); return ModelTypeHelperJni.get().modelTypeToNotificationType(modelType);
} }
/** /**
...@@ -125,5 +126,8 @@ public class ModelTypeHelper { ...@@ -125,5 +126,8 @@ public class ModelTypeHelper {
sDelegate = delegate; sDelegate = delegate;
} }
private static native String nativeModelTypeToNotificationType(int modelType); @NativeMethods
interface Natives {
String modelTypeToNotificationType(int modelType);
}
} }
...@@ -7,8 +7,10 @@ import("//build/config/android/rules.gni") ...@@ -7,8 +7,10 @@ import("//build/config/android/rules.gni")
android_library("variations_java") { android_library("variations_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//third_party/android_deps:com_android_support_support_core_utils_java", "//third_party/android_deps:com_android_support_support_core_utils_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/variations/VariationsAssociatedData.java", "java/src/org/chromium/components/variations/VariationsAssociatedData.java",
"java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java", "java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java",
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.components.variations; package org.chromium.components.variations;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import java.util.HashMap; import java.util.HashMap;
...@@ -24,15 +25,18 @@ public final class VariationsAssociatedData { ...@@ -24,15 +25,18 @@ public final class VariationsAssociatedData {
* parameter does not exist. * parameter does not exist.
*/ */
public static String getVariationParamValue(String trialName, String paramName) { public static String getVariationParamValue(String trialName, String paramName) {
return nativeGetVariationParamValue(trialName, paramName); return VariationsAssociatedDataJni.get().getVariationParamValue(trialName, paramName);
} }
public static HashMap<String, String> getFeedbackMap() { public static HashMap<String, String> getFeedbackMap() {
HashMap<String, String> map = new HashMap<String, String>(); HashMap<String, String> map = new HashMap<String, String>();
map.put("Chrome Variations", nativeGetFeedbackVariations()); map.put("Chrome Variations", VariationsAssociatedDataJni.get().getFeedbackVariations());
return map; return map;
} }
private static native String nativeGetVariationParamValue(String trialName, String paramName); @NativeMethods
private static native String nativeGetFeedbackVariations(); interface Natives {
String getVariationParamValue(String trialName, String paramName);
String getFeedbackVariations();
}
} }
...@@ -546,8 +546,10 @@ if (is_android) { ...@@ -546,8 +546,10 @@ if (is_android) {
android_library("service_java") { android_library("service_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//ui/android:ui_full_java", "//ui/android:ui_full_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
java_files = [ java_files = [
"java/src/org/chromium/components/viz/service/gl/ThrowUncaughtException.java", "java/src/org/chromium/components/viz/service/gl/ThrowUncaughtException.java",
"java/src/org/chromium/components/viz/service/frame_sinks/ExternalBeginFrameSourceAndroid.java", "java/src/org/chromium/components/viz/service/frame_sinks/ExternalBeginFrameSourceAndroid.java",
......
...@@ -8,6 +8,7 @@ import org.chromium.base.ContextUtils; ...@@ -8,6 +8,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.MainDex; import org.chromium.base.annotations.MainDex;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.ui.VSyncMonitor; import org.chromium.ui.VSyncMonitor;
/** /**
...@@ -25,7 +26,8 @@ public class ExternalBeginFrameSourceAndroid { ...@@ -25,7 +26,8 @@ public class ExternalBeginFrameSourceAndroid {
if (!mVSyncNotificationsEnabled) { if (!mVSyncNotificationsEnabled) {
return; return;
} }
nativeOnVSync(mNativeExternalBeginFrameSourceAndroid, vsyncTimeMicros, ExternalBeginFrameSourceAndroidJni.get().onVSync(mNativeExternalBeginFrameSourceAndroid,
ExternalBeginFrameSourceAndroid.this, vsyncTimeMicros,
mVSyncMonitor.getVSyncPeriodInMicroseconds()); mVSyncMonitor.getVSyncPeriodInMicroseconds());
mVSyncMonitor.requestUpdate(); mVSyncMonitor.requestUpdate();
} }
...@@ -56,6 +58,10 @@ public class ExternalBeginFrameSourceAndroid { ...@@ -56,6 +58,10 @@ public class ExternalBeginFrameSourceAndroid {
mVSyncMonitor.updateRefreshRate(refreshRate); mVSyncMonitor.updateRefreshRate(refreshRate);
} }
private native void nativeOnVSync(long nativeExternalBeginFrameSourceAndroid, @NativeMethods
long vsyncTimeMicros, long vsyncPeriodMicros); interface Natives {
void onVSync(long nativeExternalBeginFrameSourceAndroid,
ExternalBeginFrameSourceAndroid caller, long vsyncTimeMicros,
long vsyncPeriodMicros);
}
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment