diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfoControllerDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfoControllerDelegate.java index 6182f0c0102eec..9b41535a36977c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfoControllerDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfoControllerDelegate.java @@ -31,10 +31,9 @@ import org.chromium.chrome.browser.vr.VrModuleProvider; import org.chromium.components.content_settings.CookieControlsBridge; import org.chromium.components.content_settings.CookieControlsObserver; +import org.chromium.components.embedder_support.browser_context.BrowserContextHandle; import org.chromium.components.feature_engagement.EventConstants; import org.chromium.components.page_info.PageInfoControllerDelegate; -import org.chromium.components.page_info.PageInfoControllerDelegate.OfflinePageState; -import org.chromium.components.page_info.PageInfoControllerDelegate.PreviewPageState; import org.chromium.components.page_info.PageInfoView.PageInfoViewParams; import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.components.security_state.SecurityStateModel; @@ -54,6 +53,7 @@ public class ChromePageInfoControllerDelegate extends PageInfoControllerDelegate { private final WebContents mWebContents; private final Context mContext; + private final Profile mProfile; private String mOfflinePageCreationDate; private OfflinePageLoadUrlDelegate mOfflinePageLoadUrlDelegate; @@ -69,16 +69,14 @@ public ChromePageInfoControllerDelegate(Context context, WebContents webContents CookieControlsBridge.isCookieControlsEnabled(Profile.fromWebContents(webContents))); mContext = context; mWebContents = webContents; + mProfile = Profile.fromWebContents(mWebContents); + mPreviewPageState = getPreviewPageStateAndRecordUma(); initOfflinePageParams(); mOfflinePageLoadUrlDelegate = offlinePageLoadUrlDelegate; initHttpsImageCompressionStateAndRecordUMA(); } - private Profile profile() { - return Profile.fromWebContents(mWebContents); - } - /** * Return the state of the webcontents showing the preview. */ @@ -93,7 +91,7 @@ private Profile profile() { : PreviewPageState.INSECURE_PAGE_PREVIEW; PreviewsUma.recordPageInfoOpened(bridge.getPreviewsType(mWebContents)); - TrackerFactory.getTrackerForProfile(profile()).notifyEvent( + TrackerFactory.getTrackerForProfile(mProfile).notifyEvent( EventConstants.PREVIEWS_VERBOSE_STATUS_OPENED); } return previewPageState; @@ -254,9 +252,17 @@ public void showSiteSettings(String url) { @Override @NonNull public CookieControlsBridge createCookieControlsBridge(CookieControlsObserver observer) { - Profile profile = Profile.fromWebContents(mWebContents); return new CookieControlsBridge(observer, mWebContents, - profile.isOffTheRecord() ? profile.getOriginalProfile() : null); + mProfile.isOffTheRecord() ? mProfile.getOriginalProfile() : null); + } + + /** + * {@inheritDoc} + */ + @Override + @NonNull + public BrowserContextHandle getBrowserContext() { + return mProfile; } @VisibleForTesting diff --git a/components/page_info/android/BUILD.gn b/components/page_info/android/BUILD.gn index e5095d6182c77f..437090a5af48f6 100644 --- a/components/page_info/android/BUILD.gn +++ b/components/page_info/android/BUILD.gn @@ -82,6 +82,7 @@ android_library("java") { "java/src/org/chromium/components/page_info/PageInfoCookiesController.java", "java/src/org/chromium/components/page_info/PageInfoDialog.java", "java/src/org/chromium/components/page_info/PageInfoFeatureList.java", + "java/src/org/chromium/components/page_info/PageInfoMainPageController.java", "java/src/org/chromium/components/page_info/PageInfoPermissionsController.java", "java/src/org/chromium/components/page_info/PageInfoRowView.java", "java/src/org/chromium/components/page_info/PageInfoSubpage.java", diff --git a/components/page_info/android/java/res/layout/page_info_subpage.xml b/components/page_info/android/java/res/layout/page_info_subpage.xml index 66fdbf0a9cbb55..fffcc401ee3d2c 100644 --- a/components/page_info/android/java/res/layout/page_info_subpage.xml +++ b/components/page_info/android/java/res/layout/page_info_subpage.xml @@ -11,37 +11,35 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingBottom="8dp" - android:orientation="vertical" - android:background="@color/sheet_bg_color"> + android:background="@color/sheet_bg_color" + android:orientation="vertical"> - + android:ellipsize="end" + android:lineSpacingExtra="6dp" + android:paddingVertical="16dp" + android:textAlignment="center" + android:textAppearance="@style/TextAppearance.TextLarge.Primary" /> - + - @@ -49,19 +47,14 @@ android:id="@+id/subpage_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_below="@id/subpage_url" - android:layout_toEndOf="@id/subpage_back_button" - android:gravity="center_vertical" - android:paddingBottom="12dp" - app:chromeDrawableTint="@color/default_icon_color" - android:textAppearance="@style/TextAppearance.TextLarge.Primary"/> - - + android:layout_marginVertical="12dp" + android:textAppearance="@style/TextAppearance.TextLarge.Primary" /> + + android:layout_height="match_parent" /> diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoConnectionController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoConnectionController.java index 63c9428e1fcc23..f70d59dd848919 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoConnectionController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoConnectionController.java @@ -11,13 +11,14 @@ * Class for controlling the page info connection section. */ public class PageInfoConnectionController implements PageInfoSubpageController { - private PageInfoController mMainController; - private PageInfoViewV2 mView; + private PageInfoMainPageController mMainController; + private PageInfoRowView mRowView; private String mTitle; - public PageInfoConnectionController(PageInfoController mainController, PageInfoViewV2 view) { + public PageInfoConnectionController( + PageInfoMainPageController mainController, PageInfoRowView view) { mMainController = mainController; - mView = view; + mRowView = view; } private void launchSubpage() { @@ -36,7 +37,10 @@ public View createViewForSubpage(ViewGroup parent) { } @Override - public void willRemoveSubpage() {} + public void onSubPageAttached() {} + + @Override + public void onSubpageRemoved() {} public void setConnectionInfo(PageInfoView.ConnectionInfoParams params) { mTitle = params.summary != null ? params.summary.toString() : null; @@ -45,6 +49,6 @@ public void setConnectionInfo(PageInfoView.ConnectionInfoParams params) { rowParams.subtitle = params.message != null ? params.message.toString() : null; rowParams.visible = rowParams.title != null || rowParams.subtitle != null; rowParams.clickCallback = this::launchSubpage; - mView.getConnectionRowView().setParams(rowParams); + mRowView.setParams(rowParams); } } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java index f89b8b3abea08b..07c2686b948924 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java @@ -27,7 +27,6 @@ import androidx.core.view.ViewCompat; import org.chromium.base.ApiCompatibilityUtils; -import org.chromium.base.Consumer; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.NativeMethods; import org.chromium.base.metrics.RecordUserAction; @@ -37,6 +36,7 @@ import org.chromium.components.content_settings.CookieControlsObserver; import org.chromium.components.content_settings.CookieControlsStatus; import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; +import org.chromium.components.embedder_support.browser_context.BrowserContextHandle; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.omnibox.AutocompleteSchemeClassifier; import org.chromium.components.omnibox.OmniboxUrlEmphasizer; @@ -65,9 +65,9 @@ /** * Java side of Android implementation of the page info UI. */ -public class PageInfoController implements ModalDialogProperties.Controller, - SystemSettingsActivityRequiredListener, - CookieControlsObserver { +public class PageInfoController + implements PageInfoMainPageController, ModalDialogProperties.Controller, + SystemSettingsActivityRequiredListener, CookieControlsObserver { @IntDef({OpenedFromSource.MENU, OpenedFromSource.TOOLBAR, OpenedFromSource.VR}) @Retention(RetentionPolicy.SOURCE) public @interface OpenedFromSource { @@ -117,8 +117,6 @@ public class PageInfoController implements ModalDialogProperties.Controller, // task is pending. private Runnable mPendingRunAfterDismissTask; - private Consumer mRunAfterDismissConsumer; - // Reference to last created PageInfoController for testing. private static WeakReference sLastPageInfoControllerForTesting; @@ -166,12 +164,6 @@ public PageInfoController(WebContents webContents, int securityLevel, String pub mDelegate = delegate; mIsV2Enabled = PageInfoFeatureList.isEnabled(PageInfoFeatureList.PAGE_INFO_V2); mPermissionParamsListBuilderDelegate = permissionParamsListBuilderDelegate; - mRunAfterDismissConsumer = new Consumer() { - @Override - public void accept(Runnable r) { - runAfterDismiss(r); - } - }; PageInfoViewParams viewParams = new PageInfoViewParams(); mWindowAndroid = webContents.getTopLevelNativeWindow(); @@ -249,8 +241,8 @@ public void accept(Runnable r) { if (mCookieBridge != null) mCookieBridge.onUiClosing(); }; - mDelegate.initPreviewUiParams(viewParams, mRunAfterDismissConsumer); - mDelegate.initOfflinePageUiParams(viewParams, mRunAfterDismissConsumer); + mDelegate.initPreviewUiParams(viewParams, this::runAfterDismiss); + mDelegate.initOfflinePageUiParams(viewParams, this::runAfterDismiss); if (!mIsInternalPage && !mDelegate.isShowingOfflinePage() && !mDelegate.isShowingPreview() && mDelegate.isInstantAppAvailable(mFullUrl)) { @@ -273,10 +265,12 @@ public void accept(Runnable r) { if (isSheet(mContext)) mView.setBackgroundColor(Color.WHITE); if (mIsV2Enabled) { PageInfoViewV2 view2 = (PageInfoViewV2) mView; - mConnectionController = new PageInfoConnectionController(this, view2); - mPermissionsController = new PageInfoPermissionsController(this, view2); - mCookiesController = - new PageInfoCookiesController(this, view2, viewParams.cookieControlsShown); + mConnectionController = + new PageInfoConnectionController(this, view2.getConnectionRowView()); + mPermissionsController = + new PageInfoPermissionsController(this, view2.getPermissionsRowView()); + mCookiesController = new PageInfoCookiesController( + this, view2.getCookiesRowView(), viewParams.cookieControlsShown, mFullUrl); } else { mView.showPerformanceInfo(mDelegate.shouldShowPerformanceBadge(mFullUrl)); mView.showHttpsImageCompressionInfo(mDelegate.isHttpsImageCompressionApplied()); @@ -571,10 +565,16 @@ PageInfoControllerDelegate getDelegate() { return mDelegate; } + @Override + public BrowserContextHandle getBrowserContext() { + return mDelegate.getBrowserContext(); + } + /** * Launches a subpage with the specified params. */ - void launchSubpage(PageInfoSubpageController controller) { + @Override + public void launchSubpage(PageInfoSubpageController controller) { mSubpageController = controller; PageInfoSubpage.Params subpageParams = new PageInfoSubpage.Params(); subpageParams.url = mDisplayUrlBuilder; @@ -583,10 +583,12 @@ void launchSubpage(PageInfoSubpageController controller) { mSubpage = new PageInfoSubpage(mContext, subpageParams); mSubpage.setBackButtonOnClickListener(view -> exitSubpage()); View subview = mSubpageController.createViewForSubpage(mSubpage); + if (subview != null) { ((FrameLayout) mSubpage.findViewById(R.id.placeholder)).addView(subview); } replaceView(mView, mSubpage); + controller.onSubPageAttached(); } private ViewGroup getParent(View view) { @@ -615,8 +617,8 @@ private void replaceView(View currentView, View newView) { * Switches back to the main page info view. */ private void exitSubpage() { - mSubpageController.willRemoveSubpage(); replaceView(mSubpage, mView); + mSubpageController.onSubpageRemoved(); mSubpage = null; mSubpageController = null; } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoControllerDelegate.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoControllerDelegate.java index a7ce7132acf7f8..aedffd5441584e 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoControllerDelegate.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoControllerDelegate.java @@ -14,6 +14,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.components.content_settings.CookieControlsBridge; import org.chromium.components.content_settings.CookieControlsObserver; +import org.chromium.components.embedder_support.browser_context.BrowserContextHandle; import org.chromium.components.omnibox.AutocompleteSchemeClassifier; import org.chromium.components.page_info.PageInfoView.PageInfoViewParams; import org.chromium.ui.modaldialog.ModalDialogManager; @@ -161,7 +162,7 @@ public boolean isShowingOfflinePage() { /** * Initialize viewParams with Offline Page UI info, if any. * @param viewParams The PageInfoViewParams to set state on. - * @param consumer Used to set "open Online" button callback for offline page. + * @param runAfterDismiss Used to set "open Online" button callback for offline page. */ public void initOfflinePageUiParams( PageInfoViewParams viewParams, Consumer runAfterDismiss) { @@ -205,4 +206,10 @@ public boolean isSiteSettingsAvailable() { @NonNull public abstract CookieControlsBridge createCookieControlsBridge( CookieControlsObserver observer); + + /** + * @return Returns the browser context associated with this dialog. + */ + @NonNull + public abstract BrowserContextHandle getBrowserContext(); } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesController.java index 9fa99d0790a900..cea21ae91072dc 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesController.java @@ -11,20 +11,23 @@ * Class for controlling the page info cookies section. */ public class PageInfoCookiesController implements PageInfoSubpageController { - private PageInfoController mMainController; - private PageInfoViewV2 mView; + private PageInfoMainPageController mMainController; + private PageInfoRowView mRowView; + private String mFullUrl; private String mTitle; - public PageInfoCookiesController( - PageInfoController mainController, PageInfoViewV2 view, boolean isVisible) { + public PageInfoCookiesController(PageInfoMainPageController mainController, + PageInfoRowView rowView, boolean isVisible, String fullUrl) { mMainController = mainController; - mView = view; - mTitle = mView.getContext().getResources().getString(R.string.cookies_title); + mRowView = rowView; + mFullUrl = fullUrl; + mTitle = mRowView.getContext().getResources().getString(R.string.cookies_title); + PageInfoRowView.ViewParams rowParams = new PageInfoRowView.ViewParams(); rowParams.visible = isVisible; rowParams.title = mTitle; rowParams.clickCallback = this::launchSubpage; - mView.getCookiesRowView().setParams(rowParams); + mRowView.setParams(rowParams); } private void launchSubpage() { @@ -43,11 +46,14 @@ public View createViewForSubpage(ViewGroup parent) { } @Override - public void willRemoveSubpage() {} + public void onSubPageAttached() {} + + @Override + public void onSubpageRemoved() {} public void onBlockedCookiesCountChanged(int blockedCookies) { - String subtitle = mView.getContext().getResources().getQuantityString( + String subtitle = mRowView.getContext().getResources().getQuantityString( R.plurals.cookie_controls_blocked_cookies, blockedCookies, blockedCookies); - mView.getCookiesRowView().updateSubtitle(subtitle); + mRowView.updateSubtitle(subtitle); } } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoMainPageController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoMainPageController.java new file mode 100644 index 00000000000000..e1541d581fe889 --- /dev/null +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoMainPageController.java @@ -0,0 +1,23 @@ +// 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.embedder_support.browser_context.BrowserContextHandle; + +/** + * Interface for a page info main page controller. + */ +public interface PageInfoMainPageController { + /** + * Launches the PageInfoSubpage provided by |pageInfoCookiesController|. + * @param controller The controller providing a PageInfoSubpage. + */ + void launchSubpage(PageInfoSubpageController controller); + + /** + * @return A BrowserContext for this dialog. + */ + BrowserContextHandle getBrowserContext(); +} diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java index e791c7da1f241a..74b332e09f4b84 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java @@ -11,13 +11,14 @@ * Class for controlling the page info permissions section. */ public class PageInfoPermissionsController implements PageInfoSubpageController { - private PageInfoController mMainController; - private PageInfoViewV2 mView; + private PageInfoMainPageController mMainController; + private PageInfoRowView mRowView; private String mTitle; - public PageInfoPermissionsController(PageInfoController mainController, PageInfoViewV2 view) { + public PageInfoPermissionsController( + PageInfoMainPageController mainController, PageInfoRowView view) { mMainController = mainController; - mView = view; + mRowView = view; } private void launchSubpage() { @@ -36,16 +37,20 @@ public View createViewForSubpage(ViewGroup parent) { } @Override - public void willRemoveSubpage() {} + public void onSubPageAttached() {} + + @Override + public void onSubpageRemoved() {} public void setPermissions(PageInfoView.PermissionParams params) { - mTitle = mView.getContext().getResources().getString(R.string.page_info_permissions_title); + mTitle = mRowView.getContext().getResources().getString( + R.string.page_info_permissions_title); PageInfoRowView.ViewParams rowParams = new PageInfoRowView.ViewParams(); rowParams.visible = true; rowParams.title = mTitle; // TODO(crbug.com/1077766): Create a permissions subtitle string that represents // the state, using the PageInfoView.PermissionParams and potentially R.plurals. rowParams.clickCallback = this::launchSubpage; - mView.getPermissionsRowView().setParams(rowParams); + mRowView.setParams(rowParams); } } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpage.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpage.java index 5341738665b014..0dfe41f944483d 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpage.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpage.java @@ -8,9 +8,10 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.TextView; +import org.chromium.ui.widget.ChromeImageButton; + /** * Represents a particular page info subpage. */ @@ -25,24 +26,20 @@ public static class Params { public String subpageTitle; } - private PageInfoView.ElidedUrlTextView mUrlTitle; - private ImageView mBackButton; - private TextView mSubpageTitle; - public PageInfoSubpage(Context context, Params params) { super(context); LayoutInflater.from(context).inflate(R.layout.page_info_subpage, this, true); // Set the url title. - mUrlTitle = findViewById(R.id.subpage_url); - mUrlTitle.setUrl(params.url, params.urlOriginLength); + PageInfoView.ElidedUrlTextView urlTitle = findViewById(R.id.subpage_url); + urlTitle.setUrl(params.url, params.urlOriginLength); // Set the back button. - mBackButton = findViewById(R.id.subpage_back_button); // Set the page title. - mSubpageTitle = findViewById(R.id.subpage_title); - mSubpageTitle.setText(params.subpageTitle); + TextView subpageTitle = findViewById(R.id.subpage_title); + subpageTitle.setText(params.subpageTitle); } public void setBackButtonOnClickListener(View.OnClickListener listener) { - mBackButton.setOnClickListener(listener); + ChromeImageButton backButton = findViewById(R.id.subpage_back_button); + backButton.setOnClickListener(listener); } } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpageController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpageController.java index de1620f8064bb1..d26d9ca88fc32d 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpageController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoSubpageController.java @@ -22,7 +22,12 @@ public interface PageInfoSubpageController { View createViewForSubpage(ViewGroup parent); /** - * Called before the subpage closes in order to perform any necessary cleanup. + * Called when the subpage was added to the view hierarchy. */ - void willRemoveSubpage(); + void onSubPageAttached(); + + /** + * Called after the subpage closes in order to perform any necessary cleanup. + */ + void onSubpageRemoved(); } diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoViewV2.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoViewV2.java index 3da71ab8d0a278..f9b7a08ddf2543 100644 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoViewV2.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoViewV2.java @@ -19,7 +19,6 @@ public class PageInfoViewV2 extends PageInfoView { // Components specific to this PageInfoView private LinearLayout mRowWrapper; private PageInfoRowView mConnectionRow; - private PageInfoRowView mPerformanceRow; private PageInfoRowView mPermissionsRow; private PageInfoRowView mCookiesRow; @@ -49,9 +48,7 @@ protected void initConnection(PageInfoView.PageInfoViewParams params) { } @Override - protected void initPerformance(PageInfoView.PageInfoViewParams params) { - mPerformanceRow = findViewById(R.id.page_info_performance_row); - } + protected void initPerformance(PageInfoView.PageInfoViewParams params) {} @Override protected void initPermissions(PageInfoView.PageInfoViewParams params) { @@ -73,10 +70,6 @@ public PageInfoRowView getConnectionRowView() { return mConnectionRow; } - public PageInfoRowView getPerformanceRowView() { - return mPerformanceRow; - } - public PageInfoRowView getPermissionsRowView() { return mPermissionsRow; } diff --git a/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java index 314b6b7ff29399..23d61becf80771 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/PageInfoControllerDelegateImpl.java @@ -13,6 +13,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.components.content_settings.CookieControlsBridge; import org.chromium.components.content_settings.CookieControlsObserver; +import org.chromium.components.embedder_support.browser_context.BrowserContextHandle; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.page_info.PageInfoControllerDelegate; import org.chromium.content_public.browser.WebContents; @@ -26,7 +27,7 @@ public class PageInfoControllerDelegateImpl extends PageInfoControllerDelegate { private final Context mContext; private final WebContents mWebContents; - private final String mProfileName; + private final ProfileImpl mProfile; static PageInfoControllerDelegateImpl create(WebContents webContents) { TabImpl tab = TabImpl.fromWebContents(webContents); @@ -45,7 +46,7 @@ private PageInfoControllerDelegateImpl(Context context, WebContents webContents, CookieControlsBridge.isCookieControlsEnabled(profile)); mContext = context; mWebContents = webContents; - mProfileName = profile.getName(); + mProfile = profile; } /** @@ -53,8 +54,8 @@ private PageInfoControllerDelegateImpl(Context context, WebContents webContents, */ @Override public void showSiteSettings(String url) { - Intent intent = - SiteSettingsIntentHelper.createIntentForSingleWebsite(mContext, mProfileName, url); + Intent intent = SiteSettingsIntentHelper.createIntentForSingleWebsite( + mContext, mProfile.getName(), url); // Disabling StrictMode to avoid violations (https://crbug.com/819410). try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) { @@ -71,6 +72,15 @@ public CookieControlsBridge createCookieControlsBridge(CookieControlsObserver ob return new CookieControlsBridge(observer, mWebContents, null); } + /** + * {@inheritDoc} + */ + @Override + @NonNull + public BrowserContextHandle getBrowserContext() { + return mProfile; + } + private static boolean isHttpOrHttps(GURL url) { String scheme = url.getScheme(); return UrlConstants.HTTP_SCHEME.equals(scheme) || UrlConstants.HTTPS_SCHEME.equals(scheme);