Commit 42ebb3dc authored by Mugdha Lakhani's avatar Mugdha Lakhani Committed by Commit Bot

[WebLayer] Remove PageInfoController deps on Profile, ChromeActivity.

PageInfoControllerDelegate has been introduced to allow customization of
PageInfoController java code, currently focussing on everything that
requires Profile or ChromeActivity.

The end goal is to have no chrome dependencies in PageInfoController so
it can be moved to //components.

Bug: 1052375
Change-Id: I8adf97cb400b99f964b86779c2a3116d1e3b458a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2142261
Commit-Queue: Mugdha Lakhani <nator@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758917}
parent d5722091
......@@ -1222,6 +1222,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionViewProperties.java",
"java/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService.java",
"java/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler.java",
"java/src/org/chromium/chrome/browser/page_info/ChromePageInfoControllerDelegate.java",
"java/src/org/chromium/chrome/browser/page_info/PageInfoController.java",
"java/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilder.java",
"java/src/org/chromium/chrome/browser/page_info/SiteSettingsHelper.java",
......
......@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.compositor.CompositorView;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.RedirectHandlerTabHelper;
......@@ -565,11 +566,12 @@ public class VrShell extends GvrLayout
public void showPageInfo() {
Tab tab = mActivity.getActivityTab();
if (tab == null) return;
PageInfoController.show(mActivity, tab.getWebContents(), null,
WebContents webContents = tab.getWebContents();
PageInfoController.show(mActivity, webContents, null,
PageInfoController.OpenedFromSource.VR,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab),
new ChromePageInfoControllerDelegate(mActivity, webContents));
}
// Called because showing audio permission dialog isn't supported in VR. This happens when
......
......@@ -110,6 +110,7 @@ import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper.MenuButtonState;
import org.chromium.chrome.browser.omaha.notification.UpdateNotificationController;
import org.chromium.chrome.browser.omaha.notification.UpdateNotificationControllerFactory;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.preferences.Pref;
......@@ -1965,10 +1966,12 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
RecordUserAction.record("MobileMenuReload");
}
} else if (id == R.id.info_menu_id) {
PageInfoController.show(this, currentTab.getWebContents(), null,
WebContents webContents = currentTab.getWebContents();
PageInfoController.show(this, webContents, null,
PageInfoController.OpenedFromSource.MENU,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(currentTab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(currentTab),
new ChromePageInfoControllerDelegate(this, webContents));
} else if (id == R.id.translate_id) {
RecordUserAction.record("MobileMenuTranslate");
Tracker tracker = TrackerFactory.getTrackerForProfile(
......
......@@ -49,6 +49,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.infobar.InfoBarContainer;
import org.chromium.chrome.browser.night_mode.NightModeUtils;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.chrome.browser.previews.Previews;
import org.chromium.chrome.browser.tab.Tab;
......@@ -246,11 +247,12 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
} else if (id == R.id.info_menu_id) {
Tab tab = getTabModelSelector().getCurrentTab();
if (tab == null) return false;
PageInfoController.show(this, tab.getWebContents(),
getToolbarManager().getContentPublisher(),
WebContents webContents = tab.getWebContents();
PageInfoController.show(this, webContents, getToolbarManager().getContentPublisher(),
PageInfoController.OpenedFromSource.MENU,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab),
new ChromePageInfoControllerDelegate(this, webContents));
return true;
}
return super.onMenuOrKeyboardAction(id, fromMenu);
......
......@@ -20,6 +20,7 @@ public class ChromeAutocompleteSchemeClassifier extends AutocompleteSchemeClassi
super(ChromeAutocompleteSchemeClassifierJni.get().createAutocompleteClassifier(profile));
}
@Override
public void destroy() {
ChromeAutocompleteSchemeClassifierJni.get().deleteAutocompleteClassifier(
super.getNativePtr());
......
......@@ -11,14 +11,17 @@ import androidx.annotation.DrawableRes;
import androidx.annotation.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.omnibox.SearchEngineLogoUtils;
import org.chromium.chrome.browser.omnibox.UrlBar.UrlTextChangeListener;
import org.chromium.chrome.browser.omnibox.UrlBarEditingTextStateProvider;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
......@@ -195,10 +198,13 @@ public class StatusViewCoordinator implements View.OnClickListener, UrlTextChang
}
Tab tab = mToolbarDataProvider.getTab();
PageInfoController.show(((TabImpl) tab).getActivity(), tab.getWebContents(), null,
ChromeActivity activity = ((TabImpl) tab).getActivity();
WebContents webContents = tab.getWebContents();
PageInfoController.show(activity, webContents, null,
PageInfoController.OpenedFromSource.TOOLBAR,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab),
new ChromePageInfoControllerDelegate(activity, webContents));
}
/**
......
// 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.page_info;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.omnibox.ChromeAutocompleteSchemeClassifier;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.site_settings.CookieControlsBridge;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.omnibox.AutocompleteSchemeClassifier;
import org.chromium.components.page_info.PageInfoControllerDelegate;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.modaldialog.ModalDialogManager;
/**
* Chrome's implementation of PageInfoControllerDelegate, that provides
* Chrome-specific info to PageInfoController.
*/
public class ChromePageInfoControllerDelegate implements PageInfoControllerDelegate {
private final WebContents mWebContents;
private final ChromeActivity mActivity;
public ChromePageInfoControllerDelegate(ChromeActivity activity, WebContents webContents) {
mWebContents = webContents;
mActivity = activity;
}
private Profile profile() {
return Profile.fromWebContents(mWebContents);
}
@Override
public Tracker getTracker() {
return TrackerFactory.getTrackerForProfile(profile());
}
@Override
public AutocompleteSchemeClassifier createAutocompleteSchemeClassifier() {
return new ChromeAutocompleteSchemeClassifier(profile());
}
@Override
public boolean cookieControlsShown() {
return CookieControlsBridge.isCookieControlsEnabled(profile());
}
@Override
public ModalDialogManager getModalDialogManager() {
return mActivity.getModalDialogManager();
}
@Override
public boolean useDarkColors() {
return !mActivity.getNightModeStateProvider().isInNightMode();
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.page_info;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
......@@ -27,16 +28,12 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.instantapps.InstantAppsHandler;
import org.chromium.chrome.browser.offlinepages.OfflinePageItem;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils.OfflinePageLoadUrlDelegate;
import org.chromium.chrome.browser.omnibox.ChromeAutocompleteSchemeClassifier;
import org.chromium.chrome.browser.previews.PreviewsAndroidBridge;
import org.chromium.chrome.browser.previews.PreviewsUma;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.site_settings.ContentSettingValues;
import org.chromium.chrome.browser.site_settings.CookieControlsBridge;
import org.chromium.chrome.browser.vr.VrModuleProvider;
......@@ -44,11 +41,12 @@ import org.chromium.components.content_settings.CookieControlsEnforcement;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.components.feature_engagement.EventConstants;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.omnibox.AutocompleteSchemeClassifier;
import org.chromium.components.omnibox.OmniboxUrlEmphasizer;
import org.chromium.components.page_info.ConnectionInfoPopup;
import org.chromium.components.page_info.CookieControlsStatus;
import org.chromium.components.page_info.CookieControlsView;
import org.chromium.components.page_info.PageInfoControllerDelegate;
import org.chromium.components.page_info.PageInfoDialog;
import org.chromium.components.page_info.PageInfoView;
import org.chromium.components.page_info.PageInfoView.ConnectionInfoParams;
......@@ -113,6 +111,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
private final WebContents mWebContents;
private final OfflinePageLoadUrlDelegate mOfflinePageLoadUrlDelegate;
private final PermissionParamsListBuilder mPermissionParamsListBuilder;
private final PageInfoControllerDelegate mDelegate;
// A pointer to the C++ object for this UI.
private long mNativePageInfoController;
......@@ -170,17 +169,20 @@ public class PageInfoController implements ModalDialogProperties.Controller,
* @param publisher The name of the content publisher, if any.
* @param offlinePageLoadUrlDelegate {@link OfflinePageLoadUrlDelegate}
* defined by the caller.
* @param delegate The PageInfoControllerDelegate used to provide
* embedder-specific info.
*/
protected PageInfoController(ChromeActivity activity, WebContents webContents,
int securityLevel, String offlinePageUrl, String offlinePageCreationDate,
protected PageInfoController(Activity activity, WebContents webContents, int securityLevel,
String offlinePageUrl, String offlinePageCreationDate,
@OfflinePageState int offlinePageState, @PreviewPageState int previewPageState,
String publisher, OfflinePageLoadUrlDelegate offlinePageLoadUrlDelegate) {
String publisher, OfflinePageLoadUrlDelegate offlinePageLoadUrlDelegate,
PageInfoControllerDelegate delegate) {
mOfflinePageLoadUrlDelegate = offlinePageLoadUrlDelegate;
mWebContents = webContents;
mSecurityLevel = securityLevel;
mOfflinePageState = offlinePageState;
mPreviewPageState = previewPageState;
Profile profile = Profile.fromWebContents(webContents);
mDelegate = delegate;
PageInfoViewParams viewParams = new PageInfoViewParams();
if (mOfflinePageState != OfflinePageState.NOT_OFFLINE_PAGE) {
......@@ -218,12 +220,12 @@ public class PageInfoController implements ModalDialogProperties.Controller,
displayUrl = UrlUtilities.stripScheme(mFullUrl);
}
SpannableStringBuilder displayUrlBuilder = new SpannableStringBuilder(displayUrl);
ChromeAutocompleteSchemeClassifier chromeAutocompleteSchemeClassifier =
new ChromeAutocompleteSchemeClassifier(profile);
AutocompleteSchemeClassifier autocompleteSchemeClassifier =
delegate.createAutocompleteSchemeClassifier();
if (mSecurityLevel == ConnectionSecurityLevel.SECURE) {
OmniboxUrlEmphasizer.EmphasizeComponentsResponse emphasizeResponse =
OmniboxUrlEmphasizer.parseForEmphasizeComponents(
displayUrlBuilder.toString(), chromeAutocompleteSchemeClassifier);
displayUrlBuilder.toString(), autocompleteSchemeClassifier);
if (emphasizeResponse.schemeLength > 0) {
displayUrlBuilder.setSpan(
new TextAppearanceSpan(activity, R.style.TextAppearance_RobotoMediumStyle),
......@@ -231,14 +233,14 @@ public class PageInfoController implements ModalDialogProperties.Controller,
}
}
final boolean useDarkColors = !activity.getNightModeStateProvider().isInNightMode();
final boolean useDarkColors = delegate.useDarkColors();
OmniboxUrlEmphasizer.emphasizeUrl(displayUrlBuilder, activity.getResources(),
chromeAutocompleteSchemeClassifier, mSecurityLevel, mIsInternalPage, useDarkColors,
autocompleteSchemeClassifier, mSecurityLevel, mIsInternalPage, useDarkColors,
/*emphasizeScheme=*/true);
viewParams.url = displayUrlBuilder;
viewParams.urlOriginLength = OmniboxUrlEmphasizer.getOriginEndIndex(
displayUrlBuilder.toString(), chromeAutocompleteSchemeClassifier);
chromeAutocompleteSchemeClassifier.destroy();
displayUrlBuilder.toString(), autocompleteSchemeClassifier);
autocompleteSchemeClassifier.destroy();
if (SiteSettingsHelper.isSiteSettingsAvailable(webContents)) {
viewParams.siteSettingsButtonClickCallback = () -> {
......@@ -248,7 +250,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
SiteSettingsHelper.showSiteSettings(activity, mFullUrl);
});
};
viewParams.cookieControlsShown = CookieControlsBridge.isCookieControlsEnabled(profile);
viewParams.cookieControlsShown = delegate.cookieControlsShown();
} else {
viewParams.siteSettingsButtonShown = false;
viewParams.cookieControlsShown = false;
......@@ -332,7 +334,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
mDialog = new PageInfoDialog(activity, mView,
webContents.getViewAndroidDelegate().getContainerView(), isSheet(activity),
activity.getModalDialogManager(), this);
delegate.getModalDialogManager(), this);
mDialog.show();
}
......@@ -412,7 +414,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
// Display the appropriate connection message.
SpannableStringBuilder messageBuilder = new SpannableStringBuilder();
ChromeActivity context = (ChromeActivity) mWindowAndroid.getActivity().get();
Context context = mWindowAndroid.getActivity().get();
assert context != null;
if (mContentPublisher != null) {
messageBuilder.append(
......@@ -465,7 +467,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
if (!mWebContents.isDestroyed()) {
recordAction(PageInfoAction.PAGE_INFO_SECURITY_DETAILS_OPENED);
ConnectionInfoPopup.show(context, mWebContents,
context.getModalDialogManager(), VrModuleProvider.getDelegate());
mDelegate.getModalDialogManager(), VrModuleProvider.getDelegate());
}
});
};
......@@ -555,10 +557,12 @@ public class PageInfoController implements ModalDialogProperties.Controller,
* @param source Determines the source that triggered the popup.
* @param offlinePageLoadUrlDelegate {@link OfflinePageLoadUrlDelegate} defined by the
* caller.
* @param delegate The PageInfoControllerDelegate used to provide embedder-specific info.
*/
public static void show(final ChromeActivity activity, WebContents webContents,
public static void show(final Activity activity, WebContents webContents,
final String contentPublisher, @OpenedFromSource int source,
OfflinePageLoadUrlDelegate offlinePageLoadUrlDelegate) {
OfflinePageLoadUrlDelegate offlinePageLoadUrlDelegate,
PageInfoControllerDelegate delegate) {
// If the activity's decor view is not attached to window, we don't show the dialog because
// the window manager might have revoked the window token for this activity. See
// https://crbug.com/921450.
......@@ -586,9 +590,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
: PreviewPageState.INSECURE_PAGE_PREVIEW;
PreviewsUma.recordPageInfoOpened(bridge.getPreviewsType(webContents));
Tracker tracker =
TrackerFactory.getTrackerForProfile(Profile.fromWebContents(webContents));
tracker.notifyEvent(EventConstants.PREVIEWS_VERBOSE_STATUS_OPENED);
delegate.getTracker().notifyEvent(EventConstants.PREVIEWS_VERBOSE_STATUS_OPENED);
}
String offlinePageUrl = null;
......@@ -617,7 +619,7 @@ public class PageInfoController implements ModalDialogProperties.Controller,
new PageInfoController(activity, webContents, securityLevel, offlinePageUrl,
offlinePageCreationDate, offlinePageState, previewPageState, contentPublisher,
offlinePageLoadUrlDelegate);
offlinePageLoadUrlDelegate, delegate);
}
@Override
......
......@@ -11,6 +11,7 @@ import androidx.annotation.DrawableRes;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.components.omnibox.SecurityStatusIcon;
import org.chromium.components.security_state.ConnectionSecurityLevel;
......@@ -134,6 +135,7 @@ import org.chromium.ui.modelutil.PropertyModel;
PageInfoController.show(mChromeActivity, mWebContentsRef, null,
PageInfoController.OpenedFromSource.TOOLBAR,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.WebContentsOfflinePageLoadUrlDelegate(mWebContentsRef));
new OfflinePageUtils.WebContentsOfflinePageLoadUrlDelegate(mWebContentsRef),
new ChromePageInfoControllerDelegate(mChromeActivity, mWebContentsRef));
};
}
......@@ -8,7 +8,6 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.app.Activity;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
......@@ -56,6 +55,7 @@ import org.chromium.chrome.browser.omnibox.UrlBarCoordinator;
import org.chromium.chrome.browser.omnibox.UrlBarCoordinator.SelectionState;
import org.chromium.chrome.browser.omnibox.UrlBarData;
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.PageInfoController;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
......@@ -68,6 +68,7 @@ import org.chromium.components.browser_ui.styles.ChromeColors;
import org.chromium.components.browser_ui.widget.TintedDrawable;
import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.common.ContentUrlConstants;
import org.chromium.net.GURLUtils;
import org.chromium.ui.base.Clipboard;
......@@ -594,13 +595,16 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
public void onNativeLibraryReady() {
mSecurityButton.setOnClickListener(v -> {
Tab currentTab = getToolbarDataProvider().getTab();
if (currentTab == null || currentTab.getWebContents() == null) return;
Activity activity = currentTab.getWindowAndroid().getActivity().get();
WebContents webContents = currentTab.getWebContents();
if (currentTab == null || webContents == null) return;
ChromeActivity activity =
(ChromeActivity) currentTab.getWindowAndroid().getActivity().get();
if (activity == null) return;
PageInfoController.show((ChromeActivity) activity, currentTab.getWebContents(),
getContentPublisher(), PageInfoController.OpenedFromSource.TOOLBAR,
PageInfoController.show(activity, webContents, getContentPublisher(),
PageInfoController.OpenedFromSource.TOOLBAR,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(currentTab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(currentTab),
new ChromePageInfoControllerDelegate(activity, webContents));
});
}
......
......@@ -67,7 +67,9 @@ public class PageInfoControllerTest {
PageInfoController.show(mActivityTestRule.getActivity(), tab.getWebContents(), null,
PageInfoController.OpenedFromSource.MENU,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab),
new ChromePageInfoControllerDelegate(
mActivityTestRule.getActivity(), tab.getWebContents()));
});
}
......@@ -90,7 +92,9 @@ public class PageInfoControllerTest {
PageInfoController.OfflinePageState.NOT_OFFLINE_PAGE,
PageInfoController.PreviewPageState.NOT_PREVIEW, /*publisher=*/null,
/*offlinePageLoadUrlDelegate=*/
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab));
new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab),
new ChromePageInfoControllerDelegate(
mActivityTestRule.getActivity(), tab.getWebContents()));
PageInfoView pageInfoView = pageInfo.getPageInfoViewForTesting();
// Test that the title contains the Unicode hostname rather than strict equality, as
// the test server will be bound to a random port.
......
......@@ -16,6 +16,8 @@ public class AutocompleteSchemeClassifier {
this.mNativePtr = nativePtr;
}
public void destroy() {}
@CalledByNative
protected long getNativePtr() {
return mNativePtr;
......
......@@ -68,6 +68,7 @@ android_library("java") {
"java/src/org/chromium/components/page_info/CertificateViewer.java",
"java/src/org/chromium/components/page_info/ConnectionInfoPopup.java",
"java/src/org/chromium/components/page_info/CookieControlsView.java",
"java/src/org/chromium/components/page_info/PageInfoControllerDelegate.java",
"java/src/org/chromium/components/page_info/PageInfoDialog.java",
"java/src/org/chromium/components/page_info/PageInfoView.java",
"java/src/org/chromium/components/page_info/SystemSettingsActivityRequiredListener.java",
......@@ -78,6 +79,8 @@ android_library("java") {
":java_resources",
"//base:base_java",
"//base:jni_java",
"//components/feature_engagement/public:public_java",
"//components/omnibox/browser:browser_java",
"//content/public/android:content_java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
......
include_rules = [
"+components/feature_engagement/public/android/java",
"+components/omnibox/browser/android/java",
"+components/strings/grit/components_strings.h",
"-content/public/android",
"+content/public/android/java/src/org/chromium/content_public",
......
// 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.page_info;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.omnibox.AutocompleteSchemeClassifier;
import org.chromium.ui.modaldialog.ModalDialogManager;
/**
* Interface that provides embedder-level information to PageInfoController.
*/
public interface PageInfoControllerDelegate {
// Returns the tracker.
Tracker getTracker();
// Create an AutoCompleteClassifier.
AutocompleteSchemeClassifier createAutocompleteSchemeClassifier();
// Whether cookie controls should be shown in Page Info UI.
boolean cookieControlsShown();
// Return the ModalDialogManager to be used.
ModalDialogManager getModalDialogManager();
// Whether Page Info UI should use dark colors.
boolean useDarkColors();
}
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