Commit 5583f942 authored by Michael Thiessen's avatar Michael Thiessen Committed by Commit Bot

Move ToolbarSecurityIconTest to unit_tests

In order to migrate java.net.URI to GURL the junit tests that rely on
java.net.URI need to be moved to a test apk that supports the native
library.

This change moves the ToolbarSecurityIconTestunittests from junit to
unit_tests (Android only). These tests should be just as fast as they
were as junit tests (and much faster than chrome_test_apk unit tests).

Bug: 783819
Change-Id: I9e397ff1260cce9fca375af212dbac9e360e31f9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1997640
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarEric Stevenson <estevenson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732491}
parent dfdace44
This diff is collapsed.
......@@ -2846,6 +2846,7 @@ android_library("native_java_unittests_java") {
":chrome_test_util_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:jni_java",
"//base/test:test_support_java",
"//chrome/android:chrome_java",
"//chrome/browser/util:java",
......@@ -2871,6 +2872,7 @@ android_library("native_java_unittests_java") {
"native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
......@@ -2888,5 +2890,6 @@ generate_jni("native_j_unittests_jni_headers") {
"native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java",
]
}
......@@ -203,7 +203,6 @@ chrome_junit_test_java_sources = [
"junit/src/org/chromium/chrome/browser/tabstate/TabStateUnitTest.java",
"junit/src/org/chromium/chrome/browser/tasks/EngagementTimeUtilTest.java",
"junit/src/org/chromium/chrome/browser/tasks/JourneyManagerTest.java",
"junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java",
"junit/src/org/chromium/chrome/browser/usage_stats/EventTrackerTest.java",
"junit/src/org/chromium/chrome/browser/usage_stats/PageViewObserverTest.java",
"junit/src/org/chromium/chrome/browser/util/BitmapCacheTest.java",
......
......@@ -4,6 +4,8 @@
package org.chromium.chrome.browser.ssl;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.security_state.ConnectionSecurityLevel;
import org.chromium.content_public.browser.WebContents;
......@@ -39,7 +41,8 @@ public class SecurityStateModel {
private SecurityStateModel() {}
@NativeMethods
interface Natives {
@VisibleForTesting
public interface Natives {
int getSecurityLevelForWebContents(WebContents webContents);
boolean shouldShowDangerTriangleForWarningLevel();
}
......
......@@ -4,38 +4,24 @@
package org.chromium.chrome.browser.toolbar;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.res.Resources;
import org.junit.After;
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.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.JniMocker;
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.CalledByNativeJavaTest;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.omnibox.LocationBarLayout;
import org.chromium.chrome.browser.ssl.SecurityStateModel;
import org.chromium.chrome.browser.ssl.SecurityStateModelJni;
import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.components.security_state.ConnectionSecurityLevel;
/**
* Unit tests for {@link LocationBarLayout} class.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ToolbarSecurityIconTest.ShadowSecurityStateModel.class})
public final class ToolbarSecurityIconTest {
private static final boolean IS_SMALL_DEVICE = true;
private static final boolean IS_OFFLINE_PAGE = true;
......@@ -43,58 +29,31 @@ public final class ToolbarSecurityIconTest {
private static final int[] SECURITY_LEVELS = new int[] {ConnectionSecurityLevel.NONE,
ConnectionSecurityLevel.WARNING, ConnectionSecurityLevel.DANGEROUS,
ConnectionSecurityLevel.SECURE, ConnectionSecurityLevel.EV_SECURE};
private static final long NATIVE_PTR = 1;
@Rule
public JniMocker mocker = new JniMocker();
@Mock
private TabImpl mTab;
@Mock
private Context mContext;
@Mock
private Resources mResources;
@Mock
LocationBarModel.Natives mNativeMocks;
SecurityStateModel.Natives mSecurityStateMocks;
private LocationBarModel mLocationBarModel;
@Implements(SecurityStateModel.class)
static class ShadowSecurityStateModel {
private static boolean sShouldShowDangerTriangle;
@Resetter
public static void reset() {
sShouldShowDangerTriangle = false;
}
@Implementation
public static boolean shouldShowDangerTriangleForWarningLevel() {
return sShouldShowDangerTriangle;
}
public static void setShouldShowDangerTriangleForWarningLevel(
boolean shouldShowDangerTriangleValue) {
sShouldShowDangerTriangle = shouldShowDangerTriangleValue;
}
}
@CalledByNative
private ToolbarSecurityIconTest() {}
@Before
@CalledByNative
public void setUp() {
MockitoAnnotations.initMocks(this);
mocker.mock(LocationBarModelJni.TEST_HOOKS, mNativeMocks);
doReturn(mResources).when(mContext).getResources();
when(mNativeMocks.init(any())).thenReturn(NATIVE_PTR);
mLocationBarModel = new LocationBarModel(mContext);
SecurityStateModelJni.TEST_HOOKS.setInstanceForTesting(mSecurityStateMocks);
mLocationBarModel = new LocationBarModel(ContextUtils.getApplicationContext());
mLocationBarModel.initializeWithNative();
}
@After
@CalledByNative
public void tearDown() {
ShadowSecurityStateModel.reset();
SecurityStateModelJni.TEST_HOOKS.setInstanceForTesting(null);
}
@Test
@CalledByNativeJavaTest
public void testGetSecurityLevel() {
assertEquals(ConnectionSecurityLevel.NONE,
LocationBarModel.getSecurityLevel(null, !IS_OFFLINE_PAGE, null));
......@@ -123,8 +82,9 @@ public final class ToolbarSecurityIconTest {
LocationBarModel.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, null));
}
@Test
@CalledByNativeJavaTest
public void testGetSecurityIconResource() {
when(mSecurityStateMocks.shouldShowDangerTriangleForWarningLevel()).thenReturn(false);
for (int securityLevel : SECURITY_LEVELS) {
assertEquals("Wrong phone resource for security level " + securityLevel,
R.drawable.ic_offline_pin_24dp,
......@@ -189,8 +149,9 @@ public final class ToolbarSecurityIconTest {
!IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
}
@Test
@CalledByNativeJavaTest
public void testGetSecurityIconResourceForMarkHttpAsDangerWarning() {
when(mSecurityStateMocks.shouldShowDangerTriangleForWarningLevel()).thenReturn(false);
assertEquals(0,
mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
......@@ -198,7 +159,7 @@ public final class ToolbarSecurityIconTest {
mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
!IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
ShadowSecurityStateModel.setShouldShowDangerTriangleForWarningLevel(true);
when(mSecurityStateMocks.shouldShowDangerTriangleForWarningLevel()).thenReturn(true);
assertEquals(R.drawable.omnibox_not_secure_warning,
mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.WARNING,
IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/android/jni_android.h"
#include "chrome/android/native_j_unittests_jni_headers/ToolbarSecurityIconTest_jni.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::android::AttachCurrentThread;
class ToolbarSecurityIconTest : public ::testing::Test {
public:
ToolbarSecurityIconTest()
: j_test_(
Java_ToolbarSecurityIconTest_Constructor(AttachCurrentThread())) {}
void SetUp() override {
Java_ToolbarSecurityIconTest_setUp(AttachCurrentThread(), j_test_);
}
void TearDown() override {
Java_ToolbarSecurityIconTest_tearDown(AttachCurrentThread(), j_test_);
}
const base::android::ScopedJavaGlobalRef<jobject>& j_test() {
return j_test_;
}
private:
base::android::ScopedJavaGlobalRef<jobject> j_test_;
};
JAVA_TESTS(ToolbarSecurityIconTest, j_test())
......@@ -3759,6 +3759,7 @@ test("unit_tests") {
"../browser/permissions/permission_request_notification_android_unittest.cc",
"../browser/permissions/permission_request_notification_handler_unittest.cc",
"../browser/tabmodel/tab_persistent_store_unittest.cc",
"../browser/toolbar/toolbar_security_icon_unittest.cc",
"../browser/touch_to_fill/touch_to_fill_controller_unittest.cc",
"../browser/translate/translate_manager_render_view_host_android_unittest.cc",
"../browser/updates/update_notification_config_unittest.cc",
......
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