[AUTO][FILECONTROL] - version 142.0.7444.60
This commit is contained in:
committed by
github-actions[bot]
parent
86a6475730
commit
106f3bbdd7
@@ -1 +1 @@
|
||||
141.0.7390.127
|
||||
142.0.7444.60
|
||||
|
||||
@@ -172,37 +172,6 @@ bool g_created_network_context_params = false;
|
||||
// On apps targeting API level O or later, check cleartext is enforced.
|
||||
bool g_check_cleartext_permitted = false;
|
||||
|
||||
BASE_FEATURE(WebViewOptimizeXrwNavigationFlow,
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
|
||||
// A throttle which checks if the XRW origin trial is enabled for this
|
||||
// navigation, and forwards it to the proxying loader factory.
|
||||
class XrwNavigationThrottle : public content::NavigationThrottle {
|
||||
public:
|
||||
explicit XrwNavigationThrottle(content::NavigationThrottleRegistry& registry)
|
||||
: NavigationThrottle(registry) {}
|
||||
~XrwNavigationThrottle() override {
|
||||
AwProxyingURLLoaderFactory::ClearXrwResultForNavigation(
|
||||
navigation_handle()->GetNavigationId());
|
||||
}
|
||||
|
||||
ThrottleCheckResult WillStartRequest() override {
|
||||
auto* handle = navigation_handle();
|
||||
content::OriginTrialsControllerDelegate* delegate =
|
||||
handle->GetWebContents()
|
||||
->GetBrowserContext()
|
||||
->GetOriginTrialsControllerDelegate();
|
||||
AwProxyingURLLoaderFactory::SetXrwResultForNavigation(
|
||||
delegate, handle->GetURL(),
|
||||
handle->IsInOutermostMainFrame()
|
||||
? blink::mojom::ResourceType::kMainFrame
|
||||
: blink::mojom::ResourceType::kSubFrame,
|
||||
handle->GetFrameTreeNodeId(), handle->GetNavigationId());
|
||||
return content::NavigationThrottle::PROCEED;
|
||||
}
|
||||
|
||||
const char* GetNameForLogging() override { return "XrwNavigationThrottle"; }
|
||||
};
|
||||
|
||||
// Get async check tracker to make Safe Browsing v5 check asynchronous
|
||||
base::WeakPtr<AsyncCheckTracker> GetAsyncCheckTracker(
|
||||
@@ -699,9 +668,6 @@ void AwContentBrowserClient::CreateThrottlesForNavigation(
|
||||
AwBrowserContext::FromWebContents(navigation_handle.GetWebContents())));
|
||||
|
||||
AwSafeBrowsingNavigationThrottle::MaybeCreateAndAdd(registry);
|
||||
if (base::FeatureList::IsEnabled(kWebViewOptimizeXrwNavigationFlow)) {
|
||||
registry.AddThrottle(std::make_unique<XrwNavigationThrottle>(registry));
|
||||
}
|
||||
|
||||
if ((navigation_handle.GetNavigatingFrameType() ==
|
||||
FrameType::kPrimaryMainFrame ||
|
||||
@@ -998,7 +964,6 @@ bool AwContentBrowserClient::HandleExternalProtocol(
|
||||
mojo::NullRemote(),
|
||||
/* intercept_only=*/true,
|
||||
/* security_options=*/std::nullopt,
|
||||
/* xrw_allowlist_matcher=*/nullptr,
|
||||
/* origin_matched_headers=*/{},
|
||||
std::move(browser_context_handle),
|
||||
/* navigation_id=*/std::nullopt);
|
||||
@@ -1181,9 +1146,6 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
std::optional<WebContentsKey> web_contents_key;
|
||||
web_contents_key = GetWebContentsKey(*web_contents);
|
||||
|
||||
auto xrw_allowlist_matcher =
|
||||
AwSettings::FromWebContents(web_contents)->xrw_allowlist_matcher();
|
||||
|
||||
content::GetIOThreadTaskRunner({})->PostTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(&AwProxyingURLLoaderFactory::CreateProxy,
|
||||
@@ -1191,7 +1153,6 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
isolation_info, web_contents_key,
|
||||
frame->GetFrameTreeNodeId(), std::move(proxied_receiver),
|
||||
std::move(target_factory_remote), security_options,
|
||||
std::move(xrw_allowlist_matcher),
|
||||
aw_browser_context->GetOriginMatchedHeaders(),
|
||||
std::move(browser_context_handle), navigation_id));
|
||||
} else {
|
||||
@@ -1206,7 +1167,6 @@ void AwContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
/*web_contents_key=*/std::nullopt, content::FrameTreeNodeId(),
|
||||
std::move(proxied_receiver), std::move(target_factory_remote),
|
||||
std::nullopt /* security_options */,
|
||||
aw_browser_context->service_worker_xrw_allowlist_matcher(),
|
||||
aw_browser_context->GetOriginMatchedHeaders(),
|
||||
std::move(browser_context_handle), navigation_id));
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "mojo/public/cpp/bindings/features.h"
|
||||
#include "net/base/features.h"
|
||||
#include "services/network/public/cpp/features.h"
|
||||
#include "services/tracing/public/cpp/tracing_features.h"
|
||||
#include "storage/browser/blob/features.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/features_generated.h"
|
||||
@@ -60,6 +61,11 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
|
||||
aw_feature_overrides.DisableFeature(
|
||||
::features::kBlockCrossPartitionBlobUrlFetching);
|
||||
|
||||
// TODO(crbug.com/445202443): There are some test cases need to be
|
||||
// fixed before enabling this feature flag for android.
|
||||
aw_feature_overrides.DisableFeature(
|
||||
blink::features::kAboutBlankPageRespectsDarkModeOnUserAction);
|
||||
|
||||
// Disable enforcing `noopener` on Blob URL navigations on WebView.
|
||||
aw_feature_overrides.DisableFeature(
|
||||
blink::features::kEnforceNoopenerOnBlobURLNavigation);
|
||||
@@ -84,6 +90,7 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
|
||||
aw_feature_overrides.DisableFeature(blink::features::kFencedFrames);
|
||||
|
||||
// Disable FLEDGE on WebView.
|
||||
aw_feature_overrides.DisableFeature(network::features::kInterestGroupStorage);
|
||||
aw_feature_overrides.DisableFeature(blink::features::kAdInterestGroupAPI);
|
||||
aw_feature_overrides.DisableFeature(blink::features::kFledge);
|
||||
|
||||
@@ -284,11 +291,6 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
|
||||
// handled correctly when WebView is drawing edge-to-edge.
|
||||
aw_feature_overrides.DisableFeature(features::kDrawCutoutEdgeToEdge);
|
||||
|
||||
// This is enabled for WebView to improve crbug.com/418159642.
|
||||
// TODO(crbug.com/422161917): Revert this for the ablation study.
|
||||
aw_feature_overrides.EnableFeature(
|
||||
features::kServiceWorkerBackgroundUpdateForRegisteredStorageKeys);
|
||||
|
||||
// Explicitly disable PrefetchProxy instead of relying only on passing an
|
||||
// empty URL.
|
||||
aw_feature_overrides.DisableFeature(features::kPrefetchProxy);
|
||||
@@ -301,16 +303,12 @@ void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
|
||||
aw_feature_overrides.DisableFeature(
|
||||
features::kAAudioPerStreamDeviceSelection);
|
||||
|
||||
// Disable background media. This is not used in WebView, and also it
|
||||
// side-steps an issue where JNI calls in renderer does not reliably work.
|
||||
// Long-term fix is to plumb this info to the renderer and remove Java calls
|
||||
// there. crbug.com/438910961
|
||||
aw_feature_overrides.DisableFeature(
|
||||
features::kAndroidEnableBackgroundMediaLargeFormFactors);
|
||||
|
||||
// Local Network Access restrictions should not be enforced in WebView.
|
||||
// The LNA permission is auto-granted in WebView, but the permission
|
||||
// policy currently blocks iframes from using it. crbug.com/442879527
|
||||
aw_feature_overrides.DisableFeature(
|
||||
network::features::kLocalNetworkAccessChecks);
|
||||
|
||||
// SystemTracing is enabled by default only in WebView for now.
|
||||
aw_feature_overrides.EnableFeature(features::kEnablePerfettoSystemTracing);
|
||||
}
|
||||
|
||||
@@ -402,8 +402,6 @@ by a child template that "extends" this file.
|
||||
images in that case. -->
|
||||
<activity-alias android:name="org.chromium.chrome.browser.media.AudioLauncherActivity"
|
||||
android:targetActivity="org.chromium.chrome.browser.media.MediaLauncherActivity"
|
||||
android:theme="@style/Theme.BrowserUI.NoDisplay"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="true"
|
||||
android:enabled="false"><!-- This will be selectively enabled at runtime. -->
|
||||
<intent-filter tools:ignore="AppLinkUrlError">
|
||||
@@ -656,6 +654,12 @@ by a child template that "extends" this file.
|
||||
android:label="@string/storage_management_activity_label"
|
||||
android:exported="false">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="org.chromium.chrome.browser.chrome_item_picker.ChromeItemPickerActivity"
|
||||
android:theme="@style/Theme.Chromium.WithWindowAnimation"
|
||||
android:exported="false"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode">
|
||||
</activity>
|
||||
|
||||
<!-- Activities for bookmarks. -->
|
||||
<activity android:name="org.chromium.chrome.browser.app.bookmarks.BookmarkActivity"
|
||||
@@ -682,10 +686,7 @@ by a child template that "extends" this file.
|
||||
<!-- Activities for downloads. -->
|
||||
<activity-alias android:name="org.chromium.chrome.browser.download.DownloadActivity"
|
||||
android:targetActivity="org.chromium.chrome.browser.app.download.home.DownloadActivity"
|
||||
android:theme="@style/Theme.Chromium.Activity.Fullscreen"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
|
||||
android:exported="false"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize">
|
||||
android:exported="false">
|
||||
</activity-alias>
|
||||
<activity android:name="org.chromium.chrome.browser.app.download.home.DownloadActivity"
|
||||
android:theme="@style/Theme.Chromium.Activity.Fullscreen"
|
||||
@@ -776,8 +777,7 @@ by a child template that "extends" this file.
|
||||
</activity>
|
||||
<activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity"
|
||||
android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"
|
||||
android:label="@string/webapp_activity_title"
|
||||
{{ self.supports_video_persistence() }} >
|
||||
android:label="@string/webapp_activity_title">
|
||||
</activity-alias>
|
||||
<!-- Activities for WebAPKs. -->
|
||||
<activity android:name="org.chromium.chrome.browser.webapps.SameTaskWebApkActivity"
|
||||
|
||||
+120
-53
@@ -32,6 +32,7 @@ import static androidx.browser.trusted.LaunchHandlerClientMode.FOCUS_EXISTING;
|
||||
import static androidx.browser.trusted.LaunchHandlerClientMode.NAVIGATE_EXISTING;
|
||||
import static androidx.browser.trusted.LaunchHandlerClientMode.NAVIGATE_NEW;
|
||||
|
||||
import static org.chromium.build.NullUtil.assumeNonNull;
|
||||
import static org.chromium.chrome.browser.app.tab_activity_glue.PopupCreator.EXTRA_REQUESTED_WINDOW_FEATURES;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -50,8 +51,6 @@ import android.util.Pair;
|
||||
import android.widget.RemoteViews;
|
||||
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.Px;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.browser.customtabs.CustomContentAction;
|
||||
@@ -83,6 +82,8 @@ import org.chromium.base.metrics.RecordHistogram;
|
||||
import org.chromium.base.metrics.RecordUserAction;
|
||||
import org.chromium.base.version_info.VersionInfo;
|
||||
import org.chromium.blink.mojom.DisplayMode;
|
||||
import org.chromium.build.annotations.NullMarked;
|
||||
import org.chromium.build.annotations.Nullable;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.IntentHandler;
|
||||
import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider;
|
||||
@@ -120,6 +121,7 @@ import java.util.Set;
|
||||
* re-created when color scheme changes, which happens automatically since color scheme change leads
|
||||
* to activity re-creation.
|
||||
*/
|
||||
@NullMarked
|
||||
public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvider {
|
||||
private static final String TAG = "CustomTabIntentData";
|
||||
|
||||
@@ -314,41 +316,42 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
private final Intent mIntent;
|
||||
private final SessionHolder<CustomTabsSessionToken> mSession;
|
||||
private final @Nullable SessionHolder<CustomTabsSessionToken> mSession;
|
||||
private final boolean mIsTrustedIntent;
|
||||
private final Intent mKeepAliveServiceIntent;
|
||||
private final Bundle mAnimationBundle;
|
||||
private final @Nullable Intent mKeepAliveServiceIntent;
|
||||
private final @Nullable Bundle mAnimationBundle;
|
||||
|
||||
private final int mUiType;
|
||||
private final int mTitleVisibilityState;
|
||||
private final String mMediaViewerUrl;
|
||||
private final @Nullable String mMediaViewerUrl;
|
||||
private final boolean mEnableEmbeddedMediaExperience;
|
||||
private final boolean mIsFromMediaLauncherActivity;
|
||||
private final boolean mDisableStar;
|
||||
private final boolean mDisableDownload;
|
||||
private final @ActivityType int mActivityType;
|
||||
@Nullable private final List<String> mTrustedWebActivityAdditionalOrigins;
|
||||
@Nullable private Set<Origin> mAllTrustedWebActivityOrigins;
|
||||
@Nullable private final TrustedWebActivityDisplayMode mTrustedWebActivityDisplayMode;
|
||||
@Nullable private String mUrlToLoad;
|
||||
private final @Nullable List<String> mTrustedWebActivityAdditionalOrigins;
|
||||
private @Nullable Set<Origin> mAllTrustedWebActivityOrigins;
|
||||
private final @Nullable TrustedWebActivityDisplayMode mTrustedWebActivityDisplayMode;
|
||||
private final List<TrustedWebActivityDisplayMode> mTrustedWebActivityDisplayOverrideMode;
|
||||
private @Nullable String mUrlToLoad;
|
||||
|
||||
private final boolean mEnableUrlBarHiding;
|
||||
private boolean mInteractWithBackground;
|
||||
private List<CustomButtonParams> mCustomButtonParams;
|
||||
private Drawable mCloseButtonIcon;
|
||||
private @Nullable Drawable mCloseButtonIcon;
|
||||
private final boolean mIsCloseButtonEnabled;
|
||||
private final List<Pair<String, PendingIntent>> mMenuEntries = new ArrayList<>();
|
||||
private boolean mShowShareItemInMenu;
|
||||
private final List<CustomButtonParams> mToolbarButtons = new ArrayList<>(1);
|
||||
private final List<CustomButtonParams> mBottombarButtons = new ArrayList<>(2);
|
||||
private final List<CustomButtonParams> mGoogleBottomBarButtons = new ArrayList<>();
|
||||
private final RemoteViews mRemoteViews;
|
||||
private final @Nullable RemoteViews mRemoteViews;
|
||||
@ActivitySideSheetDecorationType private final int mSideSheetDecorationType;
|
||||
@ActivitySideSheetRoundedCornersPosition private final int mSideSheetRoundedCornersPosition;
|
||||
private final int[] mClickableViewIds;
|
||||
private final PendingIntent mRemoteViewsPendingIntent;
|
||||
private final PendingIntent mSecondaryToolbarSwipeUpPendingIntent;
|
||||
private PendingIntent.OnFinished mOnFinishedForTesting;
|
||||
private final int @Nullable [] mClickableViewIds;
|
||||
private final @Nullable PendingIntent mRemoteViewsPendingIntent;
|
||||
private final @Nullable PendingIntent mSecondaryToolbarSwipeUpPendingIntent;
|
||||
private PendingIntent.@Nullable OnFinished mOnFinishedForTesting;
|
||||
private @DisplayMode.EnumType int mResolvedDisplayMode = DisplayMode.UNDEFINED;
|
||||
private final @OpenInBrowserState int mOpenInBrowserState;
|
||||
private final int mShareState;
|
||||
@@ -357,16 +360,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
private final boolean mIsOpenedByChrome;
|
||||
|
||||
/** ISO 639 language code */
|
||||
@Nullable private final String mTranslateLanguage;
|
||||
private final @Nullable String mTranslateLanguage;
|
||||
|
||||
/** ISO 639 language code, overrides {@link mTranslateLanguage} if non-null. */
|
||||
@Nullable private final String mAutoTranslateLanguage;
|
||||
private final @Nullable String mAutoTranslateLanguage;
|
||||
|
||||
private final int mDefaultOrientation;
|
||||
|
||||
@Nullable private final int[] mGsaExperimentIds;
|
||||
private final int @Nullable [] mGsaExperimentIds;
|
||||
|
||||
@NonNull private final ColorProvider mColorProvider;
|
||||
private final ColorProvider mColorProvider;
|
||||
|
||||
private final int mBreakPointDp;
|
||||
private final @Px int mInitialActivityHeight;
|
||||
@@ -379,7 +382,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
/**
|
||||
* {@link Network} to be bound when launching a custom tab or tabs that have been pre-created.
|
||||
*/
|
||||
@Nullable private final Network mNetwork;
|
||||
private final @Nullable Network mNetwork;
|
||||
|
||||
/** Add extras to customize menu items for opening Reader Mode UI custom tab from Chrome. */
|
||||
public static void addReaderModeUiExtras(Intent intent) {
|
||||
@@ -395,14 +398,14 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
* @param session The connected session for the custom tabs activity, or null.
|
||||
* @return True if the intent or session are trusted.
|
||||
*/
|
||||
public static boolean isTrustedCustomTab(Intent intent, SessionHolder<?> session) {
|
||||
public static boolean isTrustedCustomTab(Intent intent, @Nullable SessionHolder<?> session) {
|
||||
if (IntentHandler.wasIntentSenderChrome(intent)) return true;
|
||||
String packageName = getClientPackageNameFromSessionOrCallingActivity(intent, session);
|
||||
return CustomTabsConnection.getInstance().isFirstParty(packageName);
|
||||
}
|
||||
|
||||
static @Nullable String getClientPackageNameFromSessionOrCallingActivity(
|
||||
Intent intent, SessionHolder<?> session) {
|
||||
Intent intent, @Nullable SessionHolder<?> session) {
|
||||
String packageNameFromSession =
|
||||
CustomTabsConnection.getInstance().getClientPackageNameForSession(session);
|
||||
if (!TextUtils.isEmpty(packageNameFromSession)) return packageNameFromSession;
|
||||
@@ -439,7 +442,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
private static @Px int getInitialActivityHeight(
|
||||
boolean isTrustedIntent, @Px int initialActivityHeight, String packageName) {
|
||||
boolean isTrustedIntent, @Px int initialActivityHeight, @Nullable String packageName) {
|
||||
boolean enabledDueToThirdParty =
|
||||
ChromeFeatureList.sCctResizableForThirdParties.isEnabled()
|
||||
&& isAllowedThirdParty(packageName);
|
||||
@@ -447,7 +450,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
private static @Px int getInitialActivityWidth(
|
||||
boolean isTrustedIntent, @Px int initialActivityWidth, String packageName) {
|
||||
boolean isTrustedIntent, @Px int initialActivityWidth, @Nullable String packageName) {
|
||||
boolean enabledDueToThirdParty = isAllowedThirdParty(packageName);
|
||||
return (isTrustedIntent || enabledDueToThirdParty) ? initialActivityWidth : 0;
|
||||
}
|
||||
@@ -509,7 +512,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
*/
|
||||
static String getAppIdFromReferrer(Activity activity) {
|
||||
String referrer =
|
||||
CustomTabActivityLifecycleUmaTracker.getReferrerUriString(activity)
|
||||
assumeNonNull(CustomTabActivityLifecycleUmaTracker.getReferrerUriString(activity))
|
||||
.toLowerCase(Locale.US);
|
||||
if (TextUtils.isEmpty(referrer)) return "";
|
||||
|
||||
@@ -634,6 +637,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
// until native is loaded.
|
||||
|
||||
mTrustedWebActivityDisplayMode = resolveTwaDisplayMode();
|
||||
mTrustedWebActivityDisplayOverrideMode = resolveTwaDisplayOverrideMode();
|
||||
|
||||
int intentVisibilityState =
|
||||
IntentUtils.safeGetIntExtra(
|
||||
@@ -733,7 +737,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return defaultRadius;
|
||||
}
|
||||
|
||||
private static PendingIntent getSecondaryToolbarSwipeUpGesture(Intent intent) {
|
||||
private static @Nullable PendingIntent getSecondaryToolbarSwipeUpGesture(Intent intent) {
|
||||
PendingIntent pendingIntent = CustomTabsIntent.getSecondaryToolbarSwipeUpGesture(intent);
|
||||
if (pendingIntent == null) {
|
||||
pendingIntent =
|
||||
@@ -744,7 +748,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return pendingIntent;
|
||||
}
|
||||
|
||||
private static String getTranslateLanguage(Intent intent) {
|
||||
private static @Nullable String getTranslateLanguage(Intent intent) {
|
||||
String translateLanguage = null;
|
||||
Locale locale = CustomTabsIntent.getTranslateLocale(intent);
|
||||
if (locale != null) translateLanguage = LocaleUtils.toLanguageTag(locale);
|
||||
@@ -754,7 +758,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return translateLanguage;
|
||||
}
|
||||
|
||||
private void updateExtraMenuItems(List<Bundle> menuItems) {
|
||||
private void updateExtraMenuItems(@Nullable List<Bundle> menuItems) {
|
||||
if (menuItems == null) return;
|
||||
for (int i = 0; i < Math.min(MAX_CUSTOM_MENU_ITEMS, menuItems.size()); i++) {
|
||||
Bundle bundle = menuItems.get(i);
|
||||
@@ -1003,7 +1007,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
}
|
||||
|
||||
private String resolveUrlToLoad(Intent intent) {
|
||||
private @Nullable String resolveUrlToLoad(Intent intent) {
|
||||
String url = IntentHandler.getUrlFromIntent(intent);
|
||||
|
||||
// Intents fired for media viewers have an additional file:// URI passed along so that the
|
||||
@@ -1034,11 +1038,31 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
}
|
||||
|
||||
private List<TrustedWebActivityDisplayMode> resolveTwaDisplayOverrideMode() {
|
||||
// display-override, if present and containing a supported mode, takes precedence over
|
||||
// display-mode.
|
||||
List<Bundle> displayOverrideBundle =
|
||||
IntentUtils.getParcelableArrayListExtra(
|
||||
mIntent, TrustedWebActivityIntentBuilder.EXTRA_DISPLAY_OVERRIDE);
|
||||
List<TrustedWebActivityDisplayMode> displayOverride = new ArrayList<>();
|
||||
if (displayOverrideBundle != null) {
|
||||
for (Bundle b : displayOverrideBundle) {
|
||||
try {
|
||||
displayOverride.add(TrustedWebActivityDisplayMode.fromBundle(b));
|
||||
} catch (Throwable e) {
|
||||
// If the given value isn't a valid display mode, skip it.
|
||||
}
|
||||
}
|
||||
}
|
||||
return displayOverride;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link ScreenOrientationLockType} which matches {@link ScreenOrientation}.
|
||||
*
|
||||
* @param orientation {@link ScreenOrientation}
|
||||
* @return The matching ScreenOrientationLockType. {@link ScreenOrientationLockType#DEFAULT} if
|
||||
* there is no match.
|
||||
* there is no match.
|
||||
*/
|
||||
private static int convertOrientationType(@ScreenOrientation.LockType int orientation) {
|
||||
switch (orientation) {
|
||||
@@ -1274,7 +1298,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
/** Returns client package name for finishing animation. */
|
||||
public String getInsecureClientPackageNameForOnFinishAnimation() {
|
||||
public @Nullable String getInsecureClientPackageNameForOnFinishAnimation() {
|
||||
// The package name may come from the insecure info contained in the animation
|
||||
// bundle which won't do any harm in the operation.
|
||||
if (mAnimationBundle == null) return null;
|
||||
@@ -1294,14 +1318,14 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
@Override
|
||||
public int getAnimationEnterRes() {
|
||||
return shouldAnimateOnFinish()
|
||||
? mAnimationBundle.getInt(BUNDLE_ENTER_ANIMATION_RESOURCE)
|
||||
? assumeNonNull(mAnimationBundle).getInt(BUNDLE_ENTER_ANIMATION_RESOURCE)
|
||||
: 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAnimationExitRes() {
|
||||
return shouldAnimateOnFinish() && !isPartialCustomTab()
|
||||
? mAnimationBundle.getInt(BUNDLE_EXIT_ANIMATION_RESOURCE)
|
||||
? assumeNonNull(mAnimationBundle).getInt(BUNDLE_EXIT_ANIMATION_RESOURCE)
|
||||
: 0;
|
||||
}
|
||||
|
||||
@@ -1311,7 +1335,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUrlToLoad() {
|
||||
public @Nullable String getUrlToLoad() {
|
||||
if (mUrlToLoad == null) {
|
||||
mUrlToLoad = resolveUrlToLoad(getIntent());
|
||||
}
|
||||
@@ -1369,8 +1393,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public int[] getClickableViewIDs() {
|
||||
public int @Nullable [] getClickableViewIDs() {
|
||||
if (mClickableViewIds == null) return null;
|
||||
return mClickableViewIds.clone();
|
||||
}
|
||||
@@ -1380,9 +1403,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return mRemoteViewsPendingIntent;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public PendingIntent getSecondaryToolbarSwipeUpPendingIntent() {
|
||||
public @Nullable PendingIntent getSecondaryToolbarSwipeUpPendingIntent() {
|
||||
return mSecondaryToolbarSwipeUpPendingIntent;
|
||||
}
|
||||
|
||||
@@ -1448,28 +1470,30 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return !mDisableDownload;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TrustedWebActivityDisplayMode getProvidedTwaDisplayMode() {
|
||||
public @Nullable TrustedWebActivityDisplayMode getProvidedTwaDisplayMode() {
|
||||
return mTrustedWebActivityDisplayMode;
|
||||
}
|
||||
|
||||
public List<TrustedWebActivityDisplayMode> getProvidedTwaDisplayOverrideMode() {
|
||||
return mTrustedWebActivityDisplayOverrideMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public List<String> getTrustedWebActivityAdditionalOrigins() {
|
||||
public @Nullable List<String> getTrustedWebActivityAdditionalOrigins() {
|
||||
return mTrustedWebActivityAdditionalOrigins;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Set<Origin> getAllTrustedWebActivityOrigins() {
|
||||
public @Nullable Set<Origin> getAllTrustedWebActivityOrigins() {
|
||||
// Lazily compute this, since `getUrlToLoad()` requires native to be loaded.
|
||||
if (mAllTrustedWebActivityOrigins != null) {
|
||||
return mAllTrustedWebActivityOrigins;
|
||||
}
|
||||
|
||||
mAllTrustedWebActivityOrigins = new HashSet<>();
|
||||
Origin initialOrigin = Origin.create(getUrlToLoad());
|
||||
String url = getUrlToLoad();
|
||||
Origin initialOrigin = Origin.create(url == null ? "" : url);
|
||||
if (initialOrigin != null) mAllTrustedWebActivityOrigins.add(initialOrigin);
|
||||
if (mTrustedWebActivityAdditionalOrigins != null) {
|
||||
for (String originAsString : mTrustedWebActivityAdditionalOrigins) {
|
||||
@@ -1493,7 +1517,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return mAutoTranslateLanguage != null && isAllowedToAutoTranslate();
|
||||
}
|
||||
|
||||
private static boolean isPackageNameInList(String packageName, String pipeDelimitedList) {
|
||||
private static boolean isPackageNameInList(
|
||||
@Nullable String packageName, String pipeDelimitedList) {
|
||||
if (packageName == null || TextUtils.isEmpty(pipeDelimitedList)) return false;
|
||||
for (String p : pipeDelimitedList.split("\\|")) {
|
||||
if (packageName.equals(p)) return true;
|
||||
@@ -1568,8 +1593,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public int[] getGsaExperimentIds() {
|
||||
public int @Nullable [] getGsaExperimentIds() {
|
||||
return mGsaExperimentIds;
|
||||
}
|
||||
|
||||
@@ -1590,7 +1614,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return mBreakPointDp;
|
||||
}
|
||||
|
||||
static boolean isAllowedThirdParty(String packageName) {
|
||||
static boolean isAllowedThirdParty(@Nullable String packageName) {
|
||||
if (packageName == null) return false;
|
||||
String defaultPolicy =
|
||||
ChromeFeatureList.sCctResizableForThirdPartiesDefaultPolicy.getValue();
|
||||
@@ -1753,8 +1777,47 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
&& mUiType == CustomTabsUiType.DEFAULT;
|
||||
}
|
||||
|
||||
private static boolean isDisplayModeSupported(
|
||||
@Nullable TrustedWebActivityDisplayMode displayMode, boolean isDisplayOverride) {
|
||||
if (displayMode == null) {
|
||||
return false;
|
||||
}
|
||||
if (displayMode instanceof TrustedWebActivityDisplayMode.ImmersiveMode) {
|
||||
return true;
|
||||
}
|
||||
if (displayMode instanceof TrustedWebActivityDisplayMode.BrowserMode) {
|
||||
return !isDisplayOverride;
|
||||
}
|
||||
if (WebAppHeaderUtils.isMinimalUiFlagEnabled()
|
||||
&& displayMode instanceof TrustedWebActivityDisplayMode.MinimalUiMode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (WebAppHeaderUtils.isWindowControlsOverlayFlagEnabled()
|
||||
&& displayMode instanceof TrustedWebActivityDisplayMode.WindowControlsOverlayMode) {
|
||||
return isDisplayOverride;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private @DisplayMode.EnumType int resolveDisplayMode() {
|
||||
TrustedWebActivityDisplayMode displayMode = getProvidedTwaDisplayMode();
|
||||
TrustedWebActivityDisplayMode displayMode = null;
|
||||
|
||||
List<TrustedWebActivityDisplayMode> displayOverride = getProvidedTwaDisplayOverrideMode();
|
||||
for (TrustedWebActivityDisplayMode override : displayOverride) {
|
||||
if (isDisplayModeSupported(override, /* isDisplayOverride= */ true)) {
|
||||
displayMode = override;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (displayMode == null
|
||||
&& isDisplayModeSupported(
|
||||
getProvidedTwaDisplayMode(), /* isDisplayOverride= */ false)) {
|
||||
displayMode = getProvidedTwaDisplayMode();
|
||||
}
|
||||
|
||||
if (displayMode == null) {
|
||||
return DisplayMode.STANDALONE;
|
||||
}
|
||||
@@ -1774,6 +1837,11 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
return DisplayMode.MINIMAL_UI;
|
||||
}
|
||||
|
||||
if (WebAppHeaderUtils.isWindowControlsOverlayFlagEnabled()
|
||||
&& displayMode instanceof TrustedWebActivityDisplayMode.WindowControlsOverlayMode) {
|
||||
return DisplayMode.WINDOW_CONTROLS_OVERLAY;
|
||||
}
|
||||
|
||||
return DisplayMode.STANDALONE;
|
||||
}
|
||||
|
||||
@@ -1790,13 +1858,12 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
|
||||
private boolean isCpaOnlyOpenInBrowserDefault() {
|
||||
return ChromeFeatureList.sCctAdaptiveButtonContextualOnly.getValue()
|
||||
&& ChromeFeatureList.sCctAdaptiveButtonEnableOpenInBrowser.getValue()
|
||||
&& ChromeFeatureList.sCctAdaptiveButtonDefaultVariant.getValue()
|
||||
== AdaptiveToolbarButtonVariant.OPEN_IN_BROWSER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowFeatures getRequestedWindowFeatures() {
|
||||
public @Nullable WindowFeatures getRequestedWindowFeatures() {
|
||||
if (mUiType != CustomTabsUiType.POPUP) {
|
||||
return null;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+10
-2
@@ -784,6 +784,10 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
ContentSettingsType::PERMISSION_AUTOREVOCATION_DATA, delete_begin,
|
||||
delete_end, website_settings_filter);
|
||||
|
||||
host_content_settings_map_->ClearSettingsForOneTypeWithPredicate(
|
||||
ContentSettingsType::PERMISSION_ACTIONS_HISTORY, delete_begin,
|
||||
delete_end, website_settings_filter);
|
||||
|
||||
if (auto* privacy_sandbox_settings =
|
||||
PrivacySandboxSettingsFactory::GetForProfile(profile_)) {
|
||||
privacy_sandbox_settings->ClearFledgeJoiningAllowedSettings(delete_begin_,
|
||||
@@ -930,6 +934,10 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
ContentSettingsType::SUSPICIOUS_NOTIFICATION_IDS, delete_begin_,
|
||||
delete_end_, website_settings_filter);
|
||||
|
||||
host_content_settings_map_->ClearSettingsForOneTypeWithPredicate(
|
||||
ContentSettingsType::SUSPICIOUS_NOTIFICATION_SHOW_ORIGINAL,
|
||||
delete_begin_, delete_end_, website_settings_filter);
|
||||
|
||||
PermissionDecisionAutoBlockerFactory::GetForProfile(profile_)
|
||||
->RemoveEmbargoAndResetCounts(filter);
|
||||
}
|
||||
@@ -1075,7 +1083,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
// TODO(crbug.com/40594007): Respect |delete_begin_| and |delete_end_| and
|
||||
// only clear out entries whose last strikes were created in that
|
||||
// timeframe.
|
||||
autofill::StrikeDatabase* strike_database =
|
||||
strike_database::StrikeDatabase* strike_database =
|
||||
autofill::StrikeDatabaseFactory::GetForProfile(profile_);
|
||||
if (strike_database)
|
||||
strike_database->ClearAllStrikes();
|
||||
@@ -1133,7 +1141,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
if (render_process_host->GetBrowserContext() == profile_ &&
|
||||
render_process_host->IsInitializedAndNotDead()) {
|
||||
web_cache::WebCacheManager::GetInstance()->ClearCacheForProcess(
|
||||
render_process_host->GetDeprecatedID());
|
||||
render_process_host->GetID());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,9 +53,6 @@
|
||||
#include "build/build_config.h"
|
||||
#include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM
|
||||
#include "chrome/browser/preloading/search_preload/search_preload_features.h"
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/actor/actor_keyed_service.h"
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/after_startup_task_utils.h"
|
||||
#include "chrome/browser/ai/ai_manager.h"
|
||||
#include "chrome/browser/app_mode/app_mode_utils.h"
|
||||
@@ -80,6 +77,7 @@
|
||||
#include "chrome/browser/defaults.h"
|
||||
#include "chrome/browser/device_api/device_service_impl.h"
|
||||
#include "chrome/browser/device_api/managed_configuration_service.h"
|
||||
#include "chrome/browser/devtools/features.h"
|
||||
#include "chrome/browser/download/chrome_download_manager_delegate.h"
|
||||
#include "chrome/browser/download/download_prefs.h"
|
||||
#include "chrome/browser/enterprise/browser_management/management_service_factory.h"
|
||||
@@ -109,7 +107,6 @@
|
||||
#include "chrome/browser/memory/chrome_browser_main_extra_parts_memory.h"
|
||||
#include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h"
|
||||
#include "chrome/browser/metrics/chrome_feature_list_creator.h"
|
||||
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
|
||||
#include "chrome/browser/navigation_predictor/anchor_element_preloader.h"
|
||||
#include "chrome/browser/net/chrome_network_delegate.h"
|
||||
#include "chrome/browser/net/profile_network_context_service.h"
|
||||
@@ -268,6 +265,8 @@
|
||||
#include "components/payments/content/payment_request_display_manager.h"
|
||||
#include "components/payments/content/secure_payment_confirmation_service_factory.h"
|
||||
#include "components/pdf/common/pdf_util.h"
|
||||
#include "components/performance_manager/public/graph/frame_node.h"
|
||||
#include "components/performance_manager/public/performance_manager.h"
|
||||
#include "components/permissions/content_setting_permission_context_base.h"
|
||||
#include "components/policy/content/policy_blocklist_service.h"
|
||||
#include "components/policy/core/common/management/management_service.h"
|
||||
@@ -387,7 +386,6 @@
|
||||
#include "services/network/public/mojom/network_service.mojom.h"
|
||||
#include "services/network/public/mojom/url_loader_factory.mojom.h"
|
||||
#include "services/network/public/mojom/web_transport.mojom.h"
|
||||
#include "services/video_effects/public/cpp/buildflags.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/loader/url_loader_throttle.h"
|
||||
#include "third_party/blink/public/common/navigation/navigation_policy.h"
|
||||
@@ -427,11 +425,11 @@
|
||||
#include "chrome/services/util_win/public/mojom/util_win.mojom.h"
|
||||
#include "content/public/browser/tracing_service.h"
|
||||
#include "sandbox/win/src/sandbox_policy.h"
|
||||
#include "ui/accessibility/accessibility_features.h"
|
||||
#elif BUILDFLAG(IS_MAC)
|
||||
#include "chrome/browser/browser_process_platform_part_mac.h"
|
||||
#include "chrome/browser/chrome_browser_main_mac.h"
|
||||
#include "chrome/browser/mac/chrome_browser_main_extra_parts_mac.h"
|
||||
#include "chrome/common/chrome_version.h"
|
||||
#include "components/soda/constants.h"
|
||||
#include "sandbox/mac/sandbox_serializer.h"
|
||||
#include "sandbox/policy/mac/params.h"
|
||||
@@ -516,19 +514,51 @@
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/actor/actor_keyed_service.h"
|
||||
#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
|
||||
#include "chrome/browser/devtools/devtools_window.h"
|
||||
#include "chrome/browser/digital_credentials/digital_identity_provider_desktop.h"
|
||||
#include "chrome/browser/direct_sockets/chrome_direct_sockets_delegate.h"
|
||||
#include "chrome/browser/headless/chrome_browser_main_extra_parts_headless.h"
|
||||
#include "chrome/browser/media/unified_autoplay_config.h"
|
||||
#include "chrome/browser/metrics/usage_scenario/chrome_responsiveness_calculator_delegate.h"
|
||||
#include "chrome/browser/new_tab_page/new_tab_page_util.h"
|
||||
#include "chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.h"
|
||||
#include "chrome/browser/screen_ai/screen_ai_install_state.h"
|
||||
#include "chrome/browser/search/instant_service.h"
|
||||
#include "chrome/browser/search/instant_service_factory.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_dialogs.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/chrome_pages.h"
|
||||
#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
||||
#include "chrome/browser/ui/webui/chrome_content_browser_client_webui_part.h"
|
||||
#include "chrome/browser/ui/webui/webui_util_desktop.h"
|
||||
#include "chrome/browser/web_applications/isolated_web_apps/chrome_content_browser_client_isolated_web_apps_part.h"
|
||||
#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_error_page.h"
|
||||
#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h"
|
||||
#include "chrome/browser/web_applications/locks/app_lock.h"
|
||||
#include "chrome/browser/web_applications/policy/web_app_policy_manager.h"
|
||||
#include "chrome/browser/web_applications/proto/web_app_install_state.pb.h"
|
||||
#include "chrome/browser/web_applications/web_app_helpers.h"
|
||||
#include "chrome/browser/web_applications/web_app_provider.h"
|
||||
#include "chrome/browser/web_applications/web_app_registrar.h"
|
||||
#include "chrome/browser/web_applications/web_app_utils.h"
|
||||
#include "chrome/browser/webauthn/authenticator_request_scheduler.h"
|
||||
#include "chrome/browser/webauthn/chrome_authenticator_request_delegate.h"
|
||||
#include "chrome/browser/webauthn/chrome_web_authentication_delegate.h"
|
||||
#include "chrome/grit/chrome_unscaled_resources.h" // nogncheck crbug.com/1125897
|
||||
#include "components/commerce/core/commerce_feature_list.h"
|
||||
#include "components/keep_alive_registry/keep_alive_registry.h"
|
||||
#include "components/password_manager/content/common/web_ui_constants.h"
|
||||
#include "components/password_manager/core/common/password_manager_features.h"
|
||||
#include "components/webapps/isolated_web_apps/url_loading/url_loader_factory.h"
|
||||
#include "services/network/public/mojom/permissions_policy/permissions_policy_feature.mojom.h"
|
||||
#include "third_party/blink/public/mojom/installedapp/related_application.mojom.h"
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
#if BUILDFLAG(IS_CHROMEOS)
|
||||
#include "ash/multi_capture/multi_capture_service.h"
|
||||
#include "ash/shell.h"
|
||||
#include "base/debug/leak_annotations.h"
|
||||
#include "chrome/browser/chromeos/policy/dlp/dlp_scoped_file_access_delegate.h"
|
||||
@@ -547,40 +577,6 @@
|
||||
#include "third_party/cros_system_api/switches/chrome_switches.h"
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
|
||||
#include "chrome/browser/devtools/devtools_window.h"
|
||||
#include "chrome/browser/direct_sockets/chrome_direct_sockets_delegate.h"
|
||||
#include "chrome/browser/headless/chrome_browser_main_extra_parts_headless.h"
|
||||
#include "chrome/browser/media/unified_autoplay_config.h"
|
||||
#include "chrome/browser/metrics/usage_scenario/chrome_responsiveness_calculator_delegate.h"
|
||||
#include "chrome/browser/new_tab_page/new_tab_page_util.h"
|
||||
#include "chrome/browser/search/instant_service.h"
|
||||
#include "chrome/browser/search/instant_service_factory.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_dialogs.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/chrome_pages.h"
|
||||
#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
||||
#include "chrome/browser/ui/webui/chrome_content_browser_client_webui_part.h"
|
||||
#include "chrome/browser/ui/webui/webui_util_desktop.h"
|
||||
#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_error_page.h"
|
||||
#include "chrome/browser/web_applications/policy/web_app_policy_manager.h"
|
||||
#include "chrome/browser/web_applications/web_app_helpers.h"
|
||||
#include "chrome/browser/web_applications/web_app_provider.h"
|
||||
#include "chrome/browser/web_applications/web_app_registrar.h"
|
||||
#include "chrome/browser/web_applications/web_app_utils.h"
|
||||
#include "chrome/browser/webauthn/authenticator_request_scheduler.h"
|
||||
#include "chrome/browser/webauthn/chrome_authenticator_request_delegate.h"
|
||||
#include "chrome/grit/chrome_unscaled_resources.h" // nogncheck crbug.com/1125897
|
||||
#include "components/commerce/core/commerce_feature_list.h"
|
||||
#include "components/password_manager/content/common/web_ui_constants.h"
|
||||
#include "components/password_manager/core/common/password_manager_features.h"
|
||||
#include "components/webapps/isolated_web_apps/url_loading/url_loader_factory.h"
|
||||
#include "services/network/public/mojom/permissions_policy/permissions_policy_feature.mojom.h"
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
|
||||
#include "components/crash/core/app/crash_switches.h"
|
||||
#include "components/crash/core/app/crashpad.h"
|
||||
@@ -595,6 +591,12 @@
|
||||
#include "chrome/browser/enterprise/chrome_browser_main_extra_parts_enterprise.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
#include "components/webapps/isolated_web_apps/scheme.h"
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
#include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
|
||||
#endif
|
||||
@@ -660,12 +662,6 @@
|
||||
#include "chrome/browser/media/cast_remoting_connector.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
#include "chrome/browser/media_effects/media_effects_manager_binder.h"
|
||||
#include "media/capture/mojom/video_effects_manager.mojom-forward.h"
|
||||
#include "services/video_effects/public/mojom/video_effects_processor.mojom-forward.h"
|
||||
#endif // BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
|
||||
#if BUILDFLAG(SAFE_BROWSING_AVAILABLE)
|
||||
#include "chrome/browser/enterprise/connectors/connectors_service.h"
|
||||
#include "chrome/browser/safe_browsing/chrome_enterprise_url_lookup_service_factory.h"
|
||||
@@ -703,11 +699,6 @@
|
||||
#include "components/enterprise/common/files_scan_data.h"
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/screen_ai/screen_ai_install_state.h"
|
||||
#include "chrome/browser/webauthn/chrome_web_authentication_delegate.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
|
||||
#include "chrome/browser/signin/bound_session_credentials/bound_session_cookie_refresh_service.h"
|
||||
#include "chrome/browser/signin/bound_session_credentials/bound_session_cookie_refresh_service_factory.h"
|
||||
@@ -778,17 +769,21 @@ namespace {
|
||||
|
||||
const char kAIManagerUserDataKey[] = "ai_manager";
|
||||
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
constexpr char kSecurePaymentConfirmationKeychainAccessGroup[] =
|
||||
MAC_TEAM_IDENTIFIER_STRING "." MAC_BUNDLE_IDENTIFIER_STRING
|
||||
".secure-payment-confirmation";
|
||||
#endif // BUILDFLAG(IS_MAC)
|
||||
|
||||
// Whether to disable caching of the advanced-protection state in
|
||||
// ShouldEnableStrictSiteIsolation().
|
||||
bool g_disable_advanced_protection_caching_for_tests = false;
|
||||
|
||||
BASE_FEATURE(kSkipPagehideInCommitForDSENavigation,
|
||||
"SkipPagehideInCommitForDSENavigation",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT);
|
||||
|
||||
// Warm up the ServiceWorker registration for DSE.
|
||||
BASE_FEATURE(kPrewarmServiceWorkerRegistrationForDSE,
|
||||
"PrewarmServiceWorkerRegistrationForDSE",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT);
|
||||
|
||||
// A small ChromeBrowserMainExtraParts that invokes a callback when threads are
|
||||
@@ -1249,36 +1244,18 @@ void NotifyMultiCaptureStarted(const std::string& label,
|
||||
content::BrowserContext* browser_context) {
|
||||
const url::Origin origin =
|
||||
url::Origin::Create(web_contents->GetLastCommittedURL());
|
||||
if (app_id) {
|
||||
CHECK_DEREF(ash::Shell::Get())
|
||||
.multi_capture_service()
|
||||
->NotifyMultiCaptureStartedFromApp(
|
||||
label, *app_id,
|
||||
web_app::WebAppProvider::GetForWebContents(web_contents)
|
||||
->registrar_unsafe()
|
||||
.GetAppShortName(*app_id),
|
||||
origin);
|
||||
CHECK(app_id);
|
||||
|
||||
if (base::FeatureList::IsEnabled(
|
||||
chromeos::features::kMultiCaptureReworkedUsageIndicators)) {
|
||||
CHECK_DEREF(multi_capture::MultiCaptureUsageIndicatorServiceFactory::
|
||||
GetForBrowserContext(web_contents->GetBrowserContext()))
|
||||
.MultiCaptureStarted(label, *app_id);
|
||||
}
|
||||
}
|
||||
CHECK_DEREF(multi_capture::MultiCaptureUsageIndicatorServiceFactory::
|
||||
GetForBrowserContext(web_contents->GetBrowserContext()))
|
||||
.MultiCaptureStarted(label, *app_id);
|
||||
}
|
||||
|
||||
void NotifyMultiCaptureStopped(const std::string& label,
|
||||
content::BrowserContext* browser_context) {
|
||||
CHECK_DEREF(ash::Shell::Get())
|
||||
.multi_capture_service()
|
||||
->NotifyMultiCaptureStopped(label);
|
||||
if (base::FeatureList::IsEnabled(
|
||||
chromeos::features::kMultiCaptureReworkedUsageIndicators)) {
|
||||
CHECK_DEREF(multi_capture::MultiCaptureUsageIndicatorServiceFactory::
|
||||
GetForBrowserContext(browser_context))
|
||||
.MultiCaptureStopped(label);
|
||||
}
|
||||
CHECK_DEREF(multi_capture::MultiCaptureUsageIndicatorServiceFactory::
|
||||
GetForBrowserContext(browser_context))
|
||||
.MultiCaptureStopped(label);
|
||||
}
|
||||
|
||||
bool IsSubAppsPermissionGrantedByAdmins(content::WebContents* contents) {
|
||||
@@ -1609,6 +1586,7 @@ void ChromeContentBrowserClient::MaybeProxyNetworkBoundRequest(
|
||||
context_params->bound_network = bound_network;
|
||||
context_params->cert_verifier_params = content::GetCertVerifierParams(
|
||||
cert_verifier::mojom::CertVerifierCreationParams::New());
|
||||
context_params->enable_domain_reliability = false;
|
||||
ConfigureNetworkContextParams(
|
||||
browser_context, true, base::FilePath(), context_params.get(),
|
||||
cert_verifier::mojom::CertVerifierCreationParams::New().get());
|
||||
@@ -1810,9 +1788,11 @@ ChromeContentBrowserClient::GetStoragePartitionConfigForSite(
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
if (content::SiteIsolationPolicy::ShouldUrlUseApplicationIsolationLevel(
|
||||
browser_context, site)) {
|
||||
CHECK(url::Origin::Create(site).scheme() == chrome::kIsolatedAppScheme);
|
||||
CHECK(url::Origin::Create(site).scheme() == webapps::kIsolatedAppScheme);
|
||||
ASSIGN_OR_RETURN(const auto iwa_url_info,
|
||||
web_app::IsolatedWebAppUrlInfo::Create(site), [&](auto) {
|
||||
LOG(ERROR) << "Invalid isolated-app URL: " << site;
|
||||
@@ -1821,6 +1801,8 @@ ChromeContentBrowserClient::GetStoragePartitionConfigForSite(
|
||||
|
||||
return iwa_url_info.storage_partition_config(browser_context);
|
||||
}
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
#endif
|
||||
|
||||
return default_storage_partition_config;
|
||||
@@ -1885,12 +1867,12 @@ void ChromeContentBrowserClient::RenderProcessWillLaunch(
|
||||
}
|
||||
}
|
||||
|
||||
GURL ChromeContentBrowserClient::GetEffectiveURL(
|
||||
std::optional<GURL> ChromeContentBrowserClient::GetEffectiveURL(
|
||||
content::BrowserContext* browser_context,
|
||||
const GURL& url) {
|
||||
Profile* profile = Profile::FromBrowserContext(browser_context);
|
||||
if (!profile) {
|
||||
return url;
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
@@ -1906,13 +1888,13 @@ GURL ChromeContentBrowserClient::GetEffectiveURL(
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
if (ChromeContentBrowserClientExtensionsPart::AreExtensionsDisabledForProfile(
|
||||
profile)) {
|
||||
return url;
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
return ChromeContentBrowserClientExtensionsPart::GetEffectiveURL(profile,
|
||||
url);
|
||||
#else
|
||||
return url;
|
||||
return std::nullopt;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -2197,54 +2179,6 @@ void ChromeContentBrowserClient::OverrideURLLoaderFactoryParams(
|
||||
#endif
|
||||
}
|
||||
|
||||
bool IsURLAccessibleByHistoryNavigationFromWebContents(
|
||||
const GURL& url,
|
||||
content::WebContents* web_contents) {
|
||||
if (!web_contents) {
|
||||
return false;
|
||||
}
|
||||
content::NavigationController& controller = web_contents->GetController();
|
||||
for (int j = 0; j < controller.GetEntryCount(); ++j) {
|
||||
content::NavigationEntry* entry = controller.GetEntryAtIndex(j);
|
||||
if (entry && entry->GetURL().EqualsIgnoringRef(url)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClient::IsURLAccessibleByHistoryNavigation(
|
||||
const GURL& url) {
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
for (const TabModel* model : TabModelList::models()) {
|
||||
if (!model) {
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < model->GetTabCount(); ++i) {
|
||||
if (IsURLAccessibleByHistoryNavigationFromWebContents(
|
||||
url, model->GetWebContentsAt(i))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
#else
|
||||
for (Browser* browser : *BrowserList::GetInstance()) {
|
||||
TabStripModel* model = browser->tab_strip_model();
|
||||
if (!model) {
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < model->count(); ++i) {
|
||||
if (IsURLAccessibleByHistoryNavigationFromWebContents(
|
||||
url, model->GetWebContentsAt(i))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
#endif // BUILDFLAG(IS_ANDROID)
|
||||
}
|
||||
|
||||
// These are treated as WebUI schemes but do not get WebUI bindings. Also,
|
||||
// view-source is allowed for these schemes.
|
||||
void ChromeContentBrowserClient::GetAdditionalWebUISchemes(
|
||||
@@ -2366,6 +2300,14 @@ void ChromeContentBrowserClient::OverrideNavigationParams(
|
||||
}
|
||||
}
|
||||
|
||||
void ChromeContentBrowserClient::CrossProcessSubframeRenderProcessGone(
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
if (auto frame_node = performance_manager::PerformanceManager::
|
||||
GetFrameNodeForRenderFrameHost(render_frame_host)) {
|
||||
frame_node->CrossProcessSubframeRenderProcessGone();
|
||||
}
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClient::ShouldStayInParentProcessForNTP(
|
||||
const GURL& url,
|
||||
const GURL& parent_site_url) {
|
||||
@@ -2720,6 +2662,8 @@ bool ChromeContentBrowserClient::ShouldUrlUseApplicationIsolationLevel(
|
||||
content::BrowserContext* browser_context,
|
||||
const GURL& url) {
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
if (!content::AreIsolatedWebAppsEnabled(browser_context)) {
|
||||
return false;
|
||||
@@ -2727,9 +2671,11 @@ bool ChromeContentBrowserClient::ShouldUrlUseApplicationIsolationLevel(
|
||||
|
||||
// Convert |url| to an origin to resolve blob: URLs.
|
||||
auto origin = url::Origin::Create(url);
|
||||
if (origin.scheme() == chrome::kIsolatedAppScheme) {
|
||||
if (origin.scheme() == webapps::kIsolatedAppScheme) {
|
||||
return true;
|
||||
}
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
@@ -4145,8 +4091,7 @@ bool ShouldDisableForcedColorsForWebContent(content::WebContents* contents,
|
||||
return false;
|
||||
}
|
||||
|
||||
blink::mojom::PreferredContrast GetPreferredContrast(
|
||||
const ui::NativeTheme* native_theme) {
|
||||
blink::mojom::PreferredContrast GetPreferredContrast() {
|
||||
using NC = ui::NativeTheme::PreferredContrast;
|
||||
using BC = blink::mojom::PreferredContrast;
|
||||
static constexpr auto kContrastMap =
|
||||
@@ -4154,13 +4099,14 @@ blink::mojom::PreferredContrast GetPreferredContrast(
|
||||
{NC::kMore, BC::kMore},
|
||||
{NC::kLess, BC::kLess},
|
||||
{NC::kCustom, BC::kCustom}});
|
||||
return kContrastMap.at(native_theme->GetPreferredContrast());
|
||||
return kContrastMap.at(
|
||||
ui::NativeTheme::GetInstanceForWeb()->preferred_contrast());
|
||||
}
|
||||
|
||||
std::tuple<bool, bool> GetForcedColorsForWebContent(
|
||||
WebContents* web_contents,
|
||||
const ui::NativeTheme* native_theme) {
|
||||
const bool in_forced_colors = native_theme->InForcedColorsMode();
|
||||
std::tuple<bool, bool> GetForcedColorsForWebContent(WebContents* web_contents) {
|
||||
const bool in_forced_colors =
|
||||
ui::NativeTheme::GetInstanceForWeb()->forced_colors() !=
|
||||
ui::ColorProviderKey::ForcedColors::kNone;
|
||||
const bool is_forced_colors_disabled =
|
||||
ShouldDisableForcedColorsForWebContent(web_contents, in_forced_colors);
|
||||
return {in_forced_colors && !is_forced_colors_disabled,
|
||||
@@ -4170,6 +4116,7 @@ std::tuple<bool, bool> GetForcedColorsForWebContent(
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
blink::mojom::PreferredColorScheme ToBlinkPreferredColorScheme(
|
||||
ui::NativeTheme::PreferredColorScheme native_theme_scheme) {
|
||||
// Web content treats "no preference" as light mode.
|
||||
return (native_theme_scheme == ui::NativeTheme::PreferredColorScheme::kDark)
|
||||
? blink::mojom::PreferredColorScheme::kDark
|
||||
: blink::mojom::PreferredColorScheme::kLight;
|
||||
@@ -4180,8 +4127,7 @@ std::tuple<blink::mojom::PreferredColorScheme,
|
||||
blink::mojom::PreferredColorScheme>
|
||||
GetPreferredColorScheme(const WebPreferences& web_prefs,
|
||||
const GURL& url,
|
||||
WebContents* web_contents,
|
||||
const ui::NativeTheme* native_theme) {
|
||||
WebContents* web_contents) {
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
if (TabAndroid::FromWebContents(web_contents)) {
|
||||
if (auto* delegate = static_cast<android::TabWebContentsDelegateAndroid*>(
|
||||
@@ -4201,8 +4147,8 @@ GetPreferredColorScheme(const WebPreferences& web_prefs,
|
||||
->IsIncognitoProfile() &&
|
||||
!content::HasWebUIScheme(url)) {
|
||||
// Incognito contents follow the device color mode.
|
||||
preferred_color_scheme =
|
||||
ToBlinkPreferredColorScheme(native_theme->GetPreferredColorScheme());
|
||||
preferred_color_scheme = ToBlinkPreferredColorScheme(
|
||||
ui::NativeTheme::GetInstanceForWeb()->preferred_color_scheme());
|
||||
} else {
|
||||
// WebUI and regular pages follow the browser theme color mode, provided by
|
||||
// the color provider.
|
||||
@@ -4853,15 +4799,15 @@ void ChromeContentBrowserClient::OverrideWebPreferences(
|
||||
SubAppsAPIsRequireUserGestureAndAuthorization(web_contents);
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
web_prefs->preferred_contrast = GetPreferredContrast(GetWebTheme());
|
||||
web_prefs->preferred_contrast = GetPreferredContrast();
|
||||
|
||||
std::tie(web_prefs->in_forced_colors, web_prefs->is_forced_colors_disabled) =
|
||||
GetForcedColorsForWebContent(web_contents, GetWebTheme());
|
||||
GetForcedColorsForWebContent(web_contents);
|
||||
|
||||
std::tie(web_prefs->preferred_color_scheme,
|
||||
web_prefs->preferred_root_scrollbar_color_scheme) =
|
||||
GetPreferredColorScheme(*web_prefs, main_frame_site.GetSiteURL(),
|
||||
web_contents, GetWebTheme());
|
||||
web_contents);
|
||||
|
||||
web_prefs->root_scrollbar_theme_color =
|
||||
GetRootScrollbarThemeColor(web_contents);
|
||||
@@ -4918,6 +4864,11 @@ void ChromeContentBrowserClient::OverrideWebPreferences(
|
||||
IsFingerprintingProtectionEnabledForIncognitoState(
|
||||
Profile::FromBrowserContext(web_contents->GetBrowserContext())
|
||||
->IsIncognitoProfile());
|
||||
|
||||
if (base::FeatureList::IsEnabled(::features::kDevToolsAiPromptApi) &&
|
||||
web_contents->GetVisibleURL().SchemeIs(content::kChromeDevToolsScheme)) {
|
||||
web_prefs->ai_prompt_api_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClientParts::OverrideWebPreferencesAfterNavigation(
|
||||
@@ -4966,7 +4917,7 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation(
|
||||
const auto old_is_forced_colors_disabled =
|
||||
web_prefs->is_forced_colors_disabled;
|
||||
std::tie(web_prefs->in_forced_colors, web_prefs->is_forced_colors_disabled) =
|
||||
GetForcedColorsForWebContent(web_contents, GetWebTheme());
|
||||
GetForcedColorsForWebContent(web_contents);
|
||||
prefs_changed |=
|
||||
web_prefs->in_forced_colors != old_in_forced_colors ||
|
||||
web_prefs->is_forced_colors_disabled != old_is_forced_colors_disabled;
|
||||
@@ -4977,7 +4928,7 @@ bool ChromeContentBrowserClient::OverrideWebPreferencesAfterNavigation(
|
||||
std::tie(web_prefs->preferred_color_scheme,
|
||||
web_prefs->preferred_root_scrollbar_color_scheme) =
|
||||
GetPreferredColorScheme(*web_prefs, main_frame_site.GetSiteURL(),
|
||||
web_contents, GetWebTheme());
|
||||
web_contents);
|
||||
prefs_changed |=
|
||||
web_prefs->preferred_color_scheme != old_preferred_color_scheme ||
|
||||
web_prefs->preferred_root_scrollbar_color_scheme !=
|
||||
@@ -5012,12 +4963,12 @@ bool ChromeContentBrowserClient::
|
||||
WebContents& web_contents,
|
||||
const SiteInstance& main_frame_site) const {
|
||||
const WebPreferences& prefs = web_contents.GetOrCreateWebPreferences();
|
||||
return GetPreferredContrast(GetWebTheme()) != prefs.preferred_contrast ||
|
||||
GetForcedColorsForWebContent(&web_contents, GetWebTheme()) !=
|
||||
return GetPreferredContrast() != prefs.preferred_contrast ||
|
||||
GetForcedColorsForWebContent(&web_contents) !=
|
||||
std::tie(prefs.in_forced_colors,
|
||||
prefs.is_forced_colors_disabled) ||
|
||||
GetPreferredColorScheme(prefs, main_frame_site.GetSiteURL(),
|
||||
&web_contents, GetWebTheme()) !=
|
||||
&web_contents) !=
|
||||
std::tie(prefs.preferred_color_scheme,
|
||||
prefs.preferred_root_scrollbar_color_scheme) ||
|
||||
GetRootScrollbarThemeColor(&web_contents) !=
|
||||
@@ -5119,7 +5070,11 @@ void ChromeContentBrowserClient::GetAdditionalAllowedSchemesForFileSystem(
|
||||
additional_allowed_schemes->push_back(content::kChromeDevToolsScheme);
|
||||
additional_allowed_schemes->push_back(content::kChromeUIScheme);
|
||||
additional_allowed_schemes->push_back(content::kChromeUIUntrustedScheme);
|
||||
additional_allowed_schemes->push_back(chrome::kIsolatedAppScheme);
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
additional_allowed_schemes->push_back(webapps::kIsolatedAppScheme);
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
for (auto& extra_part : extra_parts_) {
|
||||
extra_part->GetAdditionalAllowedSchemesForFileSystem(
|
||||
additional_allowed_schemes);
|
||||
@@ -5317,8 +5272,7 @@ bool ChromeContentBrowserClient::PreSpawnChild(
|
||||
|
||||
switch (sandbox_type) {
|
||||
case sandbox::mojom::Sandbox::kRenderer:
|
||||
enforce_code_integrity =
|
||||
(flags & ChildSpawnFlags::kChildSpawnFlagRendererCodeIntegrity);
|
||||
enforce_code_integrity = true;
|
||||
break;
|
||||
case sandbox::mojom::Sandbox::kNetwork:
|
||||
enforce_code_integrity = base::FeatureList::IsEnabled(
|
||||
@@ -5380,23 +5334,6 @@ bool ChromeContentBrowserClient::PreSpawnChild(
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClient::IsRendererCodeIntegrityEnabled() {
|
||||
// Emergency 'on switch' to re-enable the policy if force-disabling it causes
|
||||
// issues.
|
||||
if (base::FeatureList::IsEnabled(
|
||||
sandbox::policy::features::kWinSboxForceRendererCodeIntegrity)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
PrefService* local_state = g_browser_process->local_state();
|
||||
|
||||
// If kWinSboxForceRendererCodeIntegrity is set to disabled, then code
|
||||
// integrity defaults to enabled, unless specifically overridden by a policy
|
||||
// controlled pref being set to false.
|
||||
return !local_state->HasPrefPath(prefs::kRendererCodeIntegrityEnabled) ||
|
||||
local_state->GetBoolean(prefs::kRendererCodeIntegrityEnabled);
|
||||
}
|
||||
|
||||
// Note: Only use sparingly to add Chrome specific sandbox functionality here.
|
||||
// Other code should reside in the content layer. Changes to this function
|
||||
// should be reviewed by the security team.
|
||||
@@ -6064,8 +6001,9 @@ ChromeContentBrowserClient::CreateNonNetworkNavigationURLLoaderFactory(
|
||||
profile, content::ChildProcessHost::kInvalidUniqueID);
|
||||
}
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
if (scheme == chrome::kIsolatedAppScheme) {
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
if (scheme == webapps::kIsolatedAppScheme) {
|
||||
if (content::AreIsolatedWebAppsEnabled(browser_context) &&
|
||||
!browser_context->ShutdownStarted()) {
|
||||
return web_app::IsolatedWebAppURLLoaderFactory::CreateForFrame(
|
||||
@@ -6074,7 +6012,8 @@ ChromeContentBrowserClient::CreateNonNetworkNavigationURLLoaderFactory(
|
||||
|
||||
return {};
|
||||
}
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
#endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) || BUILDFLAG(IS_CHROMEOS) ||
|
||||
// !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
@@ -6088,14 +6027,16 @@ void ChromeContentBrowserClient::
|
||||
DCHECK(browser_context);
|
||||
DCHECK(factories);
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
if (content::AreIsolatedWebAppsEnabled(browser_context) &&
|
||||
!browser_context->ShutdownStarted()) {
|
||||
factories->emplace(chrome::kIsolatedAppScheme,
|
||||
factories->emplace(webapps::kIsolatedAppScheme,
|
||||
web_app::IsolatedWebAppURLLoaderFactory::Create(
|
||||
browser_context, /*app_origin=*/std::nullopt));
|
||||
}
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
DCHECK(!ChromeContentBrowserClientExtensionsPart::
|
||||
@@ -6115,14 +6056,16 @@ void ChromeContentBrowserClient::
|
||||
DCHECK(browser_context);
|
||||
DCHECK(factories);
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
if (content::AreIsolatedWebAppsEnabled(browser_context) &&
|
||||
!browser_context->ShutdownStarted()) {
|
||||
factories->emplace(chrome::kIsolatedAppScheme,
|
||||
factories->emplace(webapps::kIsolatedAppScheme,
|
||||
web_app::IsolatedWebAppURLLoaderFactory::Create(
|
||||
browser_context, /*app_origin=*/std::nullopt));
|
||||
}
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
if (ChromeContentBrowserClientExtensionsPart::AreExtensionsDisabledForProfile(
|
||||
@@ -6388,30 +6331,32 @@ void ChromeContentBrowserClient::
|
||||
}
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
{
|
||||
auto* rph = content::RenderProcessHost::FromID(render_process_id);
|
||||
content::BrowserContext* browser_context = rph->GetBrowserContext();
|
||||
DCHECK(browser_context);
|
||||
bool is_initiator_iwa =
|
||||
request_initiator_origin.has_value() &&
|
||||
request_initiator_origin->scheme() == chrome::kIsolatedAppScheme;
|
||||
request_initiator_origin->scheme() == webapps::kIsolatedAppScheme;
|
||||
if (content::AreIsolatedWebAppsEnabled(browser_context) &&
|
||||
!browser_context->ShutdownStarted() && is_initiator_iwa) {
|
||||
if (frame_host != nullptr) {
|
||||
factories->emplace(
|
||||
chrome::kIsolatedAppScheme,
|
||||
webapps::kIsolatedAppScheme,
|
||||
web_app::IsolatedWebAppURLLoaderFactory::CreateForFrame(
|
||||
browser_context, request_initiator_origin,
|
||||
frame_host->GetFrameTreeNodeId()));
|
||||
} else {
|
||||
factories->emplace(chrome::kIsolatedAppScheme,
|
||||
factories->emplace(webapps::kIsolatedAppScheme,
|
||||
web_app::IsolatedWebAppURLLoaderFactory::Create(
|
||||
browser_context, request_initiator_origin));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
content::BrowserContext* browser_context =
|
||||
@@ -6891,8 +6836,13 @@ void ChromeContentBrowserClient::CreateSecurePaymentConfirmationService(
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
mojo::PendingReceiver<payments::mojom::SecurePaymentConfirmationService>
|
||||
receiver) {
|
||||
payments::CreateSecurePaymentConfirmationService(render_frame_host,
|
||||
std::move(receiver));
|
||||
std::string spc_keychain_access_group;
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
spc_keychain_access_group = kSecurePaymentConfirmationKeychainAccessGroup;
|
||||
#endif // BUILDFLAG(IS_MAC)
|
||||
payments::CreateSecurePaymentConfirmationService(
|
||||
render_frame_host, std::move(receiver),
|
||||
std::move(spc_keychain_access_group));
|
||||
}
|
||||
|
||||
std::unique_ptr<net::ClientCertStore>
|
||||
@@ -6980,7 +6930,7 @@ bool ChromeContentBrowserClient::HandleExternalProtocol(
|
||||
// If actor is active, bail out early to prevent it from launching external
|
||||
// applications.
|
||||
if (tab_interface && actor_service &&
|
||||
actor_service->IsAnyTaskActingOnTab(*tab_interface)) {
|
||||
actor_service->IsActiveOnTab(*tab_interface)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -7187,13 +7137,9 @@ bool ChromeContentBrowserClient::HandleWebUIReverse(
|
||||
url->host() == chrome::kChromeUISettingsHost;
|
||||
}
|
||||
|
||||
const ui::NativeTheme* ChromeContentBrowserClient::GetWebTheme() const {
|
||||
return ui::NativeTheme::GetInstanceForWeb();
|
||||
}
|
||||
|
||||
void ChromeContentBrowserClient::AddExtraPart(
|
||||
ChromeContentBrowserClientParts* part) {
|
||||
extra_parts_.push_back(base::WrapUnique(part));
|
||||
std::unique_ptr<ChromeContentBrowserClientParts> part) {
|
||||
extra_parts_.push_back(std::move(part));
|
||||
}
|
||||
|
||||
std::unique_ptr<HttpAuthCoordinator>
|
||||
@@ -7778,15 +7724,17 @@ bool ChromeContentBrowserClient::
|
||||
void ChromeContentBrowserClient::
|
||||
GrantAdditionalRequestPrivilegesToWorkerProcess(int child_id,
|
||||
const GURL& script_url) {
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
// IWA Service Workers need to be explicitly granted access to their origin
|
||||
// because isolated-app: isn't a web-safe scheme that can be accessed by
|
||||
// default.
|
||||
if (script_url.SchemeIs(chrome::kIsolatedAppScheme)) {
|
||||
if (script_url.SchemeIs(webapps::kIsolatedAppScheme)) {
|
||||
ChildProcessSecurityPolicy::GetInstance()->GrantRequestOrigin(
|
||||
child_id, url::Origin::Create(script_url));
|
||||
}
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
}
|
||||
|
||||
content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride
|
||||
@@ -7807,6 +7755,12 @@ ChromeContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy(
|
||||
kBlockInsteadOfWarn;
|
||||
}
|
||||
|
||||
if (profile->GetPrefs()->GetBoolean(
|
||||
prefs::kManagedLocalNetworkAccessRestrictionsTemporaryOptOut)) {
|
||||
return content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride::
|
||||
kWarnInsteadOfBlock;
|
||||
}
|
||||
|
||||
return content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride::
|
||||
kDefault;
|
||||
}
|
||||
@@ -8147,9 +8101,10 @@ ChromeContentBrowserClient::GetAlternativeErrorPageOverrideInfo(
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
content::BrowserContext* browser_context,
|
||||
int32_t error_code) {
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
if (content::AreIsolatedWebAppsEnabled(browser_context) &&
|
||||
url.SchemeIs(chrome::kIsolatedAppScheme)) {
|
||||
url.SchemeIs(webapps::kIsolatedAppScheme)) {
|
||||
content::mojom::AlternativeErrorPageOverrideInfoPtr
|
||||
alternative_error_page_override_info =
|
||||
web_app::MaybeGetIsolatedWebAppErrorPageInfo(
|
||||
@@ -8160,7 +8115,8 @@ ChromeContentBrowserClient::GetAlternativeErrorPageOverrideInfo(
|
||||
return alternative_error_page_override_info;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
if (error_code == net::ERR_INTERNET_DISCONNECTED) {
|
||||
content::mojom::AlternativeErrorPageOverrideInfoPtr
|
||||
@@ -8497,26 +8453,6 @@ bool ChromeContentBrowserClient::
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
void ChromeContentBrowserClient::BindReadonlyVideoEffectsManager(
|
||||
const std::string& device_id,
|
||||
content::BrowserContext* browser_context,
|
||||
mojo::PendingReceiver<media::mojom::ReadonlyVideoEffectsManager>
|
||||
readonly_video_effects_manager) {
|
||||
media_effects::BindReadonlyVideoEffectsManager(
|
||||
device_id, browser_context, std::move(readonly_video_effects_manager));
|
||||
}
|
||||
|
||||
void ChromeContentBrowserClient::BindVideoEffectsProcessor(
|
||||
const std::string& device_id,
|
||||
content::BrowserContext* browser_context,
|
||||
mojo::PendingReceiver<video_effects::mojom::VideoEffectsProcessor>
|
||||
video_effects_processor) {
|
||||
media_effects::BindVideoEffectsProcessor(device_id, browser_context,
|
||||
std::move(video_effects_processor));
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
|
||||
void ChromeContentBrowserClient::PreferenceRankAudioDeviceInfos(
|
||||
content::BrowserContext* browser_context,
|
||||
blink::WebMediaDeviceInfoArray& infos) {
|
||||
@@ -8759,81 +8695,6 @@ void ChromeContentBrowserClient::QueryInstalledWebAppsByManifestId(
|
||||
}
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
void ChromeContentBrowserClient::OnUiaProviderRequested(
|
||||
bool uia_provider_enabled) {
|
||||
if (handled_uia_provider_request_) {
|
||||
return;
|
||||
}
|
||||
handled_uia_provider_request_ = true;
|
||||
|
||||
if (features::kUiaProvider.default_state ==
|
||||
base::FEATURE_ENABLED_BY_DEFAULT) {
|
||||
// Do nothing if the feature has launched.
|
||||
// TODO: Remove all code relating to this synthetic field trial.
|
||||
return;
|
||||
}
|
||||
|
||||
// The "Control_NNNN" and "Enabled_NNNN" groups in the UiaProviderWin study
|
||||
// are equal-sized arms for which the UiaProvider feature is disabled and
|
||||
// enabled, respectively. (The feature may also be disabled in other groups,
|
||||
// such as "Default_NNNN" or preperiod groups.) Analyzing data from users in
|
||||
// these two groups alone does not provide an accurate picture of the impact
|
||||
// of the feature, because the browser must check whether or not the feature
|
||||
// is enable during startup regardless of whether or not a UI automation
|
||||
// client connects to the browser. Filtering data by whether or not
|
||||
// accessibility is enabled is also insufficient, as this will include
|
||||
// browsers for which an MSAA/IAccessible2 client connects. To measure the
|
||||
// impact of the UiaProvider feature, we only want to consider clients where a
|
||||
// UI automation client connected and said connection was either refused
|
||||
// because the client is in the control group, or was accepted because the
|
||||
// client is in the enabled group. We do this by enrolling the client in one
|
||||
// of two groups of a synthetic field trial in only these two situations.
|
||||
if (auto* trial = base::FeatureList::GetFieldTrial(features::kUiaProvider)) {
|
||||
static constexpr std::string_view kControl = "Control";
|
||||
static constexpr std::string_view kEnabled = "Enabled";
|
||||
const auto& trial_group_name = trial->GetGroupNameWithoutActivation();
|
||||
std::string_view group_name;
|
||||
|
||||
if (base::StartsWith(trial_group_name, "Control")) {
|
||||
group_name = kControl;
|
||||
} else if (base::StartsWith(trial_group_name, "Enabled")) {
|
||||
group_name = kEnabled;
|
||||
}
|
||||
if (!group_name.empty()) {
|
||||
ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
|
||||
"UiaProviderActiveSynthetic", group_name,
|
||||
variations::SyntheticTrialAnnotationMode::kCurrentLog);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ChromeContentBrowserClient::OnUiaProviderDisabled() {
|
||||
// Regardless of whether another request has been handled before, we want to
|
||||
// make this user as part of the "Rejected" group.
|
||||
handled_uia_provider_request_ = true;
|
||||
|
||||
if (features::kUiaProvider.default_state ==
|
||||
base::FEATURE_ENABLED_BY_DEFAULT) {
|
||||
// Do nothing if the feature has launched.
|
||||
// TODO: Remove all code relating to this synthetic field trial.
|
||||
return;
|
||||
}
|
||||
|
||||
// See the comment in `ChromeContentBrowserClient::OnUiaProviderRequested`.
|
||||
if (auto* trial = base::FeatureList::GetFieldTrial(features::kUiaProvider)) {
|
||||
// When the UI Automation Provider is forcibly disabled despite the user
|
||||
// being in the "Enabled" group, we want to ensure that the user is properly
|
||||
// assigned to the "Rejected" group.
|
||||
if (base::StartsWith(trial->GetGroupNameWithoutActivation(), "Enabled")) {
|
||||
ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
|
||||
"UiaProviderActiveSynthetic", "Rejected",
|
||||
variations::SyntheticTrialAnnotationMode::kCurrentLog);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // BUILDFLAG(IS_WIN)
|
||||
|
||||
void ChromeContentBrowserClient::SetSamplingProfiler(
|
||||
std::unique_ptr<MainThreadStackSamplingProfiler> sampling_profiler) {
|
||||
sampling_profiler_ = std::move(sampling_profiler);
|
||||
@@ -8841,8 +8702,7 @@ void ChromeContentBrowserClient::SetSamplingProfiler(
|
||||
|
||||
void ChromeContentBrowserClient::AddExtraPartForTesting(
|
||||
std::unique_ptr<ChromeContentBrowserClientParts> part) {
|
||||
// AddExtraPart takes ownership of a raw pointer.
|
||||
AddExtraPart(part.release());
|
||||
AddExtraPart(std::move(part));
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClient::ShouldDispatchPagehideDuringCommit(
|
||||
|
||||
+8
-5
@@ -31,11 +31,11 @@
|
||||
#include "chrome/browser/ui/passwords/password_manager_navigation_throttle.h"
|
||||
#include "chrome/browser/ui/passwords/well_known_change_password_navigation_throttle.h"
|
||||
#include "chrome/browser/ui/web_applications/navigation_capturing_redirection_throttle.h"
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "components/captive_portal/content/captive_portal_service.h"
|
||||
#include "components/captive_portal/core/buildflags.h"
|
||||
#include "components/dom_distiller/content/browser/distiller_page_web_contents.h"
|
||||
#include "components/embedder_support/switches.h"
|
||||
#include "components/error_page/content/browser/net_error_auto_reloader.h"
|
||||
#include "components/fingerprinting_protection_filter/browser/throttle_manager.h"
|
||||
#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h"
|
||||
@@ -53,6 +53,7 @@
|
||||
#include "components/security_interstitials/content/ssl_error_handler.h"
|
||||
#include "components/security_interstitials/content/ssl_error_navigation_throttle.h"
|
||||
#include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h"
|
||||
#include "components/tabs/public/tab_interface.h"
|
||||
#include "content/public/browser/navigation_handle.h"
|
||||
#include "content/public/browser/navigation_throttle_registry.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
@@ -201,8 +202,10 @@ void HandleSSLErrorWrapper(
|
||||
// Returns whether `web_contents` is within a hosted app.
|
||||
bool IsInHostedApp(content::WebContents* web_contents) {
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
Browser* browser = chrome::FindBrowserWithTab(web_contents);
|
||||
return web_app::AppBrowserController::IsWebApp(browser);
|
||||
tabs::TabInterface* tab =
|
||||
tabs::TabInterface::MaybeGetFromContents(web_contents);
|
||||
return tab && web_app::AppBrowserController::IsWebApp(
|
||||
tab->GetBrowserWindowInterface());
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
@@ -214,10 +217,10 @@ bool IsErrorPageAutoReloadEnabled() {
|
||||
if (command_line.HasSwitch(switches::kEnableAutomation)) {
|
||||
return false;
|
||||
}
|
||||
if (command_line.HasSwitch(embedder_support::kEnableAutoReload)) {
|
||||
if (command_line.HasSwitch(switches::kEnableAutoReload)) {
|
||||
return true;
|
||||
}
|
||||
if (command_line.HasSwitch(embedder_support::kDisableAutoReload)) {
|
||||
if (command_line.HasSwitch(switches::kDisableAutoReload)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
+107
-149
@@ -154,6 +154,8 @@ public abstract class ChromeFeatureList {
|
||||
|
||||
// Feature names.
|
||||
// keep-sorted start group_prefixes=["public static final String"]
|
||||
public static final String ACCESSIBILITY_MAGNIFICATION_FOLLOWS_INPUT_FOCUS =
|
||||
"AccessibilityMagnificationFollowsInputFocus";
|
||||
public static final String ACCOUNT_FOR_SUPPRESSED_KEYBOARD_INSETS =
|
||||
"AccountForSuppressedKeyboardInsets";
|
||||
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 =
|
||||
@@ -167,13 +169,11 @@ public abstract class ChromeFeatureList {
|
||||
public static final String ANDROID_ANIMATED_PROGRESS_BAR_IN_VIZ =
|
||||
"AndroidAnimatedProgressBarInViz";
|
||||
public static final String ANDROID_APPEARANCE_SETTINGS = "AndroidAppearanceSettings";
|
||||
public static final String ANDROID_APP_INTEGRATION = "AndroidAppIntegration";
|
||||
public static final String ANDROID_APP_INTEGRATION_MODULE = "AndroidAppIntegrationModule";
|
||||
public static final String ANDROID_APP_INTEGRATION_MULTI_DATA_SOURCE =
|
||||
"AndroidAppIntegrationMultiDataSource";
|
||||
public static final String ANDROID_APP_INTEGRATION_V2 = "AndroidAppIntegrationV2";
|
||||
public static final String ANDROID_APP_INTEGRATION_WITH_FAVICON =
|
||||
"AndroidAppIntegrationWithFavicon";
|
||||
public static final String ANDROID_AUTOFILL_SUPPORT_FOR_HTTP_AUTH =
|
||||
"AndroidAutofillSupportForHttpAuth";
|
||||
public static final String ANDROID_BOOKMARK_BAR = "AndroidBookmarkBar";
|
||||
public static final String ANDROID_BOTTOM_TOOLBAR = "AndroidBottomToolbar";
|
||||
public static final String ANDROID_BOTTOM_TOOLBAR_V2 = "AndroidBottomToolbarV2";
|
||||
@@ -183,7 +183,6 @@ public abstract class ChromeFeatureList {
|
||||
public static final String ANDROID_ELEGANT_TEXT_HEIGHT = "AndroidElegantTextHeight";
|
||||
public static final String ANDROID_FIRST_RUN_LAUNCH_BOUNDS = "AndroidFirstRunLaunchBounds";
|
||||
public static final String ANDROID_MINIMAL_UI_LARGE_SCREEN = "AndroidMinimalUiLargeScreen";
|
||||
public static final String ANDROID_NATIVE_PAGES_IN_NEW_TAB = "AndroidNativePagesInNewTab";
|
||||
public static final String ANDROID_NO_VISIBLE_HINT_FOR_DIFFERENT_TLD =
|
||||
"AndroidNoVisibleHintForDifferentTLD";
|
||||
public static final String ANDROID_OMNIBOX_FOCUSED_NEW_TAB_PAGE =
|
||||
@@ -192,6 +191,8 @@ public abstract class ChromeFeatureList {
|
||||
public static final String ANDROID_OPEN_PDF_INLINE_BACKPORT = "AndroidOpenPdfInlineBackport";
|
||||
public static final String ANDROID_PDF_ASSIST_CONTENT = "AndroidPdfAssistContent";
|
||||
public static final String ANDROID_PINNED_TABS = "AndroidPinnedTabs";
|
||||
public static final String ANDROID_PINNED_TABS_TABLET_TAB_STRIP =
|
||||
"AndroidPinnedTabsTabletTabStrip";
|
||||
public static final String ANDROID_PROGRESS_BAR_VISUAL_UPDATE =
|
||||
"AndroidProgressBarVisualUpdate";
|
||||
public static final String ANDROID_SETTINGS_CONTAINMENT = "AndroidSettingsContainment";
|
||||
@@ -222,7 +223,9 @@ public abstract class ChromeFeatureList {
|
||||
public static final String ANDROID_USE_ADMINS_FOR_ENTERPRISE_INFO =
|
||||
"AndroidUseAdminsForEnterpriseInfo";
|
||||
public static final String ANDROID_WEB_APP_LAUNCH_HANDLER = "AndroidWebAppLaunchHandler";
|
||||
public static final String ANDROID_WEB_APP_MENU_BUTTON = "AndroidWebAppMenuButton";
|
||||
public static final String ANDROID_WINDOW_CONTROLS_OVERLAY = "AndroidWindowControlsOverlay";
|
||||
public static final String ANDROID_WINDOW_MANAGEMENT_WEB_API = "AndroidWindowManagementWebApi";
|
||||
public static final String ANDROID_WINDOW_POPUP_LARGE_SCREEN = "AndroidWindowPopupLargeScreen";
|
||||
public static final String ANDROID_WINDOW_POPUP_PREDICT_FINAL_BOUNDS =
|
||||
"AndroidWindowPopupPredictFinalBounds";
|
||||
@@ -230,6 +233,7 @@ public abstract class ChromeFeatureList {
|
||||
"AndroidWindowPopupResizeAfterSpawn";
|
||||
public static final String ANDROID_XR_USES_SURFACE_CONTROL =
|
||||
"AndroidWindowPopupResizeAfterSpawn";
|
||||
public static final String ANDROID_ZOOM_INDICATOR = "AndroidZoomIndicator";
|
||||
public static final String ANIMATED_GIF_REFACTOR = "AnimatedGifRefactor";
|
||||
public static final String ANIMATED_IMAGE_DRAG_SHADOW = "AnimatedImageDragShadow";
|
||||
public static final String ANNOTATED_PAGE_CONTENTS_VIRTUAL_STRUCTURE =
|
||||
@@ -254,15 +258,13 @@ public abstract class ChromeFeatureList {
|
||||
public static final String AUTOFILL_ENABLE_CVC_STORAGE = "AutofillEnableCvcStorageAndFilling";
|
||||
public static final String AUTOFILL_ENABLE_FLAT_RATE_CARD_BENEFITS_FROM_CURINOS =
|
||||
"AutofillEnableFlatRateCardBenefitsFromCurinos";
|
||||
public static final String AUTOFILL_ENABLE_KEYBOARD_ACCESSORY_CHIP_REDESIGN =
|
||||
"AutofillEnableKeyboardAccessoryChipRedesign";
|
||||
public static final String AUTOFILL_ENABLE_LOCAL_IBAN = "AutofillEnableLocalIban";
|
||||
public static final String AUTOFILL_ENABLE_LOYALTY_CARDS_FILLING =
|
||||
"AutofillEnableLoyaltyCardsFilling";
|
||||
public static final String AUTOFILL_ENABLE_NEW_CARD_BENEFITS_TOGGLE_TEXT =
|
||||
"AutofillEnableNewCardBenefitsToggleText";
|
||||
public static final String AUTOFILL_ENABLE_RANKING_FORMULA_ADDRESS_PROFILES =
|
||||
"AutofillEnableRankingFormulaAddressProfiles";
|
||||
public static final String AUTOFILL_ENABLE_RANKING_FORMULA_CREDIT_CARDS =
|
||||
"AutofillEnableRankingFormulaCreditCards";
|
||||
public static final String AUTOFILL_ENABLE_SECURITY_TOUCH_EVENT_FILTERING_ANDROID =
|
||||
"AutofillEnableSecurityTouchEventFilteringAndroid";
|
||||
public static final String AUTOFILL_ENABLE_SEPARATE_PIX_PREFERENCE_ITEM =
|
||||
@@ -346,6 +348,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final String CCT_TAB_MODAL_DIALOG = "CCTTabModalDialog";
|
||||
public static final String CCT_TOOLBAR_REFACTOR = "CCTToolbarRefactor";
|
||||
public static final String CHANGE_UNFOCUSED_PRIORITY = "ChangeUnfocusedPriority";
|
||||
public static final String CHROME_ITEM_PICKER_UI = "ChromeItemPickerUi";
|
||||
public static final String CHROME_NATIVE_URL_OVERRIDING = "ChromeNativeUrlOverriding";
|
||||
public static final String CHROME_SURVEY_NEXT_ANDROID = "ChromeSurveyNextAndroid";
|
||||
public static final String CLAMP_AUTOMOTIVE_SCALING = "ClampAutomotiveScaling";
|
||||
@@ -356,8 +359,6 @@ public abstract class ChromeFeatureList {
|
||||
"ClearBrowsingDataAndroidSurvey";
|
||||
public static final String CLEAR_INSTANCE_INFO_WHEN_CLOSED_INTENTIONALLY =
|
||||
"ClearInstanceInfoWhenClosedIntentionally";
|
||||
public static final String COLLECT_ANDROID_FRAME_TIMELINE_METRICS =
|
||||
"CollectAndroidFrameTimelineMetrics";
|
||||
public static final String COMMAND_LINE_ON_NON_ROOTED = "CommandLineOnNonRooted";
|
||||
public static final String COMMERCE_MERCHANT_VIEWER = "CommerceMerchantViewer";
|
||||
public static final String CONTEXTUAL_PAGE_ACTIONS = "ContextualPageActions";
|
||||
@@ -413,6 +414,8 @@ public abstract class ChromeFeatureList {
|
||||
public static final String ENABLE_CLIPBOARD_DATA_CONTROLS_ANDROID =
|
||||
"EnableClipboardDataControlsAndroid";
|
||||
public static final String ENABLE_DISCOUNT_INFO_API = "EnableDiscountInfoApi";
|
||||
public static final String ENABLE_ESCAPE_HANDLING_FOR_SECONDARY_ACTIVITIES =
|
||||
"EnableEscapeHandlingForSecondaryActivities";
|
||||
public static final String ENABLE_EXCLUSIVE_ACCESS_MANAGER = "EnableExclusiveAccessManager";
|
||||
public static final String ENABLE_FULLSCREEN_TO_ANY_SCREEN_ANDROID =
|
||||
"EnableFullscreenToAnyScreenAndroid";
|
||||
@@ -432,8 +435,6 @@ public abstract class ChromeFeatureList {
|
||||
public static final String FILLING_PASSWORDS_FROM_ANY_ORIGIN = "FillingPasswordsFromAnyOrigin";
|
||||
public static final String FINGERPRINTING_PROTECTION_UX = "FingerprintingProtectionUx";
|
||||
public static final String FLOATING_SNACKBAR = "FloatingSnackbar";
|
||||
public static final String FORCE_BROWSER_CONTROLS_UPON_EXITING_FULLSCREEN =
|
||||
"ForceBrowserControlsUponExitingFullscreen";
|
||||
public static final String FORCE_LIST_TAB_SWITCHER = "ForceListTabSwitcher";
|
||||
public static final String FORCE_TRANSLUCENT_NOTIFICATION_TRAMPOLINE =
|
||||
"ForceTranslucentNotificationTrampoline";
|
||||
@@ -456,6 +457,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final String HTTPS_FIRST_BALANCED_MODE = "HttpsFirstBalancedMode";
|
||||
public static final String HUB_BACK_BUTTON = "HubBackButton";
|
||||
public static final String HUB_SLIDE_ANIMATION = "HubSlideAnimation";
|
||||
public static final String INCOGNITO_NTP_SMALL_ICON = "IncognitoNtpSmallIcon";
|
||||
public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot";
|
||||
public static final String INCOGNITO_THEME_OVERLAY_TESTING = "IncognitoThemeOverlayTesting";
|
||||
public static final String INSTANCE_SWITCHER_V2 = "InstanceSwitcherV2";
|
||||
@@ -470,6 +472,8 @@ public abstract class ChromeFeatureList {
|
||||
public static final String LOCAL_NETWORK_ACCESS = "LocalNetworkAccessChecks";
|
||||
public static final String LOCK_BACK_PRESS_HANDLER_AT_START = "LockBackPressHandlerAtStart";
|
||||
public static final String LOCK_TOP_CONTROLS_ON_LARGE_TABLETS = "LockTopControlsOnLargeTablets";
|
||||
public static final String LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2 =
|
||||
"LockTopControlsOnLargeTabletsV2";
|
||||
public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI =
|
||||
"LookalikeUrlNavigationSuggestionsUI";
|
||||
public static final String MAGIC_STACK_ANDROID = "MagicStackAndroid";
|
||||
@@ -570,11 +574,14 @@ public abstract class ChromeFeatureList {
|
||||
public static final String RENAME_JOURNEYS = "RenameJourneys";
|
||||
public static final String REPORT_NOTIFICATION_CONTENT_DETECTION_DATA =
|
||||
"ReportNotificationContentDetectionData";
|
||||
public static final String RESTRICT_LEGACY_SEARCH_ENGINE_PROMO_ON_FORM_FACTORS =
|
||||
"RestrictLegacySearchEnginePromoOnFormFactors";
|
||||
public static final String RIGHT_EDGE_GOES_FORWARD_GESTURE_NAV =
|
||||
"RightEdgeGoesForwardGestureNav";
|
||||
public static final String ROBUST_WINDOW_MANAGEMENT = "RobustWindowManagement";
|
||||
public static final String ROBUST_WINDOW_MANAGEMENT_EXPERIMENTAL =
|
||||
"RobustWindowManagementExperimental";
|
||||
public static final String ROLL_BACK_MODE_B = "RollBackModeB";
|
||||
public static final String SAFETY_HUB = "SafetyHub";
|
||||
public static final String SAFETY_HUB_ANDROID_ORGANIC_SURVEY = "SafetyHubAndroidOrganicSurvey";
|
||||
public static final String SAFETY_HUB_ANDROID_SURVEY = "SafetyHubAndroidSurvey";
|
||||
@@ -598,6 +605,7 @@ public abstract class ChromeFeatureList {
|
||||
"SearchInCCTAlternateTapHandlingIfEnabledByEmbedder";
|
||||
public static final String SEARCH_IN_CCT_IF_ENABLED_BY_EMBEDDER =
|
||||
"SearchInCCTIfEnabledByEmbedder";
|
||||
public static final String SEARCH_IN_SETTINGS = "SearchInSettings";
|
||||
public static final String SEARCH_RESUMPTION_MODULE_ANDROID = "SearchResumptionModuleAndroid";
|
||||
public static final String SEED_ACCOUNTS_REVAMP = "SeedAccountsRevamp";
|
||||
public static final String SEGMENTATION_PLATFORM_ANDROID_HOME_MODULE_RANKER =
|
||||
@@ -609,6 +617,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final String SENSITIVE_CONTENT = "SensitiveContent";
|
||||
public static final String SENSITIVE_CONTENT_WHILE_SWITCHING_TABS =
|
||||
"SensitiveContentWhileSwitchingTabs";
|
||||
public static final String SETTINGS_MULTI_COLUMN = "SettingsMultiColumn";
|
||||
public static final String SETTINGS_SINGLE_ACTIVITY = "SettingsSingleActivity";
|
||||
public static final String SHARED_DATA_TYPES_KILL_SWITCH = "SharedDataTypesKillSwitch";
|
||||
public static final String SHARE_CUSTOM_ACTIONS_IN_CCT = "ShareCustomActionsInCCT";
|
||||
@@ -673,6 +682,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final String TOOLBAR_PHONE_ANIMATION_REFACTOR = "ToolbarPhoneAnimationRefactor";
|
||||
public static final String TOOLBAR_SCROLL_ABLATION = "AndroidToolbarScrollAblation";
|
||||
public static final String TOOLBAR_SNAPSHOT_REFACTOR = "ToolbarSnapshotRefactor";
|
||||
public static final String TOOLBAR_STALE_CAPTURE_BUG_FIX = "ToolbarStaleCaptureBugFix";
|
||||
public static final String TOOLBAR_TABLET_RESIZE_REFACTOR = "ToolbarTabletResizeRefactor";
|
||||
public static final String TOP_CONTROLS_REFACTOR = "TopControlsRefactor";
|
||||
public static final String TOUCH_TO_SEARCH_CALLOUT = "TouchToSearchCallout";
|
||||
@@ -718,23 +728,17 @@ public abstract class ChromeFeatureList {
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sAndroidAnimatedProgressBarInBrowser =
|
||||
newCachedFlag(ANDROID_ANIMATED_PROGRESS_BAR_IN_BROWSER, false);
|
||||
newCachedFlag(ANDROID_ANIMATED_PROGRESS_BAR_IN_BROWSER, true);
|
||||
public static final CachedFlag sAndroidAnimatedProgressBarInViz =
|
||||
newCachedFlag(ANDROID_ANIMATED_PROGRESS_BAR_IN_VIZ, false);
|
||||
public static final CachedFlag sAndroidAppIntegration =
|
||||
newCachedFlag(ANDROID_APP_INTEGRATION, true);
|
||||
public static final CachedFlag sAndroidAppIntegrationModule =
|
||||
newCachedFlag(ANDROID_APP_INTEGRATION_MODULE, true);
|
||||
public static final CachedFlag sAndroidAppIntegrationMultiDataSource =
|
||||
newCachedFlag(ANDROID_APP_INTEGRATION_MULTI_DATA_SOURCE, true);
|
||||
public static final CachedFlag sAndroidAppIntegrationV2 =
|
||||
newCachedFlag(ANDROID_APP_INTEGRATION_V2, true);
|
||||
public static final CachedFlag sAndroidAppIntegrationWithFavicon =
|
||||
newCachedFlag(ANDROID_APP_INTEGRATION_WITH_FAVICON, true);
|
||||
public static final CachedFlag sAndroidBottomToolbar =
|
||||
newCachedFlag(ANDROID_BOTTOM_TOOLBAR, true, true);
|
||||
public static final CachedFlag sAndroidBottomToolbarV2 =
|
||||
newCachedFlag(ANDROID_BOTTOM_TOOLBAR_V2, false, false);
|
||||
newCachedFlag(ANDROID_BOTTOM_TOOLBAR_V2, false, true);
|
||||
public static final CachedFlag sAndroidComposeplate =
|
||||
newCachedFlag(ANDROID_COMPOSEPLATE, false, true);
|
||||
public static final CachedFlag sAndroidDataImporterService =
|
||||
@@ -746,7 +750,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final CachedFlag sAndroidMinimalUiLargeScreen =
|
||||
newCachedFlag(ANDROID_MINIMAL_UI_LARGE_SCREEN, true);
|
||||
public static final CachedFlag sAndroidOpenIncognitoAsWindow =
|
||||
newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, false);
|
||||
newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID);
|
||||
public static final CachedFlag sAndroidProgressBarVisualUpdate =
|
||||
newCachedFlag(
|
||||
ANDROID_PROGRESS_BAR_VISUAL_UPDATE,
|
||||
@@ -777,14 +781,21 @@ public abstract class ChromeFeatureList {
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sAndroidWebAppLaunchHandler =
|
||||
newCachedFlag(ANDROID_WEB_APP_LAUNCH_HANDLER, false, true);
|
||||
public static final CachedFlag sAndroidWebAppMenuButton =
|
||||
newCachedFlag(ANDROID_WEB_APP_MENU_BUTTON, false);
|
||||
public static final CachedFlag sAndroidWindowControlsOverlay =
|
||||
newCachedFlag(ANDROID_WINDOW_CONTROLS_OVERLAY, false);
|
||||
public static final CachedFlag sAndroidWindowManagementWebApi =
|
||||
newCachedFlag(
|
||||
ANDROID_WINDOW_MANAGEMENT_WEB_API,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sAndroidWindowPopupLargeScreen =
|
||||
newCachedFlag(ANDROID_WINDOW_POPUP_LARGE_SCREEN, false, true);
|
||||
public static final CachedFlag sAndroidWindowPopupPredictFinalBounds =
|
||||
newCachedFlag(ANDROID_WINDOW_POPUP_PREDICT_FINAL_BOUNDS, false);
|
||||
newCachedFlag(ANDROID_WINDOW_POPUP_PREDICT_FINAL_BOUNDS, false, true);
|
||||
public static final CachedFlag sAndroidWindowPopupResizeAfterSpawn =
|
||||
newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false);
|
||||
newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false, true);
|
||||
public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true);
|
||||
public static final CachedFlag sAppSpecificHistoryViewIntent =
|
||||
newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true);
|
||||
@@ -825,7 +836,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final CachedFlag sCctBlockTouchesDuringEnterAnimation =
|
||||
newCachedFlag(CCT_BLOCK_TOUCHES_DURING_ENTER_ANIMATION, true);
|
||||
public static final CachedFlag sCctContextualMenuItems =
|
||||
newCachedFlag(CCT_CONTEXTUAL_MENU_ITEMS, false);
|
||||
newCachedFlag(CCT_CONTEXTUAL_MENU_ITEMS, true);
|
||||
public static final CachedFlag sCctDestroyTabWhenModelIsEmpty =
|
||||
newCachedFlag(CCT_DESTROY_TAB_WHEN_MODEL_IS_EMPTY, true);
|
||||
public static final CachedFlag sCctFixWarmup =
|
||||
@@ -867,6 +878,8 @@ public abstract class ChromeFeatureList {
|
||||
public static final CachedFlag sCctTabModalDialog = newCachedFlag(CCT_TAB_MODAL_DIALOG, true);
|
||||
public static final CachedFlag sCctToolbarRefactor =
|
||||
newCachedFlag(CCT_TOOLBAR_REFACTOR, false, true);
|
||||
public static final CachedFlag sChromeItemPickerUi =
|
||||
newCachedFlag(CHROME_ITEM_PICKER_UI, /* defaultValue= */ false);
|
||||
public static final CachedFlag sClampAutomotiveScaling =
|
||||
newCachedFlag(CLAMP_AUTOMOTIVE_SCALING, true);
|
||||
public static final CachedFlag sClankStartupLatencyInjection =
|
||||
@@ -876,11 +889,6 @@ public abstract class ChromeFeatureList {
|
||||
CLEANUP_LEGACY_TABSTATE,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sCollectAndroidFrameTimelineMetrics =
|
||||
newCachedFlag(
|
||||
COLLECT_ANDROID_FRAME_TIMELINE_METRICS,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sCommandLineOnNonRooted =
|
||||
newCachedFlag(COMMAND_LINE_ON_NON_ROOTED, false);
|
||||
public static final CachedFlag sContextMenuPictureInPictureAndroid =
|
||||
@@ -900,11 +908,6 @@ public abstract class ChromeFeatureList {
|
||||
DESKTOP_UA_ON_CONNECTED_DISPLAY,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ false);
|
||||
public static final CachedFlag sDisableInstanceLimit =
|
||||
newCachedFlag(
|
||||
DISABLE_INSTANCE_LIMIT,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sDisplayEdgeToEdgeFullscreen =
|
||||
newCachedFlag(DISPLAY_EDGE_TO_EDGE_FULLSCREEN, false, true);
|
||||
public static final CachedFlag sDrawChromePagesEdgeToEdge =
|
||||
@@ -914,21 +917,17 @@ public abstract class ChromeFeatureList {
|
||||
public static final CachedFlag sEdgeToEdgeEverywhere =
|
||||
newCachedFlag(
|
||||
EDGE_TO_EDGE_EVERYWHERE,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
/* defaultValue= */ true);
|
||||
public static final CachedFlag sEdgeToEdgeMonitorConfigurations =
|
||||
newCachedFlag(EDGE_TO_EDGE_MONITOR_CONFIGURATIONS, /* defaultValue= */ true);
|
||||
public static final CachedFlag sEdgeToEdgeTablet =
|
||||
newCachedFlag(
|
||||
EDGE_TO_EDGE_TABLET,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
newCachedFlag(EDGE_TO_EDGE_TABLET, /* defaultValue= */ true);
|
||||
public static final CachedFlag sEdgeToEdgeUseBackupNavbarInsets =
|
||||
newCachedFlag(EDGE_TO_EDGE_USE_BACKUP_NAVBAR_INSETS, true);
|
||||
public static final CachedFlag sEducationalTipDefaultBrowserPromoCard =
|
||||
newCachedFlag(EDUCATIONAL_TIP_DEFAULT_BROWSER_PROMO_CARD, false);
|
||||
public static final CachedFlag sEducationalTipModule =
|
||||
newCachedFlag(EDUCATIONAL_TIP_MODULE, false, true);
|
||||
newCachedFlag(EDUCATIONAL_TIP_MODULE, true);
|
||||
public static final CachedFlag sEnableExclusiveAccessManager =
|
||||
newCachedFlag(ENABLE_EXCLUSIVE_ACCESS_MANAGER, false);
|
||||
public static final CachedFlag sEnableFullscreenToAnyScreenAndroid =
|
||||
@@ -970,8 +969,9 @@ public abstract class ChromeFeatureList {
|
||||
LOAD_NATIVE_EARLY, /* defaultValue= */ false, /* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sLockBackPressHandlerAtStart =
|
||||
newCachedFlag(LOCK_BACK_PRESS_HANDLER_AT_START, true);
|
||||
public static final CachedFlag sLockTopControlsOnLargeTablets =
|
||||
newCachedFlag(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS, false);
|
||||
// TODO(https://crbug.com/438970923): Remove the use of BuildConfig by 2025 EoY.
|
||||
public static final CachedFlag sLockTopControlsOnLargeTabletsV2 =
|
||||
newCachedFlag(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2, BuildConfig.IS_DESKTOP_ANDROID);
|
||||
public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true);
|
||||
public static final CachedFlag sMaliciousApkDownloadCheck =
|
||||
newCachedFlag(
|
||||
@@ -1036,6 +1036,12 @@ public abstract class ChromeFeatureList {
|
||||
newCachedFlag(SEARCH_IN_CCT_ALTERNATE_TAP_HANDLING_IF_ENABLED_BY_EMBEDDER, true);
|
||||
public static final CachedFlag sSearchInCCTIfEnabledByEmbedder =
|
||||
newCachedFlag(SEARCH_IN_CCT_IF_ENABLED_BY_EMBEDDER, true);
|
||||
public static final CachedFlag sSearchInSettings = newCachedFlag(SEARCH_IN_SETTINGS, false);
|
||||
public static final CachedFlag sSettingsMultiColumn =
|
||||
newCachedFlag(
|
||||
SETTINGS_MULTI_COLUMN,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ false);
|
||||
public static final CachedFlag sSettingsSingleActivity =
|
||||
newCachedFlag(
|
||||
SETTINGS_SINGLE_ACTIVITY,
|
||||
@@ -1057,15 +1063,7 @@ public abstract class ChromeFeatureList {
|
||||
public static final CachedFlag sTabStripDensityChangeAndroid =
|
||||
newCachedFlag(TAB_STRIP_DENSITY_CHANGE_ANDROID, true);
|
||||
public static final CachedFlag sTabStripIncognitoMigration =
|
||||
newCachedFlag(
|
||||
TAB_STRIP_INCOGNITO_MIGRATION,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ false);
|
||||
public static final CachedFlag sTabStripLayoutOptimization =
|
||||
newCachedFlag(
|
||||
TAB_STRIP_LAYOUT_OPTIMIZATION,
|
||||
/* defaultValue= */ true,
|
||||
/* defaultValueInTests= */ true);
|
||||
newCachedFlag(TAB_STRIP_INCOGNITO_MIGRATION, BuildConfig.IS_DESKTOP_ANDROID);
|
||||
public static final CachedFlag sTabWindowManagerReportIndicesMismatch =
|
||||
newCachedFlag(TAB_WINDOW_MANAGER_REPORT_INDICES_MISMATCH, true);
|
||||
public static final CachedFlag sTabletTabStripAnimation =
|
||||
@@ -1086,6 +1084,8 @@ public abstract class ChromeFeatureList {
|
||||
TOOLBAR_SNAPSHOT_REFACTOR,
|
||||
/* defaultValue= */ false,
|
||||
/* defaultValueInTests= */ true);
|
||||
public static final CachedFlag sToolbarTabletResizeRefactor =
|
||||
newCachedFlag(TOOLBAR_TABLET_RESIZE_REFACTOR, /* defaultValue= */ false);
|
||||
public static final CachedFlag sTopControlsRefactor =
|
||||
newCachedFlag(
|
||||
TOP_CONTROLS_REFACTOR,
|
||||
@@ -1118,11 +1118,8 @@ public abstract class ChromeFeatureList {
|
||||
sAllowTabClosingUponMinimization,
|
||||
sAndroidAnimatedProgressBarInBrowser,
|
||||
sAndroidAnimatedProgressBarInViz,
|
||||
sAndroidAppIntegration,
|
||||
sAndroidAppIntegrationModule,
|
||||
sAndroidAppIntegrationMultiDataSource,
|
||||
sAndroidAppIntegrationV2,
|
||||
sAndroidAppIntegrationWithFavicon,
|
||||
sAndroidBottomToolbar,
|
||||
sAndroidBottomToolbarV2,
|
||||
sAndroidComposeplate,
|
||||
@@ -1141,7 +1138,9 @@ public abstract class ChromeFeatureList {
|
||||
sAndroidThemeResourceProvider,
|
||||
sAndroidUseAdminsForEnterpriseInfo,
|
||||
sAndroidWebAppLaunchHandler,
|
||||
sAndroidWebAppMenuButton,
|
||||
sAndroidWindowControlsOverlay,
|
||||
sAndroidWindowManagementWebApi,
|
||||
sAndroidWindowPopupLargeScreen,
|
||||
sAndroidWindowPopupPredictFinalBounds,
|
||||
sAndroidWindowPopupResizeAfterSpawn,
|
||||
@@ -1179,17 +1178,16 @@ public abstract class ChromeFeatureList {
|
||||
sCctRevampedBranding,
|
||||
sCctTabModalDialog,
|
||||
sCctToolbarRefactor,
|
||||
sChromeItemPickerUi,
|
||||
sClampAutomotiveScaling,
|
||||
sClankStartupLatencyInjection,
|
||||
sCleanupLegacyTabState,
|
||||
sCollectAndroidFrameTimelineMetrics,
|
||||
sCommandLineOnNonRooted,
|
||||
sContextMenuPictureInPictureAndroid,
|
||||
sCpaSpecUpdate,
|
||||
sCpaTabGroupingButton,
|
||||
sCrossDeviceTabPaneAndroid,
|
||||
sDesktopUAOnConnectedDisplay,
|
||||
sDisableInstanceLimit,
|
||||
sDisplayEdgeToEdgeFullscreen,
|
||||
sDrawChromePagesEdgeToEdge,
|
||||
sEdgeToEdgeBottomChin,
|
||||
@@ -1215,7 +1213,7 @@ public abstract class ChromeFeatureList {
|
||||
sLegacyTabStateDeprecation,
|
||||
sLoadNativeEarly,
|
||||
sLockBackPressHandlerAtStart,
|
||||
sLockTopControlsOnLargeTablets,
|
||||
sLockTopControlsOnLargeTabletsV2,
|
||||
sMagicStackAndroid,
|
||||
sMaliciousApkDownloadCheck,
|
||||
sMiniOriginBar,
|
||||
@@ -1244,6 +1242,8 @@ public abstract class ChromeFeatureList {
|
||||
sSearchInCCTAlternateTapHandling,
|
||||
sSearchInCCTAlternateTapHandlingIfEnabledByEmbedder,
|
||||
sSearchInCCTIfEnabledByEmbedder,
|
||||
sSearchInSettings,
|
||||
sSettingsMultiColumn,
|
||||
sSettingsSingleActivity,
|
||||
sShowHomeButtonPolicyAndroid,
|
||||
sSmallerTabStripTitleLimit,
|
||||
@@ -1252,11 +1252,11 @@ public abstract class ChromeFeatureList {
|
||||
sTabModelInitFixes,
|
||||
sTabStripDensityChangeAndroid,
|
||||
sTabStripIncognitoMigration,
|
||||
sTabStripLayoutOptimization,
|
||||
sTabWindowManagerReportIndicesMismatch,
|
||||
sTabletTabStripAnimation,
|
||||
sToolbarPhoneAnimationRefactor,
|
||||
sToolbarSnapshotRefactor,
|
||||
sToolbarTabletResizeRefactor,
|
||||
sTopControlsRefactor,
|
||||
sTouchToSearchCallout,
|
||||
sTraceBinderIpc,
|
||||
@@ -1289,10 +1289,10 @@ public abstract class ChromeFeatureList {
|
||||
newMutableFlagWithSafeDefault(ANDROID_APPEARANCE_SETTINGS, false);
|
||||
public static final MutableFlagWithSafeDefault sAndroidBookmarkBar =
|
||||
newMutableFlagWithSafeDefault(ANDROID_BOOKMARK_BAR, false);
|
||||
public static final MutableFlagWithSafeDefault sAndroidNativePagesInNewTab =
|
||||
newMutableFlagWithSafeDefault(ANDROID_NATIVE_PAGES_IN_NEW_TAB, true);
|
||||
public static final MutableFlagWithSafeDefault sAndroidPinnedTabs =
|
||||
newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, false);
|
||||
public static final MutableFlagWithSafeDefault sAndroidPinnedTabsTabletTabStrip =
|
||||
newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS_TABLET_TAB_STRIP, false);
|
||||
public static final MutableFlagWithSafeDefault
|
||||
sAndroidShowRestoreTabsPromoOnFreBypassedKillSwitch =
|
||||
newMutableFlagWithSafeDefault(
|
||||
@@ -1300,9 +1300,9 @@ public abstract class ChromeFeatureList {
|
||||
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveAllButActiveTab =
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_ALL_BUT_ACTIVE, false);
|
||||
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveTabGroups =
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_TAB_GROUPS, false);
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_TAB_GROUPS, true);
|
||||
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterAutoDelete =
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_AUTO_DELETE, false);
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_AUTO_DELETE, true);
|
||||
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterAutoDeleteKillSwitch =
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_AUTO_DELETE_KILL_SWITCH, true);
|
||||
public static final MutableFlagWithSafeDefault sAndroidTabDeclutterPerformanceImprovements =
|
||||
@@ -1313,6 +1313,8 @@ public abstract class ChromeFeatureList {
|
||||
newMutableFlagWithSafeDefault(ANDROID_TAB_HIGHLIGHTING, false);
|
||||
public static final MutableFlagWithSafeDefault sAndroidTipsNotifications =
|
||||
newMutableFlagWithSafeDefault(ANDROID_TIPS_NOTIFICATIONS, false);
|
||||
public static final MutableFlagWithSafeDefault sAndroidZoomIndicator =
|
||||
newMutableFlagWithSafeDefault(ANDROID_ZOOM_INDICATOR, false);
|
||||
public static final MutableFlagWithSafeDefault sBcivBottomControls =
|
||||
newMutableFlagWithSafeDefault(BCIV_BOTTOM_CONTROLS, true);
|
||||
public static final MutableFlagWithSafeDefault sBrowserControlsEarlyResize =
|
||||
@@ -1325,18 +1327,22 @@ public abstract class ChromeFeatureList {
|
||||
newMutableFlagWithSafeDefault(CLEAR_BROWSING_DATA_ANDROID_SURVEY, false);
|
||||
public static final MutableFlagWithSafeDefault sControlsVisibilityFromNavigations =
|
||||
newMutableFlagWithSafeDefault(CONTROLS_VISIBILITY_FROM_NAVIGATIONS, true);
|
||||
public static final MutableFlagWithSafeDefault sDisableInstanceLimit =
|
||||
newMutableFlagWithSafeDefault(DISABLE_INSTANCE_LIMIT, false);
|
||||
// Defaulted to true in native, but since it is being used as a kill switch set the default
|
||||
// value pre-native to false as it is safer if the feature needs to be killed via Finch config.
|
||||
public static final MutableFlagWithSafeDefault sEmptyTabListAnimationKillSwitch =
|
||||
newMutableFlagWithSafeDefault(EMPTY_TAB_LIST_ANIMATION_KILL_SWITCH, false);
|
||||
public static final MutableFlagWithSafeDefault sForceBrowserControlsUponExitingFullscreen =
|
||||
newMutableFlagWithSafeDefault(FORCE_BROWSER_CONTROLS_UPON_EXITING_FULLSCREEN, true);
|
||||
public static final MutableFlagWithSafeDefault sHubBackButton =
|
||||
newMutableFlagWithSafeDefault(HUB_BACK_BUTTON, false);
|
||||
public static final MutableFlagWithSafeDefault sHubSlideAnimation =
|
||||
newMutableFlagWithSafeDefault(HUB_SLIDE_ANIMATION, true);
|
||||
public static final MutableFlagWithSafeDefault sIncognitoNtpSmallIcon =
|
||||
newMutableFlagWithSafeDefault(INCOGNITO_NTP_SMALL_ICON, false);
|
||||
public static final MutableFlagWithSafeDefault sIncognitoScreenshot =
|
||||
newMutableFlagWithSafeDefault(INCOGNITO_SCREENSHOT, false);
|
||||
public static final MutableFlagWithSafeDefault sLockTopControlsOnLargeTablets =
|
||||
newMutableFlagWithSafeDefault(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS, false);
|
||||
public static final MutableFlagWithSafeDefault sMediaIndicatorsAndroid =
|
||||
newMutableFlagWithSafeDefault(MEDIA_INDICATORS_ANDROID, false);
|
||||
public static final MutableFlagWithSafeDefault sNoVisibleHintForDifferentTLD =
|
||||
@@ -1376,6 +1382,8 @@ public abstract class ChromeFeatureList {
|
||||
newMutableFlagWithSafeDefault(TAB_GROUP_PARITY_BOTTOM_SHEET_ANDROID, true);
|
||||
public static final MutableFlagWithSafeDefault sTabStorageSqlitePrototype =
|
||||
newMutableFlagWithSafeDefault(TAB_STORAGE_SQLITE_PROTOTYPE, false);
|
||||
public static final MutableFlagWithSafeDefault sTabStripLayoutOptimization =
|
||||
newMutableFlagWithSafeDefault(TAB_STRIP_LAYOUT_OPTIMIZATION, true);
|
||||
public static final MutableFlagWithSafeDefault sTabSwitcherForeignFaviconSupport =
|
||||
newMutableFlagWithSafeDefault(TAB_SWITCHER_FOREIGN_FAVICON_SUPPORT, true);
|
||||
public static final MutableFlagWithSafeDefault sTabSwitcherGroupSuggestionsAndroid =
|
||||
@@ -1384,8 +1392,6 @@ public abstract class ChromeFeatureList {
|
||||
newMutableFlagWithSafeDefault(TAB_SWITCHER_GROUP_SUGGESTIONS_TEST_MODE_ANDROID, false);
|
||||
public static final MutableFlagWithSafeDefault sToolbarScrollAblation =
|
||||
newMutableFlagWithSafeDefault(TOOLBAR_SCROLL_ABLATION, false);
|
||||
public static final MutableFlagWithSafeDefault sToolbarTabletResizeRefactor =
|
||||
newMutableFlagWithSafeDefault(TOOLBAR_TABLET_RESIZE_REFACTOR, false);
|
||||
// keep-sorted end
|
||||
|
||||
// CachedFeatureParam instances.
|
||||
@@ -1396,49 +1402,18 @@ public abstract class ChromeFeatureList {
|
||||
public static final BooleanCachedFeatureParam sAndroidThemeResourceProviderForceLight =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_THEME_RESOURCE_PROVIDER, "force_light_theme", false);
|
||||
public static final BooleanCachedFeatureParam sCctAdaptiveButtonEnableOpenInBrowser =
|
||||
newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "open_in_browser", false);
|
||||
public static final BooleanCachedFeatureParam sCctAdaptiveButtonEnableVoice =
|
||||
newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "voice", false);
|
||||
public static final BooleanCachedFeatureParam sCctAdaptiveButtonContextualOnly =
|
||||
newBooleanCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "contextual_only", false);
|
||||
public static final IntCachedFeatureParam sCctAdaptiveButtonDefaultVariant =
|
||||
newIntCachedFeatureParam(CCT_ADAPTIVE_BUTTON, "default_variant", 0);
|
||||
public static final IntCachedFeatureParam sAndroidAppIntegrationV2ContentTtlHours =
|
||||
newIntCachedFeatureParam(ANDROID_APP_INTEGRATION_V2, "content_ttl_hours", 168);
|
||||
|
||||
public static final IntCachedFeatureParam
|
||||
sAndroidAppIntegrationMultiDataSourceHistoryContentTtlHours =
|
||||
newIntCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_MULTI_DATA_SOURCE,
|
||||
"history_content_ttl_hours",
|
||||
24);
|
||||
|
||||
public static final BooleanCachedFeatureParam sAndroidAppIntegrationWithFaviconSkipDeviceCheck =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_WITH_FAVICON, "skip_device_check", false);
|
||||
public static final BooleanCachedFeatureParam sAndroidAppIntegrationModuleForceCardShow =
|
||||
newBooleanCachedFeatureParam(ANDROID_APP_INTEGRATION_MODULE, "force_card_shown", false);
|
||||
|
||||
public static final BooleanCachedFeatureParam sAndroidAppIntegrationModuleShowThirdPartyCard =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_MODULE, "show_third_party_card", false);
|
||||
|
||||
public static final IntCachedFeatureParam sAndroidAppIntegrationWithFaviconScheduleDelayTimeMs =
|
||||
newIntCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_WITH_FAVICON, "schedule_delay_time_ms", 0);
|
||||
public static final BooleanCachedFeatureParam sAndroidAppIntegrationWithFaviconUseLargeFavicon =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_WITH_FAVICON, "use_large_favicon", true);
|
||||
public static final IntCachedFeatureParam
|
||||
sAndroidAppIntegrationWithFaviconZeroStateFaviconNumber =
|
||||
newIntCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_WITH_FAVICON, "zero_state_favicon_number", 5);
|
||||
|
||||
public static final BooleanCachedFeatureParam sAndroidAppIntegrationWithFaviconSkipSchemaCheck =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_APP_INTEGRATION_WITH_FAVICON, "skip_schema_check", false);
|
||||
|
||||
public static final BooleanCachedFeatureParam
|
||||
sAndroidAppIntegrationMultiDataSourceSkipSchemaCheck =
|
||||
newBooleanCachedFeatureParam(
|
||||
@@ -1452,6 +1427,9 @@ public abstract class ChromeFeatureList {
|
||||
"multi_data_source_skip_device_check",
|
||||
false);
|
||||
|
||||
public static final BooleanCachedFeatureParam sAndroidBookmarkBarShowBookmarkBar =
|
||||
newBooleanCachedFeatureParam(ANDROID_BOOKMARK_BAR, "show_bookmark_bar", false);
|
||||
|
||||
public static final BooleanCachedFeatureParam sAndroidComposeplateSkipLocaleCheck =
|
||||
newBooleanCachedFeatureParam(ANDROID_COMPOSEPLATE, "skip_locale_check", false);
|
||||
|
||||
@@ -1463,6 +1441,15 @@ public abstract class ChromeFeatureList {
|
||||
public static final BooleanCachedFeatureParam sAndroidBottomToolbarDefaultToTop =
|
||||
newBooleanCachedFeatureParam(ANDROID_BOTTOM_TOOLBAR, "default_to_top", true);
|
||||
|
||||
public static final BooleanCachedFeatureParam
|
||||
sAndroidBottomToolbarV2ForceBottomForFocusedOmnibox =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_BOTTOM_TOOLBAR_V2, "force_bottom_for_focused_omnibox", false);
|
||||
public static final BooleanCachedFeatureParam
|
||||
sAndroidBottomToolbarV2ReverseOrderSuggestionsList =
|
||||
newBooleanCachedFeatureParam(
|
||||
ANDROID_BOTTOM_TOOLBAR_V2, "reverse_order_suggestions_list", false);
|
||||
|
||||
public static final IntCachedFeatureParam sBackgroundThreadPoolFieldTrialConfig =
|
||||
newIntCachedFeatureParam(BACKGROUND_THREAD_POOL_FIELD_TRIAL, "config", 4);
|
||||
|
||||
@@ -1570,19 +1557,6 @@ public abstract class ChromeFeatureList {
|
||||
newIntCachedFeatureParam(
|
||||
CLANK_STARTUP_LATENCY_INJECTION, "latency_injection_amount_millis", 0);
|
||||
|
||||
/**
|
||||
* The parameter to control how quickly the JankTracker should be enabled. Some JankTracker
|
||||
* implementations can be quite heavy (including thread creation and the link). To avoid
|
||||
* impacting start up we support delaying the construction of the JankTracker.
|
||||
*
|
||||
* <p>3000ms is enough to push us past the median start up time without losing to much of feed
|
||||
* interactions.
|
||||
*/
|
||||
public static final IntCachedFeatureParam
|
||||
sCollectAndroidFrameTimelineMetricsJankTrackerDelayedStartMs =
|
||||
newIntCachedFeatureParam(
|
||||
COLLECT_ANDROID_FRAME_TIMELINE_METRICS, "delayed_start_ms", 3000);
|
||||
|
||||
/** Batch size for number of legacy TabState files that should be deleted in a batch. */
|
||||
public static final IntCachedFeatureParam sCleanupLegacyTabStateBatchSize =
|
||||
newIntCachedFeatureParam(
|
||||
@@ -1595,12 +1569,6 @@ public abstract class ChromeFeatureList {
|
||||
"max_legacy_tab_state_files_cleaned_up_per_session",
|
||||
100);
|
||||
|
||||
public static final IntCachedFeatureParam sDisableInstanceLimitMemoryThresholdMb =
|
||||
newIntCachedFeatureParam(
|
||||
DISABLE_INSTANCE_LIMIT, "max_instance_limit_memory_threshold_mb", 6500);
|
||||
public static final IntCachedFeatureParam sDisableInstanceLimitMaxCount =
|
||||
newIntCachedFeatureParam(DISABLE_INSTANCE_LIMIT, "max_instance_limit", 20);
|
||||
|
||||
/**
|
||||
* Cached param whether we disable animations for color changes to the edge-to-edge bottom chin.
|
||||
*/
|
||||
@@ -1620,6 +1588,9 @@ public abstract class ChromeFeatureList {
|
||||
"disable_edge_to_edge_layout_color_animation",
|
||||
false);
|
||||
|
||||
public static final BooleanCachedFeatureParam sNewTabPageCustomizationV2ShowColorPicker =
|
||||
newBooleanCachedFeatureParam(NEW_TAB_PAGE_CUSTOMIZATION_V2, "show_color_picker", false);
|
||||
|
||||
/**
|
||||
* Param for the OEMs that need an exception for min versions. Its value should be a comma
|
||||
* separated list of integers, and its index should match {@link #sEdgeToEdgeBottomChinOemList}.
|
||||
@@ -1630,7 +1601,7 @@ public abstract class ChromeFeatureList {
|
||||
|
||||
public static final StringCachedFeatureParam sEdgeToEdgeEverywhereOemMinVersions =
|
||||
newStringCachedFeatureParam(
|
||||
EDGE_TO_EDGE_EVERYWHERE, "e2e_field_trial_oem_min_versions", "");
|
||||
EDGE_TO_EDGE_EVERYWHERE, "e2e_field_trial_oem_min_versions", "35");
|
||||
|
||||
public static final StringCachedFeatureParam sEdgeToEdgeUseBackupNavbarInsetsOemMinVersions =
|
||||
newStringCachedFeatureParam(
|
||||
@@ -1648,7 +1619,8 @@ public abstract class ChromeFeatureList {
|
||||
EDGE_TO_EDGE_BOTTOM_CHIN, "e2e_field_trial_oem_list", "oppo,xiaomi");
|
||||
|
||||
public static final StringCachedFeatureParam sEdgeToEdgeEverywhereOemList =
|
||||
newStringCachedFeatureParam(EDGE_TO_EDGE_EVERYWHERE, "e2e_field_trial_oem_list", "");
|
||||
newStringCachedFeatureParam(
|
||||
EDGE_TO_EDGE_EVERYWHERE, "e2e_field_trial_oem_list", "realme");
|
||||
|
||||
public static final StringCachedFeatureParam sEdgeToEdgeUseBackupNavbarInsetsOemList =
|
||||
newStringCachedFeatureParam(
|
||||
@@ -1721,6 +1693,12 @@ public abstract class ChromeFeatureList {
|
||||
"read_aloud_audio_overviews_speed_addition_percentage",
|
||||
20);
|
||||
|
||||
public static final IntCachedFeatureParam sReadAloudReadabilityDelayMsAfterPageLoad =
|
||||
newIntCachedFeatureParam(
|
||||
READALOUD,
|
||||
"read_aloud_readability_delay_ms_after_page_load",
|
||||
3000);
|
||||
|
||||
public static final BooleanCachedFeatureParam sShouldConsiderLanguageInOverviewReadability =
|
||||
newBooleanCachedFeatureParam(
|
||||
READALOUD_AUDIO_OVERVIEWS,
|
||||
@@ -1791,16 +1769,12 @@ public abstract class ChromeFeatureList {
|
||||
// keep-sorted start
|
||||
sAndroidAppIntegrationModuleForceCardShow,
|
||||
sAndroidAppIntegrationModuleShowThirdPartyCard,
|
||||
sAndroidAppIntegrationMultiDataSourceHistoryContentTtlHours,
|
||||
sAndroidAppIntegrationMultiDataSourceSkipDeviceCheck,
|
||||
sAndroidAppIntegrationMultiDataSourceSkipSchemaCheck,
|
||||
sAndroidAppIntegrationV2ContentTtlHours,
|
||||
sAndroidAppIntegrationWithFaviconScheduleDelayTimeMs,
|
||||
sAndroidAppIntegrationWithFaviconSkipDeviceCheck,
|
||||
sAndroidAppIntegrationWithFaviconSkipSchemaCheck,
|
||||
sAndroidAppIntegrationWithFaviconUseLargeFavicon,
|
||||
sAndroidAppIntegrationWithFaviconZeroStateFaviconNumber,
|
||||
sAndroidBookmarkBarShowBookmarkBar,
|
||||
sAndroidBottomToolbarDefaultToTop,
|
||||
sAndroidBottomToolbarV2ForceBottomForFocusedOmnibox,
|
||||
sAndroidBottomToolbarV2ReverseOrderSuggestionsList,
|
||||
sAndroidComposeplateHideIncognitoButton,
|
||||
sAndroidComposeplateSkipLocaleCheck,
|
||||
sAndroidComposeplateV2Enabled,
|
||||
@@ -1810,7 +1784,6 @@ public abstract class ChromeFeatureList {
|
||||
sBatchTabRestoreBatchSize,
|
||||
sCctAdaptiveButtonContextualOnly,
|
||||
sCctAdaptiveButtonDefaultVariant,
|
||||
sCctAdaptiveButtonEnableOpenInBrowser,
|
||||
sCctAdaptiveButtonEnableVoice,
|
||||
sCctAuthTabEnableHttpsRedirectsVerificationTimeoutMs,
|
||||
sCctAutoTranslateAllowAllFirstParties,
|
||||
@@ -1828,9 +1801,6 @@ public abstract class ChromeFeatureList {
|
||||
sClampAutomotiveScalingMaxScalingPercentage,
|
||||
sClankStartupLatencyInjectionAmountMs,
|
||||
sCleanupLegacyTabStateBatchSize,
|
||||
sCollectAndroidFrameTimelineMetricsJankTrackerDelayedStartMs,
|
||||
sDisableInstanceLimitMaxCount,
|
||||
sDisableInstanceLimitMemoryThresholdMb,
|
||||
sEdgeToEdgeBottomChinOemList,
|
||||
sEdgeToEdgeBottomChinOemMinVersions,
|
||||
sEdgeToEdgeEverywhereOemList,
|
||||
@@ -1851,6 +1821,7 @@ public abstract class ChromeFeatureList {
|
||||
sMostVisitedTilesReselectLaxSchemeHost,
|
||||
sNavBarColorAnimationDisableBottomChinColorAnimation,
|
||||
sNavBarColorAnimationDisableEdgeToEdgeLayoutColorAnimation,
|
||||
sNewTabPageCustomizationV2ShowColorPicker,
|
||||
sNotificationTrampolineImmediateJobDurationMs,
|
||||
sNotificationTrampolineLongJobDurationMs,
|
||||
sNotificationTrampolineNormalJobDurationMs,
|
||||
@@ -1860,6 +1831,7 @@ public abstract class ChromeFeatureList {
|
||||
sPCctMinimumHeightRatio,
|
||||
sPriceChangeModuleSkipShoppingPersistedTabDataDelayedInit,
|
||||
sReadAloudAudioOverviewsSpeedAdditionPercentage,
|
||||
sReadAloudReadabilityDelayMsAfterPageLoad,
|
||||
sSearchinCctApplyReferrerId,
|
||||
sSearchinCctOmniboxAllowedPackageNames,
|
||||
sShouldConsiderLanguageInOverviewReadability,
|
||||
@@ -1879,26 +1851,14 @@ public abstract class ChromeFeatureList {
|
||||
|
||||
// Mutable*ParamWithSafeDefault instances.
|
||||
/* Alphabetical: */
|
||||
public static final MutableBooleanParamWithSafeDefault
|
||||
sAndroidNativePagesInNewTabBookmarksEnabled =
|
||||
sAndroidNativePagesInNewTab.newBooleanParam(
|
||||
"android_native_pages_in_new_tab_bookmarks_enabled", true);
|
||||
public static final MutableBooleanParamWithSafeDefault
|
||||
sAndroidNativePagesInNewTabDownloadsEnabled =
|
||||
sAndroidNativePagesInNewTab.newBooleanParam(
|
||||
"android_native_pages_in_new_tab_downloads_enabled", true);
|
||||
public static final MutableBooleanParamWithSafeDefault
|
||||
sAndroidNativePagesInNewTabHistoryEnabled =
|
||||
sAndroidNativePagesInNewTab.newBooleanParam(
|
||||
"android_native_pages_in_new_tab_history_enabled", true);
|
||||
public static final MutableBooleanParamWithSafeDefault
|
||||
sAndroidNativePagesInNewTabRecentTabsEnabled =
|
||||
sAndroidNativePagesInNewTab.newBooleanParam(
|
||||
"android_native_pages_in_new_tab_recent_tabs_enabled", true);
|
||||
public static final MutableIntParamWithSafeDefault
|
||||
sAndroidTabDeclutterAutoDeleteTimeDeltaHours =
|
||||
sAndroidTabDeclutterAutoDelete.newIntParam(
|
||||
"android_tab_declutter_auto_delete_time_delta_hours", 90 * 24);
|
||||
public static final MutableIntParamWithSafeDefault sDisableInstanceLimitMemoryThresholdMb =
|
||||
sDisableInstanceLimit.newIntParam("max_instance_limit_memory_threshold_mb", 6500);
|
||||
public static final MutableIntParamWithSafeDefault sDisableInstanceLimitMaxCount =
|
||||
sDisableInstanceLimit.newIntParam("max_instance_limit", 20);
|
||||
|
||||
public static final MutableBooleanParamWithSafeDefault sAndroidTabDeclutterAutoDeletePromoTest =
|
||||
sAndroidTabDeclutterAutoDelete.newBooleanParam(
|
||||
@@ -1906,8 +1866,6 @@ public abstract class ChromeFeatureList {
|
||||
|
||||
public static final MutableBooleanParamWithSafeDefault sShowNewTabAnimationsLogs =
|
||||
sShowNewTabAnimations.newBooleanParam("logs", false);
|
||||
public static final MutableBooleanParamWithSafeDefault sShowNewTabAnimationsListeners =
|
||||
sShowNewTabAnimations.newBooleanParam("listeners", false);
|
||||
|
||||
public static final MutableBooleanParamWithSafeDefault sAndroidTabHighlightingForceCtrlClick =
|
||||
sAndroidTabHighlighting.newBooleanParam("force_ctrl_click", false);
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include "base/files/file_path.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/time/time.h"
|
||||
#include "base/trace_event/trace_event.h"
|
||||
#include "build/android_buildflags.h"
|
||||
@@ -186,6 +188,7 @@
|
||||
#include "components/sync/service/glue/sync_transport_data_prefs.h"
|
||||
#include "components/sync/service/sync_prefs.h"
|
||||
#include "components/sync_device_info/device_info_prefs.h"
|
||||
#include "components/sync_preferences/cross_device_pref_tracker/prefs/cross_device_pref_registry.h"
|
||||
#include "components/sync_preferences/pref_service_syncable.h"
|
||||
#include "components/sync_sessions/session_sync_prefs.h"
|
||||
#include "components/tpcd/metadata/browser/prefs.h"
|
||||
@@ -264,8 +267,6 @@
|
||||
#include "chrome/browser/media/android/cdm/media_drm_origin_id_manager.h"
|
||||
#include "chrome/browser/notifications/notification_channels_provider_android.h"
|
||||
#include "chrome/browser/partnerbookmarks/partner_bookmarks_shim.h"
|
||||
#include "chrome/browser/password_manager/android/password_manager_android_util.h"
|
||||
#include "chrome/browser/password_manager/android/password_manager_util_bridge.h"
|
||||
#include "chrome/browser/readaloud/android/prefs.h"
|
||||
#include "chrome/browser/ssl/known_interception_disclosure_infobar_delegate.h"
|
||||
#include "components/cdm/browser/media_drm_storage_impl.h" // nogncheck crbug.com/1125897
|
||||
@@ -365,7 +366,7 @@
|
||||
#include "chrome/browser/ash/child_accounts/time_limits/app_time_controller.h"
|
||||
#include "chrome/browser/ash/crostini/crostini_pref_names.h"
|
||||
#include "chrome/browser/ash/cryptauth/client_app_metadata_provider_service.h"
|
||||
#include "chrome/browser/ash/cryptauth/cryptauth_device_id_provider_impl.h"
|
||||
#include "chrome/browser/ash/cryptauth/cryptauth_device_id_provider.h"
|
||||
#include "chrome/browser/ash/customization/customization_document.h"
|
||||
#include "chrome/browser/ash/file_manager/file_manager_pref_names.h"
|
||||
#include "chrome/browser/ash/file_manager/file_tasks.h"
|
||||
@@ -465,6 +466,7 @@
|
||||
#include "chromeos/ash/services/device_sync/public/cpp/device_sync_prefs.h"
|
||||
#include "chromeos/ash/services/multidevice_setup/multidevice_setup_service.h"
|
||||
#include "chromeos/components/quick_answers/public/cpp/quick_answers_prefs.h"
|
||||
#include "chromeos/constants/pref_names.h"
|
||||
#include "chromeos/ui/wm/fullscreen/pref_names.h"
|
||||
#include "components/account_manager_core/chromeos/account_manager.h"
|
||||
#include "components/onc/onc_pref_names.h" // nogncheck
|
||||
@@ -1143,10 +1145,38 @@ constexpr char kDesksLacrosProfileIdList[] =
|
||||
"ash.desks.desks_lacros_profile_id_list";
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// Deprecated 09/2025.
|
||||
constexpr char kObsoleteUpmUnmigratedPasswordsExported[] =
|
||||
"profile.upm_unmigrated_passwords_exported";
|
||||
constexpr char kObsoletePasswordsUseUPMLocalAndSeparateStores[] =
|
||||
"passwords_use_upm_local_and_separate_stores";
|
||||
constexpr char kObsoleteEmptyProfileStoreLoginDatabase[] =
|
||||
"password_manager.empty_profile_store_login_database";
|
||||
constexpr char kObsoleteUpmAutoExportCsvNeedsDeletion[] =
|
||||
"profile.upm_auto_export_csv_needs_deletion";
|
||||
#endif // BUILDFLAG(IS_ANDROID)
|
||||
|
||||
// Deprecated 09/2025.
|
||||
constexpr char kGaiaCookieLastListAccountsData[] =
|
||||
"gaia_cookie.last_list_accounts_data";
|
||||
|
||||
// Deprecated 09/2025.
|
||||
constexpr char kLensOverlayEduActionChipShownCount[] =
|
||||
"lens.edu_action_chip.shown_count";
|
||||
|
||||
constexpr char kRendererCodeIntegrityEnabledNeedsDeletion[] =
|
||||
"renderer_code_integrity_enabled";
|
||||
|
||||
// Deprecated 10/2025.
|
||||
constexpr char kSessionRestoreTurnOffFromRestartInfoBarTimesShown[] =
|
||||
"browser.session_restore_turn_off_from_restart_infobar_times_shown";
|
||||
|
||||
constexpr char kSessionRestoreTurnOffFromSessionInfoBarTimesShown[] =
|
||||
"browser.session_restore_turn_off_from_session_infobar_times_shown";
|
||||
|
||||
constexpr char kSessionRestorePrefChanged[] = "session.restore_pref_changed";
|
||||
|
||||
// Register local state used only for migration (clearing or moving to a new
|
||||
// key).
|
||||
void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
|
||||
@@ -1271,6 +1301,10 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
|
||||
registry->RegisterIntegerPref(
|
||||
kAutoScreenBrightnessMetricsUnsupportedAlsUserAdjustmentCount, 0);
|
||||
#endif
|
||||
|
||||
// Deprecated 09/2025.
|
||||
registry->RegisterBooleanPref(kRendererCodeIntegrityEnabledNeedsDeletion,
|
||||
false);
|
||||
}
|
||||
|
||||
// Register prefs used only for migration (clearing or moving to a new key).
|
||||
@@ -1653,8 +1687,31 @@ void RegisterProfilePrefsForMigration(
|
||||
registry->RegisterListPref(kDesksLacrosProfileIdList);
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// Deprecated 09/2025.
|
||||
registry->RegisterBooleanPref(kObsoleteUpmUnmigratedPasswordsExported, false);
|
||||
registry->RegisterIntegerPref(kObsoletePasswordsUseUPMLocalAndSeparateStores,
|
||||
0);
|
||||
registry->RegisterBooleanPref(kObsoleteEmptyProfileStoreLoginDatabase, false);
|
||||
registry->RegisterBooleanPref(kObsoleteUpmAutoExportCsvNeedsDeletion, false);
|
||||
#endif // BUILDFLAG(IS_ANDROID)
|
||||
|
||||
// Deprecated 09/2025.
|
||||
registry->RegisterStringPref(kGaiaCookieLastListAccountsData, std::string());
|
||||
|
||||
// Deprecated 09/2025.
|
||||
registry->RegisterIntegerPref(kLensOverlayEduActionChipShownCount, 0);
|
||||
|
||||
// Deprecated 10/2025.
|
||||
registry->RegisterIntegerPref(
|
||||
kSessionRestoreTurnOffFromRestartInfoBarTimesShown, 0);
|
||||
|
||||
// Deprecated 10/2025.
|
||||
registry->RegisterIntegerPref(
|
||||
kSessionRestoreTurnOffFromSessionInfoBarTimesShown, 0);
|
||||
|
||||
// Deprecated 10/2025.
|
||||
registry->RegisterBooleanPref(kSessionRestorePrefChanged, false);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -1703,6 +1760,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
|
||||
metrics::RegisterDemographicsLocalStatePrefs(registry);
|
||||
metrics::TabStatsTracker::RegisterPrefs(registry);
|
||||
network_time::NetworkTimeTracker::RegisterPrefs(registry);
|
||||
omnibox::RegisterLocalStatePrefs(registry);
|
||||
optimization_guide::prefs::RegisterLocalStatePrefs(registry);
|
||||
optimization_guide::model_execution::prefs::RegisterLocalStatePrefs(registry);
|
||||
password_manager::PasswordManager::RegisterLocalPrefs(registry);
|
||||
@@ -1850,7 +1908,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
|
||||
ash::UserImageManagerImpl::RegisterPrefs(registry);
|
||||
ash::UserSessionManager::RegisterPrefs(registry);
|
||||
component_updater::MetadataTable::RegisterPrefs(registry);
|
||||
ash::CryptAuthDeviceIdProviderImpl::RegisterLocalPrefs(registry);
|
||||
ash::cryptauth_device_id::RegisterLocalPrefs(registry);
|
||||
extensions::ExtensionAssetsManagerChromeOS::RegisterPrefs(registry);
|
||||
extensions::ExtensionsPermissionsTracker::RegisterLocalStatePrefs(registry);
|
||||
extensions::login_api::RegisterLocalStatePrefs(registry);
|
||||
@@ -1890,7 +1948,6 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
OSCrypt::RegisterLocalPrefs(registry);
|
||||
registry->RegisterBooleanPref(prefs::kRendererCodeIntegrityEnabled, true);
|
||||
registry->RegisterBooleanPref(prefs::kRendererAppContainerEnabled, true);
|
||||
registry->RegisterBooleanPref(prefs::kBlockBrowserLegacyExtensionPoints,
|
||||
true);
|
||||
@@ -1992,6 +2049,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
chrome_prefs::RegisterProfilePrefs(registry);
|
||||
collaboration::prefs::RegisterProfilePrefs(registry);
|
||||
commerce::RegisterPrefs(registry);
|
||||
cross_device::RegisterProfilePrefs(registry);
|
||||
enterprise::RegisterIdentifiersProfilePrefs(registry);
|
||||
enterprise_connectors::RegisterProfilePrefs(registry);
|
||||
enterprise_reporting::RegisterProfilePrefs(registry);
|
||||
@@ -2204,7 +2262,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
chromeos::cloud_upload::RegisterProfilePrefs(registry);
|
||||
policy::NetworkAnnotationBlocklistHandler::RegisterPrefs(registry);
|
||||
quickoffice::RegisterProfilePrefs(registry);
|
||||
registry->RegisterBooleanPref(prefs::kAutoSignOutEnabled, false);
|
||||
registry->RegisterBooleanPref(chromeos::prefs::kAutoSignOutEnabled, false);
|
||||
registry->RegisterBooleanPref(prefs::kDeskAPIThirdPartyAccessEnabled, false);
|
||||
registry->RegisterBooleanPref(prefs::kDeskAPIDeskSaveAndShareEnabled, false);
|
||||
registry->RegisterListPref(prefs::kDeskAPIThirdPartyAllowlist);
|
||||
@@ -2219,7 +2277,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
registry->RegisterBooleanPref(policy::policy_prefs::kFloatingWorkspaceEnabled,
|
||||
false);
|
||||
::reporting::RegisterProfilePrefs(registry);
|
||||
registry->RegisterBooleanPref(prefs::kFloatingSsoEnabled, false);
|
||||
registry->RegisterBooleanPref(chromeos::prefs::kFloatingSsoEnabled, false);
|
||||
registry->RegisterListPref(prefs::kFloatingSsoDomainBlocklist);
|
||||
registry->RegisterListPref(prefs::kFloatingSsoDomainBlocklistExceptions);
|
||||
registry->RegisterBooleanPref(prefs::kFloatingSsoSessionCookiesIncluded,
|
||||
@@ -2387,6 +2445,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kManagedLocalNetworkAccessRestrictionsEnabled, false);
|
||||
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kManagedLocalNetworkAccessRestrictionsTemporaryOptOut, false);
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault,
|
||||
false);
|
||||
@@ -2415,11 +2476,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
|
||||
registry->RegisterBooleanPref(prefs::kViewSourceLineWrappingEnabled, false);
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
registry->RegisterBooleanPref(
|
||||
omnibox::kIsOmniboxInBottomPosition, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
#endif
|
||||
// TODO(crbug.com/442891187): Move these to appropriate manager files when
|
||||
// the policies logic is implemented.
|
||||
registry->RegisterListPref(policy::policy_prefs::kIncognitoModeBlocklist);
|
||||
registry->RegisterListPref(policy::policy_prefs::kIncognitoModeAllowlist);
|
||||
}
|
||||
|
||||
void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -2592,6 +2652,9 @@ void MigrateObsoleteLocalStatePrefs(PrefService* local_state) {
|
||||
local_state->ClearPref(kAutoScreenBrightnessMetricsKohakuUserAdjustmentCount);
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
// Added 09/2025
|
||||
local_state->ClearPref(kRendererCodeIntegrityEnabledNeedsDeletion);
|
||||
|
||||
// Please don't delete the following line. It is used by PRESUBMIT.py.
|
||||
// END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS
|
||||
|
||||
@@ -2617,6 +2680,11 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
|
||||
// BEGIN_MIGRATE_OBSOLETE_PROFILE_PREFS
|
||||
// Please don't delete the preceding line. It is used by PRESUBMIT.py.
|
||||
|
||||
// Added 10/2025.
|
||||
profile_prefs->ClearPref(kSessionRestoreTurnOffFromRestartInfoBarTimesShown);
|
||||
profile_prefs->ClearPref(kSessionRestoreTurnOffFromSessionInfoBarTimesShown);
|
||||
profile_prefs->ClearPref(kSessionRestorePrefChanged);
|
||||
|
||||
// Added 05/2025.
|
||||
profile_prefs->ClearPref(kPrivacySandboxFakeNoticePromptShownTimeSync);
|
||||
profile_prefs->ClearPref(kPrivacySandboxFakeNoticePromptShownTime);
|
||||
@@ -2641,16 +2709,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
|
||||
MigrateDefaultBrowserLastDeclinedPref(profile_prefs);
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// Added 11/2023, but DO NOT REMOVE after the usual year!
|
||||
// TODO(crbug.com/378653046): This call should be removed once enough time
|
||||
// has passed.
|
||||
password_manager_android_util::MaybeDeleteLoginDatabases(
|
||||
profile_prefs, profile_path,
|
||||
std::make_unique<
|
||||
password_manager_android_util::PasswordManagerUtilBridge>());
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
// Added 07/2024.
|
||||
profile_prefs->ClearPref(kNtpRecipesDismissedTasks);
|
||||
@@ -3000,9 +3058,30 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
|
||||
profile_prefs->ClearPref(kDesksLacrosProfileIdList);
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// Added 09/2025.
|
||||
profile_prefs->ClearPref(kObsoleteUpmUnmigratedPasswordsExported);
|
||||
profile_prefs->ClearPref(kObsoletePasswordsUseUPMLocalAndSeparateStores);
|
||||
profile_prefs->ClearPref(kObsoleteEmptyProfileStoreLoginDatabase);
|
||||
profile_prefs->ClearPref(kObsoleteUpmAutoExportCsvNeedsDeletion);
|
||||
base::DeleteFile(profile_path.Append(FILE_PATH_LITERAL("Login Data")));
|
||||
base::DeleteFile(
|
||||
profile_path.Append(FILE_PATH_LITERAL("Login Data For Account")));
|
||||
base::DeleteFile(
|
||||
profile_path.Append(FILE_PATH_LITERAL("Login Data-journal")));
|
||||
base::DeleteFile(
|
||||
profile_path.Append(FILE_PATH_LITERAL("Login Data For Account-journal")));
|
||||
#endif // BUILDFLAG(IS_ANDROID)
|
||||
|
||||
// Added 09/2025.
|
||||
PageColorsController::MigrateObsoleteProfilePrefs(profile_prefs);
|
||||
profile_prefs->ClearPref(kGaiaCookieLastListAccountsData);
|
||||
|
||||
// Added 09/2025.
|
||||
profile_prefs->ClearPref(kLensOverlayEduActionChipShownCount);
|
||||
|
||||
SigninPrefs(*profile_prefs).MigrateObsoleteSigninPrefs();
|
||||
|
||||
// Please don't delete the following line. It is used by PRESUBMIT.py.
|
||||
// END_MIGRATE_OBSOLETE_PROFILE_PREFS
|
||||
|
||||
|
||||
@@ -180,6 +180,8 @@
|
||||
#include "chrome/browser/ui/javascript_dialogs/javascript_tab_modal_dialog_manager_delegate_android.h"
|
||||
#include "components/facilitated_payments/core/features/features.h"
|
||||
#include "components/fingerprinting_protection_filter/common/fingerprinting_protection_filter_features.h"
|
||||
#include "components/fingerprinting_protection_filter/interventions/browser/interventions_web_contents_helper.h"
|
||||
#include "components/fingerprinting_protection_filter/interventions/common/interventions_features.h"
|
||||
#include "components/ip_protection/common/ip_protection_status.h"
|
||||
#include "components/page_load_metrics/browser/features.h"
|
||||
#include "components/sensitive_content/android/android_sensitive_content_client.h"
|
||||
@@ -236,7 +238,6 @@
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
#include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
|
||||
#include "chrome/browser/extensions/app_tab_helper.h"
|
||||
#include "chrome/browser/extensions/navigation_extension_enabler.h"
|
||||
#include "chrome/browser/ui/extensions/extension_side_panel_utils.h"
|
||||
@@ -248,6 +249,7 @@
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
#include "chrome/browser/extensions/api/web_navigation/web_navigation_tab_observer.h"
|
||||
#include "chrome/browser/extensions/tab_helper.h"
|
||||
#include "extensions/browser/view_type_utils.h"
|
||||
#endif
|
||||
@@ -379,6 +381,13 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
|
||||
profile->IsIncognitoProfile());
|
||||
}
|
||||
|
||||
if (fingerprinting_protection_interventions::features::
|
||||
ShouldBlockCanvasReadbackForIncognitoState(
|
||||
profile->IsIncognitoProfile())) {
|
||||
fingerprinting_protection_interventions::InterventionsWebContentsHelper::
|
||||
CreateForWebContents(web_contents, profile->IsIncognitoProfile());
|
||||
}
|
||||
|
||||
// Only create the IpProtectionStatus if the User Bypass feature is enabled.
|
||||
if (net::features::kIpPrivacyEnableUserBypass.Get()) {
|
||||
ip_protection::IpProtectionStatus::CreateForWebContents(web_contents);
|
||||
@@ -464,13 +473,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
|
||||
CreateForWebContents(web_contents);
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// If enabled, save sensitivity data for each non-incognito non-custom
|
||||
// android tab
|
||||
// If enabled, save sensitivity data for each non-incognito android tab.
|
||||
// TODO(crbug.com/40276584): Consider moving check conditions or the
|
||||
// registration logic to sensitivity_persisted_tab_data_android.*
|
||||
if (!profile->IsOffTheRecord()) {
|
||||
if (auto* tab = TabAndroid::FromWebContents(web_contents);
|
||||
(tab && !tab->IsCustomTab())) {
|
||||
if (auto* tab = TabAndroid::FromWebContents(web_contents); tab) {
|
||||
SensitivityPersistedTabDataAndroid::From(
|
||||
tab,
|
||||
base::BindOnce(
|
||||
@@ -761,13 +768,13 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
extensions::AppTabHelper::CreateForWebContents(web_contents);
|
||||
extensions::NavigationExtensionEnabler::CreateForWebContents(web_contents);
|
||||
extensions::WebNavigationTabObserver::CreateForWebContents(web_contents);
|
||||
web_app::WindowManagementContentSettingObserver::CreateForWebContents(
|
||||
web_contents);
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
// extensions::TabHelper is used on Win/Mac/Linux and desktop Android.
|
||||
// These helpers are used on Win/Mac/Linux and also desktop Android.
|
||||
extensions::WebNavigationTabObserver::CreateForWebContents(web_contents);
|
||||
extensions::TabHelper::CreateForWebContents(web_contents);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -151,6 +151,12 @@ namespace autofillPrivate {
|
||||
REDRESS_NUMBER,
|
||||
ADDRESS_HOME_ZIP_PREFIX,
|
||||
ADDRESS_HOME_ZIP_SUFFIX,
|
||||
FLIGHT_RESERVATION_FLIGHT_NUMBER,
|
||||
FLIGHT_RESERVATION_TICKET_NUMBER,
|
||||
FLIGHT_RESERVATION_CONFIRMATION_CODE,
|
||||
FLIGHT_RESERVATION_PASSENGER_NAME,
|
||||
FLIGHT_RESERVATION_DEPARTURE_AIRPORT,
|
||||
FLIGHT_RESERVATION_ARRIVAL_AIRPORT,
|
||||
MAX_VALID_FIELD_TYPE
|
||||
};
|
||||
|
||||
|
||||
@@ -464,7 +464,7 @@ namespace autotestPrivate {
|
||||
long id;
|
||||
|
||||
// The name of the window object -- typically internal class name of the
|
||||
// window (like 'BrowserFrame').
|
||||
// window (like 'BrowserWidget').
|
||||
DOMString name;
|
||||
|
||||
AppWindowType windowType;
|
||||
|
||||
@@ -820,6 +820,12 @@ namespace developerPrivate {
|
||||
static void uploadExtensionToAccount(DOMString extensionId,
|
||||
BoolCallback callback);
|
||||
|
||||
// Shows the site settings for the extension.
|
||||
[platforms=("desktop_android")]
|
||||
static void showSiteSettings(
|
||||
DOMString extensionId
|
||||
);
|
||||
|
||||
[nocompile, deprecated="Use openDevTools"]
|
||||
static void inspect(InspectOptions options,
|
||||
optional VoidCallback callback);
|
||||
|
||||
@@ -10,22 +10,6 @@ namespace experimentalActor {
|
||||
callback TaskIdCallback = void(long taskId);
|
||||
|
||||
interface Functions {
|
||||
// Creates and starts a new task. By default, opens a new tab to
|
||||
// about:blank that is ready for actions. The startTaskProto can
|
||||
// optionally specify a tab_id to use an existing tab instead of creating
|
||||
// a new one.
|
||||
// startTaskProto: encoded optimization_guide.proto.BrowserStartTask
|
||||
// startTaskcallback:
|
||||
// encoded optimization_guide.proto.BrowserStartTaskResult
|
||||
[deprecated="Use createTask instead"] static void startTask(
|
||||
ArrayBuffer startTaskProto,
|
||||
DataCallback startTaskcallback);
|
||||
// Executes one or more actions according to request.
|
||||
// request: encoded optimization_guide.proto.BrowserAction
|
||||
// response: encoded optimization_guide.proto.BrowserActionResult
|
||||
[deprecated="Use performActions instead"] static void executeAction(
|
||||
ArrayBuffer browserActionProto,
|
||||
DataCallback executeActioncallback);
|
||||
// Stops a task.
|
||||
// taskId: id of the task to stop.
|
||||
// stopTaskcallback: a closure that is called when the task is stopped.
|
||||
|
||||
@@ -280,6 +280,11 @@ namespace passwordsPrivate {
|
||||
// passkey. Specified in milliseconds since the UNIX epoch. Intended to be
|
||||
// passed to the JavaScript Date() constructor.
|
||||
double? creationTime;
|
||||
|
||||
// Indicates that the credential was marked for deletion (e.g. by a website)
|
||||
// and should be marked as such in management surfaces. Used for passkeys
|
||||
// only. Always false for other credential types.
|
||||
boolean hidden;
|
||||
};
|
||||
|
||||
// Group representing affiliated PasswordUiEntries.
|
||||
|
||||
@@ -16,7 +16,9 @@ namespace pdfViewerPrivate {
|
||||
};
|
||||
|
||||
// Enumeration of save to drive error types. Must match `SaveToDriveErrorType`
|
||||
// in tools/typescript/definitions/pdf_viewer_private.d.ts.
|
||||
// in tools/typescript/definitions/pdf_viewer_private.d.ts and
|
||||
// `PdfSaveToDriveErrorType` in
|
||||
// tools/metrics/histograms/metadata/pdf/enums.xml.
|
||||
enum SaveToDriveErrorType {
|
||||
NO_ERROR,
|
||||
UNKNOWN_ERROR,
|
||||
@@ -28,7 +30,9 @@ namespace pdfViewerPrivate {
|
||||
};
|
||||
|
||||
// Enumeration of save to drive status. Must match `SaveToDriveStatus` in
|
||||
// tools/typescript/definitions/pdf_viewer_private.d.ts.
|
||||
// tools/typescript/definitions/pdf_viewer_private.d.ts and
|
||||
// `PdfSaveToDriveStatus` in
|
||||
// tools/metrics/histograms/metadata/pdf/enums.xml.
|
||||
enum SaveToDriveStatus {
|
||||
NOT_STARTED,
|
||||
INITIATED,
|
||||
@@ -53,17 +57,40 @@ namespace pdfViewerPrivate {
|
||||
// The error type of the upload.
|
||||
SaveToDriveErrorType errorType;
|
||||
|
||||
// The ID of the drive item that was uploaded.
|
||||
// The ID of the drive item that was uploaded. It is only set if the upload
|
||||
// was successful, i.e. if `status` is `UPLOAD_COMPLETED`.
|
||||
DOMString? driveItemId;
|
||||
|
||||
// The total size of the file in bytes.
|
||||
// The total size of the file in bytes. It is only set if the upload is in
|
||||
// progress or completed, i.e. if `status` is `UPLOAD_STARTED`,
|
||||
// `UPLOAD_IN_PROGRESS`, or `UPLOAD_COMPLETED`.
|
||||
long? fileSizeBytes;
|
||||
|
||||
// The number of bytes that have been uploaded.
|
||||
// The number of bytes that have been uploaded. It is only set if the upload
|
||||
// is in progress or completed, i.e. if `status` is `UPLOAD_STARTED`,
|
||||
// `UPLOAD_IN_PROGRESS`, or `UPLOAD_COMPLETED`.
|
||||
long? uploadedBytes;
|
||||
|
||||
// The localized metadata and progress of the file.
|
||||
// The localized metadata and progress of the file. It is only set if the
|
||||
// upload is in progress or completed, i.e. if `status` is `UPLOAD_STARTED`,
|
||||
// `UPLOAD_IN_PROGRESS`, or `UPLOAD_COMPLETED`.
|
||||
DOMString? fileMetadata;
|
||||
|
||||
// The name of the file. It is only set if the upload was successful, i.e.
|
||||
// if `status` is `UPLOAD_COMPLETED`.
|
||||
DOMString? fileName;
|
||||
|
||||
// The name of the parent folder. It is only set if the upload was
|
||||
// successful, i.e. if `status` is `UPLOAD_COMPLETED`.
|
||||
DOMString? parentFolderName;
|
||||
|
||||
// The email of the account that is chosen to save the PDF to Drive. It is
|
||||
// only set after the account is selected.
|
||||
DOMString? accountEmail;
|
||||
|
||||
// Whether the account is a managed account. It is only set after the
|
||||
// account is selected.
|
||||
boolean? accountIsManaged;
|
||||
};
|
||||
|
||||
// Nearly identical to mimeHandlerPrivate.StreamInfo, but without a mime type
|
||||
@@ -112,9 +139,11 @@ namespace pdfViewerPrivate {
|
||||
DOMString url,
|
||||
IsAllowedLocalFileAccessCallback callback);
|
||||
|
||||
// Sends a request to save the PDF to Google Drive.
|
||||
// Sends a request to save the PDF to Google Drive if `saveRequestType` is
|
||||
// set. Otherwise, if `saveRequestType` is not set, the default action is
|
||||
// to cancel the existing upload.
|
||||
static void saveToDrive(
|
||||
SaveRequestType saveRequestType,
|
||||
optional SaveRequestType saveRequestType,
|
||||
optional VoidCallback callback);
|
||||
|
||||
// Sets the current tab title to `title` for a full-page PDF.
|
||||
|
||||
@@ -182,15 +182,6 @@ namespace scripting {
|
||||
|
||||
callback UpdateContentScriptsCallback = void();
|
||||
|
||||
interface Properties {
|
||||
// An object available for content scripts running in isolated worlds to use
|
||||
// and modify as a JS object. One instance exists per frame and is shared
|
||||
// between all content scripts for a given extension. This object is
|
||||
// initialized when the frame is created, before document_start.
|
||||
// TODO(crbug.com/40119604): Enable this once implementation is complete.
|
||||
[nodoc, nocompile] static long globalParams();
|
||||
};
|
||||
|
||||
interface Functions {
|
||||
// Injects a script into a target context. By default, the script will be run
|
||||
// at <code>document_idle</code>, or immediately if the page has already
|
||||
|
||||
@@ -108,6 +108,22 @@ namespace sidePanel {
|
||||
DOMString path;
|
||||
};
|
||||
|
||||
// Information about the closed side panel. It is fired when the extension's
|
||||
// side panel is closed.
|
||||
dictionary PanelClosedInfo {
|
||||
// The ID of the window where the side panel was closed. This is available
|
||||
// for both global and tab-specific panels.
|
||||
long windowId;
|
||||
|
||||
// The optional ID of the tab where the side panel was closed. This is
|
||||
// provided only when the panel is tab-specific.
|
||||
long? tabId;
|
||||
|
||||
// The path of the local resource within the extension package whose content
|
||||
// is displayed in the panel.
|
||||
DOMString path;
|
||||
};
|
||||
|
||||
callback VoidCallback = void();
|
||||
callback PanelOptionsCallback = void(PanelOptions options);
|
||||
callback PanelBehaviorCallback = void(PanelBehavior behavior);
|
||||
@@ -165,5 +181,8 @@ namespace sidePanel {
|
||||
interface Events {
|
||||
// Fired when the extension's side panel is opened.
|
||||
static void onOpened(PanelOpenedInfo info);
|
||||
|
||||
// Fired when the extension's side panel is closed.
|
||||
[nodoc] static void onClosed(PanelClosedInfo info);
|
||||
};
|
||||
};
|
||||
|
||||
@@ -127,6 +127,8 @@
|
||||
#include "components/variations/variations_switches.h"
|
||||
#include "components/version_info/version_info.h"
|
||||
#include "components/visitedlink/renderer/visitedlink_reader.h"
|
||||
#include "components/wallet/content/renderer/image_extractor.h"
|
||||
#include "components/wallet/core/common/wallet_features.h"
|
||||
#include "components/web_cache/renderer/web_cache_impl.h"
|
||||
#include "components/webapps/renderer/web_page_metadata_agent.h"
|
||||
#include "content/public/common/content_constants.h"
|
||||
@@ -185,6 +187,12 @@
|
||||
#include "url/origin.h"
|
||||
#include "v8/include/v8-isolate.h"
|
||||
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
#include "components/webapps/isolated_web_apps/scheme.h"
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/renderer/sandbox_status_extension_android.h"
|
||||
#include "chrome/renderer/wallet/boarding_pass_extractor.h"
|
||||
@@ -415,8 +423,12 @@ void ChromeContentRendererClient::RenderThreadStarted() {
|
||||
extensions_renderer_client->RenderThreadStarted();
|
||||
WebSecurityPolicy::RegisterURLSchemeAsExtension(
|
||||
WebString::FromASCII(extensions::kExtensionScheme));
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
WebSecurityPolicy::RegisterURLSchemeAsIsolatedApp(
|
||||
WebString::FromASCII(chrome::kIsolatedAppScheme));
|
||||
WebString::FromASCII(webapps::kIsolatedAppScheme));
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
WebSecurityPolicy::RegisterURLSchemeAsCodeCacheWithHashing(
|
||||
WebString::FromASCII(extensions::kExtensionScheme));
|
||||
#endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE)
|
||||
@@ -487,6 +499,8 @@ void ChromeContentRendererClient::RenderThreadStarted() {
|
||||
WebString chrome_search_scheme(
|
||||
WebString::FromASCII(chrome::kChromeSearchScheme));
|
||||
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
|
||||
BUILDFLAG(IS_CHROMEOS)
|
||||
// IWAs can be enabled by either the feature flag or by enterprise
|
||||
// policy. In either case the kEnableIsolatedWebAppsInRenderer flag is passed
|
||||
// to the renderer process.
|
||||
@@ -495,7 +509,7 @@ void ChromeContentRendererClient::RenderThreadStarted() {
|
||||
// isolated-app: is the scheme used for Isolated Web Apps, which are web
|
||||
// applications packaged in Signed Web Bundles.
|
||||
WebString isolated_app_scheme(
|
||||
WebString::FromASCII(chrome::kIsolatedAppScheme));
|
||||
WebString::FromASCII(webapps::kIsolatedAppScheme));
|
||||
// Resources contained in Isolated Web Apps are HTTP-like and safe to expose
|
||||
// to the fetch API.
|
||||
WebSecurityPolicy::RegisterURLSchemeAsSupportingFetchAPI(
|
||||
@@ -505,6 +519,8 @@ void ChromeContentRendererClient::RenderThreadStarted() {
|
||||
WebSecurityPolicy::RegisterURLSchemeAsAllowedForReferrer(
|
||||
isolated_app_scheme);
|
||||
}
|
||||
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
|
||||
// BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
// The Instant process can only display the content but not read it. Other
|
||||
// processes can't display it or read it. (see http://crbug.com/40309067 for
|
||||
@@ -707,6 +723,11 @@ void ChromeContentRendererClient::RenderFrameCreated(
|
||||
subresource_filter_agent->Initialize();
|
||||
}
|
||||
|
||||
if (!render_frame->IsInFencedFrameTree()) {
|
||||
content_based_fingerprinting_protection_enabled_for_metrics_ =
|
||||
render_frame->GetBlinkPreferences()
|
||||
.content_based_fingerprinting_protection_enabled;
|
||||
}
|
||||
if (render_frame->IsMainFrame() && !render_frame->IsInFencedFrameTree()) {
|
||||
// This web pref applies at the level of the current browser session and may
|
||||
// change when settings are modified, so we copy the latest value every time
|
||||
@@ -763,6 +784,11 @@ void ChromeContentRendererClient::RenderFrameCreated(
|
||||
}
|
||||
#endif
|
||||
|
||||
if (base::FeatureList::IsEnabled(wallet::kWalletablePassDetection) &&
|
||||
render_frame->IsMainFrame()) {
|
||||
wallet::ImageExtractor::Create(render_frame, registry);
|
||||
}
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
if (base::FeatureList::IsEnabled(features::kWebium)) {
|
||||
WebUIBrowserRendererExtension::Create(render_frame);
|
||||
@@ -1656,6 +1682,11 @@ bool ChromeContentRendererClient::
|
||||
return content_based_fingerprinting_protection_enabled_;
|
||||
}
|
||||
|
||||
bool ChromeContentRendererClient::
|
||||
IsContentBasedFingerprintingProtectionEnabledForMetrics() {
|
||||
return content_based_fingerprinting_protection_enabled_for_metrics_;
|
||||
}
|
||||
|
||||
scoped_refptr<const subresource_filter::MemoryMappedRuleset>
|
||||
ChromeContentRendererClient::GetFingerprintingProtectionRuleset() {
|
||||
if (fingerprinting_protection_ruleset_dealer_) {
|
||||
|
||||
@@ -183,6 +183,11 @@ doc_schema_description_link:
|
||||
containing the information about schema and formatting.
|
||||
text: See <ph name="REFERENCE_URL">$6<ex>https://cloud.google.com/docs/chrome-enterprise/policies/?policy=WallpaperImage</ex></ph>
|
||||
for more information about schema and formatting.
|
||||
doc_sensitive:
|
||||
desc: A flag that indicates that this policy is only supported for users that
|
||||
are part of an Active Directory domain on Windows, managed on the Mac, or
|
||||
enrolled in Chrome Enterprise Core.
|
||||
text: Sensitive
|
||||
doc_since_version:
|
||||
desc: Text in the summary chart of a policy that specifies the version number in
|
||||
which the policy was introduced.
|
||||
|
||||
@@ -1389,6 +1389,17 @@ policies:
|
||||
1388: NTPShortcuts
|
||||
1389: AutoSignOutEnabled
|
||||
1390: ExtensionInstallCloudPolicyChecksEnabled
|
||||
1391: DevToolsGoogleDeveloperProgramProfileAvailability
|
||||
1392: IncognitoModeBlocklist
|
||||
1393: IncognitoModeAllowlist
|
||||
1394: PreferSlowKexAlgorithms
|
||||
1395: ExtensionForceInstallWithNonMalwareViolationsEnabled
|
||||
1396: CacheEncryptionEnabled
|
||||
1397: SilentPrintingEnabled
|
||||
1398: PreferSlowCiphers
|
||||
1399: DeveloperToolsAvailabilityAllowlist
|
||||
1400: DeveloperToolsAvailabilityBlocklist
|
||||
1401: LocalNetworkAccessRestrictionsTemporaryOptOut
|
||||
atomic_groups:
|
||||
1: Homepage
|
||||
2: RemoteAccess
|
||||
|
||||
+1
@@ -24,5 +24,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:103-
|
||||
- chrome_os:103-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -23,5 +23,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:103-
|
||||
- chrome_os:103-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -30,5 +30,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:103-
|
||||
- chrome_os:103-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: int-enum
|
||||
|
||||
+1
@@ -32,5 +32,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:10-
|
||||
- chrome_os:11-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: int-enum
|
||||
|
||||
+1
@@ -23,5 +23,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:16-
|
||||
- chrome_os:16-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -23,5 +23,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:16-
|
||||
- chrome_os:16-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
caption: Cryptography compliance policies
|
||||
desc: Configures user and device policies related to specific cryptographic compliance regimes
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
caption: Prefer specific encryption cipher algorithms for TLS
|
||||
desc: |-
|
||||
This policy configures <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to order its preferred encryption ciphers in TLS 1.3 to reflect a preference for algorithms that have been approved by a specific compliance regime.
|
||||
|
||||
Setting this policy does not guarantee that any specific algorithms will be negotiated.
|
||||
|
||||
This policy exists to allow server operators who wish to support clients with and without compliance requirements to differentiate between those clients, and only use certain non-default algorithms with increased cryptographic strength for those explicitly configured to prefer them.
|
||||
|
||||
Setting the policy to '<ph name="CNSA_NAME">cnsa</ph>' configures <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to prefer ciphers required for compliance with the Commercial National Security Algorithm Suite versions 1.0 and 2.0 (CNSA 1.0 and 2.0).
|
||||
|
||||
Not setting the policy, or setting it to '<ph name="DEFAULT_NAME">default</ph>', configures <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to use its default ciphers.
|
||||
|
||||
Setting this policy is not required for security. The default cryptography used by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is strong enough to withstand a brute force attack using the entire power of the Sun.
|
||||
|
||||
Setting this policy will cause <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to be slower when accessing websites.
|
||||
|
||||
This policy only affects TLS 1.3 and QUIC; it does not affect earlier versions of TLS.
|
||||
|
||||
example_value: cnsa
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: false
|
||||
items:
|
||||
- caption: Prefer ciphers satisfying the requirements of CNSA 1.0 and 2.0
|
||||
name: CNSA
|
||||
value: cnsa
|
||||
- caption: Use <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s default cipher order
|
||||
name: Default
|
||||
value: default
|
||||
owners:
|
||||
- file://crypto/OWNERS
|
||||
- trusty-transport@chromium.org
|
||||
future_on:
|
||||
- android
|
||||
- chrome.*
|
||||
- chrome_os
|
||||
schema:
|
||||
enum:
|
||||
- cnsa
|
||||
- default
|
||||
type: string
|
||||
tags:
|
||||
- system-security
|
||||
type: string-enum
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
caption: Prefer specific key exchange algorithms for TLS
|
||||
desc: |-
|
||||
This policy configures <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to order its preferred key agreement algorithms (supported groups) in TLS 1.3 to reflect a preference for algorithms that have been approved by a specific compliance regime.
|
||||
|
||||
Setting this policy does not guarantee that any specific algorithms will be negotiated.
|
||||
|
||||
This policy exists to allow server operators who wish to support clients with and without compliance requirements to differentiate between those clients, and only use certain non-default algorithms with increased cryptographic strength for those explicitly configured to prefer them.
|
||||
|
||||
Setting the policy to '<ph name="CNSA2_NAME">cnsa2</ph>' configures <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to prefer key exchange methods required for compliance with the Commercial National Security Algorithm Suite 2.0 (CNSA 2.0).
|
||||
|
||||
Not setting the policy, or setting it to '<ph name="DEFAULT_NAME">default</ph>', configures <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to use its default key exchange methods.
|
||||
|
||||
If this policy is set to a value that would configure <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to prefer a post-quantum key agreement algorithm but <ph name="POST_QUANTUM_KEY_AGREEMENT_ENABLED_POLICY_NAME">PostQuantumKeyAgreementEnabled</ph> is Disabled, the setting of <ph name="POST_QUANTUM_KEY_AGREEMENT_ENABLED_POLICY_NAME">PostQuantumKeyAgreementEnabled</ph> takes precedence.
|
||||
|
||||
Setting this policy is not required for security. The default cryptography used by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is strong enough to withstand a brute force attack using the entire power of the Sun.
|
||||
|
||||
Setting this policy will cause <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to be slower when accessing websites.
|
||||
|
||||
This policy only affects TLS 1.3 and QUIC; it does not affect earlier versions of TLS.
|
||||
|
||||
example_value: cnsa2
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: false
|
||||
items:
|
||||
- caption: Prefer key exchange methods satisfying the requirements of CNSA 2.0
|
||||
name: CNSA2.0
|
||||
value: cnsa2
|
||||
- caption: Use <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s default supported groups
|
||||
name: Default
|
||||
value: default
|
||||
owners:
|
||||
- file://crypto/OWNERS
|
||||
- trusty-transport@chromium.org
|
||||
future_on:
|
||||
- android
|
||||
- chrome.*
|
||||
- chrome_os
|
||||
schema:
|
||||
enum:
|
||||
- cnsa2
|
||||
- default
|
||||
type: string
|
||||
tags:
|
||||
- system-security
|
||||
type: string-enum
|
||||
+1
@@ -28,6 +28,7 @@ owners:
|
||||
- rsorokin@chromium.org
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- chrome_os:11-
|
||||
|
||||
-2
@@ -13,8 +13,6 @@ example_value: true
|
||||
features:
|
||||
dynamic_refresh: false
|
||||
per_profile: true
|
||||
future_on:
|
||||
- fuchsia
|
||||
items:
|
||||
- caption: Block installation of external extensions
|
||||
value: true
|
||||
|
||||
-2
@@ -28,8 +28,6 @@ example_value:
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
future_on:
|
||||
- fuchsia
|
||||
items:
|
||||
- caption: Extension
|
||||
name: extension
|
||||
|
||||
-2
@@ -24,8 +24,6 @@ features:
|
||||
supported_on:
|
||||
- chrome.*:112-
|
||||
- chrome_os:112-
|
||||
future_on:
|
||||
- fuchsia
|
||||
owners:
|
||||
- mpetrisor@chromium.org
|
||||
- chromeos-commercial-identity@google.com
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
caption: Enable Force-installed Extensions With Non-Malware Violations
|
||||
|
||||
desc: |-
|
||||
Controls whether extensions that are taken down due to non-malware violations can still be force installed in low-trust environments.
|
||||
|
||||
More information about non-malware violations and taken down can be found here. https://developer.chrome.com/docs/webstore/review-process#warning
|
||||
|
||||
Once the non-malware violation has been resolved, the extension will remain enabled and cannot be disabled or removed.
|
||||
|
||||
On <ph name="MS_WIN_NAME">Microsoft® Windows®</ph>, this policy is not available on instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain, joined to <ph name="MS_AAD_NAME">Microsoft® Azure® Active Directory®</ph> or enrolled in <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME">Chrome Enterprise Core</ph>`.
|
||||
|
||||
On <ph name="MAC_OS_NAME">macOS</ph>, this policy is not available on instances that are managed via MDM, joined to a domain via MCX or enrolled in <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME">Chrome Enterprise Core</ph>.
|
||||
|
||||
Force-installed extensions with non-malware violations will remain enabled in these instances.
|
||||
|
||||
Currently, a force-installed extension with non-malware violations remains installed and enabled in Chrome.
|
||||
|
||||
Setting the policy to Enabled will cause force-installed extensions to behave the same (i.e., remain enabled) regardless of non-malware violations.
|
||||
|
||||
Setting the policy to Disabled or not setting the policy will cause force-installed extensions with non-malware violations to be disabled.
|
||||
|
||||
This policy will be available for 3 milestones.
|
||||
|
||||
owners:
|
||||
- richche@google.com
|
||||
- file://extensions/OWNERS
|
||||
|
||||
supported_on:
|
||||
- chrome.mac:142-
|
||||
- chrome.win:142-
|
||||
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
|
||||
type: main
|
||||
|
||||
schema:
|
||||
type: boolean
|
||||
|
||||
items:
|
||||
- caption: Enable force-installed extensions with non-malware violations.
|
||||
value: true
|
||||
- caption: Disable force-installed extensions with non-malware violations.
|
||||
value: false
|
||||
|
||||
default: false
|
||||
|
||||
example_value: false
|
||||
|
||||
tags: []
|
||||
-1
@@ -13,7 +13,6 @@ features:
|
||||
per_profile: true
|
||||
future_on:
|
||||
- android
|
||||
- fuchsia
|
||||
label: Extension IDs to exempt from the blocklist
|
||||
owners:
|
||||
- rdevlin.cronin@chromium.org
|
||||
|
||||
-1
@@ -13,7 +13,6 @@ features:
|
||||
per_profile: true
|
||||
future_on:
|
||||
- android
|
||||
- fuchsia
|
||||
label: Extension IDs the user should be prevented from installing (or * for all)
|
||||
owners:
|
||||
- lazyboy@chromium.org
|
||||
|
||||
-1
@@ -27,7 +27,6 @@ features:
|
||||
per_profile: true
|
||||
future_on:
|
||||
- android
|
||||
- fuchsia
|
||||
label: Extension/App IDs and update URLs to be silently installed
|
||||
owners:
|
||||
- karandeepb@chromium.org
|
||||
|
||||
-2
@@ -10,8 +10,6 @@ example_value:
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
future_on:
|
||||
- fuchsia
|
||||
label: URL patterns to allow extension, app, and user script installs from
|
||||
owners:
|
||||
- dbertoni@chromium.org
|
||||
|
||||
-2
@@ -20,8 +20,6 @@ supported_on:
|
||||
- chrome.*:110-138
|
||||
- chrome_os:110-138
|
||||
deprecated: true
|
||||
future_on:
|
||||
- fuchsia
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
|
||||
+1
-1
@@ -62,7 +62,6 @@ features:
|
||||
per_profile: true
|
||||
future_on:
|
||||
- android
|
||||
- fuchsia
|
||||
owners:
|
||||
- finnur@chromium.org
|
||||
- file://extensions/OWNERS
|
||||
@@ -101,6 +100,7 @@ schema:
|
||||
enum:
|
||||
- force_pinned
|
||||
- default_unpinned
|
||||
- default_pinned
|
||||
type: string
|
||||
update_url:
|
||||
type: string
|
||||
|
||||
-1
@@ -14,7 +14,6 @@ features:
|
||||
per_profile: true
|
||||
future_on:
|
||||
- android
|
||||
- fuchsia
|
||||
- chrome.*
|
||||
supported_on:
|
||||
- chrome_os:114-
|
||||
|
||||
+1
@@ -11,3 +11,4 @@ Extensions:
|
||||
- ExtensionManifestV2Availability
|
||||
- ExtensionUnpublishedAvailability
|
||||
- ExtensionExtendedBackgroundLifetimeForPortConnectionsToUrls
|
||||
- ExtensionForceInstallWithNonMalwareViolationsEnabled
|
||||
|
||||
+1
@@ -121,5 +121,6 @@ schema:
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
sensitive: true
|
||||
tags: []
|
||||
type: dict
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ example_value: true
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
future_on:
|
||||
- chrome_os
|
||||
supported_on:
|
||||
- chrome_os:142-
|
||||
items:
|
||||
- caption: Sign out user from previous session upon sign-in to a new device
|
||||
value: true
|
||||
|
||||
+6
-6
@@ -1,7 +1,7 @@
|
||||
caption: Settings for DevTools Generative AI Features
|
||||
caption: Settings for <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> Generative AI Features
|
||||
|
||||
desc: |-
|
||||
These features in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s DevTools employ generative AI models to provide additional debugging information. To use these features, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> has to collect data such as error messages, stack traces, code snippets, and network requests and send them to a server owned by Google, which runs a generative AI model. Response body or authentication and cookie headers in network requests are not included in the data sent to the server.
|
||||
These features in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> employ generative AI models to provide additional debugging information. To use these features, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> has to collect data such as error messages, stack traces, code snippets, and network requests and send them to a server owned by Google, which runs a generative AI model. Response body or authentication and cookie headers in network requests are not included in the data sent to the server.
|
||||
|
||||
0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below.
|
||||
|
||||
@@ -11,7 +11,7 @@ desc: |-
|
||||
|
||||
If the policy is unset, its behavior is determined by the <ph name="GEN_AI_DEFAULT_SETTINGS_POLICY_NAME">GenAiDefaultSettings</ph> policy.
|
||||
|
||||
DevTools Generative AI features include:
|
||||
<ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> Generative AI features include:
|
||||
|
||||
- Console Insights: explains console messages and offers suggestions on how to fix console errors.
|
||||
|
||||
@@ -24,13 +24,13 @@ features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
items:
|
||||
- caption: Allow DevTools Generative AI Features and improve AI models.
|
||||
- caption: Allow <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> Generative AI Features and improve AI models.
|
||||
name: Allowed
|
||||
value: 0
|
||||
- caption: Allow DevTools Generative AI Features without improving AI models.
|
||||
- caption: Allow <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> Generative AI Features without improving AI models.
|
||||
name: AllowedWithoutLogging
|
||||
value: 1
|
||||
- caption: Do not allow DevTools Generative AI Features.
|
||||
- caption: Do not allow <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> Generative AI Features.
|
||||
name: Disabled
|
||||
value: 2
|
||||
owners:
|
||||
|
||||
+2
-1
@@ -7,7 +7,7 @@ desc: |-
|
||||
|
||||
When the policy is set to Disabled (1), the model will not be downloaded.
|
||||
|
||||
Model downloading can also be disabled by <ph name="COMPONENT_UPDATES_ENABLED_POLICY_NAME">ComponentUpdatesEnabled</ph>.
|
||||
On desktop platforms, model downloading can also be disabled by <ph name="COMPONENT_UPDATES_ENABLED_POLICY_NAME">ComponentUpdatesEnabled</ph>.
|
||||
|
||||
default: 0
|
||||
example_value: 1
|
||||
@@ -32,5 +32,6 @@ schema:
|
||||
type: integer
|
||||
tags: []
|
||||
supported_on:
|
||||
- android:142-
|
||||
- chrome.*:124-
|
||||
type: int-enum
|
||||
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
caption: Settings for Scanner feature
|
||||
caption: Settings for the Text Capture feature
|
||||
desc: |-
|
||||
This policy controls the settings of the Scanner feature for <ph name="PRODUCT_OS_NAME">$1<ex>Google ChromeOS</ex></ph>.
|
||||
This policy controls the settings of the Text Capture feature for <ph name="PRODUCT_OS_NAME">$1<ex>Google ChromeOS</ex></ph>.
|
||||
|
||||
0 = Allow the feature to be used, while allowing Google to use relevant data to improve its AI models. Relevant data may include prompts, inputs, outputs, source materials, and written feedback, depending on the feature. It may also be reviewed by humans to improve AI models. 0 is the default value, except when noted below.
|
||||
|
||||
@@ -20,13 +20,13 @@ features:
|
||||
owners:
|
||||
- file://ash/scanner/OWNERS
|
||||
items:
|
||||
- caption: Allow Scanner and improve AI models.
|
||||
- caption: Allow Text Capture and improve AI models.
|
||||
name: Allowed
|
||||
value: 0
|
||||
- caption: Allow Scanner without improving AI models.
|
||||
- caption: Allow Text Capture without improving AI models.
|
||||
name: AllowedWithoutLogging
|
||||
value: 1
|
||||
- caption: Do not allow Scanner.
|
||||
- caption: Do not allow Text Capture.
|
||||
name: Disabled
|
||||
value: 2
|
||||
schema:
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ caption: Specifies whether to apply restrictions to requests to local
|
||||
|
||||
desc: |-
|
||||
When this policy is set to Enabled, any time when a warning is supposed to be
|
||||
displayed in the <ph name="DEV_TOOLS_NAME">DevTools</ph> due to <ph
|
||||
displayed in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> due to <ph
|
||||
name="LOCAL_NETWORK_ACCCESS">Local Network Access</ph> checks failing, the
|
||||
main request will be blocked instead.
|
||||
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
owners:
|
||||
- hchao@chromium.org
|
||||
- cthomp@chromium.org
|
||||
- chrome-secure-web-and-net@chromium.org
|
||||
|
||||
caption: Specifies whether to (temporarily) opt out of Local Network Access
|
||||
restrictions
|
||||
|
||||
desc: |-
|
||||
When this policy is set to Enabled, <ph name="LOCAL_NETWORK_ACCESS">Local Network Access</ph>
|
||||
requests will only display warnings in <ph
|
||||
name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> due to <ph
|
||||
name="LOCAL_NETWORK_ACCESS">Local Network Access</ph> checks failing.
|
||||
|
||||
When this policy is set to Disabled or unset, <ph
|
||||
name="LOCAL_NETWORK_ACCESS">Local Network Access</ph> requests will use the
|
||||
default handling of these requests.
|
||||
|
||||
See https://wicg.github.io/local-network-access/ for <ph
|
||||
name="LOCAL_NETWORK_ACCESS">Local Network Access</ph> restrictions.
|
||||
|
||||
This enterprise policy is temporary, and will be removed after M146.
|
||||
|
||||
Long term, the policy <ph
|
||||
name="LOCAL_NETWORK_ACCESS_ALLOWED_FOR_URLS_POLICY_NAME">LocalNetworkAccessAllowedForUrls</ph>
|
||||
can be used to allowlist URL patterns that should be automatically granted
|
||||
the <ph name="LOCAL_NETWORK_ACCESS">Local Network Access</ph> permission.
|
||||
|
||||
Note that if the policy <ph
|
||||
name="LOCAL_NETWORK_ACCESS_RESTRICTIONS_ENABLED_POLICY_NAME">LocalNetworkAccessRestrictionsEnabled</ph>
|
||||
is enabled, it will take precedence over this policy.
|
||||
default: false
|
||||
|
||||
supported_on:
|
||||
- chrome.*:142-
|
||||
- chrome_os:142-
|
||||
- android:142-
|
||||
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
|
||||
type: main
|
||||
|
||||
schema:
|
||||
type: boolean
|
||||
|
||||
items:
|
||||
- caption: Temporarily opt out of restrictions on requests to local network endpoints
|
||||
value: true
|
||||
- caption: Use default behavior when determining if websites can make requests
|
||||
to local network endpoints
|
||||
value: false
|
||||
|
||||
example_value: true
|
||||
|
||||
tags: []
|
||||
+1
@@ -4,3 +4,4 @@ LocalNetworkAccessSettings:
|
||||
- LocalNetworkAccessAllowedForUrls
|
||||
- LocalNetworkAccessBlockedForUrls
|
||||
- LocalNetworkAccessRestrictionsEnabled
|
||||
- LocalNetworkAccessRestrictionsTemporaryOptOut
|
||||
|
||||
+1
@@ -23,6 +23,7 @@ schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:84-
|
||||
- chrome_os:84-
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
caption: This policy allows administrators to encrypt http cache on disk.
|
||||
desc: |-
|
||||
This policy allows the administrators to encrypt browser http cache on disk.
|
||||
http cache on supported platforms.
|
||||
|
||||
When this policy is Enabled, browser cache will be encrypted.
|
||||
|
||||
When this policy is Disabled or not set, browser cache
|
||||
will not be encrypted.
|
||||
|
||||
Browser cache encryption may result in a performance impact.
|
||||
owners:
|
||||
- haihan@google.com
|
||||
- valadkevich@google.com
|
||||
- cbe-cep-eng@google.com
|
||||
future_on:
|
||||
- chrome.*
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
type: main
|
||||
schema:
|
||||
type: boolean
|
||||
items:
|
||||
- caption: Use the cache encryption.
|
||||
value: true
|
||||
- caption: Do not use the cache encryption.
|
||||
value: false
|
||||
default: false
|
||||
example_value: true
|
||||
tags: []
|
||||
+1
@@ -25,6 +25,7 @@ owners:
|
||||
- proberge@chromium.org
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:76-
|
||||
tags:
|
||||
|
||||
+2
@@ -189,6 +189,8 @@ schema:
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
future_on:
|
||||
- ios
|
||||
supported_on:
|
||||
- android:140-
|
||||
- chrome.*:128-
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
caption: Enable Google Developer Program Profiles in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>
|
||||
desc: |-
|
||||
This policy controls the integration of the Google Developer Program with <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>. The user's Google Developer Program profile is shown in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>, and users receive badges for performing specific actions within <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>.
|
||||
|
||||
Setting the policy to 0 - 'Enabled', or not setting any policy value, allows the integration of the Google Developer Program with <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>, and allows sharing of <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> tool usage in order to be able to award badges.
|
||||
|
||||
Setting the policy to 1 - 'Enabled without badges', allows the integration of the Google Developer Program with <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>, but does not allow sharing <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> tool usage with the Google Developer Program. No badges will be awarded.
|
||||
|
||||
Setting the policy to 2 - 'Disabled', does not allow the integration of the Google Developer Program with <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>.
|
||||
owners:
|
||||
- ergunsh@chromium.org
|
||||
- wolfi@chromium.org
|
||||
- chrome-devtools@google.com
|
||||
supported_on:
|
||||
- chrome.*:142-
|
||||
- chrome_os:142-
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
type: int-enum
|
||||
schema:
|
||||
enum:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
type: integer
|
||||
items:
|
||||
- caption: Enable Google Developer Program integration in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>.
|
||||
name: Enabled
|
||||
value: 0
|
||||
- caption: Enable Google Developer Program integration in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>, but without sharing tool usage (for awarding badges).
|
||||
name: EnabledWithoutBadges
|
||||
value: 1
|
||||
- caption: Do not enable Google Developer Program integration in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph>.
|
||||
name: Disabled
|
||||
value: 2
|
||||
default: 0
|
||||
example_value: 2
|
||||
tags: []
|
||||
+11
-9
@@ -1,19 +1,21 @@
|
||||
arc_support: This policy also controls access to Android Developer Options. If you
|
||||
set this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access Developer
|
||||
Options. If you set this policy to another value or leave it unset, users can access
|
||||
Developer Options by tapping seven times on the build number in the Android settings
|
||||
app.
|
||||
arc_support: This policy also controls access to Android Developer Options. If you set
|
||||
this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access
|
||||
Developer Options. If you set this policy to another value or leave it
|
||||
unset, users can access Developer Options by tapping seven times on the
|
||||
build number in the Android settings app.
|
||||
caption: Control where Developer Tools can be used
|
||||
desc: |-
|
||||
Setting the policy to 0 (the default) means you can access the developer tools and the JavaScript console, but not in the context of extensions installed by enterprise policy or, since version 114 and if this is a managed user, extensions built into the browser. Setting the policy to 1 means you can access the developer tools and the JavaScript console in all contexts, including that of extensions installed by enterprise policy. Setting the policy to 2 means you can't access developer tools, and you can't inspect website elements.
|
||||
|
||||
This setting also turns off keyboard shortcuts and menu or context menu entries to open developer tools or the JavaScript console.
|
||||
This setting also turns off keyboard shortcuts and menu or context menu entries to open developer tools or the JavaScript console.
|
||||
|
||||
As of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 99, this setting also controls entry points for the 'View page source' feature. If you set this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access source viewing via keyboard shortcut or the context menu. To fully block source viewing, you must also add 'view-source:*' to the <ph name="URL_BLOCKLIST_POLICY_NAME">URLBlocklist</ph> policy.
|
||||
As of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 99, this setting also controls entry points for the 'View page source' feature. If you set this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access source viewing via keyboard shortcut or the context menu. To fully block source viewing, you must also add 'view-source:*' to the <ph name="URL_BLOCKLIST_POLICY_NAME">URLBlocklist</ph> policy.
|
||||
|
||||
As of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 119, this setting also controls whether developer mode for Isolated Web Apps can be activated and used.
|
||||
As of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 119, this setting also controls whether developer mode for Isolated Web Apps can be activated and used.
|
||||
|
||||
As of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 128, this setting will not control developer mode on extensions page if <ph name="EXTENSION_DEVELOPER_MODE_SETTINGS_POLICY_NAME">ExtensionDeveloperModeSettings</ph> policy is set.
|
||||
As of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 128, this setting will not control developer mode on extensions page if <ph name="EXTENSION_DEVELOPER_MODE_SETTINGS_POLICY_NAME">ExtensionDeveloperModeSettings</ph> policy is set.
|
||||
|
||||
If you want to restrict Developer Tools access based on the page URL, use the <ph name="DEVELOPER_TOOLS_AVAILABILITY_BLOCKLIST_POLICY_NAME">DeveloperToolsAvailabilityBlocklist</ph> and <ph name="DEVELOPER_TOOLS_AVAILABILITY_ALLOWLIST_POLICY_NAME">DeveloperToolsAvailabilityAllowlist</ph> policies.
|
||||
default: 0
|
||||
example_value: 2
|
||||
features:
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
caption: List of URL patterns for which <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> are allowed to be opened
|
||||
desc: |-
|
||||
This policy can be used to allow <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> on specific URLs.
|
||||
|
||||
URL patterns are matched against the URL of the page being inspected. If a match is found, the <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> are allowed. This applies even if the URL also matches the <ph name="DEVELOPER_TOOLS_AVAILABILITY_BLOCKLIST_POLICY_NAME">DeveloperToolsAvailabilityBlocklist</ph> policy, even if the <ph name="DEVELOPER_TOOLS_AVAILABILITY_POLICY_NAME">DeveloperToolsAvailability</ph> policy is set to disallow (value 2). For information on the URL format, see https://support.google.com/chrome/a?p=url_blocklist_filter_format.
|
||||
|
||||
Leaving the policy unset means this allowlist has no effect. Since <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> are available by default, they will only be blocked if specified in the <ph name="DEVELOPER_TOOLS_AVAILABILITY_BLOCKLIST_POLICY_NAME">DeveloperToolsAvailabilityBlocklist</ph> policy.
|
||||
|
||||
Unmatched URLs will follow the <ph name="DEVELOPER_TOOLS_AVAILABILITY_POLICY_NAME">DeveloperToolsAvailability</ph> policy.
|
||||
|
||||
This policy also applies to <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> opened for extensions and web applications.
|
||||
|
||||
This policy is limited to 1,000 entries.
|
||||
|
||||
example_value:
|
||||
- example.com
|
||||
- https://ssl.server.com
|
||||
- hosting.com/bad_path
|
||||
- https://server:8080/path
|
||||
- .exact.hostname.com
|
||||
- file://*
|
||||
future_on:
|
||||
- chrome.*
|
||||
- chrome_os
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
owners:
|
||||
- file://extensions/OWNERS
|
||||
- mickaczmarczyk@google.com
|
||||
schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tags:
|
||||
- filtering
|
||||
type: list
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
caption: List of URL patterns for which <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> are blocked
|
||||
desc: |-
|
||||
URL patterns are matched against the URL of the page being inspected. If a match is found, the <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> are blocked. For information on the URL format, see https://support.google.com/chrome/a?p=url_blocklist_filter_format.
|
||||
|
||||
The <ph name="DEVELOPER_TOOLS_AVAILABILITY_ALLOWLIST_POLICY_NAME">DeveloperToolsAvailabilityAllowlist</ph> policy takes precedence over <ph name="DEVELOPER_TOOLS_AVAILABILITY_BLOCKLIST_POLICY_NAME">DeveloperToolsAvailabilityBlocklist</ph>.
|
||||
|
||||
Unmatched URLs will follow the <ph name="DEVELOPER_TOOLS_AVAILABILITY_POLICY_NAME">DeveloperToolsAvailability</ph> policy.
|
||||
|
||||
This policy also applies to <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> opened for extensions and web applications.
|
||||
|
||||
This policy is limited to 1,000 entries.
|
||||
|
||||
example_value:
|
||||
- 'https://example.com'
|
||||
- example.com
|
||||
- https://ssl.server.com
|
||||
- hosting.com/bad_path
|
||||
- https://server:8080/path
|
||||
- .exact.hostname.com
|
||||
- '*'
|
||||
- file://*
|
||||
future_on:
|
||||
- chrome.*
|
||||
- chrome_os
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
owners:
|
||||
- file://extensions/OWNERS
|
||||
- mickaczmarczyk@google.com
|
||||
schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tags:
|
||||
- filtering
|
||||
type: list
|
||||
+1
@@ -19,5 +19,6 @@ owners:
|
||||
- esalma@google.com
|
||||
schema:
|
||||
type: string
|
||||
sensitive: true
|
||||
tags: []
|
||||
type: string
|
||||
|
||||
+1
@@ -21,5 +21,6 @@ owners:
|
||||
- esalma@google.com
|
||||
schema:
|
||||
type: string
|
||||
sensitive: true
|
||||
tags: []
|
||||
type: string
|
||||
|
||||
+1
@@ -57,6 +57,7 @@ schema:
|
||||
- shortcut
|
||||
- suggest_url
|
||||
- search_url
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:135-
|
||||
- chrome_os:135-
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
caption: Allow access to a list of URLs in Incognito mode.
|
||||
desc: |-
|
||||
Setting the policy provides access to the listed URLs in Incognito mode, as exceptions to <ph name="INCOGNITO_MODE_BLOCKLIST_POLICY_NAME">IncognitoModeBlocklist</ph>. For example, setting <ph name="INCOGNITO_MODE_BLOCKLIST_POLICY_NAME">IncognitoModeBlocklist</ph> to * will block all requests in Incognito mode, and you can use this policy to allow access to a limited list of URLs. Use it to open exceptions to certain schemes, subdomains of other domains, ports, or specific paths, using the format specified at ( https://support.google.com/chrome/a?p=url_blocklist_filter_format ). The <ph name="INCOGNITO_MODE_ALLOWLIST_POLICY_NAME">IncognitoModeAllowlist</ph> policy takes precedence over <ph name="INCOGNITO_MODE_BLOCKLIST_POLICY_NAME">IncognitoModeBlocklist</ph>. This policy is limited to 1,000 entries.
|
||||
|
||||
Leaving the policy unset allows no exceptions to <ph name="INCOGNITO_MODE_BLOCKLIST_POLICY_NAME">IncognitoModeBlocklist</ph>.
|
||||
|
||||
This policy only affects Incognito mode. To allow URLs for all user profiles, please use the <ph name="URL_ALLOWLIST_POLICY_NAME">URLAllowlist</ph> policy.
|
||||
example_value:
|
||||
- example.com
|
||||
- https://ssl.server.com
|
||||
- hosting.com/bad_path
|
||||
- https://server:8080/path
|
||||
- .exact.hostname.com
|
||||
- file://*
|
||||
- custom_scheme:*
|
||||
- '*'
|
||||
future_on:
|
||||
- chrome.*
|
||||
- chrome_os
|
||||
- ios
|
||||
- android
|
||||
owners:
|
||||
- file://components/policy/OWNERS
|
||||
- mwalachowski@google.com
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tags:
|
||||
- filtering
|
||||
type: list
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
caption: Block access to a list of URLs in Incognito mode.
|
||||
desc: |-
|
||||
Setting the <ph name="INCOGNITO_MODE_BLOCKLIST_POLICY_NAME">IncognitoModeBlocklist</ph> policy stops web pages with prohibited URLs from loading in Incognito mode. Administrators can specify the list of URL patterns to be blocked. If left unset, no URLs are blocked in the Incognito mode. Up to 1,000 exceptions can be defined in <ph name="INCOGNITO_MODE_ALLOWLIST_POLICY_NAME">IncognitoModeAllowlist</ph>. See how to format a URL pattern ( https://support.google.com/chrome/a?p=url_blocklist_filter_format ).
|
||||
|
||||
This policy only affects Incognito mode. To block URLs for all user profiles, please use the <ph name="URL_BLOCKLIST_POLICY_NAME">URLBlocklist</ph> policy.
|
||||
example_value:
|
||||
- example.com
|
||||
- https://ssl.server.com
|
||||
- hosting.com/bad_path
|
||||
- https://server:8080/path
|
||||
- .exact.hostname.com
|
||||
- file://*
|
||||
- custom_scheme:*
|
||||
- '*'
|
||||
future_on:
|
||||
- chrome.*
|
||||
- chrome_os
|
||||
- ios
|
||||
- android
|
||||
owners:
|
||||
- file://components/policy/OWNERS
|
||||
- mwalachowski@google.com
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: true
|
||||
schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tags:
|
||||
- filtering
|
||||
type: list
|
||||
+1
@@ -31,6 +31,7 @@ owners:
|
||||
- zmin@chromium.org
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- ios:88-
|
||||
|
||||
+1
@@ -28,5 +28,6 @@ owners:
|
||||
- esalma@google.com
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
tags: []
|
||||
type: main
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ owners:
|
||||
schema:
|
||||
type: boolean
|
||||
supported_on:
|
||||
- chrome.win:78-
|
||||
- chrome.win:78-117
|
||||
tags:
|
||||
- system-security
|
||||
type: main
|
||||
|
||||
+1
@@ -23,6 +23,7 @@ owners:
|
||||
- zmin@chromium.org
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.win:61-
|
||||
tags:
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
caption: Enable Silent Printing
|
||||
desc: |-
|
||||
Setting this policy to true enables silent printing, which immediately closes
|
||||
print preview window when opened and prints to the default printer with
|
||||
default options. If the default printer is 'Save as PDF', the file will be
|
||||
saved to the Downloads folder.
|
||||
|
||||
Not setting this policy or setting this policy to false disables silent
|
||||
printing, which doesn't automatically close print preview window and requires
|
||||
the user to make a selection as usual.
|
||||
features:
|
||||
dynamic_refresh: true
|
||||
per_profile: false
|
||||
items:
|
||||
- caption: Enable Silent Printing
|
||||
value: true
|
||||
- caption: Disable Silent Printing
|
||||
value: false
|
||||
default: false
|
||||
example_value: false
|
||||
owners:
|
||||
- file://components/policy/OWNERS
|
||||
- poromov@chromium.org
|
||||
- orko@igalia.com
|
||||
schema:
|
||||
type: boolean
|
||||
future_on:
|
||||
- chrome_os
|
||||
tags: []
|
||||
type: main
|
||||
+1
@@ -59,6 +59,7 @@ schema:
|
||||
- shortcut
|
||||
- name
|
||||
- url
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:128-
|
||||
- chrome_os:128-
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ deprecated: true
|
||||
|
||||
desc: |-
|
||||
When this policy is set to Enabled, any time when a warning is supposed to be
|
||||
displayed in the <ph name="DEV_TOOLS_NAME">DevTools</ph> due to <ph
|
||||
displayed in <ph name="CHROME_DEVTOOLS_NAME">Chrome DevTools</ph> due to <ph
|
||||
name="PRIVATE_NETWORK_ACCESS">Private Network Access</ph> checks failing, the
|
||||
main request will be blocked instead.
|
||||
|
||||
|
||||
+1
@@ -18,6 +18,7 @@ owners:
|
||||
- nparker@chromium.org
|
||||
schema:
|
||||
type: string
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:69-
|
||||
- chrome_os:69-
|
||||
|
||||
+1
@@ -23,6 +23,7 @@ schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:69-
|
||||
- chrome_os:69-
|
||||
|
||||
+1
@@ -24,6 +24,7 @@ schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:86-
|
||||
- chrome_os:86-
|
||||
|
||||
+1
@@ -32,6 +32,7 @@ owners:
|
||||
- pastarmovj@chromium.org
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- chrome_os:11-
|
||||
|
||||
+1
@@ -27,5 +27,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome_os:94-
|
||||
- chrome.*:95-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -31,5 +31,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome.*:81-
|
||||
- chrome_os:81-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: main
|
||||
|
||||
+1
@@ -27,5 +27,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome_os:94-
|
||||
- chrome.*:95-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -29,5 +29,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome_os:94-
|
||||
- chrome.*:95-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -27,5 +27,6 @@ schema:
|
||||
supported_on:
|
||||
- chrome_os:94-
|
||||
- chrome.*:95-
|
||||
- android:142-
|
||||
tags: []
|
||||
type: list
|
||||
|
||||
+1
@@ -27,6 +27,7 @@ owners:
|
||||
- chrome-desktop-ntp@google.com
|
||||
schema:
|
||||
type: boolean
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- chrome_os:11-
|
||||
|
||||
+1
@@ -23,6 +23,7 @@ owners:
|
||||
- chrome-desktop-ntp@google.com
|
||||
schema:
|
||||
type: string
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- chrome_os:11-
|
||||
|
||||
+1
@@ -24,6 +24,7 @@ owners:
|
||||
- chrome-desktop-ntp@google.com
|
||||
schema:
|
||||
type: string
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:58-
|
||||
- chrome_os:58-
|
||||
|
||||
+1
@@ -46,6 +46,7 @@ schema:
|
||||
- 4
|
||||
- 5
|
||||
type: integer
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- chrome_os:11-
|
||||
|
||||
+1
@@ -21,6 +21,7 @@ schema:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
sensitive: true
|
||||
supported_on:
|
||||
- chrome.*:8-
|
||||
- chrome_os:11-
|
||||
|
||||
@@ -93,6 +93,7 @@
|
||||
#include "content/browser/media/media_web_contents_observer.h"
|
||||
#include "content/browser/permissions/permission_controller_impl.h"
|
||||
#include "content/browser/permissions/permission_util.h"
|
||||
#include "content/browser/preloading/prefetch/prefetch_request.h"
|
||||
#include "content/browser/preloading/prefetch/prefetch_service.h"
|
||||
#include "content/browser/preloading/prefetch/prefetch_type.h"
|
||||
#include "content/browser/preloading/preloading.h"
|
||||
@@ -296,7 +297,7 @@ enum class CrashRepHandlingOutcome {
|
||||
constexpr auto kUpdateLoadStatesInterval = base::Milliseconds(250);
|
||||
|
||||
// Kill switch for inner WebContents visibility updates.
|
||||
BASE_FEATURE(UpdateInnerWebContentsVisibility,
|
||||
BASE_FEATURE(kUpdateInnerWebContentsVisibility,
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
|
||||
using LifecycleState = RenderFrameHost::LifecycleState;
|
||||
@@ -1428,7 +1429,7 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context)
|
||||
slow_web_preference_cache_observation_.Observe(
|
||||
SlowWebPreferenceCache::GetInstance());
|
||||
renderer_preferences_.caret_blink_interval =
|
||||
native_theme->GetCaretBlinkInterval();
|
||||
native_theme->caret_blink_interval();
|
||||
#if BUILDFLAG(IS_CHROMEOS)
|
||||
renderer_preferences_.use_overlay_scrollbar =
|
||||
native_theme->use_overlay_scrollbar();
|
||||
@@ -2027,10 +2028,21 @@ std::vector<RenderFrameHostImpl*> WebContentsImpl::GetOutermostMainFrames() {
|
||||
|
||||
// In the case of inner WebContents, we still allow this method to be called,
|
||||
// but the semantics of the values being returned are "outermost
|
||||
// within this WebContents" as opposed to truly outermost. We would not expect
|
||||
// any other outermost pages besides the primary page in the case of inner
|
||||
// WebContents.
|
||||
DCHECK(!GetOuterWebContents() || (result.size() == 1));
|
||||
// within this WebContents" as opposed to truly outermost. When this method is
|
||||
// called for an inner WebContents in a normal browser, we would not expect
|
||||
// any other outermost pages besides the primary page.
|
||||
//
|
||||
// Note that for an inner WebContents in a WebUIBrowser (detectable here when
|
||||
// the AttachUnownedInnerWebContents feature is enabled), `result.size()` may
|
||||
// sometimes exceed 1. For example, for WebUIBrowser, when a prerendering code
|
||||
// path is triggered, a prerender frame tree is generated, but the path to
|
||||
// activate or discard it does not run before this point.
|
||||
//
|
||||
// TODO(webium): Fix prerendering and bfcache for WebUIBrowser, which are not
|
||||
// yet fully enabled.
|
||||
DCHECK(
|
||||
!GetOuterWebContents() || (result.size() == 1) ||
|
||||
base::FeatureList::IsEnabled(features::kAttachUnownedInnerWebContents));
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -2636,6 +2648,11 @@ void WebContentsImpl::Discard(base::OnceClosure on_discarded_cb) {
|
||||
if (!base::FeatureList::IsEnabled(features::kWebContentsDiscard)) {
|
||||
NOTREACHED();
|
||||
}
|
||||
if (WasDiscarded()) {
|
||||
// TODO(crbug.com/441841249): Consider updating `on_discarded_cb` to return
|
||||
// a bool to indicate whether the operation completed successfully.
|
||||
return;
|
||||
}
|
||||
|
||||
AboutToBeDiscarded(this);
|
||||
notify_disconnection_ = false;
|
||||
@@ -2834,6 +2851,7 @@ bool WebContentsImpl::IsCrashed() {
|
||||
case base::TERMINATION_STATUS_ABNORMAL_TERMINATION:
|
||||
case base::TERMINATION_STATUS_PROCESS_WAS_KILLED:
|
||||
case base::TERMINATION_STATUS_OOM:
|
||||
case base::TERMINATION_STATUS_EVICTED_FOR_MEMORY:
|
||||
case base::TERMINATION_STATUS_LAUNCH_FAILED:
|
||||
#if BUILDFLAG(IS_CHROMEOS)
|
||||
case base::TERMINATION_STATUS_PROCESS_WAS_KILLED_BY_OOM:
|
||||
@@ -3700,8 +3718,8 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences(
|
||||
prefs.prefers_reduced_motion = gfx::Animation::PrefersReducedMotion();
|
||||
|
||||
const auto* const theme = ui::NativeTheme::GetInstanceForWeb();
|
||||
prefers_reduced_transparency_ = theme->GetPrefersReducedTransparency();
|
||||
inverted_colors_ = theme->GetInvertedColors();
|
||||
prefers_reduced_transparency_ = theme->prefers_reduced_transparency();
|
||||
inverted_colors_ = theme->inverted_colors();
|
||||
prefs.prefers_reduced_transparency = prefers_reduced_transparency_;
|
||||
prefs.inverted_colors = inverted_colors_;
|
||||
|
||||
@@ -4336,7 +4354,10 @@ void WebContentsImpl::RemoveObserver(WebContentsObserver* observer) {
|
||||
std::set<RenderWidgetHostViewBase*>
|
||||
WebContentsImpl::GetRenderWidgetHostViewsInWebContentsTree() {
|
||||
std::set<RenderWidgetHostViewBase*> result;
|
||||
GetPrimaryMainFrame()->ForEachRenderFrameHostImpl(
|
||||
// Views for speculative render frame host could also be frame sink id owner
|
||||
// and should move frame sink id registration from inner WebContents to outer
|
||||
// WebContents when WebContents is attached/detached.
|
||||
GetPrimaryMainFrame()->ForEachRenderFrameHostImplIncludingSpeculative(
|
||||
[&result](RenderFrameHostImpl* rfh) {
|
||||
if (auto* view =
|
||||
static_cast<RenderWidgetHostViewBase*>(rfh->GetView())) {
|
||||
@@ -5320,8 +5341,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
|
||||
// TODO(crbug.com/40234240): Instead of filtering out the guest case here,
|
||||
// check it and drop prerender requests before starting prerendering.
|
||||
std::unique_ptr<WebContentsImpl> new_contents;
|
||||
if (base::FeatureList::IsEnabled(blink::features::kPrerender2InNewTab) &&
|
||||
!is_guest) {
|
||||
if (!is_guest) {
|
||||
new_contents =
|
||||
GetPrerenderHostRegistry()->TakePreCreatedWebContentsForNewTabIfExists(
|
||||
params, create_params);
|
||||
@@ -8003,7 +8023,7 @@ blink::ColorProviderColorMaps WebContentsImpl::GetColorProviderColorMaps()
|
||||
ui::ColorProviderKey::ForcedColors forced_colors =
|
||||
forced_colors_source->GetForcedColors();
|
||||
if (forced_colors == ui::ColorProviderKey::ForcedColors::kNone) {
|
||||
forced_colors = ui::ColorProviderKey::ForcedColors::kActive;
|
||||
forced_colors = ui::ColorProviderKey::ForcedColors::kSystem;
|
||||
}
|
||||
|
||||
return blink::ColorProviderColorMaps{
|
||||
@@ -9115,6 +9135,14 @@ std::vector<WebContents*> WebContentsImpl::GetInnerWebContents() {
|
||||
}
|
||||
|
||||
WebContentsImpl* WebContentsImpl::GetResponsibleWebContents() {
|
||||
if (delegate_) {
|
||||
WebContentsImpl* responsible_from_delegate = static_cast<WebContentsImpl*>(
|
||||
delegate_->GetResponsibleWebContents(this));
|
||||
if (responsible_from_delegate) {
|
||||
return responsible_from_delegate;
|
||||
}
|
||||
}
|
||||
|
||||
return FromRenderFrameHostImpl(
|
||||
GetPrimaryMainFrame()->GetOutermostMainFrameOrEmbedder());
|
||||
}
|
||||
@@ -10085,10 +10113,11 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
|
||||
bounds_in_screen);
|
||||
|
||||
FocusedNodeDetails details = {frame->has_focused_editable_element(),
|
||||
bounds_in_screen, focus_type};
|
||||
bounds_in_screen, bounds_in_root_view,
|
||||
focus_type};
|
||||
BrowserAccessibilityStateImpl::GetInstance()->OnFocusChangedInPage(details);
|
||||
observers_.NotifyObservers(&WebContentsObserver::OnFocusChangedInPage,
|
||||
&details);
|
||||
details);
|
||||
}
|
||||
|
||||
bool WebContentsImpl::DidAddMessageToConsole(
|
||||
@@ -11604,6 +11633,24 @@ void WebContentsImpl::SetVisibilityForChildViews(bool visible) {
|
||||
}
|
||||
|
||||
void WebContentsImpl::HandleColorRelatedStateChanges() {
|
||||
if (const auto* const theme = ui::NativeTheme::GetInstanceForWeb();
|
||||
prefers_reduced_transparency_ != theme->prefers_reduced_transparency() ||
|
||||
inverted_colors_ != theme->inverted_colors() ||
|
||||
GetContentClient()
|
||||
->browser()
|
||||
->WebPreferencesNeedUpdateForColorRelatedStateChanges(
|
||||
*this, *GetPrimaryMainFrame()->GetSiteInstance())) {
|
||||
NotifyPreferencesChanged();
|
||||
}
|
||||
|
||||
// Update color providers after applying any pending WebPreferences changes.
|
||||
// This is done because WebPreferences changes (e.g. `in_forced_colors`) might
|
||||
// not trigger an invalidation in Blink, but color provider changes will
|
||||
// always trigger invalidation. Therefore, we want to update color providers
|
||||
// after we have the right states for the web preferences so we can use the
|
||||
// right color providers in Blink to paint. This also handles scenarios where
|
||||
// the forced colors state remains the same, but the `forced_colors_map` is
|
||||
// updated due to changes in the forced colors mode theme.
|
||||
if (blink::ColorProviderColorMaps color_maps = GetColorProviderColorMaps();
|
||||
color_maps_ != color_maps) {
|
||||
color_maps_.swap(color_maps);
|
||||
@@ -11613,16 +11660,6 @@ void WebContentsImpl::HandleColorRelatedStateChanges() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (const auto* const theme = ui::NativeTheme::GetInstanceForWeb();
|
||||
prefers_reduced_transparency_ != theme->GetPrefersReducedTransparency() ||
|
||||
inverted_colors_ != theme->GetInvertedColors() ||
|
||||
GetContentClient()
|
||||
->browser()
|
||||
->WebPreferencesNeedUpdateForColorRelatedStateChanges(
|
||||
*this, *GetPrimaryMainFrame()->GetSiteInstance())) {
|
||||
NotifyPreferencesChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void WebContentsImpl::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) {
|
||||
@@ -11631,7 +11668,7 @@ void WebContentsImpl::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) {
|
||||
|
||||
HandleColorRelatedStateChanges();
|
||||
|
||||
const auto caret_blink_interval = observed_theme->GetCaretBlinkInterval();
|
||||
const auto caret_blink_interval = observed_theme->caret_blink_interval();
|
||||
#if BUILDFLAG(IS_CHROMEOS)
|
||||
const auto use_overlay_scrollbar = observed_theme->use_overlay_scrollbar();
|
||||
#endif
|
||||
@@ -11981,7 +12018,7 @@ std::unique_ptr<PrefetchHandle> WebContentsImpl::StartPrefetch(
|
||||
std::optional<PrefetchPriority> priority,
|
||||
scoped_refptr<PreloadPipelineInfo> preload_pipeline_info,
|
||||
base::WeakPtr<PreloadingAttempt> attempt,
|
||||
std::optional<PreloadingHoldbackStatus> holdback_status_override,
|
||||
PreloadingHoldbackStatus holdback_status_override,
|
||||
std::optional<base::TimeDelta> ttl) {
|
||||
PrefetchService* prefetch_service =
|
||||
BrowserContextImpl::From(GetBrowserContext())->GetPrefetchService();
|
||||
@@ -11991,13 +12028,13 @@ std::unique_ptr<PrefetchHandle> WebContentsImpl::StartPrefetch(
|
||||
|
||||
PrefetchType prefetch_type(PreloadingTriggerType::kEmbedder,
|
||||
use_prefetch_proxy);
|
||||
auto container = std::make_unique<PrefetchContainer>(
|
||||
auto request = PrefetchRequest::CreateBrowserInitiated(
|
||||
*this, prefetch_url, prefetch_type, embedder_histogram_suffix, referrer,
|
||||
referring_origin, std::move(no_vary_search_hint), std::move(priority),
|
||||
std::move(preload_pipeline_info), std::move(attempt),
|
||||
holdback_status_override, std::move(ttl));
|
||||
|
||||
return prefetch_service->AddPrefetchContainerWithHandle(std::move(container));
|
||||
return prefetch_service->AddPrefetchRequestWithHandle(std::move(request));
|
||||
}
|
||||
|
||||
std::unique_ptr<PrerenderHandle> WebContentsImpl::StartPrerendering(
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
#include "ui/gfx/switches.h"
|
||||
#include "ui/gl/gl_switches.h"
|
||||
#include "ui/native_theme/features/native_theme_features.h"
|
||||
#include "ui/native_theme/native_theme_utils.h"
|
||||
#include "ui/native_theme/native_theme.h"
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#include "base/android/android_info.h"
|
||||
@@ -218,6 +218,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
|
||||
raw_ref(features::kFedCmIdPRegistration), kDefault},
|
||||
{wf::EnableFedCmLightweightMode,
|
||||
raw_ref(features::kFedCmLightweightMode), kDefault},
|
||||
{wf::EnableFedCmErrorAttribute,
|
||||
raw_ref(features::kFedCmErrorAttribute), kDefault},
|
||||
{wf::EnableGamepadMultitouch,
|
||||
raw_ref(features::kEnableGamepadMultitouch)},
|
||||
{wf::EnableSharedStorageAPI,
|
||||
@@ -288,8 +290,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
|
||||
raw_ref(features::kWebBluetoothNewPermissionsBackend),
|
||||
kSetOnlyIfOverridden},
|
||||
{wf::EnableWebIdentityDigitalCredentials,
|
||||
raw_ref(features::kWebIdentityDigitalCredentials),
|
||||
kDefault},
|
||||
raw_ref(features::kWebIdentityDigitalCredentials), kDefault},
|
||||
{wf::EnableWebIdentityDigitalCredentialsCreation,
|
||||
raw_ref(features::kWebIdentityDigitalCredentialsCreation),
|
||||
kSetOnlyIfOverridden},
|
||||
@@ -356,8 +357,6 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
|
||||
#endif
|
||||
{"CompressionDictionaryTransport",
|
||||
raw_ref(network::features::kCompressionDictionaryTransport)},
|
||||
{"CompressionDictionaryTransportBackend",
|
||||
raw_ref(network::features::kCompressionDictionaryTransportBackend)},
|
||||
{"CookieDeprecationFacilitatedTesting",
|
||||
raw_ref(features::kCookieDeprecationFacilitatedTesting)},
|
||||
{"DocumentPolicyIncludeJSCallStacksInCrashReports",
|
||||
@@ -523,7 +522,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
|
||||
// These checks are custom wrappers around base::FeatureList::IsEnabled
|
||||
// They're moved here to distinguish them from actual base checks
|
||||
#if !BUILDFLAG(IS_CHROMEOS)
|
||||
WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled());
|
||||
WebRuntimeFeatures::EnableOverlayScrollbars(
|
||||
ui::NativeTheme::GetInstanceForWeb()->use_overlay_scrollbar());
|
||||
#endif
|
||||
WebRuntimeFeatures::EnableFluentScrollbars(ui::IsFluentScrollbarEnabled());
|
||||
WebRuntimeFeatures::EnableFluentOverlayScrollbars(
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "components/language_detection/core/browser/language_detection_model_provider.h"
|
||||
#include "content/browser/ai/echo_ai_manager_impl.h"
|
||||
#include "content/browser/renderer_host/render_frame_host_impl.h"
|
||||
#include "content/browser/webauth/default_authenticator_request_client_delegate.h"
|
||||
#include "content/public/browser/anchor_element_preconnect_delegate.h"
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "content/public/browser/browser_main_parts.h"
|
||||
@@ -43,6 +44,7 @@
|
||||
#include "content/public/browser/page_navigator.h"
|
||||
#include "content/public/browser/prefetch_service_delegate.h"
|
||||
#include "content/public/browser/prerender_web_contents_delegate.h"
|
||||
#include "content/public/browser/process_selection_deferring_condition.h"
|
||||
#include "content/public/browser/render_frame_host.h"
|
||||
#include "content/public/browser/responsiveness_calculator_delegate.h"
|
||||
#include "content/public/browser/sms_fetcher.h"
|
||||
@@ -76,7 +78,6 @@
|
||||
#include "services/network/public/mojom/network_context.mojom.h"
|
||||
#include "services/network/public/mojom/network_service.mojom.h"
|
||||
#include "services/network/public/mojom/web_transport.mojom.h"
|
||||
#include "services/video_effects/public/cpp/buildflags.h"
|
||||
#include "storage/browser/quota/quota_manager.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/features_generated.h"
|
||||
@@ -101,10 +102,6 @@
|
||||
#include "third_party/blink/public/mojom/installedapp/related_application.mojom.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
#include "services/video_effects/public/mojom/video_effects_processor.mojom-forward.h"
|
||||
#endif // BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
|
||||
using AttributionReportType =
|
||||
content::ContentBrowserClient::AttributionReportingOsRegistrar;
|
||||
|
||||
@@ -152,10 +149,11 @@ bool ContentBrowserClient::CanShutdownGpuProcessNowOnIOThread() {
|
||||
return false;
|
||||
}
|
||||
|
||||
GURL ContentBrowserClient::GetEffectiveURL(BrowserContext* browser_context,
|
||||
const GURL& url) {
|
||||
std::optional<GURL> ContentBrowserClient::GetEffectiveURL(
|
||||
BrowserContext* browser_context,
|
||||
const GURL& url) {
|
||||
DCHECK(browser_context);
|
||||
return url;
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
bool ContentBrowserClient::ShouldCompareEffectiveURLsForSiteInstanceSelection(
|
||||
@@ -259,13 +257,6 @@ void ContentBrowserClient::OverrideURLLoaderFactoryParams(
|
||||
bool is_for_service_worker,
|
||||
network::mojom::URLLoaderFactoryParams* factory_params) {}
|
||||
|
||||
// Returns true if the given URL is in any of the NavigationEntries for the
|
||||
// given |browser_context|. This is used to determine if a URL is already
|
||||
// in the navigation history of any of the tabs in a given browser context.
|
||||
bool ContentBrowserClient::IsURLAccessibleByHistoryNavigation(const GURL& url) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void ContentBrowserClient::GetAdditionalViewSourceSchemes(
|
||||
std::vector<std::string>* additional_schemes) {
|
||||
GetAdditionalWebUISchemes(additional_schemes);
|
||||
@@ -1021,6 +1012,12 @@ ContentBrowserClient::CreateCommitDeferringConditionsForNavigation(
|
||||
return std::vector<std::unique_ptr<CommitDeferringCondition>>();
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<ProcessSelectionDeferringCondition>>
|
||||
ContentBrowserClient::CreateProcessSelectionDeferringConditionsForNavigation(
|
||||
NavigationHandle& navigation_handle) {
|
||||
return std::vector<std::unique_ptr<ProcessSelectionDeferringCondition>>();
|
||||
}
|
||||
|
||||
std::unique_ptr<NavigationUIData> ContentBrowserClient::GetNavigationUIData(
|
||||
NavigationHandle* navigation_handle) {
|
||||
return nullptr;
|
||||
@@ -1062,10 +1059,6 @@ std::wstring ContentBrowserClient::GetLPACCapabilityNameForNetworkService() {
|
||||
return std::wstring(L"lpacContentNetworkService");
|
||||
}
|
||||
|
||||
bool ContentBrowserClient::IsRendererCodeIntegrityEnabled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ContentBrowserClient::ShouldEnableAudioProcessHighPriority() {
|
||||
// TODO(crbug.com/40242320): Delete this method when the
|
||||
// kAudioProcessHighPriorityEnabled enterprise policy is deprecated.
|
||||
@@ -1323,7 +1316,7 @@ ContentBrowserClient::GetWebAuthenticationDelegate() {
|
||||
std::unique_ptr<AuthenticatorRequestClientDelegate>
|
||||
ContentBrowserClient::GetWebAuthenticationRequestDelegate(
|
||||
RenderFrameHost* render_frame_host) {
|
||||
return std::make_unique<AuthenticatorRequestClientDelegate>();
|
||||
return std::make_unique<DefaultAuthenticatorRequestClientDelegate>();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1817,20 +1810,6 @@ bool ContentBrowserClient::UseOutermostMainFrameOrEmbedderForSubCaptureTargets()
|
||||
return false;
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
void ContentBrowserClient::BindReadonlyVideoEffectsManager(
|
||||
const std::string& device_id,
|
||||
BrowserContext* browser_context,
|
||||
mojo::PendingReceiver<media::mojom::ReadonlyVideoEffectsManager>
|
||||
readonly_video_effects_manager) {}
|
||||
|
||||
void ContentBrowserClient::BindVideoEffectsProcessor(
|
||||
const std::string& device_id,
|
||||
BrowserContext* browser_context,
|
||||
mojo::PendingReceiver<video_effects::mojom::VideoEffectsProcessor>
|
||||
video_effects_processor) {}
|
||||
#endif // BUILDFLAG(ENABLE_VIDEO_EFFECTS)
|
||||
|
||||
void ContentBrowserClient::PreferenceRankAudioDeviceInfos(
|
||||
BrowserContext* browser_context,
|
||||
blink::WebMediaDeviceInfoArray& infos) {}
|
||||
@@ -1943,11 +1922,6 @@ void ContentBrowserClient::QueryInstalledWebAppsByManifestId(
|
||||
}
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
void ContentBrowserClient::OnUiaProviderRequested(bool uia_provider_enabled) {}
|
||||
void ContentBrowserClient::OnUiaProviderDisabled() {}
|
||||
#endif
|
||||
|
||||
bool ContentBrowserClient::AllowNonActivatedCrossOriginPaintHolding() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
// Copyright 2012 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// This is used by the app window API internally to pass through messages to
|
||||
// the shell window.
|
||||
namespace app.currentWindowInternal {
|
||||
|
||||
// Null or undefined indicates that a value should not change.
|
||||
dictionary Bounds {
|
||||
long? left;
|
||||
long? top;
|
||||
long? width;
|
||||
long? height;
|
||||
};
|
||||
|
||||
// Null or undefined indicates that a value should not change. A value of 0
|
||||
// will clear the constraints.
|
||||
dictionary SizeConstraints {
|
||||
long? minWidth;
|
||||
long? minHeight;
|
||||
long? maxWidth;
|
||||
long? maxHeight;
|
||||
};
|
||||
|
||||
dictionary RegionRect {
|
||||
long left;
|
||||
long top;
|
||||
long width;
|
||||
long height;
|
||||
};
|
||||
|
||||
dictionary Region {
|
||||
RegionRect[]? rects;
|
||||
};
|
||||
|
||||
interface Functions {
|
||||
static void focus();
|
||||
static void fullscreen();
|
||||
static void minimize();
|
||||
static void maximize();
|
||||
static void restore();
|
||||
static void drawAttention();
|
||||
static void clearAttention();
|
||||
static void show(optional boolean focused);
|
||||
static void hide();
|
||||
static void setBounds(DOMString boundsType, Bounds bounds);
|
||||
static void setSizeConstraints(DOMString boundsType,
|
||||
SizeConstraints constraints);
|
||||
static void setIcon(DOMString icon_url);
|
||||
static void setShape(Region region);
|
||||
static void setAlwaysOnTop(boolean always_on_top);
|
||||
static void setVisibleOnAllWorkspaces(boolean always_visible);
|
||||
static void setActivateOnPointer(boolean activate_on_pointer);
|
||||
};
|
||||
|
||||
interface Events {
|
||||
static void onClosed();
|
||||
static void onBoundsChanged();
|
||||
static void onFullscreened();
|
||||
static void onMinimized();
|
||||
static void onMaximized();
|
||||
static void onRestored();
|
||||
static void onAlphaEnabledChanged();
|
||||
};
|
||||
};
|
||||
@@ -1,65 +0,0 @@
|
||||
// Copyright 2018 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Private API for HDMI CEC functionality.
|
||||
[platforms=("chromeos")]
|
||||
namespace cecPrivate {
|
||||
|
||||
enum DisplayCecPowerState {
|
||||
// There was an error querying the power state of the display.
|
||||
error,
|
||||
|
||||
// The kernel adapter for the CEC endpoint isn't configured (no EDID set).
|
||||
adapterNotConfigured,
|
||||
|
||||
// No device ACKed the request on the CEC bus.
|
||||
noDevice,
|
||||
|
||||
// The display is a powered on state.
|
||||
on,
|
||||
|
||||
// The display is in standby mode.
|
||||
standby,
|
||||
|
||||
// The display is currently transitioning to an awake state. It can't be
|
||||
// relied on to show any output yet.
|
||||
transitioningToOn,
|
||||
|
||||
// The display is currently transitioning to standby.
|
||||
transitioningToStandby,
|
||||
|
||||
// Found a CEC endpoint but unable to determine the power state.
|
||||
unknown
|
||||
};
|
||||
|
||||
callback DisplayCecPowerStateCallback =
|
||||
void(DisplayCecPowerState[] powerStates);
|
||||
|
||||
callback ChangePowerStateCallback = void();
|
||||
|
||||
interface Functions {
|
||||
// Attempt to put all HDMI CEC compatible devices in standby.
|
||||
//
|
||||
// This is not guaranteed to have any effect on the connected displays.
|
||||
// Displays that do not support HDMI CEC will not be affected.
|
||||
//
|
||||
// |callback| will be run as soon as all displays have been requested to
|
||||
// change their power state.
|
||||
static void sendStandBy(
|
||||
optional ChangePowerStateCallback callback);
|
||||
|
||||
// Attempt to announce this device as the active input source towards all
|
||||
// HDMI CEC enabled displays connected, waking them from standby if
|
||||
// necessary.
|
||||
//
|
||||
// |callback| will be run as soon as all displays have been requested to
|
||||
// change their power state.
|
||||
static void sendWakeUp(
|
||||
optional ChangePowerStateCallback callback);
|
||||
|
||||
// Queries all HDMI CEC capable displays for their current power state.
|
||||
static void queryDisplayCecPowerState(
|
||||
DisplayCecPowerStateCallback callback);
|
||||
};
|
||||
};
|
||||
@@ -1,38 +0,0 @@
|
||||
// Copyright 2013 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Use the <code>chrome.diagnostics</code> API to query various properties of
|
||||
// the environment that may be useful for diagnostics.
|
||||
namespace diagnostics {
|
||||
dictionary SendPacketOptions {
|
||||
// Target IP address.
|
||||
DOMString ip;
|
||||
// Packet time to live value. If omitted, the system default value will be
|
||||
// used.
|
||||
long? ttl;
|
||||
// Packet timeout in seconds. If omitted, the system default value will be
|
||||
// used.
|
||||
long? timeout;
|
||||
// Size of the payload. If omitted, the system default value will be used.
|
||||
long? size;
|
||||
};
|
||||
|
||||
dictionary SendPacketResult {
|
||||
// The IP of the host which we receives the ICMP reply from.
|
||||
// The IP may differs from our target IP if the packet's ttl is used up.
|
||||
DOMString ip;
|
||||
|
||||
// Latency in millisenconds.
|
||||
double latency;
|
||||
};
|
||||
|
||||
callback SendPacketCallback = void(SendPacketResult result);
|
||||
|
||||
interface Functions {
|
||||
// Send a packet of the given type with the given parameters.
|
||||
static void sendPacket(
|
||||
SendPacketOptions options,
|
||||
SendPacketCallback callback);
|
||||
};
|
||||
};
|
||||
@@ -1,28 +0,0 @@
|
||||
// Copyright 2014 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Use the <code>chrome.dns</code> API for dns resolution.
|
||||
namespace dns {
|
||||
|
||||
dictionary ResolveCallbackResolveInfo {
|
||||
// The result code. Zero indicates success.
|
||||
long resultCode;
|
||||
|
||||
// A string representing the IP address literal. Supplied only if resultCode
|
||||
// indicates success.
|
||||
DOMString? address;
|
||||
};
|
||||
|
||||
callback ResolveCallback = void (ResolveCallbackResolveInfo resolveInfo);
|
||||
|
||||
interface Functions {
|
||||
// Resolves the given hostname or IP address literal.
|
||||
// |hostname| : The hostname to resolve.
|
||||
// |callback| : Called when the resolution operation completes.
|
||||
static void resolve(
|
||||
DOMString hostname,
|
||||
ResolveCallback callback);
|
||||
};
|
||||
|
||||
};
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright 2014 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Internal API for the <extensiontoptions> tag
|
||||
namespace extensionOptionsInternal {
|
||||
dictionary SizeChangedOptions {
|
||||
long oldWidth;
|
||||
long oldHeight;
|
||||
long newWidth;
|
||||
long newHeight;
|
||||
};
|
||||
|
||||
dictionary PreferredSizeChangedOptions {
|
||||
double width;
|
||||
double height;
|
||||
};
|
||||
|
||||
interface Events {
|
||||
static void onClose();
|
||||
static void onLoad();
|
||||
static void onPreferredSizeChanged(PreferredSizeChangedOptions options);
|
||||
};
|
||||
};
|
||||
@@ -1,61 +0,0 @@
|
||||
// Copyright 2013 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Use the <code>system.cpu</code> API to query CPU metadata.
|
||||
namespace system.cpu {
|
||||
|
||||
// Counters for assessing CPU utilization. Each field is monotonically
|
||||
// increasing while the processor is powered on. Values are in milliseconds.
|
||||
dictionary CpuTime {
|
||||
// The cumulative time used by userspace programs on this processor.
|
||||
double user;
|
||||
|
||||
// The cumulative time used by kernel programs on this processor.
|
||||
double kernel;
|
||||
|
||||
// The cumulative time spent idle by this processor.
|
||||
double idle;
|
||||
|
||||
// The total cumulative time for this processor. This value is equal to
|
||||
// user + kernel + idle.
|
||||
double total;
|
||||
};
|
||||
|
||||
dictionary ProcessorInfo {
|
||||
// Cumulative usage info for this logical processor.
|
||||
CpuTime usage;
|
||||
};
|
||||
|
||||
dictionary CpuInfo {
|
||||
// The number of logical processors.
|
||||
long numOfProcessors;
|
||||
|
||||
// The architecture name of the processors.
|
||||
DOMString archName;
|
||||
|
||||
// The model name of the processors.
|
||||
DOMString modelName;
|
||||
|
||||
// A set of feature codes indicating some of the processor's capabilities.
|
||||
// The currently supported codes are "mmx", "sse", "sse2", "sse3", "ssse3",
|
||||
// "sse4_1", "sse4_2", and "avx".
|
||||
DOMString[] features;
|
||||
|
||||
// Information about each logical processor.
|
||||
ProcessorInfo[] processors;
|
||||
|
||||
// List of CPU temperature readings from each thermal zone of the CPU.
|
||||
// Temperatures are in degrees Celsius.
|
||||
//
|
||||
// <b>Currently supported on Chrome OS only.</b>
|
||||
double[] temperatures;
|
||||
};
|
||||
|
||||
callback CpuInfoCallback = void (CpuInfo info);
|
||||
|
||||
interface Functions {
|
||||
// Queries basic CPU information of the system.
|
||||
static void getInfo(CpuInfoCallback callback);
|
||||
};
|
||||
};
|
||||
@@ -1,21 +0,0 @@
|
||||
// Copyright 2013 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// The <code>chrome.system.memory</code> API.
|
||||
namespace system.memory {
|
||||
|
||||
dictionary MemoryInfo {
|
||||
// The total amount of physical memory capacity, in bytes.
|
||||
double capacity;
|
||||
// The amount of available capacity, in bytes.
|
||||
double availableCapacity;
|
||||
};
|
||||
|
||||
callback MemoryInfoCallback = void (MemoryInfo info);
|
||||
|
||||
interface Functions {
|
||||
// Get physical memory information.
|
||||
static void getInfo(MemoryInfoCallback callback);
|
||||
};
|
||||
};
|
||||
@@ -1,31 +0,0 @@
|
||||
// Copyright 2013 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Use the <code>chrome.system.network</code> API.
|
||||
namespace system.network {
|
||||
dictionary NetworkInterface {
|
||||
// The underlying name of the adapter. On *nix, this will typically be
|
||||
// "eth0", "wlan0", etc.
|
||||
DOMString name;
|
||||
|
||||
// The available IPv4/6 address.
|
||||
DOMString address;
|
||||
|
||||
// The prefix length
|
||||
long prefixLength;
|
||||
};
|
||||
|
||||
// Callback from the <code>getNetworkInterfaces</code> method.
|
||||
// |networkInterfaces| : Array of object containing network interfaces
|
||||
// information.
|
||||
callback GetNetworkInterfacesCallback =
|
||||
void (NetworkInterface[] networkInterfaces);
|
||||
|
||||
interface Functions {
|
||||
// Retrieves information about local adapters on this system.
|
||||
// |callback| : Called when local adapter information is available.
|
||||
static void getNetworkInterfaces(
|
||||
GetNetworkInterfacesCallback callback);
|
||||
};
|
||||
};
|
||||
@@ -1,86 +0,0 @@
|
||||
// Copyright 2013 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Use the <code>chrome.system.storage</code> API to query storage device
|
||||
// information and be notified when a removable storage device is attached and
|
||||
// detached.
|
||||
namespace system.storage {
|
||||
|
||||
enum StorageUnitType {
|
||||
// The storage has fixed media, e.g. hard disk or SSD.
|
||||
fixed,
|
||||
// The storage is removable, e.g. USB flash drive.
|
||||
removable,
|
||||
// The storage type is unknown.
|
||||
unknown
|
||||
};
|
||||
|
||||
dictionary StorageUnitInfo {
|
||||
// The transient ID that uniquely identifies the storage device.
|
||||
// This ID will be persistent within the same run of a single application.
|
||||
// It will not be a persistent identifier between different runs of an
|
||||
// application, or between different applications.
|
||||
DOMString id;
|
||||
// The name of the storage unit.
|
||||
DOMString name;
|
||||
// The media type of the storage unit.
|
||||
StorageUnitType type;
|
||||
// The total amount of the storage space, in bytes.
|
||||
double capacity;
|
||||
};
|
||||
|
||||
dictionary StorageAvailableCapacityInfo {
|
||||
// A copied |id| of getAvailableCapacity function parameter |id|.
|
||||
DOMString id;
|
||||
// The available capacity of the storage device, in bytes.
|
||||
double availableCapacity;
|
||||
};
|
||||
|
||||
enum EjectDeviceResultCode {
|
||||
// The ejection command is successful -- the application can prompt the user
|
||||
// to remove the device.
|
||||
success,
|
||||
// The device is in use by another application. The ejection did not
|
||||
// succeed; the user should not remove the device until the other
|
||||
// application is done with the device.
|
||||
in_use,
|
||||
// There is no such device known.
|
||||
no_such_device,
|
||||
// The ejection command failed.
|
||||
failure
|
||||
};
|
||||
|
||||
callback EjectDeviceCallback = void (EjectDeviceResultCode result);
|
||||
|
||||
callback StorageInfoCallback = void (StorageUnitInfo[] info);
|
||||
|
||||
callback GetAvailableCapacityCallback = void (
|
||||
StorageAvailableCapacityInfo info);
|
||||
|
||||
interface Functions {
|
||||
// Get the storage information from the system. The argument passed to the
|
||||
// callback is an array of StorageUnitInfo objects.
|
||||
static void getInfo(StorageInfoCallback callback);
|
||||
|
||||
// Ejects a removable storage device.
|
||||
static void ejectDevice(
|
||||
DOMString id,
|
||||
EjectDeviceCallback callback);
|
||||
|
||||
// Get the available capacity of a specified |id| storage device.
|
||||
// The |id| is the transient device ID from StorageUnitInfo.
|
||||
static void getAvailableCapacity(
|
||||
DOMString id,
|
||||
GetAvailableCapacityCallback callback);
|
||||
};
|
||||
|
||||
interface Events {
|
||||
// Fired when a new removable storage is attached to the system.
|
||||
static void onAttached(StorageUnitInfo info);
|
||||
|
||||
// Fired when a removable storage is detached from the system.
|
||||
static void onDetached(DOMString id);
|
||||
};
|
||||
|
||||
};
|
||||
@@ -1,39 +0,0 @@
|
||||
// Copyright 2017 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// The <code>chrome.virtualKeyboard</code> API is a kiosk only API used to
|
||||
// configure virtual keyboard layout and behavior in kiosk sessions.
|
||||
[platforms=("chromeos")]
|
||||
namespace virtualKeyboard {
|
||||
// <p>Determines whether advanced virtual keyboard features should be enabled
|
||||
// or not. They are enabled by default.</p>
|
||||
// <p>On <b>Chrome 58</b> all properties are expected to have the same value.
|
||||
// </p>
|
||||
// <p>From <b>Chrome 63</b> the properties can be distinct and are optional.
|
||||
// If omitted, the current value is preserved.</p>
|
||||
dictionary FeatureRestrictions {
|
||||
// Whether virtual keyboards can provide auto-complete.
|
||||
boolean? autoCompleteEnabled;
|
||||
// Whether virtual keyboards can provide auto-correct.
|
||||
boolean? autoCorrectEnabled;
|
||||
// Whether virtual keyboards can provide input via handwriting recognition.
|
||||
boolean? handwritingEnabled;
|
||||
// Whether virtual keyboards can provide spell-check.
|
||||
boolean? spellCheckEnabled;
|
||||
// Whether virtual keyboards can provide voice input.
|
||||
boolean? voiceInputEnabled;
|
||||
};
|
||||
|
||||
callback RestrictFeaturesCallback = void(FeatureRestrictions update);
|
||||
|
||||
interface Functions {
|
||||
// Sets restrictions on features provided by the virtual keyboard.
|
||||
// |restrictions|: the preferences to enabled/disabled virtual keyboard
|
||||
// features.
|
||||
// |callback|: Invoked with the values which were updated.
|
||||
void restrictFeatures(
|
||||
FeatureRestrictions restrictions,
|
||||
optional RestrictFeaturesCallback callback);
|
||||
};
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user