Commit b0768b87 authored by Eric Stevenson's avatar Eric Stevenson Committed by Commit Bot

JNI refactor: @NativeMethods conversion (VariationsSession).

This CL was partially created by
//base/android/jni_generator/jni_refactorer.py.

The conversion also required converting unit tests to use the new JNI
mocking approach provided by JniMocker.

Also removed a couple of unused methods.

Bug: 929661
Change-Id: Ic34608693e7c48313512c8ef7e48943023de2af5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1833078Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Commit-Queue: Eric Stevenson <estevenson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702035}
parent 1627f285
......@@ -4,9 +4,8 @@
package org.chromium.chrome.browser.metrics;
import android.content.Context;
import org.chromium.base.Callback;
import org.chromium.base.annotations.NativeMethods;
/**
* Sets up communication with the VariationsService. This is primarily used for
......@@ -20,14 +19,9 @@ public class VariationsSession {
* Triggers to the native VariationsService that the application has entered the foreground.
*/
public void start() {
start(null);
}
// TODO(agrieve): Delete after updating downstream.
public void start(Context unused) {
// If |mRestrictModeFetchStarted| is true and |mRestrictMode| is null, then async
// initializationn is in progress and nativeStartVariationsSession() will be called
// when it completes.
// initialization is in progress and VariationsSessionJni.get().startVariationsSession()
// will be called when it completes.
if (mRestrictModeFetchStarted && mRestrictMode == null) {
return;
}
......@@ -36,7 +30,8 @@ public class VariationsSession {
getRestrictModeValue(new Callback<String>() {
@Override
public void onResult(String restrictMode) {
nativeStartVariationsSession(mRestrictMode);
VariationsSessionJni.get().startVariationsSession(
VariationsSession.this, mRestrictMode);
}
});
}
......@@ -71,11 +66,6 @@ public class VariationsSession {
* restrict values, which must not be null.
*/
protected void getRestrictMode(Callback<String> callback) {
// TODO(agrieve): Refactor downstream.
getRestrictMode(null, callback);
}
protected void getRestrictMode(Context unused, Callback<String> callback) {
callback.onResult("");
}
......@@ -83,9 +73,12 @@ public class VariationsSession {
* @return The latest country according to the current variations state. Null if not known.
*/
public String getLatestCountry() {
return nativeGetLatestCountry();
return VariationsSessionJni.get().getLatestCountry(this);
}
protected native void nativeStartVariationsSession(String restrictMode);
protected native String nativeGetLatestCountry();
@NativeMethods
interface Natives {
void startVariationsSession(VariationsSession caller, String restrictMode);
String getLatestCountry(VariationsSession caller);
}
}
......@@ -4,19 +4,23 @@
package org.chromium.chrome.browser.metrics;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.chromium.base.Callback;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.JniMocker;
/**
* Tests for VariationsSession
......@@ -24,6 +28,11 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class VariationsSessionTest {
@Rule
public JniMocker mocker = new JniMocker();
@Mock
private VariationsSession.Natives mVariationsSessionJniMock;
private TestVariationsSession mSession;
private static class TestVariationsSession extends VariationsSession {
......@@ -37,26 +46,24 @@ public class VariationsSessionTest {
public void runCallback(String value) {
mCallback.onResult(value);
}
@Override
protected void nativeStartVariationsSession(String restrictMode) {
// No-op for tests.
}
}
@Before
public void setUp() {
mSession = spy(new TestVariationsSession());
MockitoAnnotations.initMocks(this);
mocker.mock(VariationsSessionJni.TEST_HOOKS, mVariationsSessionJniMock);
mSession = new TestVariationsSession();
}
@Test
public void testStart() {
mSession.start();
verify(mSession, never()).nativeStartVariationsSession(any(String.class));
verify(mVariationsSessionJniMock, never())
.startVariationsSession(eq(mSession), any(String.class));
String restrictValue = "test";
mSession.runCallback(restrictValue);
verify(mSession, times(1)).nativeStartVariationsSession(restrictValue);
verify(mVariationsSessionJniMock, times(1)).startVariationsSession(mSession, restrictValue);
}
@Test
......@@ -67,9 +74,10 @@ public class VariationsSessionTest {
});
String restrictValue = "test";
mSession.runCallback(restrictValue);
verify(mSession, never()).nativeStartVariationsSession(any(String.class));
verify(mVariationsSessionJniMock, never())
.startVariationsSession(eq(mSession), any(String.class));
mSession.start();
verify(mSession, times(1)).nativeStartVariationsSession(restrictValue);
verify(mVariationsSessionJniMock, times(1)).startVariationsSession(mSession, restrictValue);
}
}
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