Commit a372586d authored by Mugdha Lakhani's avatar Mugdha Lakhani Committed by Commit Bot

[WebLayer] Remove ChromeSecurityStateModelDelegate.

This gets ChromeSecurityStateModelDelegate through ChromePageInfoClient,
thus removing the need for (Chrome)SecurityStateModelDelegate.java.
All references to the above have been removed.

This goes towards removing chrome:// deps from PageInfoController.java
so it can be componentized.

Bug: 1052375
Change-Id: Ib254f9b9a7f274dc8da11095bfbd48d1bee362ff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2134305
Commit-Queue: Mugdha Lakhani <nator@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757555}
parent 6b7bd9f2
...@@ -2930,7 +2930,6 @@ generate_jni("chrome_jni_headers") { ...@@ -2930,7 +2930,6 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java", "java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java",
"java/src/org/chromium/chrome/browser/site_settings/WebsitePreferenceBridge.java", "java/src/org/chromium/chrome/browser/site_settings/WebsitePreferenceBridge.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java", "java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java",
"java/src/org/chromium/chrome/browser/ssl/ChromeSecurityStateModelDelegate.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java",
"java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java", "java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java",
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java", "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java",
......
...@@ -1513,7 +1513,6 @@ chrome_java_sources = [ ...@@ -1513,7 +1513,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/site_settings/WebsitePreferenceBridge.java", "java/src/org/chromium/chrome/browser/site_settings/WebsitePreferenceBridge.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java", "java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java", "java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java",
"java/src/org/chromium/chrome/browser/ssl/ChromeSecurityStateModelDelegate.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorMediator.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorMediator.java",
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorProperties.java", "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorProperties.java",
......
...@@ -14,7 +14,6 @@ import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar; ...@@ -14,7 +14,6 @@ import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar;
import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar.CustomTabTabObserver; import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar.CustomTabTabObserver;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator; import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
import org.chromium.chrome.browser.dependency_injection.ActivityScope; import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.webapps.WebDisplayMode; import org.chromium.chrome.browser.webapps.WebDisplayMode;
import org.chromium.chrome.browser.webapps.WebappExtras; import org.chromium.chrome.browser.webapps.WebappExtras;
...@@ -144,8 +143,7 @@ public class TrustedWebActivityBrowserControlsVisibilityManager { ...@@ -144,8 +143,7 @@ public class TrustedWebActivityBrowserControlsVisibilityManager {
@ConnectionSecurityLevel @ConnectionSecurityLevel
@VisibleForTesting @VisibleForTesting
int getSecurityLevel(Tab tab) { int getSecurityLevel(Tab tab) {
int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( int securityLevel = SecurityStateModel.getSecurityLevelForWebContents(tab.getWebContents());
tab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance());
return securityLevel; return securityLevel;
} }
} }
...@@ -13,7 +13,6 @@ import androidx.annotation.DrawableRes; ...@@ -13,7 +13,6 @@ import androidx.annotation.DrawableRes;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ntp.NewTabPage; import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController; import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
import org.chromium.components.embedder_support.delegate.WebContentsDelegateAndroid; import org.chromium.components.embedder_support.delegate.WebContentsDelegateAndroid;
import org.chromium.components.embedder_support.view.ContentView; import org.chromium.components.embedder_support.view.ContentView;
...@@ -144,8 +143,7 @@ public class EphemeralTabMediator { ...@@ -144,8 +143,7 @@ public class EphemeralTabMediator {
@Override @Override
public void visibleSSLStateChanged() { public void visibleSSLStateChanged() {
if (mSheetContent == null) return; if (mSheetContent == null) return;
int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( int securityLevel = SecurityStateModel.getSecurityLevelForWebContents(mWebContents);
mWebContents, ChromeSecurityStateModelDelegate.getInstance());
mSheetContent.setSecurityIcon(getSecurityIconResource(securityLevel)); mSheetContent.setSecurityIcon(getSecurityIconResource(securityLevel));
mSheetContent.updateURL(mWebContents.getVisibleUrl()); mSheetContent.updateURL(mWebContents.getVisibleUrl());
} }
......
...@@ -9,7 +9,6 @@ import androidx.browser.customtabs.CustomTabsSessionToken; ...@@ -9,7 +9,6 @@ import androidx.browser.customtabs.CustomTabsSessionToken;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider; import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
import org.chromium.chrome.browser.dependency_injection.ActivityScope; import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabHidingType; import org.chromium.chrome.browser.tab.TabHidingType;
...@@ -65,8 +64,7 @@ public class CustomTabNavigationEventObserver extends EmptyTabObserver { ...@@ -65,8 +64,7 @@ public class CustomTabNavigationEventObserver extends EmptyTabObserver {
@Override @Override
public void onDidAttachInterstitialPage(Tab tab) { public void onDidAttachInterstitialPage(Tab tab) {
boolean isContentDangerous = SecurityStateModel.isContentDangerous( boolean isContentDangerous = SecurityStateModel.isContentDangerous(tab.getWebContents());
tab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance());
if (isContentDangerous) { if (isContentDangerous) {
return; return;
} }
......
...@@ -22,7 +22,6 @@ import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProv ...@@ -22,7 +22,6 @@ import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProv
import org.chromium.chrome.browser.dependency_injection.ActivityScope; import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler; import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler;
import org.chromium.chrome.browser.share.ShareImageFileUtils; import org.chromium.chrome.browser.share.ShareImageFileUtils;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabHidingType; import org.chromium.chrome.browser.tab.TabHidingType;
...@@ -180,8 +179,7 @@ public class CustomTabObserver extends EmptyTabObserver { ...@@ -180,8 +179,7 @@ public class CustomTabObserver extends EmptyTabObserver {
@Override @Override
public void onDidAttachInterstitialPage(Tab tab) { public void onDidAttachInterstitialPage(Tab tab) {
if (SecurityStateModel.isContentDangerous( if (SecurityStateModel.isContentDangerous(tab.getWebContents())) {
tab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance())) {
return; return;
} }
resetPageLoadTracking(); resetPageLoadTracking();
......
...@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; ...@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.lifecycle.Destroyable; import org.chromium.chrome.browser.lifecycle.Destroyable;
import org.chromium.chrome.browser.lifecycle.NativeInitObserver; import org.chromium.chrome.browser.lifecycle.NativeInitObserver;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabThemeColorHelper; import org.chromium.chrome.browser.tab.TabThemeColorHelper;
import org.chromium.chrome.browser.ui.favicon.FaviconHelper; import org.chromium.chrome.browser.ui.favicon.FaviconHelper;
...@@ -180,8 +179,8 @@ public class CustomTabTaskDescriptionHelper implements NativeInitObserver, Destr ...@@ -180,8 +179,8 @@ public class CustomTabTaskDescriptionHelper implements NativeInitObserver, Destr
} }
private boolean hasSecurityWarningOrError(Tab tab) { private boolean hasSecurityWarningOrError(Tab tab) {
boolean isContentDangerous = SecurityStateModel.isContentDangerous( boolean isContentDangerous =
tab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance()); SecurityStateModel.isContentDangerous(tab.getWebContents());
return isContentDangerous; return isContentDangerous;
} }
}; };
......
...@@ -39,7 +39,6 @@ import org.chromium.chrome.browser.previews.PreviewsUma; ...@@ -39,7 +39,6 @@ import org.chromium.chrome.browser.previews.PreviewsUma;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.site_settings.ContentSettingValues; import org.chromium.chrome.browser.site_settings.ContentSettingValues;
import org.chromium.chrome.browser.site_settings.CookieControlsBridge; import org.chromium.chrome.browser.site_settings.CookieControlsBridge;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.vr.VrModuleProvider; import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.components.content_settings.CookieControlsEnforcement; import org.chromium.components.content_settings.CookieControlsEnforcement;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
...@@ -576,8 +575,7 @@ public class PageInfoController implements ModalDialogProperties.Controller, ...@@ -576,8 +575,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
assert false : "Invalid source passed"; assert false : "Invalid source passed";
} }
final int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( final int securityLevel = SecurityStateModel.getSecurityLevelForWebContents(webContents);
webContents, ChromeSecurityStateModelDelegate.getInstance());
@PreviewPageState @PreviewPageState
int previewPageState = PreviewPageState.NOT_PREVIEW; int previewPageState = PreviewPageState.NOT_PREVIEW;
......
...@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.payments.ui.SectionInformation; ...@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.payments.ui.SectionInformation;
import org.chromium.chrome.browser.payments.ui.ShoppingCart; import org.chromium.chrome.browser.payments.ui.ShoppingCart;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncher;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
...@@ -896,8 +895,7 @@ public class PaymentRequestImpl ...@@ -896,8 +895,7 @@ public class PaymentRequestImpl
mUI = new PaymentRequestUI(activity, this, mMerchantSupportsAutofillCards, mUI = new PaymentRequestUI(activity, this, mMerchantSupportsAutofillCards,
!PaymentPreferencesUtil.isPaymentCompleteOnce(), mMerchantName, mTopLevelOrigin, !PaymentPreferencesUtil.isPaymentCompleteOnce(), mMerchantName, mTopLevelOrigin,
SecurityStateModel.getSecurityLevelForWebContents( SecurityStateModel.getSecurityLevelForWebContents(mWebContents),
mWebContents, ChromeSecurityStateModelDelegate.getInstance()),
new ShippingStrings(mShippingType), mPaymentUisShowStateReconciler); new ShippingStrings(mShippingType), mPaymentUisShowStateReconciler);
activity.getLifecycleDispatcher().register(mUI); activity.getLifecycleDispatcher().register(mUI);
......
...@@ -12,7 +12,6 @@ import androidx.annotation.DrawableRes; ...@@ -12,7 +12,6 @@ import androidx.annotation.DrawableRes;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.page_info.PageInfoController; import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.components.omnibox.SecurityStatusIcon; import org.chromium.components.omnibox.SecurityStatusIcon;
import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.components.security_state.ConnectionSecurityLevel;
import org.chromium.components.security_state.SecurityStateModel; import org.chromium.components.security_state.SecurityStateModel;
...@@ -123,8 +122,7 @@ import org.chromium.ui.modelutil.PropertyModel; ...@@ -123,8 +122,7 @@ import org.chromium.ui.modelutil.PropertyModel;
@Override @Override
public void didChangeVisibleSecurityState() { public void didChangeVisibleSecurityState() {
int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( int securityLevel = SecurityStateModel.getSecurityLevelForWebContents(mWebContentsRef);
mWebContentsRef, ChromeSecurityStateModelDelegate.getInstance());
mModel.set(PaymentHandlerToolbarProperties.SECURITY_ICON, mModel.set(PaymentHandlerToolbarProperties.SECURITY_ICON,
getSecurityIconResource(securityLevel)); getSecurityIconResource(securityLevel));
} }
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
package org.chromium.chrome.browser.previews; package org.chromium.chrome.browser.previews;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.components.security_state.SecurityStateModel; import org.chromium.components.security_state.SecurityStateModel;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -21,8 +20,7 @@ public final class Previews { ...@@ -21,8 +20,7 @@ public final class Previews {
if (tab == null || tab.isNativePage()) return false; if (tab == null || tab.isNativePage()) return false;
WebContents webContents = tab.getWebContents(); WebContents webContents = tab.getWebContents();
boolean isPreview = webContents != null && !webContents.isShowingInterstitialPage() boolean isPreview = webContents != null && !webContents.isShowingInterstitialPage()
&& !SecurityStateModel.isContentDangerous( && !SecurityStateModel.isContentDangerous(webContents)
webContents, ChromeSecurityStateModelDelegate.getInstance())
&& PreviewsAndroidBridge.getInstance().shouldShowPreviewUI(webContents); && PreviewsAndroidBridge.getInstance().shouldShowPreviewUI(webContents);
return isPreview; return isPreview;
} }
......
// 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.
package org.chromium.chrome.browser.ssl;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.security_state.SecurityStateModelDelegate;
/**
* Creates the C++ class that acts as the SecurityStateModelDelegate for Chrome.
*/
public class ChromeSecurityStateModelDelegate {
private static SecurityStateModelDelegate sInstance = new SecurityStateModelDelegate(
ChromeSecurityStateModelDelegateJni.get().createSecurityStateModelDelegate());
/**
* Get an instance of SecurityStateModelDelegate.
*/
public static SecurityStateModelDelegate getInstance() {
return sInstance;
}
@NativeMethods
@VisibleForTesting
public interface Natives {
long createSecurityStateModelDelegate();
}
}
...@@ -10,7 +10,6 @@ import android.os.Message; ...@@ -10,7 +10,6 @@ import android.os.Message;
import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.util.AccessibilityUtil; import org.chromium.chrome.browser.util.AccessibilityUtil;
import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate; import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
...@@ -193,8 +192,8 @@ public class TabStateBrowserControlsVisibilityDelegate ...@@ -193,8 +192,8 @@ public class TabStateBrowserControlsVisibilityDelegate
enableHidingBrowserControls &= !url.startsWith(UrlConstants.CHROME_URL_PREFIX); enableHidingBrowserControls &= !url.startsWith(UrlConstants.CHROME_URL_PREFIX);
enableHidingBrowserControls &= !url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX); enableHidingBrowserControls &= !url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
enableHidingBrowserControls &= !SecurityStateModel.isContentDangerous( enableHidingBrowserControls &=
mTab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance()); !SecurityStateModel.isContentDangerous(mTab.getWebContents());
enableHidingBrowserControls &= enableHidingBrowserControls &=
!SelectionPopupController.fromWebContents(webContents).isFocusedNodeEditable(); !SelectionPopupController.fromWebContents(webContents).isFocusedNodeEditable();
enableHidingBrowserControls &= !mTab.isShowingErrorPage(); enableHidingBrowserControls &= !mTab.isShowingErrorPage();
......
...@@ -11,7 +11,6 @@ import androidx.annotation.VisibleForTesting; ...@@ -11,7 +11,6 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.UserData; import org.chromium.base.UserData;
import org.chromium.chrome.browser.previews.Previews; import org.chromium.chrome.browser.previews.Previews;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.styles.ChromeColors;
import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.components.security_state.ConnectionSecurityLevel;
import org.chromium.components.security_state.SecurityStateModel; import org.chromium.components.security_state.SecurityStateModel;
...@@ -155,8 +154,8 @@ public class TabThemeColorHelper extends EmptyTabObserver implements UserData { ...@@ -155,8 +154,8 @@ public class TabThemeColorHelper extends EmptyTabObserver implements UserData {
*/ */
private boolean checkThemingAllowed() { private boolean checkThemingAllowed() {
// Do not apply the theme color if there are any security issues on the page. // Do not apply the theme color if there are any security issues on the page.
final int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( final int securityLevel =
mTab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance()); SecurityStateModel.getSecurityLevelForWebContents(mTab.getWebContents());
return securityLevel != ConnectionSecurityLevel.DANGEROUS return securityLevel != ConnectionSecurityLevel.DANGEROUS
&& securityLevel != ConnectionSecurityLevel.SECURE_WITH_POLICY_INSTALLED_CERT && securityLevel != ConnectionSecurityLevel.SECURE_WITH_POLICY_INSTALLED_CERT
&& (mTab.getActivity() == null || !mTab.getActivity().isTablet()) && (mTab.getActivity() == null || !mTab.getActivity().isTablet())
......
...@@ -9,7 +9,6 @@ import androidx.annotation.Nullable; ...@@ -9,7 +9,6 @@ import androidx.annotation.Nullable;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.components.security_state.ConnectionSecurityLevel;
import org.chromium.components.security_state.SecurityStateModel; import org.chromium.components.security_state.SecurityStateModel;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -81,8 +80,8 @@ public class TrustedCdn extends TabWebContentsUserData { ...@@ -81,8 +80,8 @@ public class TrustedCdn extends TabWebContentsUserData {
} }
private int getSecurityLevel() { private int getSecurityLevel() {
int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( int securityLevel =
mTab.getWebContents(), ChromeSecurityStateModelDelegate.getInstance()); SecurityStateModel.getSecurityLevelForWebContents(mTab.getWebContents());
return securityLevel; return securityLevel;
} }
......
...@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.omnibox.UrlBarData; ...@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.omnibox.UrlBarData;
import org.chromium.chrome.browser.previews.Previews; import org.chromium.chrome.browser.previews.Previews;
import org.chromium.chrome.browser.previews.PreviewsAndroidBridge; import org.chromium.chrome.browser.previews.PreviewsAndroidBridge;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabUtils; import org.chromium.chrome.browser.tab.TabUtils;
import org.chromium.chrome.browser.tab.TrustedCdn; import org.chromium.chrome.browser.tab.TrustedCdn;
...@@ -403,8 +402,7 @@ public class LocationBarModel implements ToolbarDataProvider, ToolbarCommonPrope ...@@ -403,8 +402,7 @@ public class LocationBarModel implements ToolbarDataProvider, ToolbarCommonPrope
@VisibleForTesting @VisibleForTesting
@ConnectionSecurityLevel @ConnectionSecurityLevel
int getSecurityLevelFromStateModel(WebContents webContents) { int getSecurityLevelFromStateModel(WebContents webContents) {
int securityLevel = SecurityStateModel.getSecurityLevelForWebContents( int securityLevel = SecurityStateModel.getSecurityLevelForWebContents(webContents);
webContents, ChromeSecurityStateModelDelegate.getInstance());
return securityLevel; return securityLevel;
} }
......
...@@ -29,8 +29,6 @@ import org.chromium.chrome.browser.customtabs.CloseButtonVisibilityManager; ...@@ -29,8 +29,6 @@ import org.chromium.chrome.browser.customtabs.CloseButtonVisibilityManager;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider; import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider;
import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar; import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator; import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegate;
import org.chromium.chrome.browser.ssl.ChromeSecurityStateModelDelegateJni;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.browser.webapps.WebDisplayMode; import org.chromium.chrome.browser.webapps.WebDisplayMode;
...@@ -53,8 +51,6 @@ public class TrustedWebActivityBrowserControlsVisibilityManagerTest { ...@@ -53,8 +51,6 @@ public class TrustedWebActivityBrowserControlsVisibilityManagerTest {
@Mock @Mock
public TabImpl mTab; public TabImpl mTab;
@Mock @Mock
ChromeSecurityStateModelDelegate.Natives mChromeSecurityStateModelDelegateMocks;
@Mock
SecurityStateModel.Natives mSecurityStateMocks; SecurityStateModel.Natives mSecurityStateMocks;
@Mock @Mock
public CustomTabToolbarCoordinator mToolbarCoordinator; public CustomTabToolbarCoordinator mToolbarCoordinator;
...@@ -68,8 +64,6 @@ public class TrustedWebActivityBrowserControlsVisibilityManagerTest { ...@@ -68,8 +64,6 @@ public class TrustedWebActivityBrowserControlsVisibilityManagerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
SecurityStateModelJni.TEST_HOOKS.setInstanceForTesting(mSecurityStateMocks); SecurityStateModelJni.TEST_HOOKS.setInstanceForTesting(mSecurityStateMocks);
ChromeSecurityStateModelDelegateJni.TEST_HOOKS.setInstanceForTesting(
mChromeSecurityStateModelDelegateMocks);
when(mTabProvider.getTab()).thenReturn(mTab); when(mTabProvider.getTab()).thenReturn(mTab);
when(mTab.getParentId()).thenReturn(Tab.INVALID_TAB_ID); when(mTab.getParentId()).thenReturn(Tab.INVALID_TAB_ID);
setTabSecurityLevel(ConnectionSecurityLevel.NONE); setTabSecurityLevel(ConnectionSecurityLevel.NONE);
......
...@@ -2965,6 +2965,8 @@ jumbo_static_library("browser") { ...@@ -2965,6 +2965,8 @@ jumbo_static_library("browser") {
"signin/identity_services_provider_android.cc", "signin/identity_services_provider_android.cc",
"signin/signin_manager_android_factory.cc", "signin/signin_manager_android_factory.cc",
"signin/signin_manager_android_factory.h", "signin/signin_manager_android_factory.h",
"ssl/chrome_security_state_client.cc",
"ssl/chrome_security_state_client.h",
"ssl/chrome_security_state_model_delegate.cc", "ssl/chrome_security_state_model_delegate.cc",
"ssl/chrome_security_state_model_delegate.h", "ssl/chrome_security_state_model_delegate.h",
"ssl/known_interception_disclosure_infobar.cc", "ssl/known_interception_disclosure_infobar.cc",
......
...@@ -159,6 +159,7 @@ ...@@ -159,6 +159,7 @@
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
#include "chrome/browser/android/component_updater/background_task_update_scheduler.h" #include "chrome/browser/android/component_updater/background_task_update_scheduler.h"
#include "chrome/browser/flags/android/chrome_feature_list.h" #include "chrome/browser/flags/android/chrome_feature_list.h"
#include "chrome/browser/ssl/chrome_security_state_client.h"
#else #else
#include "chrome/browser/gcm/gcm_product_util.h" #include "chrome/browser/gcm/gcm_product_util.h"
#include "chrome/browser/resource_coordinator/tab_manager.h" #include "chrome/browser/resource_coordinator/tab_manager.h"
...@@ -1192,6 +1193,10 @@ void BrowserProcessImpl::PreMainMessageLoopRun() { ...@@ -1192,6 +1193,10 @@ void BrowserProcessImpl::PreMainMessageLoopRun() {
} }
CreateNetworkQualityObserver(); CreateNetworkQualityObserver();
#if defined(OS_ANDROID)
security_state::SetSecurityStateClient(new ChromeSecurityStateClient());
#endif
} }
void BrowserProcessImpl::CreateIconManager() { void BrowserProcessImpl::CreateIconManager() {
......
// 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 "chrome/browser/ssl/chrome_security_state_client.h"
#include "chrome/browser/ssl/chrome_security_state_model_delegate.h"
std::unique_ptr<SecurityStateModelDelegate>
ChromeSecurityStateClient::MaybeCreateSecurityStateModelDelegate() {
return std::make_unique<ChromeSecurityStateModelDelegate>();
}
// 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.
#ifndef CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_CLIENT_H_
#define CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_CLIENT_H_
#include <memory>
#include "components/security_state/content/android/security_state_client.h"
class ChromeSecurityStateClient : public security_state::SecurityStateClient {
public:
constexpr ChromeSecurityStateClient() = default;
~ChromeSecurityStateClient() = default;
std::unique_ptr<SecurityStateModelDelegate>
MaybeCreateSecurityStateModelDelegate() override;
};
#endif // CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_CLIENT_H_
...@@ -4,17 +4,10 @@ ...@@ -4,17 +4,10 @@
#include "chrome/browser/ssl/chrome_security_state_model_delegate.h" #include "chrome/browser/ssl/chrome_security_state_model_delegate.h"
#include "chrome/android/chrome_jni_headers/ChromeSecurityStateModelDelegate_jni.h"
#include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/ssl/security_state_tab_helper.h"
#include "components/security_state/core/security_state.h" #include "components/security_state/core/security_state.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
static jlong
JNI_ChromeSecurityStateModelDelegate_CreateSecurityStateModelDelegate(
JNIEnv* env) {
return reinterpret_cast<intptr_t>(new ChromeSecurityStateModelDelegate());
}
security_state::SecurityLevel security_state::SecurityLevel
ChromeSecurityStateModelDelegate::GetSecurityLevel( ChromeSecurityStateModelDelegate::GetSecurityLevel(
content::WebContents* web_contents) const { content::WebContents* web_contents) const {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/security_state/content/android/security_state_model_delegate.h"
#ifndef CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_MODEL_DELEGATE_H_ #ifndef CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_MODEL_DELEGATE_H_
#define CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_MODEL_DELEGATE_H_ #define CHROME_BROWSER_SSL_CHROME_SECURITY_STATE_MODEL_DELEGATE_H_
#include "components/security_state/content/android/security_state_model_delegate.h"
namespace content { namespace content {
class WebContents; class WebContents;
} // namespace content } // namespace content
......
...@@ -423,7 +423,6 @@ jumbo_static_library("ui") { ...@@ -423,7 +423,6 @@ jumbo_static_library("ui") {
"//chrome/services/qrcode_generator/public/cpp", "//chrome/services/qrcode_generator/public/cpp",
"//chrome/services/qrcode_generator/public/mojom", "//chrome/services/qrcode_generator/public/mojom",
"//components/about_ui", "//components/about_ui",
"//components/client_hints/browser",
"//components/account_id", "//components/account_id",
"//components/autofill/content/browser:risk_proto", "//components/autofill/content/browser:risk_proto",
"//components/autofill/core/browser", "//components/autofill/core/browser",
...@@ -434,6 +433,7 @@ jumbo_static_library("ui") { ...@@ -434,6 +433,7 @@ jumbo_static_library("ui") {
"//components/browsing_data/core", "//components/browsing_data/core",
"//components/captive_portal/content", "//components/captive_portal/content",
"//components/captive_portal/core:buildflags", "//components/captive_portal/core:buildflags",
"//components/client_hints/browser",
"//components/consent_auditor/", "//components/consent_auditor/",
"//components/content_settings/core/browser", "//components/content_settings/core/browser",
"//components/country_codes", "//components/country_codes",
...@@ -624,6 +624,7 @@ jumbo_static_library("ui") { ...@@ -624,6 +624,7 @@ jumbo_static_library("ui") {
"//chrome/browser/ui/webui/explore_sites_internals:mojo_bindings", "//chrome/browser/ui/webui/explore_sites_internals:mojo_bindings",
"//chrome/browser/ui/webui/snippets_internals:mojo_bindings", "//chrome/browser/ui/webui/snippets_internals:mojo_bindings",
"//components/browser_ui/util/android", "//components/browser_ui/util/android",
"//components/security_state/content/android",
] ]
if (enable_feed_in_chrome) { if (enable_feed_in_chrome) {
deps += [ "//chrome/browser/ui/webui/feed_internals:mojo_bindings" ] deps += [ "//chrome/browser/ui/webui/feed_internals:mojo_bindings" ]
......
...@@ -6,6 +6,8 @@ import("//build/config/android/rules.gni") ...@@ -6,6 +6,8 @@ import("//build/config/android/rules.gni")
static_library("android") { static_library("android") {
sources = [ sources = [
"security_state_client.cc",
"security_state_client.h",
"security_state_model_android.cc", "security_state_model_android.cc",
"security_state_model_delegate.h", "security_state_model_delegate.h",
] ]
...@@ -21,7 +23,6 @@ static_library("android") { ...@@ -21,7 +23,6 @@ static_library("android") {
android_library("java") { android_library("java") {
sources = [ sources = [
"java/src/org/chromium/components/security_state/SecurityStateModel.java", "java/src/org/chromium/components/security_state/SecurityStateModel.java",
"java/src/org/chromium/components/security_state/SecurityStateModelDelegate.java",
] ]
deps = [ deps = [
"//base:base_java", "//base:base_java",
...@@ -36,6 +37,5 @@ android_library("java") { ...@@ -36,6 +37,5 @@ android_library("java") {
generate_jni("jni_headers") { generate_jni("jni_headers") {
sources = [ sources = [
"java/src/org/chromium/components/security_state/SecurityStateModel.java", "java/src/org/chromium/components/security_state/SecurityStateModel.java",
"java/src/org/chromium/components/security_state/SecurityStateModelDelegate.java",
] ]
} }
...@@ -21,17 +21,13 @@ public class SecurityStateModel { ...@@ -21,17 +21,13 @@ public class SecurityStateModel {
* *
* @see ConnectionSecurityLevel * @see ConnectionSecurityLevel
*/ */
public static int getSecurityLevelForWebContents( public static int getSecurityLevelForWebContents(WebContents webContents) {
WebContents webContents, SecurityStateModelDelegate delegate) {
if (webContents == null) return ConnectionSecurityLevel.NONE; if (webContents == null) return ConnectionSecurityLevel.NONE;
return SecurityStateModelJni.get().getSecurityLevelForWebContents( return SecurityStateModelJni.get().getSecurityLevelForWebContents(webContents);
webContents, delegate.getNativePtr());
} }
public static boolean isContentDangerous( public static boolean isContentDangerous(WebContents webContents) {
WebContents webContents, SecurityStateModelDelegate delegate) { return getSecurityLevelForWebContents(webContents) == ConnectionSecurityLevel.DANGEROUS;
return getSecurityLevelForWebContents(webContents, delegate)
== ConnectionSecurityLevel.DANGEROUS;
} }
/** /**
...@@ -50,7 +46,7 @@ public class SecurityStateModel { ...@@ -50,7 +46,7 @@ public class SecurityStateModel {
@NativeMethods @NativeMethods
@VisibleForTesting @VisibleForTesting
public interface Natives { public interface Natives {
int getSecurityLevelForWebContents(WebContents webContents, long delegate); int getSecurityLevelForWebContents(WebContents webContents);
boolean shouldShowDangerTriangleForWarningLevel(); boolean shouldShowDangerTriangleForWarningLevel();
} }
} }
// 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.
package org.chromium.components.security_state;
import org.chromium.base.annotations.CalledByNative;
/**
* Dumb wrapper around the pointer to the C++ class SecurityStateModelDelegate.
*/
public class SecurityStateModelDelegate {
private long mNativePtr;
public SecurityStateModelDelegate(long nativePtr) {
this.mNativePtr = nativePtr;
}
@CalledByNative
protected long getNativePtr() {
return mNativePtr;
}
}
// 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 "components/security_state/content/android/security_state_client.h"
namespace security_state {
static SecurityStateClient* g_client;
void SetSecurityStateClient(SecurityStateClient* client) {
g_client = client;
}
SecurityStateClient* GetSecurityStateClient() {
return g_client;
}
std::unique_ptr<SecurityStateModelDelegate>
SecurityStateClient::MaybeCreateSecurityStateModelDelegate() {
return nullptr;
}
} // namespace security_state
// 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.
#ifndef COMPONENTS_SECURITY_STATE_CONTENT_ANDROID_SECURITY_STATE_CLIENT_H_
#define COMPONENTS_SECURITY_STATE_CONTENT_ANDROID_SECURITY_STATE_CLIENT_H_
#include <memory>
#include "components/security_state/content/android/security_state_model_delegate.h"
namespace security_state {
class SecurityStateClient;
void SetSecurityStateClient(SecurityStateClient* security_state_client);
SecurityStateClient* GetSecurityStateClient();
class SecurityStateClient {
public:
SecurityStateClient() = default;
~SecurityStateClient() = default;
// Create a SecurityStateModelDelegate. This can return a nullptr.
virtual std::unique_ptr<SecurityStateModelDelegate>
MaybeCreateSecurityStateModelDelegate();
};
} // namespace security_state
#endif // COMPONENTS_SECURITY_STATE_CONTENT_ANDROID_SECURITY_STATE_CLIENT_H_
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "components/security_state/content/android/jni_headers/SecurityStateModel_jni.h" #include "components/security_state/content/android/jni_headers/SecurityStateModel_jni.h"
#include "components/security_state/content/android/security_state_client.h"
#include "components/security_state/content/android/security_state_model_delegate.h" #include "components/security_state/content/android/security_state_model_delegate.h"
#include "components/security_state/content/content_utils.h" #include "components/security_state/content/content_utils.h"
#include "components/security_state/core/security_state.h" #include "components/security_state/core/security_state.h"
...@@ -16,14 +17,17 @@ using base::android::JavaParamRef; ...@@ -16,14 +17,17 @@ using base::android::JavaParamRef;
// static // static
jint JNI_SecurityStateModel_GetSecurityLevelForWebContents( jint JNI_SecurityStateModel_GetSecurityLevelForWebContents(
JNIEnv* env, JNIEnv* env,
const base::android::JavaParamRef<jobject>& jweb_contents, const base::android::JavaParamRef<jobject>& jweb_contents) {
jlong jdelegate) {
content::WebContents* web_contents = content::WebContents* web_contents =
content::WebContents::FromJavaWebContents(jweb_contents); content::WebContents::FromJavaWebContents(jweb_contents);
DCHECK(web_contents); DCHECK(web_contents);
SecurityStateModelDelegate* security_state_model_delegate = security_state::SecurityStateClient* security_state_client =
reinterpret_cast<SecurityStateModelDelegate*>(jdelegate); security_state::GetSecurityStateClient();
DCHECK(security_state_client);
std::unique_ptr<SecurityStateModelDelegate> security_state_model_delegate =
security_state_client->MaybeCreateSecurityStateModelDelegate();
if (security_state_model_delegate) if (security_state_model_delegate)
return security_state_model_delegate->GetSecurityLevel(web_contents); return security_state_model_delegate->GetSecurityLevel(web_contents);
......
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