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