diff --git a/DEPS b/DEPS index 87b0596..f053a4bc 100644 --- a/DEPS +++ b/DEPS
@@ -221,7 +221,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '8abb778cb338b88d0036379acf49acdc1a9f6e70', + 'angle_revision': '904ac34039cf1e5f8cb1f340ad41a2ee0015f634', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -280,7 +280,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': '0cfa2c068604d31cc110728dde632ddaeeabfa97', + 'catapult_revision': 'ca2c40743faf25ae3fdac8ba1813c33473a254ee', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -288,7 +288,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '8e642e00e8bf5d79ce4bb50967dfcfe6098b27db', + 'devtools_frontend_revision': '417940939a7a17e0c2a6f879cae426e06bd20cc1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -328,11 +328,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '045a02adc0c6b2d6b406507bc58131644b41dc0c', + 'dawn_revision': '12c6305674d1e1c91320c0660c6d0f6c328e03c8', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'quiche_revision': 'bef266f60b0ea199960d6d4983a0d63ee06aa30f', + 'quiche_revision': '59de4b0760cce3b052924470c4da2ee784555483', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ios_webkit # and whatever else without interference from each other. @@ -946,7 +946,7 @@ # Tools used when building Chrome for Chrome OS. This affects both the Simple # Chrome workflow, as well as the chromeos-chrome ebuild. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '7787fc923b6a426431b6bf8465448255135e04e8', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '0ebeb0bbba816727d9d1c104dfdaad1498e04596', 'condition': 'checkout_chromeos', }, @@ -966,7 +966,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'c91f5f62e284fa45ab7da18e91d3eedd96a38459', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '0e6b37448ddf1eaaf93db1d2cb2b0198d7b79188', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1338,7 +1338,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '7dadfe6bd3985045d21280ebbc9ba336df6dedd9', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '36d5d47a5168725d3a4fbef751f44212f6f4cb5f', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1613,7 +1613,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@e26f1c188c76368b7169e110d0cbb86f7876bda9', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@93ae6ed257ec929ba5ed7f3014099c58244a16ce', 'condition': 'checkout_src_internal', }, @@ -1632,7 +1632,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'U8FvFN0i9074Z-3onM3FldpTloQ08QiZ-6TDmy6Ayb4C', + 'version': 'guDtOxCcCWk0mOQG5WjKF6zBwJGPvT2ks3pw-06sGSMC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -1643,7 +1643,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': 'Pe_jX_7WvKIfSkmVqfg8fKGTovOhrGycxXrRQN9d08oC', + 'version': '4jMTXapOwjspzJpdZ4oHRPsnAOhC2WukJWizXb-H-ZcC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/android_webview/browser/aw_feature_list.cc b/android_webview/browser/aw_feature_list.cc index ee4d137..100bb62 100644 --- a/android_webview/browser/aw_feature_list.cc +++ b/android_webview/browser/aw_feature_list.cc
@@ -8,9 +8,7 @@ #include "android_webview/common/aw_features.h" #include "base/android/jni_string.h" #include "base/feature_list.h" -#include "base/macros.h" #include "base/notreached.h" -#include "base/stl_util.h" #include "components/safe_browsing/core/features.h" using base::android::ConvertJavaStringToUTF8; @@ -23,7 +21,7 @@ // Array of features exposed through the Java AwFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. content/, components/, etc). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &features::kWebViewConnectionlessSafeBrowsing, &features::kWebViewDisplayCutout, &features::kWebViewMixedContentAutoupgrades, @@ -33,9 +31,9 @@ }; const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature cannot be found in AwFeatureList: " << feature_name;
diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected index 44fe36b..6466512 100644 --- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected +++ b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
@@ -1,12 +1,12 @@ <?xml version="1.0" ?> <manifest - android:isolatedSplits="true" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" package="com.android.webview" platformBuildVersionCode="30" platformBuildVersionName="11" - tools:ignore="MissingLeanbackLauncher" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + android:isolatedSplits="true" + tools:ignore="MissingLeanbackLauncher"> <queries> # DIFF-ANCHOR: 0c3a615d <intent> # DIFF-ANCHOR: 28c960ba <action android:name="android.media.browse.MediaBrowserService"/> @@ -19,23 +19,23 @@ <uses-permission android:name="android.permission.INTERNET"/> <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30"/> <application + android:name="org.chromium.android_webview.nonembedded.WebViewApkApplication" android:extractNativeLibs="True" android:icon="@$PACKAGE:drawable/icon_webview" android:label="Android System WebView" android:multiArch="true" - android:name="org.chromium.android_webview.nonembedded.WebViewApkApplication" android:use32bitAbi="true"> <activity # DIFF-ANCHOR: ea1a94af - android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" + android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> # DIFF-ANCHOR: ea1a94af <activity # DIFF-ANCHOR: a4438884 + android:name="org.chromium.android_webview.devui.MainActivity" android:exported="true" android:icon="@drawable/icon_webview" android:label="WebView DevTools" android:launchMode="singleTask" - android:name="org.chromium.android_webview.devui.MainActivity" android:process=":webview_apk" android:taskAffinity="$PACKAGE.org.chromium.android_webview.devui" android:theme="@style/Theme.DevUi.DayNight" @@ -47,9 +47,9 @@ </intent-filter> # DIFF-ANCHOR: b80aa336 </activity> # DIFF-ANCHOR: a4438884 <activity # DIFF-ANCHOR: aeabab17 + android:name="org.chromium.android_webview.nonembedded.LicenseActivity" android:exported="true" android:label="@string/license_activity_title" - android:name="org.chromium.android_webview.nonembedded.LicenseActivity" android:process=":webview_apk"> <intent-filter> # DIFF-ANCHOR: 23298d3b <action android:name="android.settings.WEBVIEW_LICENSE"/> @@ -58,8 +58,8 @@ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true"/> </activity> # DIFF-ANCHOR: aeabab17 <activity-alias # DIFF-ANCHOR: b7cc06e9 - android:enabled="false" android:name="org.chromium.android_webview.devui.DeveloperModeState" + android:enabled="false" android:process=":webview_apk" android:targetActivity="org.chromium.android_webview.devui.MainActivity" android:visibleToInstantApps="true"> @@ -69,439 +69,439 @@ <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" android:value="0"/> <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" android:value="40"/> <provider # DIFF-ANCHOR: a5e78e63 + android:name="org.chromium.android_webview.nonembedded.LicenseContentProvider" android:authorities="$PACKAGE.LicenseContentProvider" android:exported="true" android:grantUriPermissions="true" - android:name="org.chromium.android_webview.nonembedded.LicenseContentProvider" android:process=":webview_apk" tools:ignore="ExportedContentProvider"> </provider> # DIFF-ANCHOR: a5e78e63 <provider # DIFF-ANCHOR: bfe37944 + android:name="org.chromium.android_webview.services.DeveloperModeContentProvider" android:authorities="$PACKAGE.DeveloperModeContentProvider" android:exported="true" - android:name="org.chromium.android_webview.services.DeveloperModeContentProvider" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedContentProvider"> </provider> # DIFF-ANCHOR: bfe37944 - <receiver # DIFF-ANCHOR: 1091f66b - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver"> - </receiver> # DIFF-ANCHOR: 1091f66b - <service # DIFF-ANCHOR: 41539e3c - android:exported="false" - android:name="com.google.android.gms.cast.framework.ReconnectionService"> - </service> # DIFF-ANCHOR: 41539e3c - <service # DIFF-ANCHOR: 7dad1ec5 - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaNotificationService"> - </service> # DIFF-ANCHOR: 7dad1ec5 + <receiver # DIFF-ANCHOR: 0a6f8fa5 + android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0a6f8fa5 + <service # DIFF-ANCHOR: 749391ed + android:name="com.google.android.gms.cast.framework.ReconnectionService" + android:exported="false"> + </service> # DIFF-ANCHOR: 749391ed + <service # DIFF-ANCHOR: 48ce9d28 + android:name="com.google.android.gms.cast.framework.media.MediaNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 48ce9d28 <service # DIFF-ANCHOR: b9ec52c4 - android:exported="false" android:name="org.chromium.android_webview.nonembedded.AwComponentUpdateService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_apk"> </service> # DIFF-ANCHOR: b9ec52c4 <service # DIFF-ANCHOR: 3cd6d713 - android:exported="true" android:name="org.chromium.android_webview.services.AwMinidumpUploadJobService" + android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_service"> </service> # DIFF-ANCHOR: 3cd6d713 <service # DIFF-ANCHOR: 65cddb26 - android:exported="false" android:name="org.chromium.android_webview.services.AwVariationsSeedFetcher" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_service"> </service> # DIFF-ANCHOR: 65cddb26 <service # DIFF-ANCHOR: c756cf8d - android:exported="true" android:name="org.chromium.android_webview.services.ComponentsProviderService" + android:exported="true" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c756cf8d <service # DIFF-ANCHOR: 5cda9608 - android:exported="true" android:name="org.chromium.android_webview.services.CrashReceiverService" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5cda9608 <service # DIFF-ANCHOR: adce9ea1 - android:exported="true" android:name="org.chromium.android_webview.services.DeveloperUiService" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: adce9ea1 <service # DIFF-ANCHOR: eecf2fee - android:exported="true" android:name="org.chromium.android_webview.services.MetricsBridgeService" + android:exported="true" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: eecf2fee <service # DIFF-ANCHOR: dc926e35 - android:exported="true" android:name="org.chromium.android_webview.services.VariationsSeedServer" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dc926e35 <service # DIFF-ANCHOR: b1e3e8bd + android:name="org.chromium.content.app.SandboxedProcessService0" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService0" android:process=":sandboxed_process0" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b1e3e8bd <service # DIFF-ANCHOR: 76d1ccf8 + android:name="org.chromium.content.app.SandboxedProcessService1" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService1" android:process=":sandboxed_process1" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 76d1ccf8 <service # DIFF-ANCHOR: 38b95266 + android:name="org.chromium.content.app.SandboxedProcessService10" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService10" android:process=":sandboxed_process10" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 38b95266 <service # DIFF-ANCHOR: e4a2e4a2 + android:name="org.chromium.content.app.SandboxedProcessService11" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService11" android:process=":sandboxed_process11" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e4a2e4a2 <service # DIFF-ANCHOR: d9b2ffba + android:name="org.chromium.content.app.SandboxedProcessService12" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService12" android:process=":sandboxed_process12" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: d9b2ffba <service # DIFF-ANCHOR: b41bb17d + android:name="org.chromium.content.app.SandboxedProcessService13" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService13" android:process=":sandboxed_process13" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b41bb17d <service # DIFF-ANCHOR: aec0ea21 + android:name="org.chromium.content.app.SandboxedProcessService14" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService14" android:process=":sandboxed_process14" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: aec0ea21 <service # DIFF-ANCHOR: cf88a5e5 + android:name="org.chromium.content.app.SandboxedProcessService15" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService15" android:process=":sandboxed_process15" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: cf88a5e5 <service # DIFF-ANCHOR: 7d85889d + android:name="org.chromium.content.app.SandboxedProcessService16" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService16" android:process=":sandboxed_process16" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 7d85889d <service # DIFF-ANCHOR: dae26ed4 + android:name="org.chromium.content.app.SandboxedProcessService17" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService17" android:process=":sandboxed_process17" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dae26ed4 <service # DIFF-ANCHOR: 2c6cf029 + android:name="org.chromium.content.app.SandboxedProcessService18" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService18" android:process=":sandboxed_process18" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2c6cf029 <service # DIFF-ANCHOR: 1d2f0988 + android:name="org.chromium.content.app.SandboxedProcessService19" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService19" android:process=":sandboxed_process19" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 1d2f0988 <service # DIFF-ANCHOR: 4a39041b + android:name="org.chromium.content.app.SandboxedProcessService2" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService2" android:process=":sandboxed_process2" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 4a39041b <service # DIFF-ANCHOR: 073533bf + android:name="org.chromium.content.app.SandboxedProcessService20" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService20" android:process=":sandboxed_process20" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 073533bf <service # DIFF-ANCHOR: d24da41d + android:name="org.chromium.content.app.SandboxedProcessService21" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService21" android:process=":sandboxed_process21" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: d24da41d <service # DIFF-ANCHOR: 594d8b32 + android:name="org.chromium.content.app.SandboxedProcessService22" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService22" android:process=":sandboxed_process22" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 594d8b32 <service # DIFF-ANCHOR: 5528c0c3 + android:name="org.chromium.content.app.SandboxedProcessService23" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService23" android:process=":sandboxed_process23" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5528c0c3 <service # DIFF-ANCHOR: b7ab2ba3 + android:name="org.chromium.content.app.SandboxedProcessService24" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService24" android:process=":sandboxed_process24" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b7ab2ba3 <service # DIFF-ANCHOR: cec6cb64 + android:name="org.chromium.content.app.SandboxedProcessService25" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService25" android:process=":sandboxed_process25" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: cec6cb64 <service # DIFF-ANCHOR: 5b4a00fe + android:name="org.chromium.content.app.SandboxedProcessService26" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService26" android:process=":sandboxed_process26" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5b4a00fe <service # DIFF-ANCHOR: ad49d203 + android:name="org.chromium.content.app.SandboxedProcessService27" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService27" android:process=":sandboxed_process27" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: ad49d203 <service # DIFF-ANCHOR: 573298e9 + android:name="org.chromium.content.app.SandboxedProcessService28" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService28" android:process=":sandboxed_process28" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 573298e9 <service # DIFF-ANCHOR: 79897b32 + android:name="org.chromium.content.app.SandboxedProcessService29" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService29" android:process=":sandboxed_process29" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 79897b32 <service # DIFF-ANCHOR: 84335864 + android:name="org.chromium.content.app.SandboxedProcessService3" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService3" android:process=":sandboxed_process3" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 84335864 <service # DIFF-ANCHOR: c4bd371e + android:name="org.chromium.content.app.SandboxedProcessService30" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService30" android:process=":sandboxed_process30" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c4bd371e <service # DIFF-ANCHOR: 394a9fd0 + android:name="org.chromium.content.app.SandboxedProcessService31" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService31" android:process=":sandboxed_process31" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 394a9fd0 <service # DIFF-ANCHOR: b811afb8 + android:name="org.chromium.content.app.SandboxedProcessService32" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService32" android:process=":sandboxed_process32" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b811afb8 <service # DIFF-ANCHOR: 2811ddd3 + android:name="org.chromium.content.app.SandboxedProcessService33" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService33" android:process=":sandboxed_process33" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2811ddd3 <service # DIFF-ANCHOR: 73ae1688 + android:name="org.chromium.content.app.SandboxedProcessService34" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService34" android:process=":sandboxed_process34" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 73ae1688 <service # DIFF-ANCHOR: c476f324 + android:name="org.chromium.content.app.SandboxedProcessService35" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService35" android:process=":sandboxed_process35" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c476f324 <service # DIFF-ANCHOR: 75d5304b + android:name="org.chromium.content.app.SandboxedProcessService36" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService36" android:process=":sandboxed_process36" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 75d5304b <service # DIFF-ANCHOR: dc6d0617 + android:name="org.chromium.content.app.SandboxedProcessService37" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService37" android:process=":sandboxed_process37" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dc6d0617 <service # DIFF-ANCHOR: e31efe49 + android:name="org.chromium.content.app.SandboxedProcessService38" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService38" android:process=":sandboxed_process38" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e31efe49 <service # DIFF-ANCHOR: 5736507e + android:name="org.chromium.content.app.SandboxedProcessService39" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService39" android:process=":sandboxed_process39" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5736507e <service # DIFF-ANCHOR: a161be24 + android:name="org.chromium.content.app.SandboxedProcessService4" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService4" android:process=":sandboxed_process4" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: a161be24 <service # DIFF-ANCHOR: 8e591688 + android:name="org.chromium.content.app.SandboxedProcessService5" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService5" android:process=":sandboxed_process5" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 8e591688 <service # DIFF-ANCHOR: 705141d0 + android:name="org.chromium.content.app.SandboxedProcessService6" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService6" android:process=":sandboxed_process6" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 705141d0 <service # DIFF-ANCHOR: 38ed2189 + android:name="org.chromium.content.app.SandboxedProcessService7" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService7" android:process=":sandboxed_process7" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 38ed2189 <service # DIFF-ANCHOR: aa417956 + android:name="org.chromium.content.app.SandboxedProcessService8" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService8" android:process=":sandboxed_process8" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: aa417956 <service # DIFF-ANCHOR: e2f3bbbd + android:name="org.chromium.content.app.SandboxedProcessService9" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService9" android:process=":sandboxed_process9" android:visibleToInstantApps="true" tools:ignore="ExportedService">
diff --git a/android_webview/expectations/trichrome_webview_bundle.AndroidManifest.expected b/android_webview/expectations/trichrome_webview_bundle.AndroidManifest.expected index f2e9541..e30efcd 100644 --- a/android_webview/expectations/trichrome_webview_bundle.AndroidManifest.expected +++ b/android_webview/expectations/trichrome_webview_bundle.AndroidManifest.expected
@@ -1,12 +1,12 @@ <?xml version="1.0" ?> <manifest - android:isolatedSplits="true" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" package="com.android.webview" platformBuildVersionCode="30" platformBuildVersionName="11" - tools:ignore="MissingLeanbackLauncher" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + android:isolatedSplits="true" + tools:ignore="MissingLeanbackLauncher"> <queries> # DIFF-ANCHOR: 0c3a615d <intent> # DIFF-ANCHOR: 28c960ba <action android:name="android.media.browse.MediaBrowserService"/> @@ -19,23 +19,23 @@ <uses-permission android:name="android.permission.INTERNET"/> <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="30"/> <application + android:name="org.chromium.android_webview.nonembedded.WebViewApkApplication" android:extractNativeLibs="False" android:icon="@$PACKAGE:drawable/icon_webview" android:label="Android System WebView" android:multiArch="true" - android:name="org.chromium.android_webview.nonembedded.WebViewApkApplication" android:use32bitAbi="true"> <activity # DIFF-ANCHOR: ea1a94af - android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" + android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> # DIFF-ANCHOR: ea1a94af <activity # DIFF-ANCHOR: a4438884 + android:name="org.chromium.android_webview.devui.MainActivity" android:exported="true" android:icon="@drawable/icon_webview" android:label="WebView DevTools" android:launchMode="singleTask" - android:name="org.chromium.android_webview.devui.MainActivity" android:process=":webview_apk" android:taskAffinity="$PACKAGE.org.chromium.android_webview.devui" android:theme="@style/Theme.DevUi.DayNight" @@ -47,9 +47,9 @@ </intent-filter> # DIFF-ANCHOR: b80aa336 </activity> # DIFF-ANCHOR: a4438884 <activity # DIFF-ANCHOR: aeabab17 + android:name="org.chromium.android_webview.nonembedded.LicenseActivity" android:exported="true" android:label="@string/license_activity_title" - android:name="org.chromium.android_webview.nonembedded.LicenseActivity" android:process=":webview_apk"> <intent-filter> # DIFF-ANCHOR: 23298d3b <action android:name="android.settings.WEBVIEW_LICENSE"/> @@ -58,8 +58,8 @@ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true"/> </activity> # DIFF-ANCHOR: aeabab17 <activity-alias # DIFF-ANCHOR: b7cc06e9 - android:enabled="false" android:name="org.chromium.android_webview.devui.DeveloperModeState" + android:enabled="false" android:process=":webview_apk" android:targetActivity="org.chromium.android_webview.devui.MainActivity" android:visibleToInstantApps="true"> @@ -69,443 +69,443 @@ <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" android:value="0"/> <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" android:value="40"/> <provider # DIFF-ANCHOR: a5e78e63 + android:name="org.chromium.android_webview.nonembedded.LicenseContentProvider" android:authorities="$PACKAGE.LicenseContentProvider" android:exported="true" android:grantUriPermissions="true" - android:name="org.chromium.android_webview.nonembedded.LicenseContentProvider" android:process=":webview_apk" tools:ignore="ExportedContentProvider"> </provider> # DIFF-ANCHOR: a5e78e63 <provider # DIFF-ANCHOR: bfe37944 + android:name="org.chromium.android_webview.services.DeveloperModeContentProvider" android:authorities="$PACKAGE.DeveloperModeContentProvider" android:exported="true" - android:name="org.chromium.android_webview.services.DeveloperModeContentProvider" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedContentProvider"> </provider> # DIFF-ANCHOR: bfe37944 - <receiver # DIFF-ANCHOR: 1091f66b - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver"> - </receiver> # DIFF-ANCHOR: 1091f66b - <service # DIFF-ANCHOR: 41539e3c - android:exported="false" - android:name="com.google.android.gms.cast.framework.ReconnectionService"> - </service> # DIFF-ANCHOR: 41539e3c - <service # DIFF-ANCHOR: 7dad1ec5 - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaNotificationService"> - </service> # DIFF-ANCHOR: 7dad1ec5 + <receiver # DIFF-ANCHOR: 0a6f8fa5 + android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0a6f8fa5 + <service # DIFF-ANCHOR: 749391ed + android:name="com.google.android.gms.cast.framework.ReconnectionService" + android:exported="false"> + </service> # DIFF-ANCHOR: 749391ed + <service # DIFF-ANCHOR: 48ce9d28 + android:name="com.google.android.gms.cast.framework.media.MediaNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 48ce9d28 <service # DIFF-ANCHOR: b9ec52c4 - android:exported="false" android:name="org.chromium.android_webview.nonembedded.AwComponentUpdateService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_apk"> </service> # DIFF-ANCHOR: b9ec52c4 <service # DIFF-ANCHOR: 3cd6d713 - android:exported="true" android:name="org.chromium.android_webview.services.AwMinidumpUploadJobService" + android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_service"> </service> # DIFF-ANCHOR: 3cd6d713 <service # DIFF-ANCHOR: 65cddb26 - android:exported="false" android:name="org.chromium.android_webview.services.AwVariationsSeedFetcher" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_service"> </service> # DIFF-ANCHOR: 65cddb26 <service # DIFF-ANCHOR: c756cf8d - android:exported="true" android:name="org.chromium.android_webview.services.ComponentsProviderService" + android:exported="true" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c756cf8d <service # DIFF-ANCHOR: 5cda9608 - android:exported="true" android:name="org.chromium.android_webview.services.CrashReceiverService" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5cda9608 <service # DIFF-ANCHOR: adce9ea1 - android:exported="true" android:name="org.chromium.android_webview.services.DeveloperUiService" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: adce9ea1 <service # DIFF-ANCHOR: eecf2fee - android:exported="true" android:name="org.chromium.android_webview.services.MetricsBridgeService" + android:exported="true" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: eecf2fee <service # DIFF-ANCHOR: dc926e35 - android:exported="true" android:name="org.chromium.android_webview.services.VariationsSeedServer" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dc926e35 <service # DIFF-ANCHOR: b1e3e8bd + android:name="org.chromium.content.app.SandboxedProcessService0" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService0" android:process=":sandboxed_process0" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b1e3e8bd <service # DIFF-ANCHOR: 76d1ccf8 + android:name="org.chromium.content.app.SandboxedProcessService1" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService1" android:process=":sandboxed_process1" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 76d1ccf8 <service # DIFF-ANCHOR: 38b95266 + android:name="org.chromium.content.app.SandboxedProcessService10" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService10" android:process=":sandboxed_process10" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 38b95266 <service # DIFF-ANCHOR: e4a2e4a2 + android:name="org.chromium.content.app.SandboxedProcessService11" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService11" android:process=":sandboxed_process11" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e4a2e4a2 <service # DIFF-ANCHOR: d9b2ffba + android:name="org.chromium.content.app.SandboxedProcessService12" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService12" android:process=":sandboxed_process12" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: d9b2ffba <service # DIFF-ANCHOR: b41bb17d + android:name="org.chromium.content.app.SandboxedProcessService13" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService13" android:process=":sandboxed_process13" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b41bb17d <service # DIFF-ANCHOR: aec0ea21 + android:name="org.chromium.content.app.SandboxedProcessService14" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService14" android:process=":sandboxed_process14" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: aec0ea21 <service # DIFF-ANCHOR: cf88a5e5 + android:name="org.chromium.content.app.SandboxedProcessService15" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService15" android:process=":sandboxed_process15" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: cf88a5e5 <service # DIFF-ANCHOR: 7d85889d + android:name="org.chromium.content.app.SandboxedProcessService16" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService16" android:process=":sandboxed_process16" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 7d85889d <service # DIFF-ANCHOR: dae26ed4 + android:name="org.chromium.content.app.SandboxedProcessService17" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService17" android:process=":sandboxed_process17" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dae26ed4 <service # DIFF-ANCHOR: 2c6cf029 + android:name="org.chromium.content.app.SandboxedProcessService18" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService18" android:process=":sandboxed_process18" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2c6cf029 <service # DIFF-ANCHOR: 1d2f0988 + android:name="org.chromium.content.app.SandboxedProcessService19" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService19" android:process=":sandboxed_process19" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 1d2f0988 <service # DIFF-ANCHOR: 4a39041b + android:name="org.chromium.content.app.SandboxedProcessService2" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService2" android:process=":sandboxed_process2" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 4a39041b <service # DIFF-ANCHOR: 073533bf + android:name="org.chromium.content.app.SandboxedProcessService20" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService20" android:process=":sandboxed_process20" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 073533bf <service # DIFF-ANCHOR: d24da41d + android:name="org.chromium.content.app.SandboxedProcessService21" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService21" android:process=":sandboxed_process21" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: d24da41d <service # DIFF-ANCHOR: 594d8b32 + android:name="org.chromium.content.app.SandboxedProcessService22" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService22" android:process=":sandboxed_process22" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 594d8b32 <service # DIFF-ANCHOR: 5528c0c3 + android:name="org.chromium.content.app.SandboxedProcessService23" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService23" android:process=":sandboxed_process23" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5528c0c3 <service # DIFF-ANCHOR: b7ab2ba3 + android:name="org.chromium.content.app.SandboxedProcessService24" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService24" android:process=":sandboxed_process24" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b7ab2ba3 <service # DIFF-ANCHOR: cec6cb64 + android:name="org.chromium.content.app.SandboxedProcessService25" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService25" android:process=":sandboxed_process25" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: cec6cb64 <service # DIFF-ANCHOR: 5b4a00fe + android:name="org.chromium.content.app.SandboxedProcessService26" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService26" android:process=":sandboxed_process26" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5b4a00fe <service # DIFF-ANCHOR: ad49d203 + android:name="org.chromium.content.app.SandboxedProcessService27" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService27" android:process=":sandboxed_process27" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: ad49d203 <service # DIFF-ANCHOR: 573298e9 + android:name="org.chromium.content.app.SandboxedProcessService28" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService28" android:process=":sandboxed_process28" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 573298e9 <service # DIFF-ANCHOR: 79897b32 + android:name="org.chromium.content.app.SandboxedProcessService29" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService29" android:process=":sandboxed_process29" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 79897b32 <service # DIFF-ANCHOR: 84335864 + android:name="org.chromium.content.app.SandboxedProcessService3" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService3" android:process=":sandboxed_process3" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 84335864 <service # DIFF-ANCHOR: c4bd371e + android:name="org.chromium.content.app.SandboxedProcessService30" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService30" android:process=":sandboxed_process30" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c4bd371e <service # DIFF-ANCHOR: 394a9fd0 + android:name="org.chromium.content.app.SandboxedProcessService31" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService31" android:process=":sandboxed_process31" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 394a9fd0 <service # DIFF-ANCHOR: b811afb8 + android:name="org.chromium.content.app.SandboxedProcessService32" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService32" android:process=":sandboxed_process32" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b811afb8 <service # DIFF-ANCHOR: 2811ddd3 + android:name="org.chromium.content.app.SandboxedProcessService33" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService33" android:process=":sandboxed_process33" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2811ddd3 <service # DIFF-ANCHOR: 73ae1688 + android:name="org.chromium.content.app.SandboxedProcessService34" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService34" android:process=":sandboxed_process34" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 73ae1688 <service # DIFF-ANCHOR: c476f324 + android:name="org.chromium.content.app.SandboxedProcessService35" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService35" android:process=":sandboxed_process35" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c476f324 <service # DIFF-ANCHOR: 75d5304b + android:name="org.chromium.content.app.SandboxedProcessService36" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService36" android:process=":sandboxed_process36" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 75d5304b <service # DIFF-ANCHOR: dc6d0617 + android:name="org.chromium.content.app.SandboxedProcessService37" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService37" android:process=":sandboxed_process37" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dc6d0617 <service # DIFF-ANCHOR: e31efe49 + android:name="org.chromium.content.app.SandboxedProcessService38" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService38" android:process=":sandboxed_process38" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e31efe49 <service # DIFF-ANCHOR: 5736507e + android:name="org.chromium.content.app.SandboxedProcessService39" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService39" android:process=":sandboxed_process39" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5736507e <service # DIFF-ANCHOR: a161be24 + android:name="org.chromium.content.app.SandboxedProcessService4" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService4" android:process=":sandboxed_process4" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: a161be24 <service # DIFF-ANCHOR: 8e591688 + android:name="org.chromium.content.app.SandboxedProcessService5" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService5" android:process=":sandboxed_process5" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 8e591688 <service # DIFF-ANCHOR: 705141d0 + android:name="org.chromium.content.app.SandboxedProcessService6" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService6" android:process=":sandboxed_process6" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 705141d0 <service # DIFF-ANCHOR: 38ed2189 + android:name="org.chromium.content.app.SandboxedProcessService7" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService7" android:process=":sandboxed_process7" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 38ed2189 <service # DIFF-ANCHOR: aa417956 + android:name="org.chromium.content.app.SandboxedProcessService8" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService8" android:process=":sandboxed_process8" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: aa417956 <service # DIFF-ANCHOR: e2f3bbbd + android:name="org.chromium.content.app.SandboxedProcessService9" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService9" android:process=":sandboxed_process9" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e2f3bbbd - <uses-static-library android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:name="org.chromium.trichromelibrary" android:version="$VERSION_NUMBER"/> + <uses-static-library android:name="org.chromium.trichromelibrary" android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:version="$VERSION_NUMBER"/> </application> </manifest>
diff --git a/android_webview/glue/BUILD.gn b/android_webview/glue/BUILD.gn index 379a8db..b456caf 100644 --- a/android_webview/glue/BUILD.gn +++ b/android_webview/glue/BUILD.gn
@@ -21,6 +21,7 @@ "//components/content_capture/android:java", "//components/embedder_support/android:application_java", "//components/embedder_support/android:util_java", + "//components/version_info/android:version_constants_java", "//content/public/android:content_java", "//net/android:net_java", "//third_party/androidx:androidx_annotation_annotation_java",
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java index a5f6359a..495ebe0 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -54,9 +54,11 @@ import org.chromium.base.annotations.VerifiesOnP; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.ScopedSysTraceEvent; +import org.chromium.build.BuildConfig; import org.chromium.build.NativeLibraries; import org.chromium.components.embedder_support.application.ClassLoaderContextWrapperFactory; import org.chromium.components.embedder_support.application.FirebaseConfig; +import org.chromium.components.version_info.VersionConstants; import org.chromium.content_public.browser.LGEmailActionModeWorkaround; import java.io.File; @@ -315,6 +317,12 @@ CommandLine cl = CommandLine.getInstance(); cl.appendSwitch(AwSwitches.WEBVIEW_SANDBOXED_RENDERER); } + // Using concatenation rather than %s to allow values to be inlined by R8. + Log.i(TAG, + "Loaded version=" + VersionConstants.PRODUCT_VERSION + " minSdkVersion=" + + BuildConfig.MIN_SDK_VERSION + " isBundle=" + ProductConfig.IS_BUNDLE + + " multiprocess=%s packageId=%s", + multiProcess, packageId); // Enable modern SameSite cookie behavior if the app targets at least S. if (BuildInfo.targetsAtLeastS()) {
diff --git a/android_webview/lib/aw_main_delegate.cc b/android_webview/lib/aw_main_delegate.cc index 180643ed..2b81b342 100644 --- a/android_webview/lib/aw_main_delegate.cc +++ b/android_webview/lib/aw_main_delegate.cc
@@ -220,13 +220,6 @@ // Enable VizForWebView by default. features.EnableIfNotSet(::features::kVizForWebViewDefault); - // WebView doesn't support surface embedding without viz.The media code - // checks for both media::kDisableSurfaceLayerForVideo and VizForWebView to - // decide if it can embed, so we always enable kDisableSurfaceLayerForVideo - // here. - // https://crbug.com/853832 - features.EnableIfNotSet(media::kDisableSurfaceLayerForVideo); - // WebView does not support overlay fullscreen yet for video overlays. features.DisableIfNotSet(media::kOverlayFullscreenVideo);
diff --git a/android_webview/lib/webview_jni_onload.cc b/android_webview/lib/webview_jni_onload.cc index 1a59dbb..cefe289 100644 --- a/android_webview/lib/webview_jni_onload.cc +++ b/android_webview/lib/webview_jni_onload.cc
@@ -5,8 +5,6 @@ #include "android_webview/lib/webview_jni_onload.h" #include "android_webview/lib/aw_main_delegate.h" -#include "base/android/library_loader/library_loader_hooks.h" -#include "components/version_info/version_info_values.h" #include "content/public/app/content_jni_onload.h" #include "content/public/app/content_main.h" @@ -16,7 +14,6 @@ if (!content::android::OnJNIOnLoadInit()) return false; - base::android::SetVersionNumber(PRODUCT_VERSION); content::SetContentMainDelegate(new android_webview::AwMainDelegate()); return true; }
diff --git a/android_webview/nonembedded/BUILD.gn b/android_webview/nonembedded/BUILD.gn index d9f061a7..c4e8573d 100644 --- a/android_webview/nonembedded/BUILD.gn +++ b/android_webview/nonembedded/BUILD.gn
@@ -37,6 +37,7 @@ "//base:base_java", "//components/about_ui/android:aboutui_java", "//components/embedder_support/android:application_java", + "//components/version_info/android:version_constants_java", "//third_party/android_deps:com_google_code_findbugs_jsr305_java", "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/androidx:androidx_annotation_annotation_java",
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java index 5442c6a..73a9db6 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java
@@ -13,9 +13,11 @@ import com.android.webview.chromium.WebViewLibraryPreloader; import org.chromium.android_webview.AwLocaleConfig; +import org.chromium.android_webview.ProductConfig; import org.chromium.android_webview.common.CommandLineUtil; import org.chromium.android_webview.devui.util.WebViewPackageHelper; import org.chromium.base.ContextUtils; +import org.chromium.base.Log; import org.chromium.base.PathUtils; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; @@ -25,7 +27,9 @@ import org.chromium.base.metrics.UmaRecorderHolder; import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; +import org.chromium.build.BuildConfig; import org.chromium.components.embedder_support.application.FontPreloadingWorkaround; +import org.chromium.components.version_info.VersionConstants; import org.chromium.ui.base.ResourceBundle; /** @@ -38,11 +42,20 @@ */ @JNINamespace("android_webview") public class WebViewApkApplication extends Application { + private static final String TAG = "WebViewApkApp"; + // Called by the framework for ALL processes. Runs before ContentProviders are created. // Quirk: context.getApplicationContext() returns null during this method. @Override protected void attachBaseContext(Context context) { super.attachBaseContext(context); + // Using concatenation rather than %s to allow values to be inlined by R8. + Log.i(TAG, + "Launched version=" + VersionConstants.PRODUCT_VERSION + + " minSdkVersion=" + BuildConfig.MIN_SDK_VERSION + + " isBundle=" + ProductConfig.IS_BUNDLE + " processName=%s", + ContextUtils.getProcessName()); + ContextUtils.initApplicationContext(this); maybeInitProcessGlobals();
diff --git a/android_webview/system_webview_apk_tmpl.gni b/android_webview/system_webview_apk_tmpl.gni index 55e2773..e8b79134 100644 --- a/android_webview/system_webview_apk_tmpl.gni +++ b/android_webview/system_webview_apk_tmpl.gni
@@ -179,15 +179,6 @@ } } - if (!_use_trichrome_library || android_64bit_target_cpu) { - # 32-bit TrichromeWebView doesn't have a native library, so only do this - # for other configs. - native_lib_version_rule = "//build/util:chrome_version_json" - _native_lib_file = - rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir) - native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)" - } - aapt_locale_allowlist = locales resource_exclusion_regex = common_resource_exclusion_regex
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn index b73b055..126f8123 100644 --- a/android_webview/test/BUILD.gn +++ b/android_webview/test/BUILD.gn
@@ -91,11 +91,6 @@ shared_libraries = [ ":libstandalonelibwebviewchromium" ] - native_lib_version_rule = "//build/util:chrome_version_json" - _native_lib_file = - rebase_path("$root_gen_dir/CHROME_VERSION.json", root_build_dir) - native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)" - command_line_flags_file = "android-webview-command-line" }
diff --git a/ash/accessibility/magnifier/magnification_controller_unittest.cc b/ash/accessibility/magnifier/magnification_controller_unittest.cc index 803802b..23b1df80 100644 --- a/ash/accessibility/magnifier/magnification_controller_unittest.cc +++ b/ash/accessibility/magnifier/magnification_controller_unittest.cc
@@ -19,6 +19,7 @@ #include "ui/aura/test/aura_test_utils.h" #include "ui/aura/window_tree_host.h" #include "ui/base/ime/input_method.h" +#include "ui/compositor/layer.h" #include "ui/display/manager/display_manager.h" #include "ui/display/screen.h" #include "ui/display/test/display_manager_test_api.h"
diff --git a/ash/accessibility/sticky_keys/sticky_keys_overlay.cc b/ash/accessibility/sticky_keys/sticky_keys_overlay.cc index 8c70f75..2dfed827 100644 --- a/ash/accessibility/sticky_keys/sticky_keys_overlay.cc +++ b/ash/accessibility/sticky_keys/sticky_keys_overlay.cc
@@ -14,6 +14,7 @@ #include "base/strings/utf_string_conversions.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/canvas.h" #include "ui/gfx/font_list.h"
diff --git a/ash/accessibility/ui/accessibility_focus_ring_controller_unittest.cc b/ash/accessibility/ui/accessibility_focus_ring_controller_unittest.cc index eb7328c..383411d 100644 --- a/ash/accessibility/ui/accessibility_focus_ring_controller_unittest.cc +++ b/ash/accessibility/ui/accessibility_focus_ring_controller_unittest.cc
@@ -11,6 +11,7 @@ #include "ash/test/ash_test_base.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/ime/dummy_text_input_client.h" +#include "ui/compositor/layer.h" #include "ui/events/event.h" #include "ui/events/event_utils.h"
diff --git a/ash/accessibility/ui/accessibility_highlight_controller_unittest.cc b/ash/accessibility/ui/accessibility_highlight_controller_unittest.cc index 349947e4..9b37f1e 100644 --- a/ash/accessibility/ui/accessibility_highlight_controller_unittest.cc +++ b/ash/accessibility/ui/accessibility_highlight_controller_unittest.cc
@@ -23,6 +23,7 @@ #include "ui/aura/window.h" #include "ui/base/ime/dummy_text_input_client.h" #include "ui/compositor/compositor_switches.h" +#include "ui/compositor/layer.h" #include "ui/events/base_event_utils.h" #include "ui/events/event.h" #include "ui/gfx/image/image.h"
diff --git a/ash/ambient/ui/ambient_background_image_view.cc b/ash/ambient/ui/ambient_background_image_view.cc index 81c6e001..a5158d1 100644 --- a/ash/ambient/ui/ambient_background_image_view.cc +++ b/ash/ambient/ui/ambient_background_image_view.cc
@@ -13,6 +13,7 @@ #include "ash/ambient/ui/media_string_view.h" #include "ash/ambient/util/ambient_util.h" #include "base/rand_util.h" +#include "ui/compositor/layer.h" #include "ui/events/event.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/image/image_skia_operations.h"
diff --git a/ash/ambient/ui/ambient_info_view.cc b/ash/ambient/ui/ambient_info_view.cc index feba612..9d73cfaa 100644 --- a/ash/ambient/ui/ambient_info_view.cc +++ b/ash/ambient/ui/ambient_info_view.cc
@@ -10,6 +10,7 @@ #include "ash/ambient/ui/ambient_view_ids.h" #include "ash/ambient/ui/glanceable_info_view.h" #include "ash/ambient/util/ambient_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/controls/label.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/ambient/ui/glanceable_info_view.cc b/ash/ambient/ui/glanceable_info_view.cc index 5a21e045..1a589f4 100644 --- a/ash/ambient/ui/glanceable_info_view.cc +++ b/ash/ambient/ui/glanceable_info_view.cc
@@ -21,6 +21,7 @@ #include "base/strings/utf_string_conversions.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/font_list.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/rect.h"
diff --git a/ash/ambient/ui/media_string_view_unittest.cc b/ash/ambient/ui/media_string_view_unittest.cc index d2594c2..fb694d9 100644 --- a/ash/ambient/ui/media_string_view_unittest.cc +++ b/ash/ambient/ui/media_string_view_unittest.cc
@@ -13,6 +13,7 @@ #include "ash/shell.h" #include "base/strings/utf_string_conversions.h" #include "services/media_session/public/mojom/media_session.mojom.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/views/controls/label.h"
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc index fd23b18..953f5da 100644 --- a/ash/app_list/app_list_controller_impl.cc +++ b/ash/app_list/app_list_controller_impl.cc
@@ -65,6 +65,7 @@ #include "components/services/app_service/public/cpp/app_registry_cache_wrapper.h" #include "extensions/common/constants.h" #include "ui/base/ui_base_features.h" +#include "ui/compositor/layer.h" #include "ui/display/manager/display_manager.h" #include "ui/display/screen.h" #include "ui/views/controls/textfield/textfield.h"
diff --git a/ash/app_list/app_list_controller_impl_unittest.cc b/ash/app_list/app_list_controller_impl_unittest.cc index 0c5678d5..fbfc934 100644 --- a/ash/app_list/app_list_controller_impl_unittest.cc +++ b/ash/app_list/app_list_controller_impl_unittest.cc
@@ -52,6 +52,7 @@ #include "base/test/with_feature_override.h" #include "ui/base/emoji/emoji_panel_helper.h" #include "ui/base/ui_base_features.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/test/event_generator.h" #include "ui/message_center/message_center.h"
diff --git a/ash/app_list/views/app_list_folder_view.cc b/ash/app_list/views/app_list_folder_view.cc index 29074073..a309a8e7 100644 --- a/ash/app_list/views/app_list_folder_view.cc +++ b/ash/app_list/views/app_list_folder_view.cc
@@ -30,6 +30,7 @@ #include "ash/public/cpp/pagination/pagination_model.h" #include "base/strings/utf_string_conversions.h" #include "ui/accessibility/ax_node_data.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/events/event.h"
diff --git a/ash/app_list/views/app_list_main_view.cc b/ash/app_list/views/app_list_main_view.cc index ec6a754..e0b5acb 100644 --- a/ash/app_list/views/app_list_main_view.cc +++ b/ash/app_list/views/app_list_main_view.cc
@@ -32,6 +32,7 @@ #include "base/metrics/user_metrics.h" #include "base/strings/string_util.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/border.h" #include "ui/views/controls/button/button.h"
diff --git a/ash/app_list/views/app_list_main_view_unittest.cc b/ash/app_list/views/app_list_main_view_unittest.cc index a20173f..7ea99b4b 100644 --- a/ash/app_list/views/app_list_main_view_unittest.cc +++ b/ash/app_list/views/app_list_main_view_unittest.cc
@@ -17,6 +17,7 @@ #include "ash/app_list/views/page_switcher.h" #include "ash/app_list/views/search_box_view.h" #include "ash/public/cpp/test/test_app_list_color_provider.h" +#include "ui/compositor/layer.h" #include "ui/events/base_event_utils.h" #include "ui/views/controls/textfield/textfield.h" #include "ui/views/test/views_test_base.h"
diff --git a/ash/app_list/views/app_list_view_unittest.cc b/ash/app_list/views/app_list_view_unittest.cc index b9f5604..c6b427c 100644 --- a/ash/app_list/views/app_list_view_unittest.cc +++ b/ash/app_list/views/app_list_view_unittest.cc
@@ -56,6 +56,7 @@ #include "base/test/scoped_feature_list.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/models/simple_menu_model.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/display.h"
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc index fb617fda..c9cfd7c 100644 --- a/ash/app_list/views/apps_grid_view.cc +++ b/ash/app_list/views/apps_grid_view.cc
@@ -49,6 +49,7 @@ #include "ui/base/dragdrop/drag_drop_types.h" #include "ui/base/l10n/l10n_util.h" #include "ui/compositor/animation_throughput_reporter.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display.h"
diff --git a/ash/app_list/views/apps_grid_view_unittest.cc b/ash/app_list/views/apps_grid_view_unittest.cc index a067eece..ace49fb 100644 --- a/ash/app_list/views/apps_grid_view_unittest.cc +++ b/ash/app_list/views/apps_grid_view_unittest.cc
@@ -49,6 +49,7 @@ #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/events/event_utils.h" #include "ui/views/controls/label.h" #include "ui/views/controls/textfield/textfield.h"
diff --git a/ash/app_list/views/assistant/assistant_dialog_plate.cc b/ash/app_list/views/assistant/assistant_dialog_plate.cc index 149e75a2..703433a 100644 --- a/ash/app_list/views/assistant/assistant_dialog_plate.cc +++ b/ash/app_list/views/assistant/assistant_dialog_plate.cc
@@ -24,6 +24,7 @@ #include "chromeos/ui/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_palette.h"
diff --git a/ash/app_list/views/assistant/assistant_main_stage.cc b/ash/app_list/views/assistant/assistant_main_stage.cc index c5fc998..70786b6 100644 --- a/ash/app_list/views/assistant/assistant_main_stage.cc +++ b/ash/app_list/views/assistant/assistant_main_stage.cc
@@ -23,6 +23,7 @@ #include "base/bind.h" #include "base/time/time.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animator.h" #include "ui/gfx/canvas.h"
diff --git a/ash/app_list/views/assistant/assistant_main_view.cc b/ash/app_list/views/assistant/assistant_main_view.cc index e7c76f38..10b22ff 100644 --- a/ash/app_list/views/assistant/assistant_main_view.cc +++ b/ash/app_list/views/assistant/assistant_main_view.cc
@@ -18,6 +18,7 @@ #include "ash/public/cpp/app_list/app_list_features.h" #include "ash/public/cpp/assistant/controller/assistant_ui_controller.h" #include "ash/search_box/search_box_constants.h" +#include "ui/compositor/layer.h" #include "ui/views/layout/box_layout.h" namespace ash {
diff --git a/ash/app_list/views/assistant/assistant_page_view.cc b/ash/app_list/views/assistant/assistant_page_view.cc index e193692..fe82930f 100644 --- a/ash/app_list/views/assistant/assistant_page_view.cc +++ b/ash/app_list/views/assistant/assistant_page_view.cc
@@ -27,6 +27,7 @@ #include "base/strings/utf_string_conversions.h" #include "ui/base/l10n/l10n_util.h" #include "ui/compositor/animation_throughput_reporter.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/compositor_extra/shadow.h" #include "ui/views/background.h"
diff --git a/ash/app_list/views/contents_view.cc b/ash/app_list/views/contents_view.cc index 29107e6..5b27c0e 100644 --- a/ash/app_list/views/contents_view.cc +++ b/ash/app_list/views/contents_view.cc
@@ -27,6 +27,7 @@ #include "base/notreached.h" #include "base/numerics/ranges.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display.h"
diff --git a/ash/app_list/views/folder_header_view.cc b/ash/app_list/views/folder_header_view.cc index d2e2cd9..8153fba5 100644 --- a/ash/app_list/views/folder_header_view.cc +++ b/ash/app_list/views/folder_header_view.cc
@@ -18,6 +18,7 @@ #include "base/metrics/histogram_macros.h" #include "base/strings/utf_string_conversions.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/text_elider.h"
diff --git a/ash/app_list/views/ghost_image_view.cc b/ash/app_list/views/ghost_image_view.cc index c24bd29..d300978 100644 --- a/ash/app_list/views/ghost_image_view.cc +++ b/ash/app_list/views/ghost_image_view.cc
@@ -12,6 +12,7 @@ #include "ash/app_list/views/app_list_item_view.h" #include "ash/public/cpp/app_list/app_list_config.h" #include "third_party/skia/include/core/SkPaint.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/animation/tween.h" #include "ui/gfx/canvas.h"
diff --git a/ash/app_list/views/search_box_view.cc b/ash/app_list/views/search_box_view.cc index b4d2a0f..985042e8 100644 --- a/ash/app_list/views/search_box_view.cc +++ b/ash/app_list/views/search_box_view.cc
@@ -39,6 +39,7 @@ #include "ui/base/ime/composition_text.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/events/event.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_palette.h"
diff --git a/ash/app_list/views/search_result_page_anchored_dialog.cc b/ash/app_list/views/search_result_page_anchored_dialog.cc index c6059f5..8aa01729e 100644 --- a/ash/app_list/views/search_result_page_anchored_dialog.cc +++ b/ash/app_list/views/search_result_page_anchored_dialog.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h"
diff --git a/ash/app_list/views/search_result_view.cc b/ash/app_list/views/search_result_view.cc index af7f15c0..556464d 100644 --- a/ash/app_list/views/search_result_view.cc +++ b/ash/app_list/views/search_result_view.cc
@@ -30,6 +30,7 @@ #include "ui/gfx/font.h" #include "ui/gfx/image/image_skia_operations.h" #include "ui/gfx/render_text.h" +#include "ui/gfx/skia_util.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/controls/image_view.h" #include "ui/views/controls/menu/menu_runner.h"
diff --git a/ash/app_list/views/suggestion_chip_container_view.cc b/ash/app_list/views/suggestion_chip_container_view.cc index 2ab468b8..1f2f818 100644 --- a/ash/app_list/views/suggestion_chip_container_view.cc +++ b/ash/app_list/views/suggestion_chip_container_view.cc
@@ -18,6 +18,7 @@ #include "ash/public/cpp/app_list/internal_app_id_constants.h" #include "base/bind.h" #include "base/callback.h" +#include "ui/compositor/layer.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/textfield/textfield.h" #include "ui/views/focus/focus_manager.h"
diff --git a/ash/app_list/views/top_icon_animation_view.cc b/ash/app_list/views/top_icon_animation_view.cc index 89e6477..0b062d39 100644 --- a/ash/app_list/views/top_icon_animation_view.cc +++ b/ash/app_list/views/top_icon_animation_view.cc
@@ -4,11 +4,15 @@ #include "ash/app_list/views/top_icon_animation_view.h" +#include <memory> +#include <utility> + #include "ash/app_list/views/app_list_item_view.h" #include "ash/app_list/views/apps_grid_view.h" #include "ash/public/cpp/app_list/app_list_color_provider.h" #include "ash/public/cpp/app_list/app_list_config.h" #include "base/threading/thread_task_runner_handle.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/image/image_skia_operations.h" #include "ui/views/controls/image_view.h"
diff --git a/ash/app_menu/notification_item_view.cc b/ash/app_menu/notification_item_view.cc index 1f8dbfd..4bce2740 100644 --- a/ash/app_menu/notification_item_view.cc +++ b/ash/app_menu/notification_item_view.cc
@@ -5,6 +5,7 @@ #include "ash/app_menu/notification_item_view.h" #include "ash/public/cpp/app_menu_constants.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/image/image.h" #include "ui/gfx/text_elider.h"
diff --git a/ash/app_menu/notification_menu_view_unittest.cc b/ash/app_menu/notification_menu_view_unittest.cc index c4a40af..cd0cd066 100644 --- a/ash/app_menu/notification_menu_view_unittest.cc +++ b/ash/app_menu/notification_menu_view_unittest.cc
@@ -10,6 +10,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/base_event_utils.h" #include "ui/events/test/event_generator.h"
diff --git a/ash/assistant/assistant_screen_context_controller_impl.cc b/ash/assistant/assistant_screen_context_controller_impl.cc index 2f3f68f..83f3b94c 100644 --- a/ash/assistant/assistant_screen_context_controller_impl.cc +++ b/ash/assistant/assistant_screen_context_controller_impl.cc
@@ -26,6 +26,7 @@ #include "mojo/public/cpp/bindings/receiver.h" #include "ui/accessibility/ax_assistant_structure.h" #include "ui/aura/client/aura_constants.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/gfx/codec/jpeg_codec.h" #include "ui/gfx/skbitmap_operations.h"
diff --git a/ash/assistant/ui/main_stage/animated_container_view.cc b/ash/assistant/ui/main_stage/animated_container_view.cc index 3aef32d..22e81f3 100644 --- a/ash/assistant/ui/main_stage/animated_container_view.cc +++ b/ash/assistant/ui/main_stage/animated_container_view.cc
@@ -13,6 +13,7 @@ #include "ash/public/cpp/assistant/controller/assistant_interaction_controller.h" #include "chromeos/services/assistant/public/cpp/features.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/views/metadata/metadata_impl_macros.h"
diff --git a/ash/assistant/ui/main_stage/assistant_footer_view.cc b/ash/assistant/ui/main_stage/assistant_footer_view.cc index 4dce6a9..604fe35c 100644 --- a/ash/assistant/ui/main_stage/assistant_footer_view.cc +++ b/ash/assistant/ui/main_stage/assistant_footer_view.cc
@@ -15,6 +15,7 @@ #include "base/bind.h" #include "base/time/time.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animator.h" #include "ui/views/layout/fill_layout.h"
diff --git a/ash/assistant/ui/main_stage/assistant_progress_indicator.cc b/ash/assistant/ui/main_stage/assistant_progress_indicator.cc index b8c1f32..20b62449 100644 --- a/ash/assistant/ui/main_stage/assistant_progress_indicator.cc +++ b/ash/assistant/ui/main_stage/assistant_progress_indicator.cc
@@ -11,6 +11,7 @@ #include "ash/public/cpp/app_list/app_list_features.h" #include "base/bind.h" #include "base/time/time.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h"
diff --git a/ash/assistant/ui/main_stage/assistant_text_element_view.cc b/ash/assistant/ui/main_stage/assistant_text_element_view.cc index 4913803..3852b92 100644 --- a/ash/assistant/ui/main_stage/assistant_text_element_view.cc +++ b/ash/assistant/ui/main_stage/assistant_text_element_view.cc
@@ -10,6 +10,7 @@ #include "ash/assistant/ui/assistant_ui_constants.h" #include "ash/assistant/ui/main_stage/assistant_ui_element_view_animator.h" #include "base/strings/utf_string_conversions.h" +#include "ui/compositor/layer.h" #include "ui/views/background.h" #include "ui/views/controls/label.h" #include "ui/views/layout/fill_layout.h"
diff --git a/ash/assistant/ui/main_stage/assistant_ui_element_view_animator.cc b/ash/assistant/ui/main_stage/assistant_ui_element_view_animator.cc index d7b11ef9..f177f429 100644 --- a/ash/assistant/ui/main_stage/assistant_ui_element_view_animator.cc +++ b/ash/assistant/ui/main_stage/assistant_ui_element_view_animator.cc
@@ -9,6 +9,7 @@ #include "ash/assistant/util/animation_util.h" #include "base/metrics/histogram_functions.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/gfx/animation/tween.h" namespace ash {
diff --git a/ash/assistant/ui/main_stage/suggestion_container_view.cc b/ash/assistant/ui/main_stage/suggestion_container_view.cc index af77d03..e9e4d623 100644 --- a/ash/assistant/ui/main_stage/suggestion_container_view.cc +++ b/ash/assistant/ui/main_stage/suggestion_container_view.cc
@@ -24,6 +24,7 @@ #include "base/bind.h" #include "base/metrics/histogram_functions.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/views/layout/box_layout.h" #include "ui/views/metadata/metadata_impl_macros.h"
diff --git a/ash/assistant/ui/main_stage/ui_element_container_view.cc b/ash/assistant/ui/main_stage/ui_element_container_view.cc index 0e2cf45..3ef2025 100644 --- a/ash/assistant/ui/main_stage/ui_element_container_view.cc +++ b/ash/assistant/ui/main_stage/ui_element_container_view.cc
@@ -22,6 +22,7 @@ #include "cc/base/math_util.h" #include "chromeos/services/assistant/public/cpp/features.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/views/background.h" #include "ui/views/border.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/assistant/util/animation_util.cc b/ash/assistant/util/animation_util.cc index 958cb1d..6583e8f39 100644 --- a/ash/assistant/util/animation_util.cc +++ b/ash/assistant/util/animation_util.cc
@@ -8,6 +8,7 @@ #include "base/time/time.h" #include "ui/compositor/animation_throughput_reporter.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_animation_sequence.h"
diff --git a/ash/autotest_private_api_utils.cc b/ash/autotest_private_api_utils.cc index 9095adbe..281f9e19 100644 --- a/ash/autotest_private_api_utils.cc +++ b/ash/autotest_private_api_utils.cc
@@ -12,6 +12,7 @@ #include "base/callback_helpers.h" #include "base/optional.h" #include "base/scoped_observation.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" namespace ash {
diff --git a/ash/capture_mode/capture_label_view.cc b/ash/capture_mode/capture_label_view.cc index 91ae15f8..61b93201 100644 --- a/ash/capture_mode/capture_label_view.cc +++ b/ash/capture_mode/capture_label_view.cc
@@ -15,6 +15,7 @@ #include "base/task_runner.h" #include "ui/base/l10n/l10n_util.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/capture_mode/capture_mode_bar_view.cc b/ash/capture_mode/capture_mode_bar_view.cc index 650dacef..f5704b1 100644 --- a/ash/capture_mode/capture_mode_bar_view.cc +++ b/ash/capture_mode/capture_mode_bar_view.cc
@@ -22,6 +22,7 @@ #include "base/bind.h" #include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/background.h"
diff --git a/ash/capture_mode/capture_mode_controller.cc b/ash/capture_mode/capture_mode_controller.cc index 20ef70e..67bb0b49 100644 --- a/ash/capture_mode/capture_mode_controller.cc +++ b/ash/capture_mode/capture_mode_controller.cc
@@ -48,6 +48,7 @@ #include "ui/base/clipboard/clipboard_buffer.h" #include "ui/base/clipboard/scoped_clipboard_writer.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/display/types/display_constants.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h"
diff --git a/ash/capture_mode/capture_mode_settings_view.cc b/ash/capture_mode/capture_mode_settings_view.cc index 5155315..722edafd 100644 --- a/ash/capture_mode/capture_mode_settings_view.cc +++ b/ash/capture_mode/capture_mode_settings_view.cc
@@ -14,6 +14,7 @@ #include "ash/style/ash_color_provider.h" #include "base/bind.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/views/background.h" #include "ui/views/controls/button/toggle_button.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/capture_mode/capture_mode_unittests.cc b/ash/capture_mode/capture_mode_unittests.cc index eee7256d..9695c215 100644 --- a/ash/capture_mode/capture_mode_unittests.cc +++ b/ash/capture_mode/capture_mode_unittests.cc
@@ -60,6 +60,7 @@ #include "ui/base/clipboard/clipboard.h" #include "ui/base/clipboard/clipboard_buffer.h" #include "ui/compositor/compositor.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/types/display_constants.h" #include "ui/events/keycodes/keyboard_codes_posix.h"
diff --git a/ash/capture_mode/capture_window_observer.cc b/ash/capture_mode/capture_window_observer.cc index 774ee1e8..b1882b30 100644 --- a/ash/capture_mode/capture_window_observer.cc +++ b/ash/capture_mode/capture_window_observer.cc
@@ -10,6 +10,7 @@ #include "ash/public/cpp/shell_window_ids.h" #include "ash/public/cpp/window_finder.h" #include "ash/shell.h" +#include "ui/compositor/layer.h" #include "ui/wm/public/activation_client.h" namespace ash {
diff --git a/ash/capture_mode/video_recording_watcher.cc b/ash/capture_mode/video_recording_watcher.cc index 0806803..a4b2d99 100644 --- a/ash/capture_mode/video_recording_watcher.cc +++ b/ash/capture_mode/video_recording_watcher.cc
@@ -22,6 +22,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_tree_host.h" #include "ui/base/cursor/cursor_lookup.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/display/screen.h" #include "ui/gfx/canvas.h"
diff --git a/ash/clipboard/clipboard_nudge.cc b/ash/clipboard/clipboard_nudge.cc index 179e274..09a35b0 100644 --- a/ash/clipboard/clipboard_nudge.cc +++ b/ash/clipboard/clipboard_nudge.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ash/clipboard/clipboard_nudge.h" + #include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/assistant/assistant_state.h" #include "ash/public/cpp/shelf_config.h" @@ -15,6 +16,7 @@ #include "ash/style/ash_color_provider.h" #include "ui/base/l10n/l10n_util.h" #include "ui/chromeos/events/keyboard_layout_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/paint_vector_icon.h"
diff --git a/ash/clipboard/clipboard_nudge_controller.cc b/ash/clipboard/clipboard_nudge_controller.cc index 50cf857..d6a2a7f 100644 --- a/ash/clipboard/clipboard_nudge_controller.cc +++ b/ash/clipboard/clipboard_nudge_controller.cc
@@ -20,6 +20,7 @@ #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" #include "ui/base/clipboard/clipboard_monitor.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" namespace ash {
diff --git a/ash/clipboard/clipboard_nudge_controller_unittest.cc b/ash/clipboard/clipboard_nudge_controller_unittest.cc index b212d586f..6ce63d0a 100644 --- a/ash/clipboard/clipboard_nudge_controller_unittest.cc +++ b/ash/clipboard/clipboard_nudge_controller_unittest.cc
@@ -19,6 +19,7 @@ #include "chromeos/crosapi/mojom/clipboard_history.mojom.h" #include "ui/base/clipboard/clipboard_data.h" #include "ui/base/clipboard/clipboard_non_backed.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/views/widget/widget_observer.h"
diff --git a/ash/clipboard/views/clipboard_history_delete_button.cc b/ash/clipboard/views/clipboard_history_delete_button.cc index dfc3dd42..6a1268b 100644 --- a/ash/clipboard/views/clipboard_history_delete_button.cc +++ b/ash/clipboard/views/clipboard_history_delete_button.cc
@@ -10,6 +10,7 @@ #include "ash/style/ash_color_provider.h" #include "ash/style/scoped_light_mode_as_default.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/animation/ink_drop.h" #include "ui/views/controls/highlight_path_generator.h"
diff --git a/ash/content/scanning/resources/scan_done_section.html b/ash/content/scanning/resources/scan_done_section.html index 3efd02f..4ca1af0 100644 --- a/ash/content/scanning/resources/scan_done_section.html +++ b/ash/content/scanning/resources/scan_done_section.html
@@ -58,6 +58,14 @@ inner-h-t-m-l="[[fileSavedTextContent_]]"> </span> </div> +<div class="container" on-click="showFileInLocation_" > + <span id="showInFolderButtonLabel" class="label" aria-hidden="true"> + [[i18n('showInFolderButtonLabel')]] + </span> + <cr-icon-button id="showInFolderButton" class="button" + iron-icon="cr:open-in-new" aria-labelledby="showInFolderButtonLabel"> + </cr-icon-button> +</div> <div class="container" hidden="[[!showEditButton_]]" on-click="openMediaApp_" > <span id="editButtonLabel" class="label" aria-hidden="true">
diff --git a/ash/content/scanning/scanning_ui.cc b/ash/content/scanning/scanning_ui.cc index 1443222c..e9c2d75e 100644 --- a/ash/content/scanning/scanning_ui.cc +++ b/ash/content/scanning/scanning_ui.cc
@@ -104,6 +104,7 @@ {"scannersLoadingText", IDS_SCANNING_APP_SCANNERS_LOADING_TEXT}, {"scanningImagesAriaLabel", IDS_SCANNING_APP_SCANNING_IMAGES_ARIA_LABEL}, {"selectFolderOption", IDS_SCANNING_APP_SELECT_FOLDER_OPTION}, + {"showInFolderButtonLabel", IDS_SCANNING_APP_SHOW_IN_FOLDER_BUTTON_LABEL}, {"sourceDropdownLabel", IDS_SCANNING_APP_SOURCE_DROPDOWN_LABEL}, {"startScanFailedToast", IDS_SCANNING_APP_START_SCAN_FAILED_TOAST}, {"twoSidedDocFeederOptionText",
diff --git a/ash/content/shimless_rma/resources/BUILD.gn b/ash/content/shimless_rma/resources/BUILD.gn index 39c64e8..5ce38d2 100644 --- a/ash/content/shimless_rma/resources/BUILD.gn +++ b/ash/content/shimless_rma/resources/BUILD.gn
@@ -11,7 +11,10 @@ preprocessed_dir = "preprocessed" preprocessed_gen_manifest = "preprocessed_gen_manifest.json" -polymer_element_files = [ "shimless_rma.js" ] +polymer_element_files = [ + "shimless_rma.js", + "shimless_rma_shared_css.js", +] generate_grd("build_grd") { input_files = [
diff --git a/ash/content/shimless_rma/resources/index.html b/ash/content/shimless_rma/resources/index.html index fbd7ea6..5bb94ed6b 100644 --- a/ash/content/shimless_rma/resources/index.html +++ b/ash/content/shimless_rma/resources/index.html
@@ -11,8 +11,9 @@ <shimless-rma></shimless-rma> <script type="module" src="shimless_rma.js"></script> + <link rel="stylesheet" src="shimless_rma_shared_css.js"></script> <!-- Below mojo script required to run browser tests --> <script src="chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js"> </script> </body> -</html> \ No newline at end of file +</html>
diff --git a/ash/content/shimless_rma/resources/shimless_rma_shared_css.html b/ash/content/shimless_rma/resources/shimless_rma_shared_css.html new file mode 100644 index 0000000..83a1683b --- /dev/null +++ b/ash/content/shimless_rma/resources/shimless_rma_shared_css.html
@@ -0,0 +1,11 @@ +<link rel="stylesheet" + href="chrome://resources/chromeos/colors/cros_colors.generated.css"> +<link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> +<link rel="stylesheet" href="chrome://resources/css/md_colors.css"> +<template> + <style include="cr-shared-style"> + html { + background-color: var(--cros-bg-color); + } + </style> +</template> \ No newline at end of file
diff --git a/ash/content/shimless_rma/resources/shimless_rma_shared_css.js b/ash/content/shimless_rma/resources/shimless_rma_shared_css.js new file mode 100644 index 0000000..86d1a0d --- /dev/null +++ b/ash/content/shimless_rma/resources/shimless_rma_shared_css.js
@@ -0,0 +1,13 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'chrome://resources/cr_elements/shared_style_css.m.js'; +import 'chrome://resources/cr_elements/shared_vars_css.m.js'; +import 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +const template = document.createElement('template'); +template.innerHTML = ` +<dom-module id="shimless-rma-shared">{__html_template__}</dom-module> +`; +document.body.appendChild(template.content.cloneNode(true));
diff --git a/ash/debug.cc b/ash/debug.cc index af78fdf..c2e81055 100644 --- a/ash/debug.cc +++ b/ash/debug.cc
@@ -20,6 +20,7 @@ #include "ui/aura/window_tree_host.h" #include "ui/compositor/compositor.h" #include "ui/compositor/debug_utils.h" +#include "ui/compositor/layer.h" #include "ui/views/debug_utils.h" #include "ui/views/widget/widget.h"
diff --git a/ash/display/display_alignment_indicator.cc b/ash/display/display_alignment_indicator.cc index dcc6c18..a40cb17 100644 --- a/ash/display/display_alignment_indicator.cc +++ b/ash/display/display_alignment_indicator.cc
@@ -10,6 +10,7 @@ #include "ash/shell.h" #include "base/memory/ptr_util.h" #include "base/strings/utf_string_conversions.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/image/image_skia_operations.h"
diff --git a/ash/display/mirror_window_controller.cc b/ash/display/mirror_window_controller.cc index 0fb6998..0aa3d73 100644 --- a/ash/display/mirror_window_controller.cc +++ b/ash/display/mirror_window_controller.cc
@@ -25,6 +25,7 @@ #include "ui/aura/window_tree_host.h" #include "ui/base/layout.h" #include "ui/base/ui_base_features.h" +#include "ui/compositor/layer.h" #include "ui/display/display_layout.h" #include "ui/display/display_transform.h" #include "ui/display/manager/display_layout_store.h"
diff --git a/ash/display/root_window_transformers_unittest.cc b/ash/display/root_window_transformers_unittest.cc index 3f58eef..0400707 100644 --- a/ash/display/root_window_transformers_unittest.cc +++ b/ash/display/root_window_transformers_unittest.cc
@@ -21,6 +21,7 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_tracker.h" #include "ui/aura/window_tree_host.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display.h"
diff --git a/ash/display/shared_display_edge_indicator.cc b/ash/display/shared_display_edge_indicator.cc index 2703652c..d86834d 100644 --- a/ash/display/shared_display_edge_indicator.cc +++ b/ash/display/shared_display_edge_indicator.cc
@@ -10,6 +10,7 @@ #include "third_party/skia/include/core/SkColor.h" #include "ui/aura/client/screen_position_client.h" #include "ui/aura/window_event_dispatcher.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/gfx/animation/animation_container.h"
diff --git a/ash/display/touch_calibrator_view.cc b/ash/display/touch_calibrator_view.cc index b75bf87c..3428b1da6 100644 --- a/ash/display/touch_calibrator_view.cc +++ b/ash/display/touch_calibrator_view.cc
@@ -12,6 +12,7 @@ #include "base/memory/ptr_util.h" #include "ui/aura/window.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/animation/throb_animation.h" #include "ui/gfx/canvas.h"
diff --git a/ash/drag_drop/tab_drag_drop_delegate.cc b/ash/drag_drop/tab_drag_drop_delegate.cc index c546105..1d337426 100644 --- a/ash/drag_drop/tab_drag_drop_delegate.cc +++ b/ash/drag_drop/tab_drag_drop_delegate.cc
@@ -21,6 +21,7 @@ #include "ui/base/clipboard/clipboard_format_type.h" #include "ui/base/clipboard/custom_data_helper.h" #include "ui/base/dragdrop/os_exchange_data.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/geometry/rect.h"
diff --git a/ash/drag_drop/tab_drag_drop_delegate_unittest.cc b/ash/drag_drop/tab_drag_drop_delegate_unittest.cc index 6607a06..45c63eb8 100644 --- a/ash/drag_drop/tab_drag_drop_delegate_unittest.cc +++ b/ash/drag_drop/tab_drag_drop_delegate_unittest.cc
@@ -29,6 +29,7 @@ #include "ui/base/clipboard/clipboard_format_type.h" #include "ui/base/clipboard/custom_data_helper.h" #include "ui/base/dragdrop/os_exchange_data.h" +#include "ui/compositor/layer.h" #include "ui/compositor/test/test_utils.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/geometry/vector2d.h"
diff --git a/ash/fast_ink/fast_ink_host.cc b/ash/fast_ink/fast_ink_host.cc index 4f6f248..02d7d34b 100644 --- a/ash/fast_ink/fast_ink_host.cc +++ b/ash/fast_ink/fast_ink_host.cc
@@ -28,6 +28,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_observer.h" #include "ui/aura/window_tree_host.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/dip_util.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect_conversions.h"
diff --git a/ash/fast_ink/view_tree_host_root_view.cc b/ash/fast_ink/view_tree_host_root_view.cc index 325c015..da5cfed 100644 --- a/ash/fast_ink/view_tree_host_root_view.cc +++ b/ash/fast_ink/view_tree_host_root_view.cc
@@ -25,6 +25,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_observer.h" #include "ui/aura/window_tree_host.h" +#include "ui/compositor/compositor.h" #include "ui/compositor/paint_context.h" #include "ui/display/display.h" #include "ui/display/screen.h"
diff --git a/ash/frame/default_frame_header_unittest.cc b/ash/frame/default_frame_header_unittest.cc index 28b5ccf..2e19583 100644 --- a/ash/frame/default_frame_header_unittest.cc +++ b/ash/frame/default_frame_header_unittest.cc
@@ -18,6 +18,7 @@ #include "chromeos/ui/frame/caption_buttons/frame_caption_button_container_view.h" #include "chromeos/ui/frame/frame_header.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/gfx/animation/animation_test_api.h" #include "ui/gfx/color_utils.h"
diff --git a/ash/frame/header_view.cc b/ash/frame/header_view.cc index 3d9f48d..30be384 100644 --- a/ash/frame/header_view.cc +++ b/ash/frame/header_view.cc
@@ -17,6 +17,7 @@ #include "chromeos/ui/frame/default_frame_header.h" #include "ui/aura/client/aura_constants.h" #include "ui/base/ui_base_features.h" +#include "ui/compositor/layer.h" #include "ui/views/controls/image_view.h" #include "ui/views/metadata/metadata_impl_macros.h" #include "ui/views/widget/widget.h"
diff --git a/ash/frame/non_client_frame_view_ash_unittest.cc b/ash/frame/non_client_frame_view_ash_unittest.cc index b1b0f64e..939a01bf 100644 --- a/ash/frame/non_client_frame_view_ash_unittest.cc +++ b/ash/frame/non_client_frame_view_ash_unittest.cc
@@ -34,6 +34,7 @@ #include "ui/base/accelerators/accelerator.h" #include "ui/base/accelerators/test_accelerator_target.h" #include "ui/base/ui_base_features.h" +#include "ui/compositor/layer.h" #include "ui/compositor/test/draw_waiter_for_test.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/geometry/rect.h"
diff --git a/ash/frame_throttler/frame_throttling_controller.cc b/ash/frame_throttler/frame_throttling_controller.cc index cbb8ba2..f8f124ed 100644 --- a/ash/frame_throttler/frame_throttling_controller.cc +++ b/ash/frame_throttler/frame_throttling_controller.cc
@@ -17,6 +17,7 @@ #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" #include "ui/aura/window_tree_host.h" +#include "ui/compositor/compositor.h" namespace ash {
diff --git a/ash/highlighter/highlighter_result_view.cc b/ash/highlighter/highlighter_result_view.cc index f396601d..e2811b5 100644 --- a/ash/highlighter/highlighter_result_view.cc +++ b/ash/highlighter/highlighter_result_view.cc
@@ -12,6 +12,7 @@ #include "ash/shell.h" #include "base/bind.h" #include "base/timer/timer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/geometry/rect_conversions.h"
diff --git a/ash/highlighter/highlighter_view.cc b/ash/highlighter/highlighter_view.cc index fd67e03..0944fde 100644 --- a/ash/highlighter/highlighter_view.cc +++ b/ash/highlighter/highlighter_view.cc
@@ -14,6 +14,7 @@ #include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkTypes.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/events/base_event_utils.h" #include "ui/gfx/canvas.h"
diff --git a/ash/hud_display/fps_graph_page_view.cc b/ash/hud_display/fps_graph_page_view.cc index 9628ea6..fd65896 100644 --- a/ash/hud_display/fps_graph_page_view.cc +++ b/ash/hud_display/fps_graph_page_view.cc
@@ -14,6 +14,7 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "ui/aura/window_tree_host.h" +#include "ui/compositor/compositor.h" #include "ui/gfx/canvas.h" #include "ui/gfx/presentation_feedback.h" #include "ui/views/metadata/metadata_impl_macros.h"
diff --git a/ash/hud_display/hud_display.cc b/ash/hud_display/hud_display.cc index d9ba5e54..41640cb 100644 --- a/ash/hud_display/hud_display.cc +++ b/ash/hud_display/hud_display.cc
@@ -20,6 +20,7 @@ #include "components/vector_icons/vector_icons.h" #include "ui/aura/window.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/events/base_event_utils.h" #include "ui/views/background.h" #include "ui/views/border.h"
diff --git a/ash/in_session_auth/auth_dialog_contents_view.cc b/ash/in_session_auth/auth_dialog_contents_view.cc index dae5553..8760fcae 100644 --- a/ash/in_session_auth/auth_dialog_contents_view.cc +++ b/ash/in_session_auth/auth_dialog_contents_view.cc
@@ -24,6 +24,7 @@ #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/background.h" #include "ui/views/bubble/bubble_border.h"
diff --git a/ash/keyboard/ui/container_floating_behavior.cc b/ash/keyboard/ui/container_floating_behavior.cc index cd347523..8375176 100644 --- a/ash/keyboard/ui/container_floating_behavior.cc +++ b/ash/keyboard/ui/container_floating_behavior.cc
@@ -10,6 +10,7 @@ #include "ash/keyboard/ui/drag_descriptor.h" #include "base/optional.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display.h" #include "ui/events/event.h"
diff --git a/ash/keyboard/ui/container_full_width_behavior.cc b/ash/keyboard/ui/container_full_width_behavior.cc index 1135c13..f7d3a1e 100644 --- a/ash/keyboard/ui/container_full_width_behavior.cc +++ b/ash/keyboard/ui/container_full_width_behavior.cc
@@ -5,6 +5,7 @@ #include "ash/keyboard/ui/container_full_width_behavior.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/transform.h" #include "ui/wm/core/window_animations.h"
diff --git a/ash/keyboard/ui/keyboard_ui_controller.cc b/ash/keyboard/ui/keyboard_ui_controller.cc index 564c895..0899db0 100644 --- a/ash/keyboard/ui/keyboard_ui_controller.cc +++ b/ash/keyboard/ui/keyboard_ui_controller.cc
@@ -36,6 +36,7 @@ #include "ui/base/hit_test.h" #include "ui/base/ime/text_input_client.h" #include "ui/base/ime/text_input_flags.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/types/display_constants.h"
diff --git a/ash/keyboard/ui/keyboard_ui_controller_unittest.cc b/ash/keyboard/ui/keyboard_ui_controller_unittest.cc index 9d1fe16..8a8a8832 100644 --- a/ash/keyboard/ui/keyboard_ui_controller_unittest.cc +++ b/ash/keyboard/ui/keyboard_ui_controller_unittest.cc
@@ -34,6 +34,7 @@ #include "ui/base/ime/text_input_client.h" #include "ui/base/ui_base_switches.h" #include "ui/compositor/compositor.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_type.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/test/layer_animator_test_controller.h"
diff --git a/ash/login/login_screen_test_api.cc b/ash/login/login_screen_test_api.cc index ba3877fb..ea7ee43 100644 --- a/ash/login/login_screen_test_api.cc +++ b/ash/login/login_screen_test_api.cc
@@ -28,6 +28,7 @@ #include "base/check.h" #include "base/run_loop.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/compositor/layer.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/geometry/rect.h" #include "ui/views/controls/button/label_button.h"
diff --git a/ash/login/ui/access_code_input.cc b/ash/login/ui/access_code_input.cc index 283a78f3..c514209 100644 --- a/ash/login/ui/access_code_input.cc +++ b/ash/login/ui/access_code_input.cc
@@ -13,6 +13,7 @@ #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/events/keycodes/dom/dom_code.h" #include "ui/gfx/range/range.h" #include "ui/views/accessibility/view_accessibility.h"
diff --git a/ash/login/ui/arrow_button_view.cc b/ash/login/ui/arrow_button_view.cc index 08082135..2dde716 100644 --- a/ash/login/ui/arrow_button_view.cc +++ b/ash/login/ui/arrow_button_view.cc
@@ -11,6 +11,7 @@ #include "base/time/time.h" #include "cc/paint/paint_flags.h" #include "ui/accessibility/ax_node_data.h" +#include "ui/compositor/layer.h" #include "ui/gfx/animation/multi_animation.h" #include "ui/gfx/animation/tween.h" #include "ui/gfx/canvas.h"
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index ee8dccd9..d0a7ff2 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -63,6 +63,7 @@ #include "ui/base/user_activity/user_activity_detector.h" #include "ui/base/user_activity/user_activity_observer.h" #include "ui/chromeos/devicetype_utils.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/manager/display_manager.h" #include "ui/display/manager/managed_display_info.h"
diff --git a/ash/login/ui/lock_screen_media_controls_view.cc b/ash/login/ui/lock_screen_media_controls_view.cc index f08c994e..ef7068d2 100644 --- a/ash/login/ui/lock_screen_media_controls_view.cc +++ b/ash/login/ui/lock_screen_media_controls_view.cc
@@ -25,6 +25,7 @@ #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/font.h" #include "ui/gfx/font_list.h"
diff --git a/ash/login/ui/lock_screen_media_controls_view_unittest.cc b/ash/login/ui/lock_screen_media_controls_view_unittest.cc index 9dbbeddb..5fdc575 100644 --- a/ash/login/ui/lock_screen_media_controls_view_unittest.cc +++ b/ash/login/ui/lock_screen_media_controls_view_unittest.cc
@@ -19,6 +19,7 @@ #include "services/media_session/public/cpp/test/test_media_controller.h" #include "services/media_session/public/mojom/media_session.mojom.h" #include "ui/accessibility/ax_enums.mojom.h" +#include "ui/compositor/layer.h" #include "ui/events/base_event_utils.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/paint_vector_icon.h"
diff --git a/ash/login/ui/login_auth_user_view.cc b/ash/login/ui/login_auth_user_view.cc index dbfa967..ae2460c 100644 --- a/ash/login/ui/login_auth_user_view.cc +++ b/ash/login/ui/login_auth_user_view.cc
@@ -44,6 +44,7 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/login/ui/login_big_user_view.cc b/ash/login/ui/login_big_user_view.cc index bc37837..860407c 100644 --- a/ash/login/ui/login_big_user_view.cc +++ b/ash/login/ui/login_big_user_view.cc
@@ -9,6 +9,7 @@ #include "ash/style/default_color_constants.h" #include "ash/wallpaper/wallpaper_controller_impl.h" #include "components/account_id/account_id.h" +#include "ui/compositor/layer.h" #include "ui/views/background.h" #include "ui/views/layout/fill_layout.h"
diff --git a/ash/login/ui/login_expanded_public_account_view.cc b/ash/login/ui/login_expanded_public_account_view.cc index f07444e..51df61ac 100644 --- a/ash/login/ui/login_expanded_public_account_view.cc +++ b/ash/login/ui/login_expanded_public_account_view.cc
@@ -28,6 +28,7 @@ #include "components/prefs/pref_service.h" #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/border.h"
diff --git a/ash/login/ui/login_password_view.cc b/ash/login/ui/login_password_view.cc index 5f93f98..3010ec0 100644 --- a/ash/login/ui/login_password_view.cc +++ b/ash/login/ui/login_password_view.cc
@@ -23,6 +23,7 @@ #include "base/timer/timer.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/events/event_constants.h"
diff --git a/ash/login/ui/login_public_account_user_view.cc b/ash/login/ui/login_public_account_user_view.cc index 96ea7b86..3b225300 100644 --- a/ash/login/ui/login_public_account_user_view.cc +++ b/ash/login/ui/login_public_account_user_view.cc
@@ -11,6 +11,7 @@ #include "ash/login/ui/login_display_style.h" #include "ash/login/ui/views_utils.h" #include "base/bind.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/login/ui/login_public_account_user_view_unittest.cc b/ash/login/ui/login_public_account_user_view_unittest.cc index c0772c0d..0e12dab5 100644 --- a/ash/login/ui/login_public_account_user_view_unittest.cc +++ b/ash/login/ui/login_public_account_user_view_unittest.cc
@@ -7,6 +7,7 @@ #include "ash/login/ui/login_test_utils.h" #include "ash/login/ui/login_user_view.h" #include "base/bind.h" +#include "ui/compositor/layer.h" #include "ui/events/test/event_generator.h" #include "ui/views/layout/box_layout.h" #include "ui/views/widget/widget.h"
diff --git a/ash/login/ui/login_user_view.cc b/ash/login/ui/login_user_view.cc index 9483e20..8b7fff3 100644 --- a/ash/login/ui/login_user_view.cc +++ b/ash/login/ui/login_user_view.cc
@@ -27,6 +27,7 @@ #include "components/user_manager/user_type.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/login/ui/pin_request_view.cc b/ash/login/ui/pin_request_view.cc index 24e8f59..d031a9b 100644 --- a/ash/login/ui/pin_request_view.cc +++ b/ash/login/ui/pin_request_view.cc
@@ -16,6 +16,7 @@ #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_analysis.h" #include "ui/gfx/color_utils.h"
diff --git a/ash/login/ui/scrollable_users_list_view.cc b/ash/login/ui/scrollable_users_list_view.cc index feb1ffd9..62a49748 100644 --- a/ash/login/ui/scrollable_users_list_view.cc +++ b/ash/login/ui/scrollable_users_list_view.cc
@@ -20,6 +20,7 @@ #include "base/numerics/ranges.h" #include "base/optional.h" #include "base/timer/timer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/screen.h" #include "ui/gfx/canvas.h"
diff --git a/ash/login/ui/system_label_button.cc b/ash/login/ui/system_label_button.cc index b5a85075..78f98661 100644 --- a/ash/login/ui/system_label_button.cc +++ b/ash/login/ui/system_label_button.cc
@@ -7,6 +7,7 @@ #include "ash/public/cpp/shelf_config.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/style/ash_color_provider.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/color_utils.h"
diff --git a/ash/media/media_notification_container_impl.cc b/ash/media/media_notification_container_impl.cc index fdb223b..bd83ef1c 100644 --- a/ash/media/media_notification_container_impl.cc +++ b/ash/media/media_notification_container_impl.cc
@@ -6,6 +6,7 @@ #include "components/media_message_center/media_notification_view_impl.h" #include "components/media_message_center/media_session_notification_item.h" +#include "ui/compositor/layer.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/message_center_constants.h" #include "ui/message_center/views/notification_control_buttons_view.h"
diff --git a/ash/multi_user/user_switch_animator.cc b/ash/multi_user/user_switch_animator.cc index 6908ab8..14a8ea9f 100644 --- a/ash/multi_user/user_switch_animator.cc +++ b/ash/multi_user/user_switch_animator.cc
@@ -16,6 +16,7 @@ #include "ash/wm/window_positioner.h" #include "base/bind.h" #include "ui/aura/client/aura_constants.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/perftests/ash_background_filter_blur_perftest.cc b/ash/perftests/ash_background_filter_blur_perftest.cc index 1bbdf3a5..287bc7a 100644 --- a/ash/perftests/ash_background_filter_blur_perftest.cc +++ b/ash/perftests/ash_background_filter_blur_perftest.cc
@@ -9,6 +9,7 @@ #include "base/timer/lap_timer.h" #include "testing/perf/perf_test.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/test/draw_waiter_for_test.h" namespace ash {
diff --git a/ash/public/cpp/external_arc/message_center/arc_notification_content_view.cc b/ash/public/cpp/external_arc/message_center/arc_notification_content_view.cc index 57d23227..d373e7db0 100644 --- a/ash/public/cpp/external_arc/message_center/arc_notification_content_view.cc +++ b/ash/public/cpp/external_arc/message_center/arc_notification_content_view.cc
@@ -9,7 +9,6 @@ #include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/external_arc/message_center/arc_notification_surface.h" #include "ash/public/cpp/external_arc/message_center/arc_notification_view.h" -// TODO(https://crbug.com/768439): Remove nogncheck when moved to ash. #include "base/auto_reset.h" #include "base/metrics/histogram_macros.h" #include "components/arc/metrics/arc_metrics_constants.h" @@ -18,6 +17,7 @@ #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/events/event_handler.h"
diff --git a/ash/public/cpp/external_arc/message_center/arc_notification_view_unittest.cc b/ash/public/cpp/external_arc/message_center/arc_notification_view_unittest.cc index 4841cc49..f69232a 100644 --- a/ash/public/cpp/external_arc/message_center/arc_notification_view_unittest.cc +++ b/ash/public/cpp/external_arc/message_center/arc_notification_view_unittest.cc
@@ -22,6 +22,7 @@ #include "ui/base/ime/dummy_text_input_client.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/text_input_client.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/event.h" #include "ui/events/event_utils.h"
diff --git a/ash/public/cpp/holding_space/holding_space_image.cc b/ash/public/cpp/holding_space/holding_space_image.cc index c5ff720..981a46a 100644 --- a/ash/public/cpp/holding_space/holding_space_image.cc +++ b/ash/public/cpp/holding_space/holding_space_image.cc
@@ -114,6 +114,7 @@ gfx::Size HoldingSpaceImage::GetMaxSizeForType(HoldingSpaceItem::Type type) { gfx::Size size; switch (type) { + case HoldingSpaceItem::Type::kArcDownload: case HoldingSpaceItem::Type::kDownload: case HoldingSpaceItem::Type::kNearbyShare: case HoldingSpaceItem::Type::kPinnedFile:
diff --git a/ash/public/cpp/holding_space/holding_space_item.cc b/ash/public/cpp/holding_space/holding_space_item.cc index 46e161a..b5212cf 100644 --- a/ash/public/cpp/holding_space/holding_space_item.cc +++ b/ash/public/cpp/holding_space/holding_space_item.cc
@@ -145,12 +145,13 @@ bool HoldingSpaceItem::IsScreenCapture() const { switch (type_) { - case HoldingSpaceItem::Type::kScreenshot: - case HoldingSpaceItem::Type::kScreenRecording: + case Type::kScreenRecording: + case Type::kScreenshot: return true; - case HoldingSpaceItem::Type::kDownload: - case HoldingSpaceItem::Type::kNearbyShare: - case HoldingSpaceItem::Type::kPinnedFile: + case Type::kArcDownload: + case Type::kDownload: + case Type::kNearbyShare: + case Type::kPinnedFile: return false; } }
diff --git a/ash/public/cpp/holding_space/holding_space_item.h b/ash/public/cpp/holding_space/holding_space_item.h index 358bcf4..ae8c26fb 100644 --- a/ash/public/cpp/holding_space/holding_space_item.h +++ b/ash/public/cpp/holding_space/holding_space_item.h
@@ -36,7 +36,8 @@ kDownload = 2, kNearbyShare = 3, kScreenRecording = 4, - kMaxValue = kScreenRecording, + kArcDownload = 5, + kMaxValue = kArcDownload, }; HoldingSpaceItem(const HoldingSpaceItem&) = delete;
diff --git a/ash/public/cpp/holding_space/holding_space_metrics.cc b/ash/public/cpp/holding_space/holding_space_metrics.cc index a6de74b3..acb3a76 100644 --- a/ash/public/cpp/holding_space/holding_space_metrics.cc +++ b/ash/public/cpp/holding_space/holding_space_metrics.cc
@@ -85,6 +85,8 @@ // values are persisted to histograms so should remain unchanged. std::string ItemTypeToString(HoldingSpaceItem::Type type) { switch (type) { + case HoldingSpaceItem::Type::kArcDownload: + return "ArcDownload"; case HoldingSpaceItem::Type::kDownload: return "Download"; case HoldingSpaceItem::Type::kPinnedFile:
diff --git a/ash/public/cpp/holding_space/holding_space_test_api.h b/ash/public/cpp/holding_space/holding_space_test_api.h index 0c9f6bb3..2bd64a21 100644 --- a/ash/public/cpp/holding_space/holding_space_test_api.h +++ b/ash/public/cpp/holding_space/holding_space_test_api.h
@@ -5,6 +5,7 @@ #ifndef ASH_PUBLIC_CPP_HOLDING_SPACE_HOLDING_SPACE_TEST_API_H_ #define ASH_PUBLIC_CPP_HOLDING_SPACE_HOLDING_SPACE_TEST_API_H_ +#include <string> #include <vector> #include "ash/ash_export.h" @@ -46,6 +47,16 @@ // otherwise. bool IsShowingInShelf(); + // Returns the `item_id` associated with the given `item_view`. + const std::string& GetHoldingSpaceItemId(const views::View* item_view) const; + + // Returns the holding space item view within `item_views` associated with the + // specified `item_id`. If no associated holding space item view exists, + // `nullptr` is returned. + views::View* GetHoldingSpaceItemView( + const std::vector<views::View*>& item_views, + const std::string& item_id); + // Returns the header of the downloads section in holding space UI. views::View* GetDownloadsSectionHeader();
diff --git a/ash/session/fullscreen_alert_bubble.cc b/ash/session/fullscreen_alert_bubble.cc index b091502..812c024 100644 --- a/ash/session/fullscreen_alert_bubble.cc +++ b/ash/session/fullscreen_alert_bubble.cc
@@ -19,6 +19,7 @@ #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/events/event.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/background.h"
diff --git a/ash/shelf/back_button_unittest.cc b/ash/shelf/back_button_unittest.cc index bd97ed1..f1ca631 100644 --- a/ash/shelf/back_button_unittest.cc +++ b/ash/shelf/back_button_unittest.cc
@@ -23,6 +23,7 @@ #include "base/test/scoped_feature_list.h" #include "ui/base/accelerators/accelerator.h" #include "ui/base/accelerators/test_accelerator_target.h" +#include "ui/compositor/layer.h" #include "ui/events/test/event_generator.h" namespace ash {
diff --git a/ash/shelf/contextual_nudge.cc b/ash/shelf/contextual_nudge.cc index 15025c33..e5af3ee4 100644 --- a/ash/shelf/contextual_nudge.cc +++ b/ash/shelf/contextual_nudge.cc
@@ -10,6 +10,7 @@ #include "ash/system/tray/tray_constants.h" #include "ash/wm/collision_detection/collision_detection_utils.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/color_palette.h" #include "ui/views/border.h"
diff --git a/ash/shelf/drag_handle.cc b/ash/shelf/drag_handle.cc index 10eb2da..0e2f2d8 100644 --- a/ash/shelf/drag_handle.cc +++ b/ash/shelf/drag_handle.cc
@@ -19,6 +19,7 @@ #include "base/timer/timer.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/wm/core/coordinate_conversion.h"
diff --git a/ash/shelf/drag_window_from_shelf_controller.cc b/ash/shelf/drag_window_from_shelf_controller.cc index e3483d8..792fbdd4 100644 --- a/ash/shelf/drag_window_from_shelf_controller.cc +++ b/ash/shelf/drag_window_from_shelf_controller.cc
@@ -37,6 +37,7 @@ #include "base/numerics/ranges.h" #include "ui/aura/window_tree_host.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/screen.h"
diff --git a/ash/shelf/drag_window_from_shelf_controller_unittest.cc b/ash/shelf/drag_window_from_shelf_controller_unittest.cc index 7bda8b9..010deab 100644 --- a/ash/shelf/drag_window_from_shelf_controller_unittest.cc +++ b/ash/shelf/drag_window_from_shelf_controller_unittest.cc
@@ -31,6 +31,7 @@ #include "ash/wm/window_state.h" #include "ash/wm/window_util.h" #include "base/test/metrics/histogram_tester.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/gfx/geometry/point_f.h" #include "ui/views/widget/widget.h"
diff --git a/ash/shelf/home_button_unittest.cc b/ash/shelf/home_button_unittest.cc index 5ff42553..5c807b45 100644 --- a/ash/shelf/home_button_unittest.cc +++ b/ash/shelf/home_button_unittest.cc
@@ -31,6 +31,7 @@ #include "base/command_line.h" #include "base/run_loop.h" #include "base/test/scoped_feature_list.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/test/event_generator.h" #include "ui/views/animation/bounds_animator.h"
diff --git a/ash/shelf/login_shelf_gesture_controller_unittest.cc b/ash/shelf/login_shelf_gesture_controller_unittest.cc index 7dd5179..f54c460 100644 --- a/ash/shelf/login_shelf_gesture_controller_unittest.cc +++ b/ash/shelf/login_shelf_gesture_controller_unittest.cc
@@ -12,6 +12,7 @@ #include "ash/shell.h" #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h" #include "base/callback_helpers.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" namespace ash {
diff --git a/ash/shelf/shelf_container_view.cc b/ash/shelf/shelf_container_view.cc index bf07f6bb1..e6eb05b 100644 --- a/ash/shelf/shelf_container_view.cc +++ b/ash/shelf/shelf_container_view.cc
@@ -5,6 +5,7 @@ #include "ash/shelf/shelf_container_view.h" #include "ash/public/cpp/shelf_config.h" +#include "ui/compositor/layer.h" namespace ash {
diff --git a/ash/shelf/shelf_navigation_widget.cc b/ash/shelf/shelf_navigation_widget.cc index 09c28a4..33ff91e 100644 --- a/ash/shelf/shelf_navigation_widget.cc +++ b/ash/shelf/shelf_navigation_widget.cc
@@ -24,6 +24,7 @@ #include "base/metrics/histogram_macros.h" #include "ui/base/l10n/l10n_util.h" #include "ui/compositor/animation_throughput_reporter.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/shelf/shelf_widget_unittest.cc b/ash/shelf/shelf_widget_unittest.cc index bfb512f..b06804c 100644 --- a/ash/shelf/shelf_widget_unittest.cc +++ b/ash/shelf/shelf_widget_unittest.cc
@@ -32,6 +32,7 @@ #include "base/test/scoped_feature_list.h" #include "components/session_manager/session_manager_types.h" #include "ui/aura/window_event_dispatcher.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/display.h" #include "ui/events/event_utils.h"
diff --git a/ash/shelf/swipe_home_to_overview_controller_unittest.cc b/ash/shelf/swipe_home_to_overview_controller_unittest.cc index abc0fbc..ed04c0cc 100644 --- a/ash/shelf/swipe_home_to_overview_controller_unittest.cc +++ b/ash/shelf/swipe_home_to_overview_controller_unittest.cc
@@ -23,6 +23,7 @@ #include "base/run_loop.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/simple_test_tick_clock.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/test/test_utils.h" #include "ui/gfx/geometry/point_f.h"
diff --git a/ash/shelf/test/widget_animation_smoothness_inspector.cc b/ash/shelf/test/widget_animation_smoothness_inspector.cc index 97fa642..7aa7597 100644 --- a/ash/shelf/test/widget_animation_smoothness_inspector.cc +++ b/ash/shelf/test/widget_animation_smoothness_inspector.cc
@@ -5,6 +5,7 @@ #include "ash/shelf/test/widget_animation_smoothness_inspector.h" #include "base/strings/stringprintf.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/layer_animator.h" #include "ui/views/widget/widget.h"
diff --git a/ash/shelf/test/widget_animation_waiter.cc b/ash/shelf/test/widget_animation_waiter.cc index a748892..ec5cc3ba 100644 --- a/ash/shelf/test/widget_animation_waiter.cc +++ b/ash/shelf/test/widget_animation_waiter.cc
@@ -5,6 +5,7 @@ #include "ash/shelf/test/widget_animation_waiter.h" #include "ash/test/ash_test_base.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_delegate.h" #include "ui/compositor/layer_animator.h" #include "ui/views/widget/widget.h"
diff --git a/ash/shell_test_api.cc b/ash/shell_test_api.cc index c959428..87a3760a 100644 --- a/ash/shell_test_api.cc +++ b/ash/shell_test_api.cc
@@ -29,6 +29,7 @@ #include "ui/aura/window_tree_host.h" #include "ui/compositor/compositor.h" #include "ui/compositor/compositor_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/display/manager/display_manager.h" #include "ui/events/devices/device_data_manager_test_api.h"
diff --git a/ash/shortcut_viewer/views/keyboard_shortcut_view.cc b/ash/shortcut_viewer/views/keyboard_shortcut_view.cc index 0972fe5f..67cec64 100644 --- a/ash/shortcut_viewer/views/keyboard_shortcut_view.cc +++ b/ash/shortcut_viewer/views/keyboard_shortcut_view.cc
@@ -40,6 +40,7 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" #include "ui/chromeos/events/keyboard_layout_util.h" +#include "ui/compositor/compositor.h" #include "ui/events/event_constants.h" #include "ui/events/types/event_type.h" #include "ui/gfx/paint_vector_icon.h"
diff --git a/ash/system/accessibility/autoclick_scroll_bubble_controller.cc b/ash/system/accessibility/autoclick_scroll_bubble_controller.cc index e76a204..072f5b8f5 100644 --- a/ash/system/accessibility/autoclick_scroll_bubble_controller.cc +++ b/ash/system/accessibility/autoclick_scroll_bubble_controller.cc
@@ -15,6 +15,7 @@ #include "ash/wm/workspace/workspace_layout_manager.h" #include "ash/wm/workspace_controller.h" #include "ui/aura/window_tree_host.h" +#include "ui/compositor/layer.h" #include "ui/display/manager/display_manager.h" #include "ui/events/event_utils.h"
diff --git a/ash/system/accessibility/autoclick_scroll_view.cc b/ash/system/accessibility/autoclick_scroll_view.cc index 933bc0b..1c583557 100644 --- a/ash/system/accessibility/autoclick_scroll_view.cc +++ b/ash/system/accessibility/autoclick_scroll_view.cc
@@ -17,6 +17,7 @@ #include "base/metrics/user_metrics.h" #include "base/timer/timer.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h"
diff --git a/ash/system/accessibility/floating_accessibility_controller.cc b/ash/system/accessibility/floating_accessibility_controller.cc index 4ba63e6..90079cce 100644 --- a/ash/system/accessibility/floating_accessibility_controller.cc +++ b/ash/system/accessibility/floating_accessibility_controller.cc
@@ -17,6 +17,7 @@ #include "base/check.h" #include "base/notreached.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" namespace ash {
diff --git a/ash/system/accessibility/floating_accessibility_detailed_controller.cc b/ash/system/accessibility/floating_accessibility_detailed_controller.cc index 0b779f97..c6032b9 100644 --- a/ash/system/accessibility/floating_accessibility_detailed_controller.cc +++ b/ash/system/accessibility/floating_accessibility_detailed_controller.cc
@@ -14,6 +14,7 @@ #include "ash/system/tray/tray_constants.h" #include "ash/wm/collision_detection/collision_detection_utils.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/button/image_button.h"
diff --git a/ash/system/accessibility/select_to_speak_menu_bubble_controller.cc b/ash/system/accessibility/select_to_speak_menu_bubble_controller.cc index df5f506..a9fc72a0 100644 --- a/ash/system/accessibility/select_to_speak_menu_bubble_controller.cc +++ b/ash/system/accessibility/select_to_speak_menu_bubble_controller.cc
@@ -14,6 +14,7 @@ #include "ash/system/tray/tray_constants.h" #include "ash/system/unified/unified_system_tray_view.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/wm/public/activation_client.h" namespace ash { @@ -154,4 +155,4 @@ SelectToSpeakPanelAction::kChangeSpeed, /*value=*/speech_rate); } -} // namespace ash \ No newline at end of file +} // namespace ash
diff --git a/ash/system/accessibility/select_to_speak_speed_bubble_controller.cc b/ash/system/accessibility/select_to_speak_speed_bubble_controller.cc index 4463c66..cbe045c3 100644 --- a/ash/system/accessibility/select_to_speak_speed_bubble_controller.cc +++ b/ash/system/accessibility/select_to_speak_speed_bubble_controller.cc
@@ -14,6 +14,7 @@ #include "ash/system/tray/tray_background_view.h" #include "ash/system/tray/tray_constants.h" #include "ash/system/unified/unified_system_tray_view.h" +#include "ui/compositor/layer.h" #include "ui/wm/public/activation_client.h" namespace ash { @@ -115,4 +116,4 @@ delegate_->OnSpeechRateSelected(speech_rate); } -} // namespace ash \ No newline at end of file +} // namespace ash
diff --git a/ash/system/accessibility/switch_access_back_button_bubble_controller.cc b/ash/system/accessibility/switch_access_back_button_bubble_controller.cc index e8a85ab..571936d 100644 --- a/ash/system/accessibility/switch_access_back_button_bubble_controller.cc +++ b/ash/system/accessibility/switch_access_back_button_bubble_controller.cc
@@ -10,6 +10,7 @@ #include "ash/system/tray/tray_background_view.h" #include "ash/system/tray/tray_constants.h" #include "ui/accessibility/ax_enums.mojom.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/screen.h"
diff --git a/ash/system/accessibility/switch_access_menu_bubble_controller.cc b/ash/system/accessibility/switch_access_menu_bubble_controller.cc index aa6b83a4..6b268707 100644 --- a/ash/system/accessibility/switch_access_menu_bubble_controller.cc +++ b/ash/system/accessibility/switch_access_menu_bubble_controller.cc
@@ -13,6 +13,7 @@ #include "ash/system/unified/unified_system_tray_view.h" #include "ash/wm/collision_detection/collision_detection_utils.h" #include "ui/accessibility/ax_enums.mojom.h" +#include "ui/compositor/layer.h" namespace ash {
diff --git a/ash/system/holding_space/downloads_section.cc b/ash/system/holding_space/downloads_section.cc index 25e772c..55eddf1 100644 --- a/ash/system/holding_space/downloads_section.cc +++ b/ash/system/holding_space/downloads_section.cc
@@ -17,6 +17,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/button/button.h" @@ -128,7 +129,8 @@ DownloadsSection::DownloadsSection(HoldingSpaceItemViewDelegate* delegate) : HoldingSpaceItemViewsSection(delegate, /*supported_types=*/ - {HoldingSpaceItem::Type::kDownload, + {HoldingSpaceItem::Type::kArcDownload, + HoldingSpaceItem::Type::kDownload, HoldingSpaceItem::Type::kNearbyShare}, /*max_count=*/kMaxDownloads) {}
diff --git a/ash/system/holding_space/holding_space_drag_util.cc b/ash/system/holding_space/holding_space_drag_util.cc index c4b7eda..ff99388 100644 --- a/ash/system/holding_space/holding_space_drag_util.cc +++ b/ash/system/holding_space/holding_space_drag_util.cc
@@ -17,6 +17,7 @@ #include "base/containers/adapters.h" #include "base/i18n/rtl.h" #include "ui/compositor/canvas_painter.h" +#include "ui/compositor/compositor.h" #include "ui/gfx/canvas.h" #include "ui/gfx/image/image_skia.h" #include "ui/gfx/shadow_util.h"
diff --git a/ash/system/holding_space/holding_space_item_chip_view.cc b/ash/system/holding_space/holding_space_item_chip_view.cc index f5a0678..15d5b8d6 100644 --- a/ash/system/holding_space/holding_space_item_chip_view.cc +++ b/ash/system/holding_space/holding_space_item_chip_view.cc
@@ -13,6 +13,7 @@ #include "ash/system/holding_space/holding_space_item_view.h" #include "ash/system/holding_space/holding_space_item_view_delegate.h" #include "ash/system/holding_space/holding_space_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_owner.h" #include "ui/compositor/paint_recorder.h" #include "ui/gfx/scoped_canvas.h"
diff --git a/ash/system/holding_space/holding_space_item_view.cc b/ash/system/holding_space/holding_space_item_view.cc index c6196c93..14d3a31 100644 --- a/ash/system/holding_space/holding_space_item_view.cc +++ b/ash/system/holding_space/holding_space_item_view.cc
@@ -16,6 +16,7 @@ #include "base/bind.h" #include "ui/base/class_property.h" #include "ui/base/dragdrop/drag_drop_types.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/paint_vector_icon.h" @@ -133,12 +134,19 @@ // static HoldingSpaceItemView* HoldingSpaceItemView::Cast(views::View* view) { - DCHECK(HoldingSpaceItemView::IsInstance(view)); - return static_cast<HoldingSpaceItemView*>(view); + return const_cast<HoldingSpaceItemView*>( + Cast(const_cast<const views::View*>(view))); } // static -bool HoldingSpaceItemView::IsInstance(views::View* view) { +const HoldingSpaceItemView* HoldingSpaceItemView::Cast( + const views::View* view) { + DCHECK(HoldingSpaceItemView::IsInstance(view)); + return static_cast<const HoldingSpaceItemView*>(view); +} + +// static +bool HoldingSpaceItemView::IsInstance(const views::View* view) { return view->GetProperty(kIsHoldingSpaceItemViewProperty); }
diff --git a/ash/system/holding_space/holding_space_item_view.h b/ash/system/holding_space/holding_space_item_view.h index d644d4bd..84ae8c0 100644 --- a/ash/system/holding_space/holding_space_item_view.h +++ b/ash/system/holding_space/holding_space_item_view.h
@@ -42,9 +42,10 @@ // Returns `view` cast as a `HoldingSpaceItemView`. Note that this performs a // DCHECK to assert that `view` is in fact a `HoldingSpaceItemView` instance. static HoldingSpaceItemView* Cast(views::View* view); + static const HoldingSpaceItemView* Cast(const views::View* view); // Returns if `view` is an instance of `HoldingSpaceItemView`. - static bool IsInstance(views::View* view); + static bool IsInstance(const views::View* view); // Resets the view. Called when the tray bubble starts closing to ensure // that any references that may be outlived are cleared out.
diff --git a/ash/system/holding_space/holding_space_item_views_section.cc b/ash/system/holding_space/holding_space_item_views_section.cc index 60ab4ef..9015dbf 100644 --- a/ash/system/holding_space/holding_space_item_views_section.cc +++ b/ash/system/holding_space/holding_space_item_views_section.cc
@@ -13,6 +13,7 @@ #include "base/auto_reset.h" #include "base/callback_helpers.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_animator.h" #include "ui/views/accessibility/view_accessibility.h"
diff --git a/ash/system/holding_space/holding_space_test_api.cc b/ash/system/holding_space/holding_space_test_api.cc index 526ee76f..11183ed 100644 --- a/ash/system/holding_space/holding_space_test_api.cc +++ b/ash/system/holding_space/holding_space_test_api.cc
@@ -6,12 +6,14 @@ #include "ash/drag_drop/drag_drop_controller.h" #include "ash/public/cpp/holding_space/holding_space_constants.h" +#include "ash/public/cpp/holding_space/holding_space_item.h" #include "ash/public/cpp/test/shell_test_api.h" #include "ash/shelf/shelf.h" #include "ash/shelf/shelf_widget.h" #include "ash/shell.h" #include "ash/system/holding_space/holding_space_item_chip_view.h" #include "ash/system/holding_space/holding_space_item_screen_capture_view.h" +#include "ash/system/holding_space/holding_space_item_view.h" #include "ash/system/holding_space/holding_space_tray.h" #include "ash/system/status_area_widget.h" #include "ui/aura/window.h" @@ -95,6 +97,22 @@ return holding_space_tray_ && holding_space_tray_->GetVisible(); } +const std::string& HoldingSpaceTestApi::GetHoldingSpaceItemId( + const views::View* item_view) const { + return HoldingSpaceItemView::Cast(item_view)->item_id(); +} + +views::View* HoldingSpaceTestApi::GetHoldingSpaceItemView( + const std::vector<views::View*>& item_views, + const std::string& item_id) { + auto it = std::find_if( + item_views.begin(), item_views.end(), [&](const views::View* item_view) { + return !strcmp(HoldingSpaceItemView::Cast(item_view)->item_id().c_str(), + item_id.c_str()); + }); + return it != item_views.end() ? *it : nullptr; +} + views::View* HoldingSpaceTestApi::GetDownloadsSectionHeader() { return holding_space_tray_->GetBubbleView() ? holding_space_tray_->GetBubbleView()->GetViewByID(
diff --git a/ash/system/holding_space/holding_space_tray.cc b/ash/system/holding_space/holding_space_tray.cc index 2d3a9480..26d17e9 100644 --- a/ash/system/holding_space/holding_space_tray.cc +++ b/ash/system/holding_space/holding_space_tray.cc
@@ -35,6 +35,7 @@ #include "ui/base/dragdrop/drag_drop_types.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/animation/ink_drop.h"
diff --git a/ash/system/holding_space/holding_space_tray_bubble.cc b/ash/system/holding_space/holding_space_tray_bubble.cc index 76c639f..2fbe5e0 100644 --- a/ash/system/holding_space/holding_space_tray_bubble.cc +++ b/ash/system/holding_space/holding_space_tray_bubble.cc
@@ -24,6 +24,7 @@ #include "base/containers/adapters.h" #include "ui/aura/env.h" #include "ui/aura/window.h" +#include "ui/compositor/compositor.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/gfx/animation/slide_animation.h" #include "ui/gfx/geometry/insets.h"
diff --git a/ash/system/holding_space/holding_space_tray_child_bubble.cc b/ash/system/holding_space/holding_space_tray_child_bubble.cc index c3894d6..7e5e110 100644 --- a/ash/system/holding_space/holding_space_tray_child_bubble.cc +++ b/ash/system/holding_space/holding_space_tray_child_bubble.cc
@@ -13,6 +13,7 @@ #include "ash/system/holding_space/holding_space_util.h" #include "ash/system/tray/tray_constants.h" #include "ui/compositor/callback_layer_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_animator.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/system/holding_space/holding_space_tray_icon.cc b/ash/system/holding_space/holding_space_tray_icon.cc index 8b33aa429..ab9fc21 100644 --- a/ash/system/holding_space/holding_space_tray_icon.cc +++ b/ash/system/holding_space/holding_space_tray_icon.cc
@@ -20,6 +20,7 @@ #include "base/containers/unique_ptr_adapters.h" #include "base/stl_util.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/gfx/animation/slide_animation.h" #include "ui/gfx/paint_vector_icon.h"
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc index fb5693f..4c10fbb 100644 --- a/ash/system/holding_space/holding_space_tray_unittest.cc +++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -37,6 +37,7 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "testing/gmock/include/gmock/gmock.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/base_event_utils.h" #include "ui/gfx/image/image_skia.h" @@ -865,9 +866,25 @@ } } +// Base class for tests of the holding space downloads section parameterized by +// the set of holding space item types which are expected to appear there. +class HoldingSpaceTrayDownloadsSectionTest + : public HoldingSpaceTrayTest, + public ::testing::WithParamInterface<HoldingSpaceItem::Type> { + public: + HoldingSpaceItem::Type GetType() const { return GetParam(); } +}; + +INSTANTIATE_TEST_SUITE_P( + All, + HoldingSpaceTrayDownloadsSectionTest, + ::testing::Values(HoldingSpaceItem::Type::kArcDownload, + HoldingSpaceItem::Type::kDownload, + HoldingSpaceItem::Type::kNearbyShare)); + // Tests how download chips are updated during item addition, removal and // finalization. -TEST_F(HoldingSpaceTrayTest, DownloadsSection) { +TEST_P(HoldingSpaceTrayDownloadsSectionTest, DownloadsSection) { StartSession(); test_api()->Show(); @@ -877,8 +894,7 @@ EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); // Add a download item and verify recent file bubble gets shown. - HoldingSpaceItem* item_1 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_1")); + HoldingSpaceItem* item_1 = AddItem(GetType(), base::FilePath("/tmp/fake_1")); EXPECT_TRUE(test_api()->PinnedFilesBubbleShown()); EXPECT_TRUE(test_api()->RecentFilesBubbleShown()); @@ -889,8 +905,8 @@ // Add partially initialized download item - verify it doesn't get shown in // the UI yet. - HoldingSpaceItem* item_2 = AddPartiallyInitializedItem( - HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_2")); + HoldingSpaceItem* item_2 = + AddPartiallyInitializedItem(GetType(), base::FilePath("/tmp/fake_2")); EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); @@ -900,8 +916,7 @@ HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); // Add another download, and verify it's shown in the UI. - HoldingSpaceItem* item_3 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_3")); + HoldingSpaceItem* item_3 = AddItem(GetType(), base::FilePath("/tmp/fake_3")); EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); @@ -957,16 +972,16 @@ // Verifies the downloads section is shown and orders items as expected when the // model contains a number of finalized items prior to showing UI. -TEST_F(HoldingSpaceTrayTest, DownloadsSectionWithFinalizedItemsOnly) { +TEST_P(HoldingSpaceTrayDownloadsSectionTest, + DownloadsSectionWithFinalizedItemsOnly) { MarkTimeOfFirstPin(); StartSession(); // Add a number of finalized download items. std::deque<HoldingSpaceItem*> items; for (size_t i = 0; i < kMaxDownloads; ++i) { - items.push_back( - AddItem(HoldingSpaceItem::Type::kDownload, - base::FilePath("/tmp/fake_" + base::NumberToString(i)))); + items.push_back(AddItem( + GetType(), base::FilePath("/tmp/fake_" + base::NumberToString(i)))); } test_api()->Show(); @@ -987,7 +1002,8 @@ test_api()->Close(); } -TEST_F(HoldingSpaceTrayTest, FinalizingDownloadItemThatShouldBeInvisible) { +TEST_P(HoldingSpaceTrayDownloadsSectionTest, + FinalizingDownloadItemThatShouldBeInvisible) { StartSession(); test_api()->Show(); @@ -995,14 +1011,12 @@ // Add partially initialized download item - verify it doesn't get shown in // the UI yet. - HoldingSpaceItem* item_1 = AddPartiallyInitializedItem( - HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_1")); + HoldingSpaceItem* item_1 = + AddPartiallyInitializedItem(GetType(), base::FilePath("/tmp/fake_1")); // Add two download items. - HoldingSpaceItem* item_2 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_2")); - HoldingSpaceItem* item_3 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_3")); + HoldingSpaceItem* item_2 = AddItem(GetType(), base::FilePath("/tmp/fake_2")); + HoldingSpaceItem* item_3 = AddItem(GetType(), base::FilePath("/tmp/fake_3")); EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); std::vector<views::View*> download_chips = test_api()->GetDownloadChips(); @@ -1040,7 +1054,8 @@ // Tests that a partially initialized download item does not get shown if a full // download item gets removed from the holding space. -TEST_F(HoldingSpaceTrayTest, PartialItemNowShownOnRemovingADownloadItem) { +TEST_P(HoldingSpaceTrayDownloadsSectionTest, + PartialItemNowShownOnRemovingADownloadItem) { StartSession(); test_api()->Show(); @@ -1048,14 +1063,11 @@ // Add partially initialized download item - verify it doesn't get shown in // the UI yet. - AddPartiallyInitializedItem(HoldingSpaceItem::Type::kDownload, - base::FilePath("/tmp/fake_1")); + AddPartiallyInitializedItem(GetType(), base::FilePath("/tmp/fake_1")); // Add two download items. - HoldingSpaceItem* item_2 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_2")); - HoldingSpaceItem* item_3 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_3")); + HoldingSpaceItem* item_2 = AddItem(GetType(), base::FilePath("/tmp/fake_2")); + HoldingSpaceItem* item_3 = AddItem(GetType(), base::FilePath("/tmp/fake_3")); EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); std::vector<views::View*> download_chips = test_api()->GetDownloadChips(); @@ -1502,194 +1514,6 @@ test_api()->Close(); } -// Tests that as nearby shared files are added to the model, they show on the -// downloads section. -TEST_F(HoldingSpaceTrayTest, DownloadsSectionWithNearbySharedFiles) { - StartSession(); - - test_api()->Show(); - EXPECT_TRUE(test_api()->PinnedFilesBubbleShown()); - EXPECT_FALSE(test_api()->RecentFilesBubbleShown()); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - ASSERT_TRUE(test_api()->GetDownloadChips().empty()); - - // Add a nearby share item and verify recent files bubble gets shown. - HoldingSpaceItem* item_1 = AddItem(HoldingSpaceItem::Type::kNearbyShare, - base::FilePath("/tmp/fake_1")); - ASSERT_TRUE(item_1->IsFinalized()); - - EXPECT_TRUE(test_api()->PinnedFilesBubbleShown()); - EXPECT_TRUE(test_api()->RecentFilesBubbleShown()); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - ASSERT_EQ(1u, test_api()->GetDownloadChips().size()); - - // Add a download item, and verify it's also shown in the UI in the order they - // were added. - HoldingSpaceItem* item_2 = - AddItem(HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_2")); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - std::vector<views::View*> download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(item_2->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(item_1->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - // Remove the first item, and verify the section gets updated. - model()->RemoveItem(item_1->id()); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(1u, download_chips.size()); - EXPECT_EQ(item_2->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - - test_api()->Close(); -} - -// Tests that a partially initialized nearby share item does not get shown if a -// full download item gets removed from the holding space. -TEST_F(HoldingSpaceTrayTest, PartialNearbyShareItemWithExistingDownloadItems) { - StartSession(); - test_api()->Show(); - - EXPECT_FALSE(test_api()->RecentFilesBubbleShown()); - ASSERT_TRUE(test_api()->GetDownloadChips().empty()); - - // Add partially initialized nearby share item - verify it doesn't get shown - // in the UI yet. - HoldingSpaceItem* nearby_share_item = - AddPartiallyInitializedItem(HoldingSpaceItem::Type::kNearbyShare, - base::FilePath("/tmp/nearby_share")); - EXPECT_FALSE(test_api()->RecentFilesBubbleShown()); - EXPECT_TRUE(test_api()->GetDownloadChips().empty()); - - // Add partially initialized screenshot item - verify it doesn't get shown in - // the UI yet. - HoldingSpaceItem* screenshot_item = AddPartiallyInitializedItem( - HoldingSpaceItem::Type::kScreenshot, base::FilePath("/tmp/screenshot")); - EXPECT_FALSE(test_api()->RecentFilesBubbleShown()); - - // Add two download items. - HoldingSpaceItem* download_item_1 = AddItem( - HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/download_1")); - HoldingSpaceItem* download_item_2 = AddItem( - HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/download_2")); - EXPECT_TRUE(test_api()->RecentFilesBubbleShown()); - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - std::vector<views::View*> download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(download_item_2->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(download_item_1->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - // Finalize the nearby share item and verify it is not shown. - model()->FinalizeOrRemoveItem(nearby_share_item->id(), - GURL("filesystem:nearby_share")); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(download_item_2->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(download_item_1->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - // Finalize the screenshot item and verify it is shown. Note that the - // finalized screenshot item should not affect appearance of the downloads - // section of holding space UI. It shows in the screen captures section. - model()->FinalizeOrRemoveItem(screenshot_item->id(), - GURL("filesystem:screenshot")); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_EQ(1u, test_api()->GetScreenCaptureViews().size()); - download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(download_item_2->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(download_item_1->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - // Remove one of the fully initialized items, and verify the nearby share item - // that was finalized late is shown. - model()->RemoveItem(download_item_1->id()); - - download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(download_item_2->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(nearby_share_item->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - test_api()->Close(); -} - -// Tests that a partially initialized download item does not get shown if a -// full download item gets removed from the holding space. -TEST_F(HoldingSpaceTrayTest, PartialDownloadItemWithExistingNearbyShareItems) { - StartSession(); - test_api()->Show(); - - EXPECT_FALSE(test_api()->RecentFilesBubbleShown()); - ASSERT_TRUE(test_api()->GetDownloadChips().empty()); - - // Add partially initialized download item - verify it doesn't get shown - // in the UI yet. - HoldingSpaceItem* item_1 = AddPartiallyInitializedItem( - HoldingSpaceItem::Type::kDownload, base::FilePath("/tmp/fake_1")); - EXPECT_FALSE(test_api()->RecentFilesBubbleShown()); - EXPECT_TRUE(test_api()->GetDownloadChips().empty()); - - // Add two nearby share items. - HoldingSpaceItem* item_2 = AddItem(HoldingSpaceItem::Type::kNearbyShare, - base::FilePath("/tmp/fake_2")); - HoldingSpaceItem* item_3 = AddItem(HoldingSpaceItem::Type::kNearbyShare, - base::FilePath("/tmp/fake_3")); - EXPECT_TRUE(test_api()->RecentFilesBubbleShown()); - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - std::vector<views::View*> download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(item_3->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(item_2->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - // Finalize the download item and verify it is not shown. - model()->FinalizeOrRemoveItem(item_1->id(), GURL("filesystem:fake_1")); - - EXPECT_TRUE(test_api()->GetPinnedFileChips().empty()); - EXPECT_TRUE(test_api()->GetScreenCaptureViews().empty()); - download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(item_3->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(item_2->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - // Remove one of the fully initialized items, and verify the partially - // initialized item is not shown. - model()->RemoveItem(item_2->id()); - - download_chips = test_api()->GetDownloadChips(); - ASSERT_EQ(2u, download_chips.size()); - EXPECT_EQ(item_3->id(), - HoldingSpaceItemView::Cast(download_chips[0])->item()->id()); - EXPECT_EQ(item_1->id(), - HoldingSpaceItemView::Cast(download_chips[1])->item()->id()); - - test_api()->Close(); -} - // Right clicking the holding space tray should show a context menu if the // previews feature is enabled. Otherwise it should do nothing. TEST_F(HoldingSpaceTrayTest, ShouldMaybeShowContextMenuOnRightClick) {
diff --git a/ash/system/holding_space/holding_space_util.cc b/ash/system/holding_space/holding_space_util.cc index 8580a40..bb77f96f 100644 --- a/ash/system/holding_space/holding_space_util.cc +++ b/ash/system/holding_space/holding_space_util.cc
@@ -5,6 +5,7 @@ #include "ash/system/holding_space/holding_space_util.h" #include "ash/style/ash_color_provider.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_animation_sequence.h"
diff --git a/ash/system/holding_space/pinned_files_section.cc b/ash/system/holding_space/pinned_files_section.cc index 9f8c78b..06ec925 100644 --- a/ash/system/holding_space/pinned_files_section.cc +++ b/ash/system/holding_space/pinned_files_section.cc
@@ -20,6 +20,7 @@ #include "ash/system/holding_space/holding_space_util.h" #include "base/callback_helpers.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/background.h"
diff --git a/ash/system/holding_space/screen_captures_section.cc b/ash/system/holding_space/screen_captures_section.cc index 2d365ecb..fa1c597 100644 --- a/ash/system/holding_space/screen_captures_section.cc +++ b/ash/system/holding_space/screen_captures_section.cc
@@ -10,6 +10,7 @@ #include "ash/system/holding_space/holding_space_item_screen_capture_view.h" #include "ash/system/holding_space/holding_space_util.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/label.h" #include "ui/views/layout/flex_layout.h"
diff --git a/ash/system/ime_menu/ime_menu_tray.cc b/ash/system/ime_menu/ime_menu_tray.cc index 76ca682..99ded39 100644 --- a/ash/system/ime_menu/ime_menu_tray.cc +++ b/ash/system/ime_menu/ime_menu_tray.cc
@@ -38,6 +38,7 @@ #include "ui/base/ime/text_input_client.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/range/range.h"
diff --git a/ash/system/media/media_tray.cc b/ash/system/media/media_tray.cc index 9cad7c0..7113da95 100644 --- a/ash/system/media/media_tray.cc +++ b/ash/system/media/media_tray.cc
@@ -27,6 +27,7 @@ #include "components/prefs/pref_service.h" #include "media/base/media_switches.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/display/manager/display_manager.h" #include "ui/display/manager/managed_display_info.h" #include "ui/gfx/geometry/insets.h"
diff --git a/ash/system/media/unified_media_controls_container.cc b/ash/system/media/unified_media_controls_container.cc index 6627c6d..60a34533 100644 --- a/ash/system/media/unified_media_controls_container.cc +++ b/ash/system/media/unified_media_controls_container.cc
@@ -5,6 +5,7 @@ #include "ash/system/media/unified_media_controls_container.h" #include "ash/system/tray/tray_constants.h" +#include "ui/compositor/layer.h" #include "ui/views/border.h" namespace ash {
diff --git a/ash/system/message_center/message_center_scroll_bar.cc b/ash/system/message_center/message_center_scroll_bar.cc index 6bc6df3..8f420b55 100644 --- a/ash/system/message_center/message_center_scroll_bar.cc +++ b/ash/system/message_center/message_center_scroll_bar.cc
@@ -6,6 +6,7 @@ #include "ash/public/cpp/ash_features.h" #include "base/metrics/histogram_macros.h" +#include "ui/compositor/layer.h" namespace {
diff --git a/ash/system/message_center/notification_swipe_control_view.cc b/ash/system/message_center/notification_swipe_control_view.cc index 90410409..ca94008 100644 --- a/ash/system/message_center/notification_swipe_control_view.cc +++ b/ash/system/message_center/notification_swipe_control_view.cc
@@ -7,6 +7,7 @@ #include "ash/system/message_center/message_center_style.h" #include "ash/system/message_center/metrics_utils.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/events/event.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/paint_vector_icon.h"
diff --git a/ash/system/message_center/notifier_settings_view.cc b/ash/system/message_center/notifier_settings_view.cc index 0fea8f6f..763b727 100644 --- a/ash/system/message_center/notifier_settings_view.cc +++ b/ash/system/message_center/notifier_settings_view.cc
@@ -33,6 +33,7 @@ #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/ui_base_features.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/events/event_utils.h" #include "ui/events/keycodes/keyboard_codes.h"
diff --git a/ash/system/message_center/unified_message_center_bubble.cc b/ash/system/message_center/unified_message_center_bubble.cc index 13536a9..682e2416 100644 --- a/ash/system/message_center/unified_message_center_bubble.cc +++ b/ash/system/message_center/unified_message_center_bubble.cc
@@ -19,6 +19,7 @@ #include "ash/system/unified/unified_system_tray_bubble.h" #include "ash/system/unified/unified_system_tray_view.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/views/focus/focus_search.h" #include "ui/views/widget/widget.h"
diff --git a/ash/system/message_center/unified_message_list_view_unittest.cc b/ash/system/message_center/unified_message_list_view_unittest.cc index 31fb2af..e9e284c 100644 --- a/ash/system/message_center/unified_message_list_view_unittest.cc +++ b/ash/system/message_center/unified_message_list_view_unittest.cc
@@ -12,6 +12,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/message_center/message_center.h" #include "ui/message_center/views/message_view.h"
diff --git a/ash/system/night_light/night_light_controller_impl.h b/ash/system/night_light/night_light_controller_impl.h index 4f1ca5a..19c342b 100644 --- a/ash/system/night_light/night_light_controller_impl.h +++ b/ash/system/night_light/night_light_controller_impl.h
@@ -19,6 +19,7 @@ #include "chromeos/dbus/power/power_manager_client.h" #include "components/prefs/pref_change_registrar.h" #include "ui/aura/env_observer.h" +#include "ui/gfx/geometry/vector3d_f.h" #include "ui/message_center/public/cpp/notification_delegate.h" class PrefRegistrySimple;
diff --git a/ash/system/palette/palette_tray.cc b/ash/system/palette/palette_tray.cc index ce418e5..324bb16 100644 --- a/ash/system/palette/palette_tray.cc +++ b/ash/system/palette/palette_tray.cc
@@ -39,6 +39,7 @@ #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/devices/device_data_manager.h"
diff --git a/ash/system/phonehub/notification_opt_in_view.cc b/ash/system/phonehub/notification_opt_in_view.cc index ad7f719f..7c245ed 100644 --- a/ash/system/phonehub/notification_opt_in_view.cc +++ b/ash/system/phonehub/notification_opt_in_view.cc
@@ -17,6 +17,7 @@ #include "chromeos/components/phonehub/notification_access_manager.h" #include "ui/base/l10n/l10n_util.h" #include "ui/chromeos/devicetype_utils.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/border.h" #include "ui/views/controls/label.h"
diff --git a/ash/system/phonehub/phone_connected_view.cc b/ash/system/phonehub/phone_connected_view.cc index d008330..29a177e 100644 --- a/ash/system/phonehub/phone_connected_view.cc +++ b/ash/system/phonehub/phone_connected_view.cc
@@ -17,6 +17,7 @@ #include "chromeos/components/phonehub/notification_access_manager.h" #include "chromeos/components/phonehub/phone_hub_manager.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/image_view.h"
diff --git a/ash/system/phonehub/phone_hub_interstitial_view.cc b/ash/system/phonehub/phone_hub_interstitial_view.cc index 9a380e8..2a027b1c 100644 --- a/ash/system/phonehub/phone_hub_interstitial_view.cc +++ b/ash/system/phonehub/phone_hub_interstitial_view.cc
@@ -18,6 +18,7 @@ #include "skia/ext/image_operations.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/image/image_skia_operations.h"
diff --git a/ash/system/phonehub/phone_status_view.cc b/ash/system/phonehub/phone_status_view.cc index aeb6a910..71078df 100644 --- a/ash/system/phonehub/phone_status_view.cc +++ b/ash/system/phonehub/phone_status_view.cc
@@ -22,6 +22,7 @@ #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/image/image_skia.h"
diff --git a/ash/system/phonehub/quick_action_item.cc b/ash/system/phonehub/quick_action_item.cc index 8a3a836d..231fcbb 100644 --- a/ash/system/phonehub/quick_action_item.cc +++ b/ash/system/phonehub/quick_action_item.cc
@@ -9,6 +9,7 @@ #include "ash/style/ash_color_provider.h" #include "ash/system/tray/tray_constants.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/controls/label.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/system/power/power_button_controller.cc b/ash/system/power/power_button_controller.cc index 5cc8108..b29e47b 100644 --- a/ash/system/power/power_button_controller.cc +++ b/ash/system/power/power_button_controller.cc
@@ -30,6 +30,7 @@ #include "base/json/json_reader.h" #include "base/time/default_tick_clock.h" #include "chromeos/dbus/power_manager/backlight.pb.h" +#include "ui/compositor/layer.h" #include "ui/display/types/display_snapshot.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_observer.h"
diff --git a/ash/system/power/power_button_menu_view.cc b/ash/system/power/power_button_menu_view.cc index 4d01734..ea514630 100644 --- a/ash/system/power/power_button_menu_view.cc +++ b/ash/system/power/power_button_menu_view.cc
@@ -24,6 +24,7 @@ #include "ash/wm/tablet_mode/tablet_mode_controller.h" #include "base/callback_helpers.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/vector_icon_types.h"
diff --git a/ash/system/privacy_screen/privacy_screen_toast_view.cc b/ash/system/privacy_screen/privacy_screen_toast_view.cc index 5534395..8eea7e33 100644 --- a/ash/system/privacy_screen/privacy_screen_toast_view.cc +++ b/ash/system/privacy_screen/privacy_screen_toast_view.cc
@@ -11,6 +11,7 @@ #include "ash/system/tray/tray_constants.h" #include "ash/system/unified/feature_pod_button.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/image_view.h"
diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc index fcd2391f..21508dc 100644 --- a/ash/system/status_area_widget.cc +++ b/ash/system/status_area_widget.cc
@@ -39,6 +39,7 @@ #include "base/metrics/histogram_macros.h" #include "chromeos/services/assistant/public/cpp/features.h" #include "media/base/media_switches.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display.h"
diff --git a/ash/system/toast/toast_manager_unittest.cc b/ash/system/toast/toast_manager_unittest.cc index f28b057..2335dcc 100644 --- a/ash/system/toast/toast_manager_unittest.cc +++ b/ash/system/toast/toast_manager_unittest.cc
@@ -20,6 +20,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/session_manager/session_manager_types.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/manager/display_manager.h" #include "ui/views/widget/widget.h"
diff --git a/ash/system/toast/toast_overlay.cc b/ash/system/toast/toast_overlay.cc index b1351b8..533a9520 100644 --- a/ash/system/toast/toast_overlay.cc +++ b/ash/system/toast/toast_overlay.cc
@@ -20,6 +20,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/display/display_observer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/font_list.h"
diff --git a/ash/system/tray/status_area_overflow_button_tray.cc b/ash/system/tray/status_area_overflow_button_tray.cc index f1b324b..86f4b8d 100644 --- a/ash/system/tray/status_area_overflow_button_tray.cc +++ b/ash/system/tray/status_area_overflow_button_tray.cc
@@ -11,6 +11,7 @@ #include "ash/system/status_area_widget.h" #include "ash/system/tray/tray_constants.h" #include "ash/system/tray/tray_container.h" +#include "ui/compositor/layer.h" #include "ui/gfx/animation/slide_animation.h" #include "ui/gfx/animation/tween.h" #include "ui/gfx/paint_vector_icon.h"
diff --git a/ash/system/tray/tray_container.cc b/ash/system/tray/tray_container.cc index 605bb5d..cc8186f 100644 --- a/ash/system/tray/tray_container.cc +++ b/ash/system/tray/tray_container.cc
@@ -10,6 +10,7 @@ #include "ash/public/cpp/shelf_config.h" #include "ash/shelf/shelf.h" #include "ash/system/tray/tray_constants.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/border.h" #include "ui/views/layout/box_layout.h"
diff --git a/ash/system/unified/unified_system_tray_bubble.cc b/ash/system/unified/unified_system_tray_bubble.cc index 65f5a1c..e6092a3 100644 --- a/ash/system/unified/unified_system_tray_bubble.cc +++ b/ash/system/unified/unified_system_tray_bubble.cc
@@ -20,6 +20,7 @@ #include "ash/wm/work_area_insets.h" #include "base/metrics/histogram_macros.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/wm/core/window_util.h" #include "ui/wm/public/activation_client.h"
diff --git a/ash/system/unified/unified_system_tray_controller.cc b/ash/system/unified/unified_system_tray_controller.cc index df5c714..9bdcf16 100644 --- a/ash/system/unified/unified_system_tray_controller.cc +++ b/ash/system/unified/unified_system_tray_controller.cc
@@ -64,6 +64,7 @@ #include "base/numerics/ranges.h" #include "media/base/media_switches.h" #include "ui/accessibility/ax_enums.mojom.h" +#include "ui/compositor/compositor.h" #include "ui/display/screen.h" #include "ui/gfx/animation/slide_animation.h" #include "ui/message_center/message_center.h"
diff --git a/ash/system/unified/unified_system_tray_view.cc b/ash/system/unified/unified_system_tray_view.cc index cac8bba..c7a7034 100644 --- a/ash/system/unified/unified_system_tray_view.cc +++ b/ash/system/unified/unified_system_tray_view.cc
@@ -28,6 +28,7 @@ #include "media/base/media_switches.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/scoped_canvas.h" #include "ui/message_center/message_center.h"
diff --git a/ash/touch/touch_hud_debug.cc b/ash/touch/touch_hud_debug.cc index d7be7ec7..554028d 100644 --- a/ash/touch/touch_hud_debug.cc +++ b/ash/touch/touch_hud_debug.cc
@@ -14,6 +14,7 @@ #include "base/strings/utf_string_conversions.h" #include "third_party/skia/include/core/SkPath.h" #include "ui/aura/window_event_dispatcher.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/manager/display_manager.h" #include "ui/events/event.h"
diff --git a/ash/utility/occlusion_tracker_pauser.h b/ash/utility/occlusion_tracker_pauser.h index c8fbb441..f9d4c5f2 100644 --- a/ash/utility/occlusion_tracker_pauser.h +++ b/ash/utility/occlusion_tracker_pauser.h
@@ -13,6 +13,7 @@ #include "base/time/time.h" #include "base/timer/timer.h" #include "ui/aura/window_occlusion_tracker.h" +#include "ui/compositor/compositor.h" #include "ui/compositor/compositor_observer.h" namespace ash {
diff --git a/ash/utility/screenshot_controller.cc b/ash/utility/screenshot_controller.cc index 380381b..9a33540 100644 --- a/ash/utility/screenshot_controller.cc +++ b/ash/utility/screenshot_controller.cc
@@ -19,6 +19,7 @@ #include "ui/aura/client/screen_position_client.h" #include "ui/aura/window_targeter.h" #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/display/screen.h" #include "ui/events/event.h"
diff --git a/ash/utility/screenshot_controller_unittest.cc b/ash/utility/screenshot_controller_unittest.cc index 30c2acdc..6e2e626c 100644 --- a/ash/utility/screenshot_controller_unittest.cc +++ b/ash/utility/screenshot_controller_unittest.cc
@@ -20,6 +20,7 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/base/cursor/cursor.h" #include "ui/base/cursor/cursor_size.h" +#include "ui/compositor/layer.h" #include "ui/display/types/display_constants.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/codec/png_codec.h"
diff --git a/ash/wallpaper/wallpaper_controller_impl.cc b/ash/wallpaper/wallpaper_controller_impl.cc index 39175458..be14e9d 100644 --- a/ash/wallpaper/wallpaper_controller_impl.cc +++ b/ash/wallpaper/wallpaper_controller_impl.cc
@@ -57,6 +57,7 @@ #include "components/user_manager/user_type.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/data_decoder/public/cpp/decode_image.h" +#include "ui/compositor/layer.h" #include "ui/display/manager/display_manager.h" #include "ui/display/manager/managed_display_info.h" #include "ui/display/screen.h"
diff --git a/ash/wallpaper/wallpaper_controller_unittest.cc b/ash/wallpaper/wallpaper_controller_unittest.cc index af4feb56..6c26261 100644 --- a/ash/wallpaper/wallpaper_controller_unittest.cc +++ b/ash/wallpaper/wallpaper_controller_unittest.cc
@@ -49,6 +49,7 @@ #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/test/layer_animator_test_controller.h"
diff --git a/ash/wallpaper/wallpaper_utils/wallpaper_decoder.cc b/ash/wallpaper/wallpaper_utils/wallpaper_decoder.cc index 3be05255..39d2919 100644 --- a/ash/wallpaper/wallpaper_utils/wallpaper_decoder.cc +++ b/ash/wallpaper/wallpaper_utils/wallpaper_decoder.cc
@@ -8,6 +8,7 @@ #include "ash/shell_delegate.h" #include "base/bind.h" #include "ipc/ipc_channel.h" +#include "ui/gfx/image/image_skia.h" namespace ash { namespace {
diff --git a/ash/wallpaper/wallpaper_view.cc b/ash/wallpaper/wallpaper_view.cc index 0b0faa6..f027dc8 100644 --- a/ash/wallpaper/wallpaper_view.cc +++ b/ash/wallpaper/wallpaper_view.cc
@@ -14,6 +14,7 @@ #include "ash/wm/tablet_mode/tablet_mode_controller.h" #include "cc/paint/render_surface_filters.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/manager/display_manager.h" #include "ui/display/manager/managed_display_info.h"
diff --git a/ash/wm/base_state.cc b/ash/wm/base_state.cc index 1b11a51..31f6058d 100644 --- a/ash/wm/base_state.cc +++ b/ash/wm/base_state.cc
@@ -17,6 +17,7 @@ #include "chromeos/ui/base/window_state_type.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" namespace ash {
diff --git a/ash/wm/default_state.cc b/ash/wm/default_state.cc index 57a2e23..e72264e3 100644 --- a/ash/wm/default_state.cc +++ b/ash/wm/default_state.cc
@@ -25,6 +25,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_delegate.h" #include "ui/compositor/animation_throughput_reporter.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/display_observer.h" #include "ui/display/screen.h"
diff --git a/ash/wm/desks/desk.cc b/ash/wm/desks/desk.cc index 89e54be..8def6cb 100644 --- a/ash/wm/desks/desk.cc +++ b/ash/wm/desks/desk.cc
@@ -32,6 +32,7 @@ #include "chromeos/ui/base/window_properties.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window_tracker.h" +#include "ui/compositor/layer.h" #include "ui/display/screen.h" #include "ui/wm/core/window_util.h"
diff --git a/ash/wm/desks/desk_drag_proxy.cc b/ash/wm/desks/desk_drag_proxy.cc index 3cbd4d7..3fb6652fc 100644 --- a/ash/wm/desks/desk_drag_proxy.cc +++ b/ash/wm/desks/desk_drag_proxy.cc
@@ -9,6 +9,7 @@ #include "ash/wm/desks/desk_preview_view.h" #include "ash/wm/desks/desks_bar_view.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-shared.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/screen.h" #include "ui/events/event_observer.h"
diff --git a/ash/wm/desks/desk_mini_view.cc b/ash/wm/desks/desk_mini_view.cc index 7db7da8..416c49f 100644 --- a/ash/wm/desks/desk_mini_view.cc +++ b/ash/wm/desks/desk_mini_view.cc
@@ -22,6 +22,7 @@ #include "ui/accessibility/ax_node_data.h" #include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/views/widget/widget.h" #include "ui/wm/core/coordinate_conversion.h"
diff --git a/ash/wm/desks/desk_preview_view.h b/ash/wm/desks/desk_preview_view.h index 444bbf6..127dae11 100644 --- a/ash/wm/desks/desk_preview_view.h +++ b/ash/wm/desks/desk_preview_view.h
@@ -10,6 +10,7 @@ #include "ash/ash_export.h" #include "base/macros.h" #include "ui/aura/window_occlusion_tracker.h" +#include "ui/compositor/layer.h" #include "ui/views/controls/button/button.h" namespace ui {
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc index f3660602..41d5195d 100644 --- a/ash/wm/desks/desks_unittests.cc +++ b/ash/wm/desks/desks_unittests.cc
@@ -78,6 +78,7 @@ #include "ui/base/ime/chromeos/fake_ime_keyboard.h" #include "ui/base/ui_base_types.h" #include "ui/chromeos/events/event_rewriter_chromeos.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor_extra/shadow.h" #include "ui/display/display.h"
diff --git a/ash/wm/desks/desks_util.cc b/ash/wm/desks/desks_util.cc index d7c341f..a6c4600 100644 --- a/ash/wm/desks/desks_util.cc +++ b/ash/wm/desks/desks_util.cc
@@ -16,6 +16,7 @@ #include "ash/wm/overview/overview_session.h" #include "ash/wm/window_util.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" namespace ash {
diff --git a/ash/wm/desks/expanded_state_new_desk_button.cc b/ash/wm/desks/expanded_state_new_desk_button.cc index 7f53f73..9236a04 100644 --- a/ash/wm/desks/expanded_state_new_desk_button.cc +++ b/ash/wm/desks/expanded_state_new_desk_button.cc
@@ -15,6 +15,7 @@ #include "ash/wm/overview/overview_controller.h" #include "ash/wm/overview/overview_session.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/label.h"
diff --git a/ash/wm/desks/scroll_arrow_button.cc b/ash/wm/desks/scroll_arrow_button.cc index d501714..9e144571 100644 --- a/ash/wm/desks/scroll_arrow_button.cc +++ b/ash/wm/desks/scroll_arrow_button.cc
@@ -9,6 +9,7 @@ #include "ash/wm/desks/desk_mini_view.h" #include "ash/wm/desks/desk_preview_view.h" #include "ash/wm/desks/desks_bar_view.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/widget/widget.h"
diff --git a/ash/wm/desks/zero_state_button.cc b/ash/wm/desks/zero_state_button.cc index 2faa93a..b992171d 100644 --- a/ash/wm/desks/zero_state_button.cc +++ b/ash/wm/desks/zero_state_button.cc
@@ -14,6 +14,7 @@ #include "ash/wm/desks/desks_controller.h" #include "ash/wm/wm_highlight_item_border.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/font_list.h" #include "ui/gfx/text_constants.h"
diff --git a/ash/wm/drag_window_resizer.cc b/ash/wm/drag_window_resizer.cc index 99e6572..b71865a3 100644 --- a/ash/wm/drag_window_resizer.cc +++ b/ash/wm/drag_window_resizer.cc
@@ -20,6 +20,7 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/base/hit_test.h" #include "ui/base/ui_base_types.h" +#include "ui/compositor/layer.h" #include "ui/display/screen.h" #include "ui/gfx/geometry/point_conversions.h" #include "ui/wm/core/coordinate_conversion.h"
diff --git a/ash/wm/drag_window_resizer_unittest.cc b/ash/wm/drag_window_resizer_unittest.cc index 5d7d6ff..21aa2d808 100644 --- a/ash/wm/drag_window_resizer_unittest.cc +++ b/ash/wm/drag_window_resizer_unittest.cc
@@ -25,6 +25,7 @@ #include "ui/aura/window.h" #include "ui/base/hit_test.h" #include "ui/base/ui_base_types.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_delegate.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/compositor_extra/shadow.h"
diff --git a/ash/wm/full_restore/full_restore_controller.cc b/ash/wm/full_restore/full_restore_controller.cc index faedf0c..1e704b4 100644 --- a/ash/wm/full_restore/full_restore_controller.cc +++ b/ash/wm/full_restore/full_restore_controller.cc
@@ -183,7 +183,6 @@ // in normal or maximized state. // TODO(crbug.com/1164472): Investigate splitview for ARC apps, which // are not managed by TabletModeWindowManager. - LOG(ERROR) << static_cast<int>(state_type.value()); if (Shell::Get()->tablet_mode_controller()->InTabletMode()) Shell::Get()->tablet_mode_controller()->AddWindow(window); @@ -305,7 +304,14 @@ window_info.current_bounds = window_state->HasRestoreBounds() ? window_state->GetRestoreBoundsInScreen() : window->GetBoundsInScreen(); - window_info.window_state_type = window_state->GetStateType(); + // Full restore does not support restoring fullscreen windows. If a window is + // fullscreen save the pre-fullscreen window state instead. + window_info.window_state_type = + window_state->IsInImmersiveFullscreen() + ? chromeos::ToWindowStateType( + window->GetProperty(aura::client::kPreFullscreenShowStateKey)) + : window_state->GetStateType(); + window_info.display_id = display::Screen::GetScreen()->GetDisplayNearestWindow(window).id(); full_restore::SaveWindowInfo(window_info);
diff --git a/ash/wm/gestures/back_gesture/back_gesture_affordance.cc b/ash/wm/gestures/back_gesture/back_gesture_affordance.cc index 71886cd..35be666 100644 --- a/ash/wm/gestures/back_gesture/back_gesture_affordance.cc +++ b/ash/wm/gestures/back_gesture/back_gesture_affordance.cc
@@ -16,6 +16,7 @@ #include "base/i18n/rtl.h" #include "components/vector_icons/vector_icons.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/paint_recorder.h" #include "ui/display/screen.h" #include "ui/events/event.h"
diff --git a/ash/wm/gestures/back_gesture/back_gesture_contextual_nudge.cc b/ash/wm/gestures/back_gesture/back_gesture_contextual_nudge.cc index d2e3609b..74968014 100644 --- a/ash/wm/gestures/back_gesture/back_gesture_contextual_nudge.cc +++ b/ash/wm/gestures/back_gesture/back_gesture_contextual_nudge.cc
@@ -16,6 +16,7 @@ #include "base/i18n/rtl.h" #include "base/timer/timer.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/canvas.h"
diff --git a/ash/wm/lock_window_state.cc b/ash/wm/lock_window_state.cc index bfd169a4..b69fead 100644 --- a/ash/wm/lock_window_state.cc +++ b/ash/wm/lock_window_state.cc
@@ -19,6 +19,7 @@ #include "ash/wm/wm_event.h" #include "ash/wm/work_area_insets.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/rect.h" #include "ui/wm/core/coordinate_conversion.h"
diff --git a/ash/wm/overview/cleanup_animation_observer_unittest.cc b/ash/wm/overview/cleanup_animation_observer_unittest.cc index 9d78c40e4..f15df47 100644 --- a/ash/wm/overview/cleanup_animation_observer_unittest.cc +++ b/ash/wm/overview/cleanup_animation_observer_unittest.cc
@@ -11,6 +11,7 @@ #include "ash/wm/overview/overview_delegate.h" #include "base/containers/unique_ptr_adapters.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/wm/overview/delayed_animation_observer_impl_unittest.cc b/ash/wm/overview/delayed_animation_observer_impl_unittest.cc index 757e1893..fce7cd2 100644 --- a/ash/wm/overview/delayed_animation_observer_impl_unittest.cc +++ b/ash/wm/overview/delayed_animation_observer_impl_unittest.cc
@@ -13,6 +13,7 @@ #include "base/containers/unique_ptr_adapters.h" #include "base/test/task_environment.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/transform.h"
diff --git a/ash/wm/overview/overview_controller_unittest.cc b/ash/wm/overview/overview_controller_unittest.cc index e3b2b32c..979d970 100644 --- a/ash/wm/overview/overview_controller_unittest.cc +++ b/ash/wm/overview/overview_controller_unittest.cc
@@ -35,6 +35,7 @@ #include "base/run_loop.h" #include "ui/aura/client/window_types.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/test/event_generator.h"
diff --git a/ash/wm/overview/overview_grid.cc b/ash/wm/overview/overview_grid.cc index 44afb27..9a4d3bc 100644 --- a/ash/wm/overview/overview_grid.cc +++ b/ash/wm/overview/overview_grid.cc
@@ -59,6 +59,7 @@ #include "base/strings/utf_string_conversions.h" #include "ui/aura/client/aura_constants.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/throughput_tracker.h" #include "ui/gfx/geometry/vector2d_f.h"
diff --git a/ash/wm/overview/overview_grid_event_handler.cc b/ash/wm/overview/overview_grid_event_handler.cc index f973094..43ee8b8 100644 --- a/ash/wm/overview/overview_grid_event_handler.cc +++ b/ash/wm/overview/overview_grid_event_handler.cc
@@ -15,6 +15,7 @@ #include "ash/wm/overview/overview_utils.h" #include "ash/wm/splitview/split_view_controller.h" #include "ui/compositor/compositor.h" +#include "ui/compositor/layer.h" #include "ui/display/screen.h" #include "ui/events/event.h" #include "ui/events/gestures/fling_curve.h"
diff --git a/ash/wm/overview/overview_item.cc b/ash/wm/overview/overview_item.cc index 2a54848..34fdffa 100644 --- a/ash/wm/overview/overview_item.cc +++ b/ash/wm/overview/overview_item.cc
@@ -47,6 +47,7 @@ #include "ui/accessibility/ax_enums.mojom.h" #include "ui/aura/client/aura_constants.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h"
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc index 9c5666d..ee5d18d 100644 --- a/ash/wm/overview/overview_session_unittest.cc +++ b/ash/wm/overview/overview_session_unittest.cc
@@ -80,6 +80,7 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_tree_host.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/test/draw_waiter_for_test.h"
diff --git a/ash/wm/overview/overview_utils.cc b/ash/wm/overview/overview_utils.cc index c63e26c..b4923ef8 100644 --- a/ash/wm/overview/overview_utils.cc +++ b/ash/wm/overview/overview_utils.cc
@@ -32,6 +32,7 @@ #include "base/no_destructor.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/scoped_canvas.h" #include "ui/gfx/transform_util.h"
diff --git a/ash/wm/overview/overview_window_drag_controller.cc b/ash/wm/overview/overview_window_drag_controller.cc index 21d58232..3c3d8bb 100644 --- a/ash/wm/overview/overview_window_drag_controller.cc +++ b/ash/wm/overview/overview_window_drag_controller.cc
@@ -34,6 +34,7 @@ #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" #include "ui/aura/window_observer.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/wm/core/coordinate_conversion.h"
diff --git a/ash/wm/overview/scoped_overview_transform_window_unittest.cc b/ash/wm/overview/scoped_overview_transform_window_unittest.cc index 4edeeb1..1ea9c104 100644 --- a/ash/wm/overview/scoped_overview_transform_window_unittest.cc +++ b/ash/wm/overview/scoped_overview_transform_window_unittest.cc
@@ -11,6 +11,7 @@ #include "ash/wm/window_state.h" #include "base/numerics/safe_conversions.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/manager/display_manager.h" #include "ui/display/screen.h"
diff --git a/ash/wm/pip/pip_unittest.cc b/ash/wm/pip/pip_unittest.cc index 781c274..b9997e8f 100644 --- a/ash/wm/pip/pip_unittest.cc +++ b/ash/wm/pip/pip_unittest.cc
@@ -23,6 +23,7 @@ #include "ash/wm/wm_event.h" #include "base/command_line.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/events/test/event_generator.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_delegate.h"
diff --git a/ash/wm/pip/pip_window_resizer.cc b/ash/wm/pip/pip_window_resizer.cc index 41c8bd280..84558996 100644 --- a/ash/wm/pip/pip_window_resizer.cc +++ b/ash/wm/pip/pip_window_resizer.cc
@@ -15,6 +15,7 @@ #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/screen.h" #include "ui/views/widget/widget.h"
diff --git a/ash/wm/pip/pip_window_resizer_unittest.cc b/ash/wm/pip/pip_window_resizer_unittest.cc index aaf81d0..3614880 100644 --- a/ash/wm/pip/pip_window_resizer_unittest.cc +++ b/ash/wm/pip/pip_window_resizer_unittest.cc
@@ -26,6 +26,7 @@ #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/display/scoped_display_for_new_windows.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/widget/widget.h"
diff --git a/ash/wm/resize_shadow_and_cursor_unittest.cc b/ash/wm/resize_shadow_and_cursor_unittest.cc index e1a40f52..5610491f 100644 --- a/ash/wm/resize_shadow_and_cursor_unittest.cc +++ b/ash/wm/resize_shadow_and_cursor_unittest.cc
@@ -16,6 +16,7 @@ #include "ui/base/cursor/cursor.h" #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/events/test/event_generator.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_delegate.h"
diff --git a/ash/wm/screen_pinning_controller.cc b/ash/wm/screen_pinning_controller.cc index 4f93726..1494719 100644 --- a/ash/wm/screen_pinning_controller.cc +++ b/ash/wm/screen_pinning_controller.cc
@@ -19,6 +19,7 @@ #include "base/logging.h" #include "ui/aura/window.h" #include "ui/aura/window_observer.h" +#include "ui/compositor/layer.h" #include "ui/wm/core/window_util.h" namespace ash {
diff --git a/ash/wm/splitview/split_view_divider_handler_view.cc b/ash/wm/splitview/split_view_divider_handler_view.cc index 15f1e72f..31afce76 100644 --- a/ash/wm/splitview/split_view_divider_handler_view.cc +++ b/ash/wm/splitview/split_view_divider_handler_view.cc
@@ -10,6 +10,7 @@ #include "ash/wm/splitview/split_view_constants.h" #include "ash/wm/splitview/split_view_utils.h" #include "base/timer/timer.h" +#include "ui/compositor/layer.h" #include "ui/gfx/animation/animation_delegate.h" #include "ui/gfx/animation/slide_animation.h" #include "ui/views/background.h"
diff --git a/ash/wm/splitview/split_view_drag_indicators.cc b/ash/wm/splitview/split_view_drag_indicators.cc index 7655c7e..d675e932 100644 --- a/ash/wm/splitview/split_view_drag_indicators.cc +++ b/ash/wm/splitview/split_view_drag_indicators.cc
@@ -26,6 +26,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_observer.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display_observer.h" #include "ui/views/background.h"
diff --git a/ash/wm/splitview/split_view_highlight_view.cc b/ash/wm/splitview/split_view_highlight_view.cc index 7ea19e23..8133836c 100644 --- a/ash/wm/splitview/split_view_highlight_view.cc +++ b/ash/wm/splitview/split_view_highlight_view.cc
@@ -9,6 +9,7 @@ #include "ash/style/default_color_constants.h" #include "ash/style/default_colors.h" #include "ash/wm/splitview/split_view_controller.h" +#include "ui/compositor/layer.h" #include "ui/views/view.h" #include "ui/views/view_observer.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc b/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc index 95c97fbd..2d016b9 100644 --- a/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc +++ b/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc
@@ -14,6 +14,7 @@ #include "ash/wm/window_util.h" #include "chromeos/ui/base/window_properties.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/screen.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_controller.cc b/ash/wm/tablet_mode/tablet_mode_controller.cc index 484714ba..081bdce8 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller.cc
@@ -43,6 +43,7 @@ #include "ui/aura/window_observer.h" #include "ui/base/accelerators/accelerator.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/display/display.h" #include "ui/display/manager/display_manager.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc index c4b1117..a95e5c2 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc
@@ -49,6 +49,7 @@ #include "ui/aura/test/test_window_delegate.h" #include "ui/base/hit_test.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/compositor/test/test_utils.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager.cc b/ash/wm/tablet_mode/tablet_mode_window_manager.cc index 314a4cdd..7264f3f 100644 --- a/ash/wm/tablet_mode/tablet_mode_window_manager.cc +++ b/ash/wm/tablet_mode/tablet_mode_window_manager.cc
@@ -36,6 +36,7 @@ #include "base/containers/contains.h" #include "chromeos/ui/base/window_properties.h" #include "ui/aura/client/aura_constants.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_element.h" #include "ui/display/screen.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc index 2a6fd55..a43d2d8 100644 --- a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
@@ -49,6 +49,7 @@ #include "ui/aura/test/test_windows.h" #include "ui/aura/window.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/events/test/event_generator.h" #include "ui/views/widget/widget.h" #include "ui/wm/core/ime_util_chromeos.h"
diff --git a/ash/wm/video_detector.cc b/ash/wm/video_detector.cc index 57ff4f6d..5654082 100644 --- a/ash/wm/video_detector.cc +++ b/ash/wm/video_detector.cc
@@ -12,6 +12,7 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "ui/aura/env.h" #include "ui/aura/window_event_dispatcher.h" +#include "ui/compositor/compositor.h" #include "ui/gfx/geometry/rect.h" #include "ui/wm/core/window_util.h"
diff --git a/ash/wm/window_cycle/window_cycle_list.cc b/ash/wm/window_cycle/window_cycle_list.cc index 40d0c74..18794100 100644 --- a/ash/wm/window_cycle/window_cycle_list.cc +++ b/ash/wm/window_cycle/window_cycle_list.cc
@@ -36,6 +36,7 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/compositor/animation_throughput_reporter.h" #include "ui/compositor/compositor_animation_observer.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/display/display.h"
diff --git a/ash/wm/window_cycle/window_cycle_tab_slider.cc b/ash/wm/window_cycle/window_cycle_tab_slider.cc index 8c7ff52..70e68f6 100644 --- a/ash/wm/window_cycle/window_cycle_tab_slider.cc +++ b/ash/wm/window_cycle/window_cycle_tab_slider.cc
@@ -14,6 +14,7 @@ #include "base/strings/utf_string_conversions.h" #include "components/prefs/pref_service.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_layer_animation_settings.h" #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/rect.h"
diff --git a/ash/wm/window_mini_view.cc b/ash/wm/window_mini_view.cc index 605d3e3..8240c884 100644 --- a/ash/wm/window_mini_view.cc +++ b/ash/wm/window_mini_view.cc
@@ -15,6 +15,7 @@ #include "ui/accessibility/ax_node_data.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" +#include "ui/compositor/layer.h" #include "ui/gfx/image/image_skia_operations.h" #include "ui/views/controls/image_view.h" #include "ui/views/controls/label.h"
diff --git a/ash/wm/window_mirror_view_unittest.cc b/ash/wm/window_mirror_view_unittest.cc index 6c920e7..5865c52 100644 --- a/ash/wm/window_mirror_view_unittest.cc +++ b/ash/wm/window_mirror_view_unittest.cc
@@ -7,6 +7,7 @@ #include "ash/test/ash_test_base.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window_occlusion_tracker.h" +#include "ui/compositor/layer.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/transform.h" #include "ui/views/widget/widget.h"
diff --git a/ash/wm/window_resizer.cc b/ash/wm/window_resizer.cc index 87f812a..cc93fde 100644 --- a/ash/wm/window_resizer.cc +++ b/ash/wm/window_resizer.cc
@@ -19,6 +19,7 @@ #include "ui/base/hit_test.h" #include "ui/base/ui_base_types.h" #include "ui/compositor/compositor.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/gfx/geometry/rect.h"
diff --git a/ash/wm/window_state.cc b/ash/wm/window_state.cc index e2ed238..96b2d5b 100644 --- a/ash/wm/window_state.cc +++ b/ash/wm/window_state.cc
@@ -38,6 +38,7 @@ #include "ui/aura/layout_manager.h" #include "ui/aura/window.h" #include "ui/aura/window_delegate.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/compositor/paint_recorder.h" #include "ui/compositor/scoped_layer_animation_settings.h"
diff --git a/ash/wm/window_state_unittest.cc b/ash/wm/window_state_unittest.cc index 83a3dd2..82b26bc 100644 --- a/ash/wm/window_state_unittest.cc +++ b/ash/wm/window_state_unittest.cc
@@ -20,6 +20,7 @@ #include "ui/aura/test/test_window_delegate.h" #include "ui/aura/window.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/display/screen.h" #include "ui/events/test/event_generator.h" #include "ui/views/widget/widget.h"
diff --git a/ash/wm/window_util.cc b/ash/wm/window_util.cc index 604a37f..6695a42 100644 --- a/ash/wm/window_util.cc +++ b/ash/wm/window_util.cc
@@ -37,6 +37,7 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_targeter.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_tree_owner.h" #include "ui/display/display.h" #include "ui/display/screen.h"
diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc index a4c5918..6653e07 100644 --- a/ash/wm/workspace/workspace_layout_manager_unittest.cc +++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -61,6 +61,7 @@ #include "ui/aura/window_targeter.h" #include "ui/base/ui_base_switches.h" #include "ui/base/ui_base_types.h" +#include "ui/compositor/layer.h" #include "ui/compositor/layer_type.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/display.h"
diff --git a/ash/wm/workspace/workspace_window_resizer_unittest.cc b/ash/wm/workspace/workspace_window_resizer_unittest.cc index a88bc75a..4df9fe36 100644 --- a/ash/wm/workspace/workspace_window_resizer_unittest.cc +++ b/ash/wm/workspace/workspace_window_resizer_unittest.cc
@@ -25,6 +25,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/compositor/test/test_utils.h" #include "ui/display/display_layout.h" #include "ui/display/manager/display_manager.h"
diff --git a/ash/wm/workspace_controller_unittest.cc b/ash/wm/workspace_controller_unittest.cc index 4de056a..fadaf7a 100644 --- a/ash/wm/workspace_controller_unittest.cc +++ b/ash/wm/workspace_controller_unittest.cc
@@ -26,6 +26,7 @@ #include "ui/aura/test/test_windows.h" #include "ui/aura/window.h" #include "ui/base/hit_test.h" +#include "ui/compositor/layer.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/screen.h" #include "ui/events/event_utils.h"
diff --git a/base/BUILD.gn b/base/BUILD.gn index 97916ab..5849d4ce 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -3849,7 +3849,6 @@ "android/java/src/org/chromium/base/PowerMonitor.java", "android/java/src/org/chromium/base/Promise.java", "android/java/src/org/chromium/base/RadioUtils.java", - "android/java/src/org/chromium/base/SecureRandomInitializer.java", "android/java/src/org/chromium/base/StreamUtil.java", "android/java/src/org/chromium/base/StrictModeContext.java", "android/java/src/org/chromium/base/SysUtils.java",
diff --git a/base/android/java/src/org/chromium/base/SecureRandomInitializer.java b/base/android/java/src/org/chromium/base/SecureRandomInitializer.java deleted file mode 100644 index bfd7b49..0000000 --- a/base/android/java/src/org/chromium/base/SecureRandomInitializer.java +++ /dev/null
@@ -1,35 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.base; - -import android.annotation.SuppressLint; - -import java.io.FileInputStream; -import java.io.IOException; -import java.security.SecureRandom; - -/** - * This class contains code to initialize a SecureRandom generator securely on Android platforms - * <= 4.3. See - * {@link http://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html}. - */ -// TODO(crbug.com/635567): Fix this properly. -@SuppressLint("SecureRandom") -public class SecureRandomInitializer { - private static final int NUM_RANDOM_BYTES = 16; - - /** - * Safely initializes the random number generator, by seeding it with data from /dev/urandom. - */ - public static void initialize(SecureRandom generator) throws IOException { - try (FileInputStream fis = new FileInputStream("/dev/urandom")) { - byte[] seedBytes = new byte[NUM_RANDOM_BYTES]; - if (fis.read(seedBytes) != seedBytes.length) { - throw new IOException("Failed to get enough random data."); - } - generator.setSeed(seedBytes); - } - } -}
diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java index 96de64c29..45ce573 100644 --- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java +++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
@@ -814,19 +814,7 @@ throw new ProcessInitException(LoaderErrors.FAILED_TO_REGISTER_JNI); } - // Check that the version of the library we have loaded matches the version we expect - if (!NativeLibraries.sVersionNumber.equals(LibraryLoaderJni.get().getVersionNumber())) { - Log.e(TAG, - "Expected native library version number \"%s\", " - + "actual native library version number \"%s\"", - NativeLibraries.sVersionNumber, LibraryLoaderJni.get().getVersionNumber()); - throw new ProcessInitException(LoaderErrors.NATIVE_LIBRARY_WRONG_VERSION); - } else { - // Log the version anyway as this is often helpful, but word it differently so it's - // clear that it isn't an error. - Log.i(TAG, "Loaded native library version number \"%s\"", - NativeLibraries.sVersionNumber); - } + Log.i(TAG, "Successfully loaded native library"); UmaRecorderHolder.onLibraryLoaded(); // From now on, keep tracing in sync with native. @@ -915,9 +903,5 @@ // Records the number of milliseconds it took to load the libraries in the renderer. void recordRendererLibraryLoadTime(long libraryLoadTime); - - // Get the version of the native library. This is needed so that we can check we - // have the right version before initializing the (rest of the) JNI. - String getVersionNumber(); } }
diff --git a/base/android/library_loader/library_loader_hooks.cc b/base/android/library_loader/library_loader_hooks.cc index b9c139a..12ca3f7 100644 --- a/base/android/library_loader/library_loader_hooks.cc +++ b/base/android/library_loader/library_loader_hooks.cc
@@ -131,10 +131,6 @@ g_library_version_number = strdup(version_number); } -ScopedJavaLocalRef<jstring> JNI_LibraryLoader_GetVersionNumber(JNIEnv* env) { - return ConvertUTF8ToJavaString(env, g_library_version_number); -} - void InitAtExitManager() { g_at_exit_manager = new base::AtExitManager(); }
diff --git a/base/android/library_loader/library_loader_hooks.h b/base/android/library_loader/library_loader_hooks.h index c697421..5cc5af9 100644 --- a/base/android/library_loader/library_loader_hooks.h +++ b/base/android/library_loader/library_loader_hooks.h
@@ -77,12 +77,6 @@ BASE_EXPORT void SetLibraryLoadedHook(LibraryLoadedHook* func); -// Pass the version name to the loader. This used to check that the library -// version matches the version expected by Java before completing JNI -// registration. -// Note: argument must remain valid at least until library loading is complete. -BASE_EXPORT void SetVersionNumber(const char* version_number); - // Call on exit to delete the AtExitManager which OnLibraryLoadedOnUIThread // created. BASE_EXPORT void LibraryLoaderExitHook();
diff --git a/base/message_loop/message_pump_kqueue.cc b/base/message_loop/message_pump_kqueue.cc index 9f5582b1..a4e92956 100644 --- a/base/message_loop/message_pump_kqueue.cc +++ b/base/message_loop/message_pump_kqueue.cc
@@ -379,11 +379,14 @@ events_.resize(event_count_); } - bool poll = next_work_info == nullptr; - int flags = poll ? KEVENT_FLAG_IMMEDIATE : 0; - if (!poll && scheduled_wakeup_time_ != next_work_info->delayed_run_time) { - UpdateWakeupTimer(next_work_info->delayed_run_time); + bool immediate = next_work_info == nullptr; + int flags = immediate ? KEVENT_FLAG_IMMEDIATE : 0; + + if (!immediate) { + if (scheduled_wakeup_time_ != next_work_info->delayed_run_time) + UpdateWakeupTimer(next_work_info->delayed_run_time); DCHECK_EQ(scheduled_wakeup_time_, next_work_info->delayed_run_time); + delegate->BeforeWait(); } int rv = HANDLE_EINTR(kevent64(kqueue_.get(), nullptr, 0, events_.data(),
diff --git a/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc b/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc index d56f96da2..d3de5e2 100644 --- a/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc +++ b/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc
@@ -58,6 +58,13 @@ // will do all the clean-up. // ScopedSetSequenceLocalStorageMapForCurrentThread destructor will // de-register the current thread as a sequence. + +#if defined(OS_WIN) + if (main_thread_only().in_high_res_mode) { + main_thread_only().in_high_res_mode = false; + Time::ActivateHighResolutionTimer(false); + } +#endif } // static
diff --git a/base/test/run_all_unittests.cc b/base/test/run_all_unittests.cc index 0ad84ed5..07befc7d 100644 --- a/base/test/run_all_unittests.cc +++ b/base/test/run_all_unittests.cc
@@ -5,10 +5,37 @@ #include "base/bind.h" #include "base/test/launcher/unit_test_launcher.h" #include "base/test/test_suite.h" +#include "base/time/time.h" #include "build/build_config.h" +#if defined(OS_WIN) +class TimerCheck : public testing::EmptyTestEventListener { + public: + void OnTestEnd(const testing::TestInfo& test_info) override { + EXPECT_FALSE(base::Time::IsHighResolutionTimerInUse()); + } +}; +#endif + +class BaseUnittestSuite : public base::TestSuite { + public: + BaseUnittestSuite(int argc, char** argv) : base::TestSuite(argc, argv) {} + + protected: + void Initialize() override { + base::TestSuite::Initialize(); + +#if defined(OS_WIN) + // Add TestEventListeners to enforce certain properties across tests. + testing::TestEventListeners& listeners = + testing::UnitTest::GetInstance()->listeners(); + listeners.Append(new TimerCheck); +#endif + } +}; + int main(int argc, char** argv) { - base::TestSuite test_suite(argc, argv); + BaseUnittestSuite test_suite(argc, argv); return base::LaunchUnitTests( argc, argv, base::BindOnce(&base::TestSuite::Run, base::Unretained(&test_suite)));
diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc index f7a2957..699ee8f 100644 --- a/base/threading/platform_thread_posix.cc +++ b/base/threading/platform_thread_posix.cc
@@ -16,8 +16,6 @@ #include <memory> #include "base/allocator/buildflags.h" -#include "base/allocator/partition_allocator/starscan/pcscan.h" -#include "base/allocator/partition_allocator/starscan/stack/stack.h" #include "base/debug/activity_tracker.h" #include "base/lazy_instance.h" #include "base/logging.h" @@ -41,6 +39,11 @@ #include <sys/resource.h> #endif +#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) +#include "base/allocator/partition_allocator/starscan/pcscan.h" +#include "base/allocator/partition_allocator/starscan/stack/stack.h" +#endif + namespace base { void InitThreading();
diff --git a/base/threading/platform_thread_win.cc b/base/threading/platform_thread_win.cc index 0a87864..7a73defa4 100644 --- a/base/threading/platform_thread_win.cc +++ b/base/threading/platform_thread_win.cc
@@ -7,8 +7,6 @@ #include <stddef.h> #include "base/allocator/buildflags.h" -#include "base/allocator/partition_allocator/starscan/pcscan.h" -#include "base/allocator/partition_allocator/starscan/stack/stack.h" #include "base/debug/activity_tracker.h" #include "base/debug/alias.h" #include "base/debug/crash_logging.h" @@ -29,6 +27,11 @@ #include <windows.h> +#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) +#include "base/allocator/partition_allocator/starscan/pcscan.h" +#include "base/allocator/partition_allocator/starscan/stack/stack.h" +#endif + namespace base { namespace {
diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h index 71b0673a..8fcc0c8 100644 --- a/base/threading/thread_restrictions.h +++ b/base/threading/thread_restrictions.h
@@ -116,6 +116,7 @@ } namespace ash { class MojoUtils; +class BrowserDataMigrator; } namespace audio { class OutputDevice; @@ -399,6 +400,7 @@ friend class StackSamplingProfiler; friend class android_webview::ScopedAllowInitGLBindings; friend class ash::MojoUtils; // http://crbug.com/1055467 + friend class ash::BrowserDataMigrator; friend class blink::DiskDataAllocator; friend class content::BrowserProcessSubThread; friend class content::NetworkServiceInstancePrivate;
diff --git a/build/android/PRESUBMIT.py b/build/android/PRESUBMIT.py index 70e048b7..2cf0602c 100644 --- a/build/android/PRESUBMIT.py +++ b/build/android/PRESUBMIT.py
@@ -105,7 +105,8 @@ J('pylib', 'utils', 'test_filter_test.py'), J('.', 'convert_dex_profile_tests.py'), ], - env=pylib_test_env)) + env=pylib_test_env, + run_on_python2=False)) return input_api.RunTests(tests)
diff --git a/build/android/gyp/compile_resources.py b/build/android/gyp/compile_resources.py index 822427e..8a668e7 100755 --- a/build/android/gyp/compile_resources.py +++ b/build/android/gyp/compile_resources.py
@@ -1,5 +1,5 @@ -#!/usr/bin/env python -# encoding: utf-8 +#!/usr/bin/env python3 +# # Copyright (c) 2012 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -317,7 +317,7 @@ * Modern ISO 639-1 codes will be renamed to their obsolete variant for Indonesian, Hebrew and Yiddish (e.g. 'values-in/ -> values-id/). - * Norwegian macrolanguage strings will be renamed to Bokmål (main + * Norwegian macrolanguage strings will be renamed to Bokmal (main Norway language). See http://crbug.com/920960. In practice this means that 'values-no/ -> values-nb/' unless 'values-nb/' already exists.
diff --git a/build/android/gyp/compile_resources.pydeps b/build/android/gyp/compile_resources.pydeps index 9824256..174b5269 100644 --- a/build/android/gyp/compile_resources.pydeps +++ b/build/android/gyp/compile_resources.pydeps
@@ -2,6 +2,8 @@ # build/print_python_deps.py --root build/android/gyp --output build/android/gyp/compile_resources.pydeps build/android/gyp/compile_resources.py ../../../third_party/jinja2/__init__.py ../../../third_party/jinja2/_compat.py +../../../third_party/jinja2/asyncfilters.py +../../../third_party/jinja2/asyncsupport.py ../../../third_party/jinja2/bccache.py ../../../third_party/jinja2/compiler.py ../../../third_party/jinja2/defaults.py
diff --git a/build/android/gyp/create_app_bundle.py b/build/android/gyp/create_app_bundle.py index afb5672..0b44c16 100755 --- a/build/android/gyp/create_app_bundle.py +++ b/build/android/gyp/create_app_bundle.py
@@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Copyright 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be @@ -7,12 +7,10 @@ """Create an Android application bundle from one or more bundle modules.""" import argparse -import itertools import json import os import shutil import sys -import tempfile import zipfile sys.path.append( @@ -376,7 +374,7 @@ if not os.path.exists(module_pathmap_path): continue module_pathmap = _LoadPathmap(module_pathmap_path) - for short_path, long_path in module_pathmap.iteritems(): + for short_path, long_path in module_pathmap.items(): rebased_long_path = '{}/{}'.format(module_name, long_path) rebased_short_path = '{}/{}'.format(module_name, short_path) line = '{} -> {}\n'.format(rebased_long_path, rebased_short_path)
diff --git a/build/android/gyp/create_app_bundle.pydeps b/build/android/gyp/create_app_bundle.pydeps index 1155e44..cbb471a 100644 --- a/build/android/gyp/create_app_bundle.pydeps +++ b/build/android/gyp/create_app_bundle.pydeps
@@ -14,6 +14,8 @@ ../../../third_party/catapult/devil/devil/utils/cmd_helper.py ../../../third_party/jinja2/__init__.py ../../../third_party/jinja2/_compat.py +../../../third_party/jinja2/asyncfilters.py +../../../third_party/jinja2/asyncsupport.py ../../../third_party/jinja2/bccache.py ../../../third_party/jinja2/compiler.py ../../../third_party/jinja2/defaults.py
diff --git a/build/android/gyp/extract_unwind_tables_tests.py b/build/android/gyp/extract_unwind_tables_tests.py index 7f9d0de7..59436ff 100755 --- a/build/android/gyp/extract_unwind_tables_tests.py +++ b/build/android/gyp/extract_unwind_tables_tests.py
@@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -63,7 +63,8 @@ STACK CFI INIT 3b93214 fffff .cfa: sp 0 + .ra: lr STACK CFI 3b93218 .cfa: r7 16 + .ra: .cfa -4 + ^ """.splitlines() - extract_unwind_tables._ParseCfiData(test_data_lines, output_file.name) + extract_unwind_tables._ParseCfiData( + [l.encode('utf8') for l in test_data_lines], output_file.name) expected_cfi_data = { 0xe1a1e4 : [0x2, 0x11, 0x4, 0x50], @@ -109,8 +110,8 @@ func_start = index + 1 func_end = func_start + unw_data[index] * 2 - self.assertEquals( - len(expected_cfi_data[func_addr]), func_end - func_start) + self.assertEqual(len(expected_cfi_data[func_addr]), + func_end - func_start) func_cfi = unw_data[func_start : func_end] self.assertEqual(expected_cfi_data[func_addr], func_cfi)
diff --git a/build/android/gyp/util/diff_utils.py b/build/android/gyp/util/diff_utils.py old mode 100755 new mode 100644 index a109100..530a688 --- a/build/android/gyp/util/diff_utils.py +++ b/build/android/gyp/util/diff_utils.py
@@ -1,5 +1,3 @@ -#!/usr/bin/env python -# # Copyright 2019 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -119,8 +117,11 @@ sys.stderr.write(fail_msg) + if fail_msg and options.fail_on_expectations: + # Don't write failure file when failing on expectations or else the target + # will not be re-run on subsequent ninja invocations. + sys.exit(1) + if options.failure_file: with open(options.failure_file, 'w') as f: f.write(fail_msg) - if fail_msg and options.fail_on_expectations: - sys.exit(1)
diff --git a/build/android/gyp/util/manifest_utils.py b/build/android/gyp/util/manifest_utils.py index 1a354b9a..a517708b 100644 --- a/build/android/gyp/util/manifest_utils.py +++ b/build/android/gyp/util/manifest_utils.py
@@ -8,6 +8,7 @@ import os import re import shlex +import sys import xml.dom.minidom as minidom from util import build_utils @@ -123,7 +124,12 @@ def _SortAndStripElementTree(root): - def sort_key(node): + # Sort alphabetically with two exceptions: + # 1) Put <application> node last (since it's giant). + # 2) Put android:name before other attributes. + def element_sort_key(node): + if node.tag == 'application': + return 'z' ret = ElementTree.tostring(node) # ElementTree.tostring inserts namespace attributes for any that are needed # for the node or any of its descendants. Remove them so as to prevent a @@ -131,30 +137,24 @@ # order. return re.sub(r' xmlns:.*?".*?"', '', ret.decode('utf8')) + name_attr = '{%s}name' % ANDROID_NAMESPACE + + def attribute_sort_key(tup): + return ('', '') if tup[0] == name_attr else tup + def helper(node): for child in node: if child.text and child.text.isspace(): child.text = None helper(child) - node[:] = sorted(node, key=sort_key) - def rename_attrs(node, from_name, to_name): - value = node.attrib.get(from_name) - if value is not None: - node.attrib[to_name] = value - del node.attrib[from_name] - for child in node: - rename_attrs(child, from_name, to_name) + # Sort attributes (requires Python 3.8+). + node.attrib = dict(sorted(node.attrib.items(), key=attribute_sort_key)) - # Sort alphabetically with two exceptions: - # 1) Put <application> node last (since it's giant). - # 2) Pretend android:name appears before other attributes. - app_node = root.find('application') - app_node.tag = 'zz' - rename_attrs(root, '{%s}name' % ANDROID_NAMESPACE, '__name__') + # Sort nodes + node[:] = sorted(node, key=element_sort_key) + helper(root) - rename_attrs(root, '__name__', '{%s}name' % ANDROID_NAMESPACE) - app_node.tag = 'application' def _SplitElement(line): @@ -269,7 +269,7 @@ # Trichrome's static library version number is updated daily. To avoid # frequent manifest check failures, we remove the exact version number # during normalization. - for node in app_node.getchildren(): + for node in app_node: if (node.tag in ['uses-static-library', 'static-library'] and '{%s}version' % ANDROID_NAMESPACE in node.keys() and '{%s}name' % ANDROID_NAMESPACE in node.keys()): @@ -281,14 +281,14 @@ for key in node.keys(): node.set(key, node.get(key).replace(package, '$PACKAGE')) - for child in node.getchildren(): + for child in node: blur_package_name(child) # We only blur the package names of non-root nodes because they generate a lot # of diffs when doing manifest checks for upstream targets. We still want to # have 1 piece of package name not blurred just in case the package name is # mistakenly changed. - for child in root.getchildren(): + for child in root: blur_package_name(child) _SortAndStripElementTree(root)
diff --git a/build/android/gyp/util/manifest_utils_test.py b/build/android/gyp/util/manifest_utils_test.py index 3423e5b..52bf458 100755 --- a/build/android/gyp/util/manifest_utils_test.py +++ b/build/android/gyp/util/manifest_utils_test.py
@@ -1,4 +1,4 @@ -#!/usr/bin/env vpython +#!/usr/bin/env python3 # Copyright 2020 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -49,18 +49,18 @@ _TEST_MANIFEST_NORMALIZED = """\ <?xml version="1.0" ?> <manifest - package="test.pkg" - tools:ignore="MissingVersion" xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + xmlns:tools="http://schemas.android.com/tools" + package="test.pkg" + tools:ignore="MissingVersion"> <uses-feature android:name="android.hardware.vr.headtracking" \ android:required="false" android:version="1"/> <uses-sdk android:minSdkVersion="24" android:targetSdkVersion="30"/> <application android:name="testname"> <activity # DIFF-ANCHOR: {activity_diff_anchor} + android:name="to be hashed" {extra_activity_attr}android:icon="@drawable/ic_devices_48dp" android:label="label with spaces" - android:name="to be hashed" android:theme="@style/Theme.Chromium.Activity.TranslucentNoAnimations"> <intent-filter> # DIFF-ANCHOR: {intent_filter_diff_anchor} {extra_intent_filter_elem}\ @@ -69,11 +69,11 @@ <data android:mimeType="text/plain"/> </intent-filter> # DIFF-ANCHOR: {intent_filter_diff_anchor} </activity> # DIFF-ANCHOR: {activity_diff_anchor} - <receiver # DIFF-ANCHOR: 355000d2 - android:exported="false" + <receiver # DIFF-ANCHOR: ddab3320 android:name=\ -"org.chromium.chrome.browser.announcement.AnnouncementNotificationManager$Rcvr"> - </receiver> # DIFF-ANCHOR: 355000d2 +"org.chromium.chrome.browser.announcement.AnnouncementNotificationManager$Rcvr" + android:exported="false"> + </receiver> # DIFF-ANCHOR: ddab3320 </application> </manifest> """
diff --git a/build/android/gyp/util/resource_utils.py b/build/android/gyp/util/resource_utils.py index d801532..263b7c2 100644 --- a/build/android/gyp/util/resource_utils.py +++ b/build/android/gyp/util/resource_utils.py
@@ -1035,7 +1035,7 @@ for name, utf8_text in sorted(names_to_utf8_text.items()): result += '<string name="%s">"%s"</string>\n' % (name, utf8_text) result += '</resources>\n' - return result + return result.encode('utf8') def FilterAndroidResourceStringsXml(xml_file_path, string_predicate): @@ -1055,7 +1055,7 @@ strings_map, namespaces = ParseAndroidResourceStringsFromXml(xml_data) string_deletion = False - for name in strings_map.keys(): + for name in list(strings_map.keys()): if not string_predicate(name): del strings_map[name] string_deletion = True
diff --git a/build/android/gyp/util/resource_utils_test.py b/build/android/gyp/util/resource_utils_test.py index 42a8356..62d5b43 100755 --- a/build/android/gyp/util/resource_utils_test.py +++ b/build/android/gyp/util/resource_utils_test.py
@@ -1,4 +1,4 @@ -#!/usr/bin/env vpython +#!/usr/bin/env python3 # coding: utf-8 # Copyright 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be @@ -171,7 +171,7 @@ 'yi': 'ji' } for chromium_locale, android_locale in \ - _TEST_CHROMIUM_TO_ANDROID_LOCALE_MAP.iteritems(): + _TEST_CHROMIUM_TO_ANDROID_LOCALE_MAP.items(): result = resource_utils.ToAndroidLocaleName(chromium_locale) self.assertEqual(result, android_locale) @@ -209,7 +209,7 @@ 'no': 'nb', # http://crbug.com/920960 } for android_locale, chromium_locale in \ - _TEST_ANDROID_TO_CHROMIUM_LOCALE_MAP.iteritems(): + _TEST_ANDROID_TO_CHROMIUM_LOCALE_MAP.items(): result = resource_utils.ToChromiumLocaleName(android_locale) self.assertEqual(result, chromium_locale) @@ -240,18 +240,18 @@ def test_GenerateAndroidResourceStringsXml(self): # Fist, an empty strings map, with no namespaces result = resource_utils.GenerateAndroidResourceStringsXml({}) - self.assertEqual(result, _TEST_XML_OUTPUT_EMPTY) + self.assertEqual(result.decode('utf8'), _TEST_XML_OUTPUT_EMPTY) result = resource_utils.GenerateAndroidResourceStringsXml( _TEST_RESOURCES_MAP_1, _TEST_NAMESPACES_1) - self.assertEqual(result, _TEST_XML_INPUT_1) + self.assertEqual(result.decode('utf8'), _TEST_XML_INPUT_1) @staticmethod def _CreateTestResourceFile(output_dir, locale, string_map, namespaces): values_dir = os.path.join(output_dir, 'values-' + locale) build_utils.MakeDirectory(values_dir) file_path = os.path.join(values_dir, 'strings.xml') - with open(file_path, 'w') as f: + with open(file_path, 'wb') as f: file_data = resource_utils.GenerateAndroidResourceStringsXml( string_map, namespaces) f.write(file_data)
diff --git a/build/android/gyp/write_native_libraries_java.py b/build/android/gyp/write_native_libraries_java.py index a0d9906..58754d4 100755 --- a/build/android/gyp/write_native_libraries_java.py +++ b/build/android/gyp/write_native_libraries_java.py
@@ -11,10 +11,36 @@ import sys import zipfile -from native_libraries_template import NATIVE_LIBRARIES_TEMPLATE from util import build_utils +_NATIVE_LIBRARIES_TEMPLATE = """\ +// This file is autogenerated by +// build/android/gyp/write_native_libraries_java.py +// Please do not change its content. + +package org.chromium.build; + +public class NativeLibraries {{ + public static final int CPU_FAMILY_UNKNOWN = 0; + public static final int CPU_FAMILY_ARM = 1; + public static final int CPU_FAMILY_MIPS = 2; + public static final int CPU_FAMILY_X86 = 3; + + // Set to true to enable the use of the Chromium Linker. + public static {MAYBE_FINAL}boolean sUseLinker{USE_LINKER}; + public static {MAYBE_FINAL}boolean sUseLibraryInZipFile{USE_LIBRARY_IN_ZIP_FILE}; + public static {MAYBE_FINAL}boolean sUseModernLinker{USE_MODERN_LINKER}; + + // This is the list of native libraries to be loaded (in the correct order) + // by LibraryLoader.java. + public static {MAYBE_FINAL}String[] LIBRARIES = {{{LIBRARIES}}}; + + public static {MAYBE_FINAL}int sCpuFamily = {CPU_FAMILY}; +}} +""" + + def _FormatLibraryName(library_name): filename = os.path.split(library_name)[1] assert filename.startswith('lib') @@ -41,10 +67,6 @@ parser.add_argument( '--native-libraries-list', help='File with list of native libraries.') parser.add_argument( - '--version-number', - default='""', - help='Expected version of main library.') - parser.add_argument( '--cpu-family', choices={ 'CPU_FAMILY_ARM', 'CPU_FAMILY_X86', 'CPU_FAMILY_MIPS', @@ -88,7 +110,6 @@ 'USE_LIBRARY_IN_ZIP_FILE': bool_str(options.load_library_from_apk), 'USE_MODERN_LINKER': bool_str(options.use_modern_linker), 'LIBRARIES': ','.join(native_libraries_list), - 'VERSION_NUMBER': options.version_number, 'CPU_FAMILY': options.cpu_family, } with build_utils.AtomicOutput(options.output) as f: @@ -96,7 +117,7 @@ build_utils.AddToZipHermetic( zip_file=srcjar_file, zip_path='org/chromium/build/NativeLibraries.java', - data=NATIVE_LIBRARIES_TEMPLATE.format(**format_dict)) + data=_NATIVE_LIBRARIES_TEMPLATE.format(**format_dict)) if options.depfile: assert options.native_libraries_list
diff --git a/build/android/gyp/write_native_libraries_java.pydeps b/build/android/gyp/write_native_libraries_java.pydeps index 47074859..f5176ef78 100644 --- a/build/android/gyp/write_native_libraries_java.pydeps +++ b/build/android/gyp/write_native_libraries_java.pydeps
@@ -1,7 +1,6 @@ # Generated by running: # build/print_python_deps.py --root build/android/gyp --output build/android/gyp/write_native_libraries_java.pydeps build/android/gyp/write_native_libraries_java.py ../../gn_helpers.py -native_libraries_template.py util/__init__.py util/build_utils.py write_native_libraries_java.py
diff --git a/build/android/pylib/utils/dexdump.py b/build/android/pylib/utils/dexdump.py index d0dfee4..f81ac60 100644 --- a/build/android/pylib/utils/dexdump.py +++ b/build/android/pylib/utils/dexdump.py
@@ -50,8 +50,12 @@ BAD_XML_CHARS = re.compile( u'[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f-\x84\x86-\x9f' + u'\ud800-\udfff\ufdd0-\ufddf\ufffe-\uffff]') - decoded_xml = output_xml.decode('utf-8', 'replace') - clean_xml = BAD_XML_CHARS.sub(u'\ufffd', decoded_xml) + if sys.version_info[0] < 3: + decoded_xml = output_xml.decode('utf-8', 'replace') + clean_xml = BAD_XML_CHARS.sub(u'\ufffd', decoded_xml) + else: + # Line duplicated to avoid pylint redefined-variable-type error. + clean_xml = BAD_XML_CHARS.sub(u'\ufffd', output_xml) parsed_dex_files.append( _ParseRootNode(ElementTree.fromstring(clean_xml.encode('utf-8')))) return parsed_dex_files
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni index 3328363..06c0702f 100644 --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni
@@ -2590,8 +2590,6 @@ _expectations_target = "${invoker.top_target_name}_validate_android_manifest" action_with_pydeps(_expectations_target) { - # TODO(crbug.com/1187279): Get this to work under Python3. - run_under_python2 = true _actual_file = "${invoker.android_manifest}.normalized" _failure_file = "$expectations_failure_dir/" + @@ -2644,8 +2642,6 @@ } action_with_pydeps(target_name) { - # TODO(crbug.com/1187279): Get this to work under Python3. - run_under_python2 = true script = _script depfile = "$target_gen_dir/${target_name}.d" inputs = _inputs
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 1f75603f..e52396bf 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -724,12 +724,6 @@ "--native-libraries-list", rebase_path(invoker.native_libraries_list_file, root_build_dir), ] - if (defined(invoker.version_number)) { - args += [ - "--version-number", - invoker.version_number, - ] - } if (defined(invoker.main_component_library)) { args += [ "--main-component-library", @@ -2643,13 +2637,6 @@ if (_generate_native_libraries_java) { write_native_libraries_java("${_template_name}__native_libraries") { forward_variables_from(invoker, [ "main_component_library" ]) - deps = [] - if (defined(invoker.native_lib_version_rule)) { - deps += [ invoker.native_lib_version_rule ] - } - if (defined(invoker.native_lib_version_arg)) { - version_number = invoker.native_lib_version_arg - } # Do not add a dep on the generated_file target in order to avoid having # to build the native libraries before this target. The dependency is @@ -2665,13 +2652,6 @@ use_final_fields = true } _srcjar_deps += [ ":${_template_name}__native_libraries" ] - } else { - if (defined(invoker.native_lib_version_arg)) { - not_needed(invoker, [ "native_lib_version_arg" ]) - } - if (defined(invoker.native_lib_version_rule)) { - not_needed(invoker, [ "native_lib_version_rule" ]) - } } _loadable_modules = [] @@ -3490,8 +3470,6 @@ "main_component_library", "min_sdk_version", "native_lib_placeholders", - "native_lib_version_arg", - "native_lib_version_rule", "never_incremental", "no_xml_namespaces", "png_to_webp", @@ -3623,8 +3601,6 @@ "max_sdk_version", "min_sdk_version", "native_lib_placeholders", - "native_lib_version_arg", - "native_lib_version_rule", "no_xml_namespaces", "package_id", "package_name", @@ -4841,8 +4817,6 @@ _bundle_target_name = "${_target_name}__bundle" action_with_pydeps(_bundle_target_name) { - # TODO(crbug.com/1187279): Get this to work under Python3. - run_under_python2 = true script = "//build/android/gyp/create_app_bundle.py" inputs = _all_module_zip_paths + _all_module_build_configs outputs = [ _bundle_path ]
diff --git a/build/config/fuchsia/generate_runner_scripts.gni b/build/config/fuchsia/generate_runner_scripts.gni index 0f6cd35..7fac16f 100644 --- a/build/config/fuchsia/generate_runner_scripts.gni +++ b/build/config/fuchsia/generate_runner_scripts.gni
@@ -142,7 +142,12 @@ "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/fvm", "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/merkleroot", "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/pm", + + # TODO(crbug.com/1162314) Remove "symbolize" when transition to + # "symbolizer" is complete. "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/symbolize", + + "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/symbolizer", "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/zbi", ]
diff --git a/build/fuchsia/symbolizer.py b/build/fuchsia/symbolizer.py index 7db9fc9f..c2d34de 100644 --- a/build/fuchsia/symbolizer.py +++ b/build/fuchsia/symbolizer.py
@@ -4,44 +4,12 @@ import logging import os -import re import subprocess from common import SDK_ROOT from common import GetHostArchFromPlatform from common import GetHostToolPathFromPlatform -# Paths to the llvm-symbolizer executable in different test hosts. -X64_LLVM_SYMBOLIZER_PATH = os.path.join(SDK_ROOT, os.pardir, os.pardir, - 'llvm-build', 'Release+Asserts', 'bin', - 'llvm-symbolizer') -ARM64_XENIAL_LLVM_SYMBOLIZER_PATH = os.path.join('/', 'usr', 'lib', 'llvm-3.8', - 'bin', 'llvm-symbolizer') -ARM64_BIONIC_LLVM_SYMBOLIZER_PATH = os.path.join('/', 'usr', 'lib', 'llvm-6.0', - 'bin', 'llvm-symbolizer') - - -def _GetLLVMSymbolizerPath(): - """Determines the path to the LLVM symbolizer executable based on test host - architecture and Ubuntu distro.""" - - if GetHostArchFromPlatform() == 'x64': - return X64_LLVM_SYMBOLIZER_PATH - - # Get distro codename from /etc/os-release. - with open(os.path.join('/', 'etc', 'os-release')) as os_release_file: - os_release_text = os_release_file.read() - version_codename_re = r'^VERSION_CODENAME=(?P<codename>[\w.-]+)$' - match = re.search(version_codename_re, os_release_text, re.MULTILINE) - codename = match.group('codename') if match else None - - if codename == 'xenial': - return ARM64_XENIAL_LLVM_SYMBOLIZER_PATH - elif codename == 'bionic': - return ARM64_BIONIC_LLVM_SYMBOLIZER_PATH - else: - raise Exception('Unknown Ubuntu release "%s"' % codename) - def BuildIdsPaths(package_paths): """Generates build ids paths for symbolizer processes.""" @@ -62,13 +30,13 @@ unstripped binaries on the filesystem. Returns a Popen object for the started process.""" - symbolizer = GetHostToolPathFromPlatform('symbolize') - llvm_symbolizer_path = _GetLLVMSymbolizerPath() - symbolizer_cmd = [symbolizer, - '-ids-rel', '-llvm-symbolizer', llvm_symbolizer_path, - '-build-id-dir', os.path.join(SDK_ROOT, '.build-id')] + symbolizer = GetHostToolPathFromPlatform('symbolizer') + symbolizer_cmd = [ + symbolizer, '--build-id-dir', + os.path.join(SDK_ROOT, '.build-id') + ] for build_ids_file in build_ids_files: - symbolizer_cmd.extend(['-ids', build_ids_file]) + symbolizer_cmd.extend(['--ids-txt', build_ids_file]) logging.info('Running "%s".' % ' '.join(symbolizer_cmd)) return subprocess.Popen(symbolizer_cmd, stdin=input_file, stdout=output_file,
diff --git a/build/print_python_deps.py b/build/print_python_deps.py index d8fd731b..e567834 100755 --- a/build/print_python_deps.py +++ b/build/print_python_deps.py
@@ -182,6 +182,12 @@ vpython_to_use = {2: 'vpython', 3: 'vpython3'}[target_version] os.execvp(vpython_to_use, [vpython_to_use] + sys.argv + ['--did-relaunch']) + if current_version == 3: + # Work-around for protobuf library not being loadable via importlib + # This is needed due to compile_resources.py. + import importlib._bootstrap_external + importlib._bootstrap_external._NamespacePath.sort = lambda self, **_: 0 + paths_set = set() try: for module in modules:
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni index 9153f5f..f1cb16b 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -189,14 +189,6 @@ short_resource_paths = true - if ((defined(shared_libraries) && shared_libraries != []) || - (defined(secondary_abi_shared_libraries) && - secondary_abi_shared_libraries != [])) { - _native_lib_file = - rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir) - native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)" - native_lib_version_rule = "//build/util:chrome_version_json" - } if (!defined(aapt_locale_allowlist)) { if (target_type == "android_apk") { # For APKs, do not include the resource strings files from our
diff --git a/chrome/android/expectations/lint-suppressions.xml b/chrome/android/expectations/lint-suppressions.xml index b884b29..c6c4410 100644 --- a/chrome/android/expectations/lint-suppressions.xml +++ b/chrome/android/expectations/lint-suppressions.xml
@@ -266,16 +266,12 @@ <ignore regexp="The resource `R.string.price_drop_alerts_card_get_notified` appears to be unused"/> <ignore regexp="The resource `R.string.price_drop_alerts_card_go_to_settings_content` appears to be unused"/> <ignore regexp="The resource `R.string.price_drop_alerts_card_go_to_settings` appears to be unused"/> - <!-- 9: Temporarily suppressed until impelmentation is ready, see https://crbug.com/1195477 --> - <ignore regexp="The resource `R.string.merchant_viewer_message_title` appears to be unused"/> - <ignore regexp="The resource `R.string.merchant_viewer_message_action` appears to be unused"/> + <!-- 5: Temporarily suppressed until impelmentation is ready, see https://crbug.com/1195477 --> <ignore regexp="The resource `R.string.merchant_viewer_message_description_rating` appears to be unused"/> - <ignore regexp="The resource `R.plurals.merchant_viewer_message_description_reviews` appears to be unused"/> - <ignore regexp="The resource `R.string.merchant_viewer_message_rating_numerical` appears to be unused"/> <ignore regexp="The resource `R.string.merchant_viewer_message_rating_word` appears to be unused"/> <ignore regexp="The resource `R.plurals.accessibility_merchant_viewer_message_description` appears to be unused"/> <ignore regexp="The resource `R.string.accessibility_merchant_viewer_message_announcement` appears to be unused"/> - <ignore regexp="The resource `R.string.merchant_viewer_preview_sheet_title` appears to be unused"/> + <ignore regexp="The resource `R.string.merchant_viewer_message_rating_numerical` appears to be unused"/> <!--TODO(crbug.com/1198233): Remove this suppression when download later V2 is fully implemented.--> <ignore regexp="The resource `R.string.download_later_slow_network_subtitle` appears to be unused"/>
diff --git a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected index c01d991..8eb698b 100644 --- a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected +++ b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
@@ -1,16 +1,16 @@ <?xml version="1.0" ?> <manifest - android:isolatedSplits="true" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" package="org.chromium.chrome.stable" platformBuildVersionCode="30" platformBuildVersionName="11" - tools:ignore="MissingVersion" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + android:isolatedSplits="true" + tools:ignore="MissingVersion"> <permission android:name="$PACKAGE.TOS_ACKED" android:protectionLevel="signatureOrSystem"/> <permission android:name="$PACKAGE.permission.C2D_MESSAGE" android:protectionLevel="signature"/> <permission android:name="$PACKAGE.permission.CHILD_SERVICE" android:protectionLevel="signature"/> - <permission android:label="Debug web pages" android:name="$PACKAGE.permission.DEBUG" android:protectionLevel="signature"/> + <permission android:name="$PACKAGE.permission.DEBUG" android:label="Debug web pages" android:protectionLevel="signature"/> <permission android:name="$PACKAGE.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem"/> <permission android:name="$PACKAGE.permission.TRANSLATE" android:protectionLevel="signature"/> <queries> # DIFF-ANCHOR: 5a71ec1f @@ -19,6 +19,7 @@ </intent> # DIFF-ANCHOR: 28c960ba <package android:name="com.google.ar.core"/> </queries> # DIFF-ANCHOR: 5a71ec1f + <uses-feature android:glEsVersion="0x00020000"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.location.gps" android:required="false"/> <uses-feature android:name="android.hardware.microphone" android:required="false"/> @@ -29,7 +30,6 @@ <uses-feature android:name="android.hardware.vr.headtracking" android:required="false" android:version="1"/> <uses-feature android:name="android.hardware.vr.high_performance" android:required="false"/> <uses-feature android:name="android.software.vr.mode" android:required="false"/> - <uses-feature android:glEsVersion="0x00020000"/> <uses-permission android:name="$PACKAGE.TOS_ACKED"/> <uses-permission android:name="$PACKAGE.permission.C2D_MESSAGE"/> <uses-permission android:name="$PACKAGE.permission.READ_WRITE_BOOKMARK_FOLDERS"/> @@ -70,6 +70,7 @@ <uses-permission-sdk-23 android:name="android.permission.USE_FINGERPRINT"/> <uses-sdk android:minSdkVersion="24" android:targetSdkVersion="30"/> <application + android:name="org.chromium.chrome.browser.base.SplitMonochromeApplication" android:allowAudioPlaybackCapture="false" android:allowBackup="false" android:appComponentFactory="org.chromium.chrome.browser.base.SplitCompatAppComponentFactory" @@ -79,47 +80,46 @@ android:largeHeap="false" android:manageSpaceActivity="@string/manage_space_activity" android:multiArch="true" - android:name="org.chromium.chrome.browser.base.SplitMonochromeApplication" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@drawable/ic_launcher_round" android:supportsRtl="true" android:use32bitAbi="true" android:zygotePreloadName="org.chromium.content.app.ZygotePreload"> <activity # DIFF-ANCHOR: ea1a94af - android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" + android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> # DIFF-ANCHOR: ea1a94af <activity # DIFF-ANCHOR: a2bae37c + android:name="com.google.android.play.core.common.PlayCoreDialogWrapperActivity" android:enabled="false" android:exported="false" - android:name="com.google.android.play.core.common.PlayCoreDialogWrapperActivity" android:process=":playcore_dialog_wrapper_activity" android:stateNotNeeded="true" android:theme="@style/Theme.PlayCore.Transparent"> </activity> # DIFF-ANCHOR: a2bae37c <activity # DIFF-ANCHOR: 53a4871f + android:name="com.google.android.play.core.missingsplits.PlayCoreMissingSplitsActivity" android:enabled="false" android:exported="false" android:launchMode="singleInstance" - android:name="com.google.android.play.core.missingsplits.PlayCoreMissingSplitsActivity" android:process=":playcore_missing_splits_activity" android:stateNotNeeded="true"> </activity> # DIFF-ANCHOR: 53a4871f <activity # DIFF-ANCHOR: 28dc9019 + android:name="com.google.ar.core.InstallActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleTop" - android:name="com.google.ar.core.InstallActivity" android:theme="@android:style/Theme.Material.Light.Dialog.Alert"> </activity> # DIFF-ANCHOR: 28dc9019 <activity # DIFF-ANCHOR: a4438884 + android:name="org.chromium.android_webview.devui.MainActivity" android:exported="true" android:icon="@drawable/icon_webview" android:label="WebView DevTools" android:launchMode="singleTask" - android:name="org.chromium.android_webview.devui.MainActivity" android:process=":webview_apk" android:taskAffinity="$PACKAGE.org.chromium.android_webview.devui" android:theme="@style/Theme.DevUi.DayNight" @@ -131,9 +131,9 @@ </intent-filter> # DIFF-ANCHOR: a167e73d </activity> # DIFF-ANCHOR: a4438884 <activity # DIFF-ANCHOR: aeabab17 + android:name="org.chromium.android_webview.nonembedded.LicenseActivity" android:exported="true" android:label="@string/license_activity_title" - android:name="org.chromium.android_webview.nonembedded.LicenseActivity" android:process=":webview_apk"> <intent-filter> # DIFF-ANCHOR: 23298d3b <action android:name="android.settings.WEBVIEW_LICENSE"/> @@ -142,19 +142,19 @@ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true"/> </activity> # DIFF-ANCHOR: aeabab17 <activity # DIFF-ANCHOR: 93d41352 + android:name="org.chromium.chrome.browser.BrowserRestartActivity" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleInstance" - android:name="org.chromium.chrome.browser.BrowserRestartActivity" android:process=":browser_restart_process" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> # DIFF-ANCHOR: 93d41352 <activity # DIFF-ANCHOR: 61b2c776 + android:name="org.chromium.chrome.browser.ChromeTabbedActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="true" android:hardwareAccelerated="false" android:launchMode="singleTask" - android:name="org.chromium.chrome.browser.ChromeTabbedActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.TabbedMode" @@ -166,11 +166,11 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 61b2c776 <activity # DIFF-ANCHOR: 610e8ccf + android:name="org.chromium.chrome.browser.ChromeTabbedActivity2" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" android:launchMode="singleTask" - android:name="org.chromium.chrome.browser.ChromeTabbedActivity2" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:taskAffinity="$PACKAGE.ChromeTabbedActivity2" @@ -183,23 +183,23 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 610e8ccf <activity # DIFF-ANCHOR: 76686af9 + android:name="org.chromium.chrome.browser.LauncherShortcutActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.LauncherShortcutActivity" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: 76686af9 <activity # DIFF-ANCHOR: 9af505d2 + android:name="org.chromium.chrome.browser.app.feedmanagement.FeedManagementActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.feedmanagement.FeedManagementActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 9af505d2 <activity # DIFF-ANCHOR: 78326aaf + android:name="org.chromium.chrome.browser.app.followmanagement.FollowManagementActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.followmanagement.FollowManagementActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> <intent-filter> # DIFF-ANCHOR: 0afe8981 @@ -208,38 +208,38 @@ </intent-filter> # DIFF-ANCHOR: 0afe8981 </activity> # DIFF-ANCHOR: 78326aaf <activity # DIFF-ANCHOR: 50c7105b + android:name="org.chromium.chrome.browser.app.reengagement.ReengagementActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.app.reengagement.ReengagementActivity" android:taskAffinity="" android:theme="@android:style/Theme.Translucent"> </activity> # DIFF-ANCHOR: 50c7105b <activity # DIFF-ANCHOR: aeab60ac + android:name="org.chromium.chrome.browser.app.video_tutorials.VideoPlayerActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.video_tutorials.VideoPlayerActivity" android:screenOrientation="portrait" android:theme="@style/Theme.Chromium.Activity.Fullscreen" tools:ignore="LockedOrientationActivity"> </activity> # DIFF-ANCHOR: aeab60ac <activity # DIFF-ANCHOR: 170e9f21 + android:name="org.chromium.chrome.browser.app.video_tutorials.VideoTutorialListActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.video_tutorials.VideoTutorialListActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen"> </activity> # DIFF-ANCHOR: 170e9f21 <activity # DIFF-ANCHOR: da2eedc8 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: da2eedc8 <activity # DIFF-ANCHOR: a208e726 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddActivity" android:theme="@android:style/Theme.NoDisplay" android:windowSoftInputMode="stateHidden"> <intent-filter> # DIFF-ANCHOR: 47a8059b @@ -248,35 +248,35 @@ </intent-filter> # DIFF-ANCHOR: 47a8059b </activity> # DIFF-ANCHOR: a208e726 <activity # DIFF-ANCHOR: e0427380 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddEditFolderActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddEditFolderActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge"> </activity> # DIFF-ANCHOR: e0427380 <activity # DIFF-ANCHOR: b66ce3f2 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkEditActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/edit_bookmark" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkEditActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge" android:windowSoftInputMode="stateHidden"> </activity> # DIFF-ANCHOR: b66ce3f2 <activity # DIFF-ANCHOR: 0a21ad35 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkFolderSelectActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/bookmark_choose_folder" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkFolderSelectActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge" android:windowSoftInputMode="stateAlwaysHidden"> </activity> # DIFF-ANCHOR: 0a21ad35 <activity # DIFF-ANCHOR: 209b5ded - android:exported="false" android:name="org.chromium.chrome.browser.browserservices.ClearDataDialogActivity" + android:exported="false" android:theme="@style/Theme.Chromium.ClearDataDialogActivity"> </activity> # DIFF-ANCHOR: 209b5ded <activity # DIFF-ANCHOR: 2b0ee4cd - android:exported="true" android:name="org.chromium.chrome.browser.browserservices.ManageTrustedWebActivityDataActivity" + android:exported="true" android:theme="@style/Theme.Chromium.Activity.Fullscreen.Transparent"> <intent-filter> # DIFF-ANCHOR: 38d9d906 <action android:name="android.support.customtabs.action.ACTION_MANAGE_TRUSTED_WEB_ACTIVITY_DATA"/> @@ -289,10 +289,10 @@ </intent-filter> # DIFF-ANCHOR: 38d9d906 </activity> # DIFF-ANCHOR: 2b0ee4cd <activity # DIFF-ANCHOR: 44266a6a + android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" - android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.Activity" @@ -304,10 +304,10 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 44266a6a <activity # DIFF-ANCHOR: 4d923622 + android:name="org.chromium.chrome.browser.customtabs.TranslucentCustomTabActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" - android:name="org.chromium.chrome.browser.customtabs.TranslucentCustomTabActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.Activity.FakeTranslucent" @@ -319,62 +319,62 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 4d923622 <activity # DIFF-ANCHOR: 1acdfd19 + android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:excludeFromRecents="true" - android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity" android:relinquishTaskIdentity="true" android:taskAffinity="" android:theme="@style/LauncherTheme"> </activity> # DIFF-ANCHOR: 1acdfd19 <activity # DIFF-ANCHOR: 5c83a464 + android:name="org.chromium.chrome.browser.download.DownloadActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.download.DownloadActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 5c83a464 <activity # DIFF-ANCHOR: 2121eb0d + android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity" android:autoRemoveFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:label="@string/fre_activity_label" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge" android:windowSoftInputMode="stateHidden|adjustPan"> </activity> # DIFF-ANCHOR: 2121eb0d <activity # DIFF-ANCHOR: 67932092 + android:name="org.chromium.chrome.browser.firstrun.LightweightFirstRunActivity" android:autoRemoveFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:label="@string/fre_activity_label" android:launchMode="singleInstance" - android:name="org.chromium.chrome.browser.firstrun.LightweightFirstRunActivity" android:theme="@style/Theme.Chromium.AlertDialog.NoActionBar" android:windowSoftInputMode="stateHidden|adjustPan"> </activity> # DIFF-ANCHOR: 67932092 <activity # DIFF-ANCHOR: bb612a34 + android:name="org.chromium.chrome.browser.firstrun.TabbedModeFirstRunActivity" android:autoRemoveFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:label="@string/fre_activity_label" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.firstrun.TabbedModeFirstRunActivity" android:theme="@style/Theme.Chromium.TabbedMode" android:windowSoftInputMode="stateHidden|adjustPan"> </activity> # DIFF-ANCHOR: bb612a34 <activity # DIFF-ANCHOR: 05911131 + android:name="org.chromium.chrome.browser.history.HistoryActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.history.HistoryActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 05911131 <activity # DIFF-ANCHOR: b98302dc + android:name="org.chromium.chrome.browser.incognito.IncognitoTabLauncher" android:enabled="false" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.incognito.IncognitoTabLauncher" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 8f811d02 @@ -383,17 +383,17 @@ </intent-filter> # DIFF-ANCHOR: 8f811d02 </activity> # DIFF-ANCHOR: b98302dc <activity # DIFF-ANCHOR: 349d8ca5 + android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: 349d8ca5 <activity # DIFF-ANCHOR: ecd48344 + android:name="org.chromium.chrome.browser.media.MediaLauncherActivity" android:enabled="false" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.media.MediaLauncherActivity" android:theme="@android:style/Theme.NoDisplay"> <intent-filter tools:ignore="AppLinkUrlError"> # DIFF-ANCHOR: 13c9b0a8 <action android:name="android.intent.action.VIEW"/> @@ -405,40 +405,40 @@ </intent-filter> # DIFF-ANCHOR: 13c9b0a8 </activity> # DIFF-ANCHOR: ecd48344 <activity # DIFF-ANCHOR: d706d96e + android:name="org.chromium.chrome.browser.media.PictureInPictureActivity" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.media.PictureInPictureActivity" android:noHistory="true" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.Activity"> </activity> # DIFF-ANCHOR: d706d96e <activity # DIFF-ANCHOR: 9023f153 + android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" - android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity" android:theme="@style/Theme.Chromium.TabbedMode" android:windowSoftInputMode="adjustResize"> </activity> # DIFF-ANCHOR: 9023f153 <activity # DIFF-ANCHOR: e86e2b49 + android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$TrampolineActivity" android:autoRemoveFromRecents="true" android:documentLaunchMode="always" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$TrampolineActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: e86e2b49 <activity # DIFF-ANCHOR: bec48e1f + android:name="org.chromium.chrome.browser.printing.PrintShareActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:enabled="false" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/sharing_print" android:label="@string/print_share_activity_title" - android:name="org.chromium.chrome.browser.printing.PrintShareActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 4ee601b7 @@ -450,6 +450,7 @@ </intent-filter> # DIFF-ANCHOR: 4ee601b7 </activity> # DIFF-ANCHOR: bec48e1f <activity # DIFF-ANCHOR: 7468a722 + android:name="org.chromium.chrome.browser.searchwidget.SearchActivity" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" @@ -457,19 +458,18 @@ android:hardwareAccelerated="false" android:label="Search" android:launchMode="singleTask" - android:name="org.chromium.chrome.browser.searchwidget.SearchActivity" android:taskAffinity="" android:theme="@style/Theme.Chromium.SearchActivity" android:windowSoftInputMode="adjustResize"> </activity> # DIFF-ANCHOR: 7468a722 <activity # DIFF-ANCHOR: f1aedff1 + android:name="org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:enabled="false" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/ic_launcher" android:label="@string/send_tab_to_self_share_activity_title" - android:name="org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 4ee601b7 @@ -479,20 +479,20 @@ </intent-filter> # DIFF-ANCHOR: 4ee601b7 </activity> # DIFF-ANCHOR: f1aedff1 <activity # DIFF-ANCHOR: d32b85df + android:name="org.chromium.chrome.browser.settings.SettingsActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/settings" - android:name="org.chromium.chrome.browser.settings.SettingsActivity" android:theme="@style/Theme.Chromium.Settings"> </activity> # DIFF-ANCHOR: d32b85df <activity # DIFF-ANCHOR: 44158f9b + android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardShareActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:enabled="false" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/ic_devices_48dp" android:label="@string/shared_clipboard_share_activity_title" - android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardShareActivity" android:noHistory="true" android:theme="@style/Theme.Chromium.Activity.TranslucentNoAnimations"> <intent-filter> # DIFF-ANCHOR: 4ee601b7 @@ -502,42 +502,42 @@ </intent-filter> # DIFF-ANCHOR: 4ee601b7 </activity> # DIFF-ANCHOR: 44158f9b <activity # DIFF-ANCHOR: fbf1ba15 + android:name="org.chromium.chrome.browser.signin.SyncConsentActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.signin.SyncConsentActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge"> </activity> # DIFF-ANCHOR: fbf1ba15 <activity # DIFF-ANCHOR: d2967c86 + android:name="org.chromium.chrome.browser.site_settings.ManageSpaceActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/storage_management_activity_label" - android:name="org.chromium.chrome.browser.site_settings.ManageSpaceActivity" android:theme="@style/Theme.Chromium.Settings.ManageSpace"> </activity> # DIFF-ANCHOR: d2967c86 <activity # DIFF-ANCHOR: 8492e3fd - android:autoRemoveFromRecents="true" android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity" + android:autoRemoveFromRecents="true" android:theme="@style/Theme.Chromium.Activity"> </activity> # DIFF-ANCHOR: 8492e3fd <activity # DIFF-ANCHOR: 76b60c10 + android:name="org.chromium.chrome.browser.sync.ui.TrustedVaultKeyRetrievalProxyActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.sync.ui.TrustedVaultKeyRetrievalProxyActivity" android:theme="@style/Theme.AppCompat"> </activity> # DIFF-ANCHOR: 76b60c10 <activity # DIFF-ANCHOR: 43bfa5de + android:name="org.chromium.chrome.browser.test_dummy.TestDummyActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.test_dummy.TestDummyActivity" android:noHistory="true" android:theme="@style/Theme.AppCompat"> </activity> # DIFF-ANCHOR: 43bfa5de <activity # DIFF-ANCHOR: b007dcaa + android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity" android:enableVrMode="@string/gvr_vr_mode_component" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: dea53031 @@ -547,12 +547,12 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: b007dcaa <activity # DIFF-ANCHOR: 5e628a6c + android:name="org.chromium.chrome.browser.vr.VrFirstRunActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode" android:enableVrMode="@string/gvr_vr_mode_component" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleInstance" - android:name="org.chromium.chrome.browser.vr.VrFirstRunActivity" android:theme="@style/VrActivityTheme"> <intent-filter> # DIFF-ANCHOR: dea53031 <action android:name="org.chromium.chrome.browser.dummy.action"/> @@ -561,8 +561,8 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 5e628a6c <activity # DIFF-ANCHOR: 9bb1f409 - android:exported="true" android:name="org.chromium.chrome.browser.webapps.ActivateWebApkActivity" + android:exported="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 0d72b7f0 <action android:name="org.chromium.chrome.browser.webapps.ActivateWebApkActivity.ACTIVATE"/> @@ -570,11 +570,11 @@ </intent-filter> # DIFF-ANCHOR: 0d72b7f0 </activity> # DIFF-ANCHOR: 9bb1f409 <activity # DIFF-ANCHOR: f1dc024a + android:name="org.chromium.chrome.browser.webapps.SameTaskWebApkActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" android:label="@string/webapp_activity_title" - android:name="org.chromium.chrome.browser.webapps.SameTaskWebApkActivity" android:persistableMode="persistNever" android:resizeableActivity="true" android:supportsPictureInPicture="true" @@ -587,13 +587,13 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: f1dc024a <activity # DIFF-ANCHOR: 5e467d8a + android:name="org.chromium.chrome.browser.webapps.WebappActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:documentLaunchMode="intoExisting" android:exported="false" android:hardwareAccelerated="false" android:label="@string/webapp_activity_title" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.webapps.WebappActivity" android:persistableMode="persistNever" android:resizeableActivity="true" android:supportsPictureInPicture="true" @@ -606,9 +606,9 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 5e467d8a <activity # DIFF-ANCHOR: aea75380 + android:name="org.chromium.chrome.browser.webapps.WebappLauncherActivity" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.webapps.WebappLauncherActivity" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: faf519ad @@ -621,18 +621,18 @@ </intent-filter> # DIFF-ANCHOR: 9c5197e9 </activity> # DIFF-ANCHOR: aea75380 <activity # DIFF-ANCHOR: 66a0be05 + android:name="org.chromium.chrome.browser.webapps.launchpad.LaunchpadActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.webapps.launchpad.LaunchpadActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 66a0be05 <activity # DIFF-ANCHOR: a1fac31f + android:name="org.chromium.chrome.browser.webauth.authenticator.CableAuthenticatorActivity" android:excludeFromRecents="true" android:exported="true" android:label="@string/cablev2_activity_title" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.webauth.authenticator.CableAuthenticatorActivity" android:permission="com.google.android.gms.auth.cryptauth.permission.CABLEV2_SERVER_LINK" android:theme="@style/Theme.Chromium.Activity.Fullscreen"> <intent-filter> # DIFF-ANCHOR: 5873407a @@ -641,18 +641,18 @@ <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/phone_as_a_security_key_accessory_filter"/> </activity> # DIFF-ANCHOR: a1fac31f <activity # DIFF-ANCHOR: 1d9b4077 + android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:hardwareAccelerated="true" android:label="Chrome.CafExpandedControllerActivity" android:launchMode="singleTask" - android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity" android:noHistory="true" android:theme="@style/Theme.Chromium.Activity"> </activity> # DIFF-ANCHOR: 1d9b4077 <activity-alias # DIFF-ANCHOR: 9da0e5b6 - android:exported="true" android:name="com.google.android.apps.chrome.IntentDispatcher" + android:exported="true" android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"> <intent-filter> # DIFF-ANCHOR: a5330430 <action android:name="android.intent.action.MAIN"/> @@ -785,8 +785,8 @@ <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity-alias> # DIFF-ANCHOR: 9da0e5b6 <activity-alias # DIFF-ANCHOR: 5042984f - android:exported="true" android:name="com.google.android.apps.chrome.Main" + android:exported="true" android:targetActivity="org.chromium.chrome.browser.ChromeTabbedActivity"> <intent-filter> # DIFF-ANCHOR: a5330430 <action android:name="android.intent.action.MAIN"/> @@ -803,8 +803,8 @@ <meta-data android:name="android.app.shortcuts" android:resource="@xml/launchershortcuts"/> </activity-alias> # DIFF-ANCHOR: 5042984f <activity-alias # DIFF-ANCHOR: 03398466 - android:exported="true" android:name="com.google.android.apps.chrome.TranslateDispatcher" + android:exported="true" android:permission="$PACKAGE.permission.TRANSLATE" android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"> <intent-filter> # DIFF-ANCHOR: 75e5f897 @@ -813,8 +813,8 @@ </intent-filter> # DIFF-ANCHOR: 75e5f897 </activity-alias> # DIFF-ANCHOR: 03398466 <activity-alias # DIFF-ANCHOR: dcfe2999 - android:label="@string/webapp_activity_title" android:name="com.google.android.apps.chrome.webapps.WebappActivity" + android:label="@string/webapp_activity_title" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"> @@ -824,17 +824,17 @@ android:targetActivity="org.chromium.chrome.browser.webapps.WebappLauncherActivity"> </activity-alias> # DIFF-ANCHOR: 8e23336d <activity-alias # DIFF-ANCHOR: b7cc06e9 - android:enabled="false" android:name="org.chromium.android_webview.devui.DeveloperModeState" + android:enabled="false" android:process=":webview_apk" android:targetActivity="org.chromium.android_webview.devui.MainActivity" android:visibleToInstantApps="true"> </activity-alias> # DIFF-ANCHOR: b7cc06e9 <activity-alias # DIFF-ANCHOR: 32e34aba + android:name="org.chromium.android_webview.devui.MonochromeLauncherActivity" android:enabled="false" android:exported="true" android:label="WebView DevTools" - android:name="org.chromium.android_webview.devui.MonochromeLauncherActivity" android:targetActivity="org.chromium.android_webview.devui.MainActivity"> <intent-filter> # DIFF-ANCHOR: a5330430 <action android:name="android.intent.action.MAIN"/> @@ -842,10 +842,10 @@ </intent-filter> # DIFF-ANCHOR: a5330430 </activity-alias> # DIFF-ANCHOR: 32e34aba <activity-alias # DIFF-ANCHOR: b4a6221b + android:name="org.chromium.chrome.browser.media.AudioLauncherActivity" android:enabled="false" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.media.AudioLauncherActivity" android:targetActivity="org.chromium.chrome.browser.media.MediaLauncherActivity" android:theme="@android:style/Theme.NoDisplay"> <intent-filter tools:ignore="AppLinkUrlError"> # DIFF-ANCHOR: 13c9b0a8 @@ -857,8 +857,8 @@ </intent-filter> # DIFF-ANCHOR: 13c9b0a8 </activity-alias> # DIFF-ANCHOR: b4a6221b <activity-alias # DIFF-ANCHOR: 7c349c4f - android:exported="false" android:name="org.chromium.chrome.browser.webapps.SecureWebAppLauncher" + android:exported="false" android:targetActivity="org.chromium.chrome.browser.webapps.WebappLauncherActivity"> <intent-filter> # DIFF-ANCHOR: 9fe4b527 <action android:name="org.chromium.chrome.browser.webapps.WebappManager.ACTION_START_SECURE_WEBAPP"/> @@ -877,151 +877,151 @@ <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" android:value="5"/> <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" android:value="40"/> <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER" android:value="org.chromium.content_public.browser.SmartClipProvider"/> - <provider # DIFF-ANCHOR: 31002ffd + <provider # DIFF-ANCHOR: bc0a9a7a + android:name="com.google.firebase.provider.FirebaseInitProvider" android:authorities="$PACKAGE.firebaseinitprovider" android:directBootAware="true" android:exported="false" - android:initOrder="100" - android:name="com.google.firebase.provider.FirebaseInitProvider"> - </provider> # DIFF-ANCHOR: 31002ffd + android:initOrder="100"> + </provider> # DIFF-ANCHOR: bc0a9a7a <provider # DIFF-ANCHOR: a5e78e63 + android:name="org.chromium.android_webview.nonembedded.LicenseContentProvider" android:authorities="$PACKAGE.LicenseContentProvider" android:exported="true" android:grantUriPermissions="true" - android:name="org.chromium.android_webview.nonembedded.LicenseContentProvider" android:process=":webview_apk" tools:ignore="ExportedContentProvider"> </provider> # DIFF-ANCHOR: a5e78e63 <provider # DIFF-ANCHOR: bfe37944 + android:name="org.chromium.android_webview.services.DeveloperModeContentProvider" android:authorities="$PACKAGE.DeveloperModeContentProvider" android:exported="true" - android:name="org.chromium.android_webview.services.DeveloperModeContentProvider" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedContentProvider"> </provider> # DIFF-ANCHOR: bfe37944 - <provider # DIFF-ANCHOR: 97e158a1 + <provider # DIFF-ANCHOR: b73a881a + android:name="org.chromium.chrome.browser.download.DownloadFileProvider" android:authorities="$PACKAGE.DownloadFileProvider" android:exported="false" - android:grantUriPermissions="true" - android:name="org.chromium.chrome.browser.download.DownloadFileProvider"> + android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> - </provider> # DIFF-ANCHOR: 97e158a1 - <provider # DIFF-ANCHOR: 2215b9cd + </provider> # DIFF-ANCHOR: b73a881a + <provider # DIFF-ANCHOR: f1c2d7e1 + android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider" android:authorities="$PACKAGE.ChromeBrowserProvider;$PACKAGE.browser;$PACKAGE" - android:exported="true" - android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider"> + android:exported="true"> <path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/> - </provider> # DIFF-ANCHOR: 2215b9cd - <provider # DIFF-ANCHOR: 6e306896 + </provider> # DIFF-ANCHOR: f1c2d7e1 + <provider # DIFF-ANCHOR: 67014fab + android:name="org.chromium.chrome.browser.util.ChromeFileProvider" android:authorities="$PACKAGE.FileProvider" android:exported="false" - android:grantUriPermissions="true" - android:name="org.chromium.chrome.browser.util.ChromeFileProvider"> + android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> - </provider> # DIFF-ANCHOR: 6e306896 - <receiver # DIFF-ANCHOR: 7d221226 + </provider> # DIFF-ANCHOR: 67014fab + <receiver # DIFF-ANCHOR: 58d39a0f + android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider" android:exported="true" - android:label="@string/bookmark_widget_title" - android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider"> + android:label="@string/bookmark_widget_title"> <intent-filter> # DIFF-ANCHOR: 1ebe78e9 <action android:name=".BOOKMARK_APPWIDGET_UPDATE"/> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> # DIFF-ANCHOR: 1ebe78e9 <meta-data android:name="android.appwidget.provider" android:resource="@xml/bookmark_widget_info"/> - </receiver> # DIFF-ANCHOR: 7d221226 - <receiver # DIFF-ANCHOR: 1091f66b - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver"> - </receiver> # DIFF-ANCHOR: 1091f66b + </receiver> # DIFF-ANCHOR: 58d39a0f + <receiver # DIFF-ANCHOR: 0a6f8fa5 + android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0a6f8fa5 <receiver # DIFF-ANCHOR: f1c9c29d - android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" + android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> # DIFF-ANCHOR: aae22013 <action android:name="com.google.android.c2dm.intent.RECEIVE"/> </intent-filter> # DIFF-ANCHOR: aae22013 </receiver> # DIFF-ANCHOR: f1c9c29d - <receiver # DIFF-ANCHOR: 9ef4cd0a - android:exported="false" - android:name="org.chromium.chrome.browser.announcement.AnnouncementNotificationManager$Receiver"> - </receiver> # DIFF-ANCHOR: 9ef4cd0a - <receiver # DIFF-ANCHOR: 9a0a00e8 - android:exported="false" - android:name="org.chromium.chrome.browser.app.send_tab_to_self.SendTabToSelfNotificationReceiver"> - </receiver> # DIFF-ANCHOR: 9a0a00e8 - <receiver # DIFF-ANCHOR: b93ab7db - android:exported="false" - android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy"> - </receiver> # DIFF-ANCHOR: b93ab7db - <receiver # DIFF-ANCHOR: 3e596004 - android:exported="true" - android:name="org.chromium.chrome.browser.browserservices.ClientAppBroadcastReceiver"> + <receiver # DIFF-ANCHOR: 68e22783 + android:name="org.chromium.chrome.browser.announcement.AnnouncementNotificationManager$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 68e22783 + <receiver # DIFF-ANCHOR: f6d77f5a + android:name="org.chromium.chrome.browser.app.send_tab_to_self.SendTabToSelfNotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: f6d77f5a + <receiver # DIFF-ANCHOR: be2dce69 + android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy" + android:exported="false"> + </receiver> # DIFF-ANCHOR: be2dce69 + <receiver # DIFF-ANCHOR: 31a8399a + android:name="org.chromium.chrome.browser.browserservices.ClientAppBroadcastReceiver" + android:exported="true"> <intent-filter> # DIFF-ANCHOR: e5bb6a36 <action android:name="android.intent.action.PACKAGE_DATA_CLEARED"/> <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/> <data android:scheme="package"/> </intent-filter> # DIFF-ANCHOR: e5bb6a36 - </receiver> # DIFF-ANCHOR: 3e596004 - <receiver # DIFF-ANCHOR: a31e6ce5 - android:exported="false" - android:name="org.chromium.chrome.browser.browserservices.ui.trustedwebactivity.DisclosureAcceptanceBroadcastReceiver"> - </receiver> # DIFF-ANCHOR: a31e6ce5 - <receiver # DIFF-ANCHOR: 779ee86b - android:exported="false" - android:name="org.chromium.chrome.browser.customtabs.CustomTabsShareBroadcastReceiver"> - </receiver> # DIFF-ANCHOR: 779ee86b - <receiver # DIFF-ANCHOR: bccc7d87 - android:exported="false" - android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver"> + </receiver> # DIFF-ANCHOR: 31a8399a + <receiver # DIFF-ANCHOR: 2f4b69ac + android:name="org.chromium.chrome.browser.browserservices.ui.trustedwebactivity.DisclosureAcceptanceBroadcastReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 2f4b69ac + <receiver # DIFF-ANCHOR: fd245bee + android:name="org.chromium.chrome.browser.customtabs.CustomTabsShareBroadcastReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: fd245bee + <receiver # DIFF-ANCHOR: de591772 + android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: 5458f2a2 <action android:name="android.intent.action.LOCALE_CHANGED"/> </intent-filter> # DIFF-ANCHOR: 5458f2a2 - </receiver> # DIFF-ANCHOR: bccc7d87 - <receiver # DIFF-ANCHOR: 17866e9d - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver"> - </receiver> # DIFF-ANCHOR: 17866e9d - <receiver # DIFF-ANCHOR: de24469c - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver"> - </receiver> # DIFF-ANCHOR: de24469c - <receiver # DIFF-ANCHOR: 2934478c - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationServiceImpl$Receiver"> + </receiver> # DIFF-ANCHOR: de591772 + <receiver # DIFF-ANCHOR: 2b9c19aa + android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 2b9c19aa + <receiver # DIFF-ANCHOR: d8a2af42 + android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: d8a2af42 + <receiver # DIFF-ANCHOR: df76237f + android:name="org.chromium.chrome.browser.notifications.NotificationServiceImpl$Receiver" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: 1c1c5ed8 <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION"/> <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION"/> </intent-filter> # DIFF-ANCHOR: 1c1c5ed8 - </receiver> # DIFF-ANCHOR: 2934478c - <receiver # DIFF-ANCHOR: e1c4d394 - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.scheduler.DisplayAgent$Receiver"> - </receiver> # DIFF-ANCHOR: e1c4d394 - <receiver # DIFF-ANCHOR: de47f306 - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$CompleteNotificationReceiver"> - </receiver> # DIFF-ANCHOR: de47f306 - <receiver # DIFF-ANCHOR: 98349cb3 - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$InProgressCancelReceiver"> - </receiver> # DIFF-ANCHOR: 98349cb3 - <receiver # DIFF-ANCHOR: cfa3bb7f - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$ClickReceiver"> - </receiver> # DIFF-ANCHOR: cfa3bb7f - <receiver # DIFF-ANCHOR: 1f02dc2f - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$SettingsReceiver"> - </receiver> # DIFF-ANCHOR: 1f02dc2f - <receiver # DIFF-ANCHOR: 40a69297 - android:exported="false" - android:name="org.chromium.chrome.browser.omaha.UpdateNotificationController$UpdateNotificationReceiver"> - </receiver> # DIFF-ANCHOR: 40a69297 - <receiver # DIFF-ANCHOR: 3664f7eb + </receiver> # DIFF-ANCHOR: df76237f + <receiver # DIFF-ANCHOR: 0cefd906 + android:name="org.chromium.chrome.browser.notifications.scheduler.DisplayAgent$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0cefd906 + <receiver # DIFF-ANCHOR: 7d28c8e4 + android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$CompleteNotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 7d28c8e4 + <receiver # DIFF-ANCHOR: 05f19ac3 + android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$InProgressCancelReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 05f19ac3 + <receiver # DIFF-ANCHOR: f2ef5c19 + android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$ClickReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: f2ef5c19 + <receiver # DIFF-ANCHOR: 0267e562 + android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$SettingsReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0267e562 + <receiver # DIFF-ANCHOR: a3a6e991 + android:name="org.chromium.chrome.browser.omaha.UpdateNotificationController$UpdateNotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: a3a6e991 + <receiver # DIFF-ANCHOR: a0d83ae5 + android:name="org.chromium.chrome.browser.searchwidget.SearchWidgetProvider" android:exported="true" - android:label="@string/search_widget_title" - android:name="org.chromium.chrome.browser.searchwidget.SearchWidgetProvider"> + android:label="@string/search_widget_title"> <intent-filter> # DIFF-ANCHOR: 4ed161a4 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> # DIFF-ANCHOR: 4ed161a4 @@ -1035,151 +1035,151 @@ <action android:name="org.chromium.chrome.browser.searchwidget.UPDATE_ALL_WIDGETS"/> </intent-filter> # DIFF-ANCHOR: fc048873 <meta-data android:name="android.appwidget.provider" android:resource="@xml/search_widget_info"/> - </receiver> # DIFF-ANCHOR: 3664f7eb - <receiver # DIFF-ANCHOR: 93e73992 - android:exported="true" - android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$PhoneUnlockedReceiver"> + </receiver> # DIFF-ANCHOR: a0d83ae5 + <receiver # DIFF-ANCHOR: 2f1fe689 + android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$PhoneUnlockedReceiver" + android:exported="true"> <intent-filter> # DIFF-ANCHOR: 4b5ec7a9 <action android:name="android.intent.action.USER_PRESENT"/> </intent-filter> # DIFF-ANCHOR: 4b5ec7a9 - </receiver> # DIFF-ANCHOR: 93e73992 - <receiver # DIFF-ANCHOR: 956432e8 - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$TapReceiver"> - </receiver> # DIFF-ANCHOR: 956432e8 - <receiver # DIFF-ANCHOR: cbb425dc - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TapReceiver"> - </receiver> # DIFF-ANCHOR: cbb425dc - <receiver # DIFF-ANCHOR: 729144c9 - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TryAgainReceiver"> - </receiver> # DIFF-ANCHOR: 729144c9 - <receiver # DIFF-ANCHOR: e61d98d4 - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.sms_fetcher.SmsFetcherMessageHandler$NotificationReceiver"> - </receiver> # DIFF-ANCHOR: e61d98d4 - <receiver # DIFF-ANCHOR: aa6748fc - android:exported="false" - android:name="org.chromium.chrome.browser.upgrade.PackageReplacedBroadcastReceiver"> + </receiver> # DIFF-ANCHOR: 2f1fe689 + <receiver # DIFF-ANCHOR: 124ac9a1 + android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$TapReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 124ac9a1 + <receiver # DIFF-ANCHOR: 84094425 + android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TapReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 84094425 + <receiver # DIFF-ANCHOR: 352611a4 + android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TryAgainReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 352611a4 + <receiver # DIFF-ANCHOR: 420d0678 + android:name="org.chromium.chrome.browser.sharing.sms_fetcher.SmsFetcherMessageHandler$NotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 420d0678 + <receiver # DIFF-ANCHOR: 9015e3cf + android:name="org.chromium.chrome.browser.upgrade.PackageReplacedBroadcastReceiver" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: e8cce90c <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> </intent-filter> # DIFF-ANCHOR: e8cce90c - </receiver> # DIFF-ANCHOR: aa6748fc - <receiver # DIFF-ANCHOR: 3e5f56cb - android:exported="false" - android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskBroadcastReceiver"> - </receiver> # DIFF-ANCHOR: 3e5f56cb + </receiver> # DIFF-ANCHOR: 9015e3cf + <receiver # DIFF-ANCHOR: c787586e + android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskBroadcastReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: c787586e <service android:name="androidx.browser.customtabs.PostMessageService"/> - <service # DIFF-ANCHOR: 41539e3c - android:exported="false" - android:name="com.google.android.gms.cast.framework.ReconnectionService"> - </service> # DIFF-ANCHOR: 41539e3c - <service # DIFF-ANCHOR: 7dad1ec5 - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaNotificationService"> - </service> # DIFF-ANCHOR: 7dad1ec5 + <service # DIFF-ANCHOR: 749391ed + android:name="com.google.android.gms.cast.framework.ReconnectionService" + android:exported="false"> + </service> # DIFF-ANCHOR: 749391ed + <service # DIFF-ANCHOR: 48ce9d28 + android:name="com.google.android.gms.cast.framework.media.MediaNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 48ce9d28 <service # DIFF-ANCHOR: 7e26656b + android:name="com.google.firebase.components.ComponentDiscoveryService" android:directBootAware="true" android:exported="false" - android:name="com.google.firebase.components.ComponentDiscoveryService" tools:targetApi="n"> <meta-data android:name="com.google.firebase.components:com.google.firebase.dynamicloading.DynamicLoadingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/> <meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar" android:value="com.google.firebase.components.ComponentRegistrar"/> <meta-data android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/> <meta-data android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/> </service> # DIFF-ANCHOR: 7e26656b - <service # DIFF-ANCHOR: 137c712b + <service # DIFF-ANCHOR: 2295960c + android:name="com.google.firebase.messaging.FirebaseMessagingService" android:directBootAware="true" - android:exported="false" - android:name="com.google.firebase.messaging.FirebaseMessagingService"> + android:exported="false"> <intent-filter android:priority="-500"> # DIFF-ANCHOR: 69e70070 <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> # DIFF-ANCHOR: 69e70070 - </service> # DIFF-ANCHOR: 137c712b + </service> # DIFF-ANCHOR: 2295960c <service # DIFF-ANCHOR: 4c2196d9 - android:exported="true" android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService" + android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> # DIFF-ANCHOR: 99686c45 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> # DIFF-ANCHOR: 99686c45 </service> # DIFF-ANCHOR: 4c2196d9 <service # DIFF-ANCHOR: b9ec52c4 - android:exported="false" android:name="org.chromium.android_webview.nonembedded.AwComponentUpdateService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_apk"> </service> # DIFF-ANCHOR: b9ec52c4 <service # DIFF-ANCHOR: 3cd6d713 - android:exported="true" android:name="org.chromium.android_webview.services.AwMinidumpUploadJobService" + android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_service"> </service> # DIFF-ANCHOR: 3cd6d713 <service # DIFF-ANCHOR: 65cddb26 - android:exported="false" android:name="org.chromium.android_webview.services.AwVariationsSeedFetcher" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":webview_service"> </service> # DIFF-ANCHOR: 65cddb26 <service # DIFF-ANCHOR: c756cf8d - android:exported="true" android:name="org.chromium.android_webview.services.ComponentsProviderService" + android:exported="true" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c756cf8d <service # DIFF-ANCHOR: 5cda9608 - android:exported="true" android:name="org.chromium.android_webview.services.CrashReceiverService" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5cda9608 <service # DIFF-ANCHOR: adce9ea1 - android:exported="true" android:name="org.chromium.android_webview.services.DeveloperUiService" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: adce9ea1 <service # DIFF-ANCHOR: eecf2fee - android:exported="true" android:name="org.chromium.android_webview.services.MetricsBridgeService" + android:exported="true" android:process=":webview_service" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: eecf2fee <service # DIFF-ANCHOR: dc926e35 - android:exported="true" android:name="org.chromium.android_webview.services.VariationsSeedServer" + android:exported="true" android:process=":webview_service" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dc926e35 <service # DIFF-ANCHOR: c34d99ad - android:exported="true" android:name="org.chromium.chrome.browser.ChromeBackgroundService" + android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> # DIFF-ANCHOR: 99686c45 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> # DIFF-ANCHOR: 99686c45 </service> # DIFF-ANCHOR: c34d99ad <service # DIFF-ANCHOR: ac44dbad - android:exported="false" android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetService" + android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS"> </service> # DIFF-ANCHOR: ac44dbad <service # DIFF-ANCHOR: 90d2ec9b - android:exported="false" android:name="org.chromium.chrome.browser.crash.ChromeMinidumpUploadJobService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"> </service> # DIFF-ANCHOR: 90d2ec9b - <service # DIFF-ANCHOR: 2ce0b6a4 - android:exported="false" - android:name="org.chromium.chrome.browser.crash.MinidumpUploadService"> - </service> # DIFF-ANCHOR: 2ce0b6a4 + <service # DIFF-ANCHOR: f72bb7bc + android:name="org.chromium.chrome.browser.crash.MinidumpUploadService" + android:exported="false"> + </service> # DIFF-ANCHOR: f72bb7bc <service # DIFF-ANCHOR: ee1c39a8 - android:exported="true" android:name="org.chromium.chrome.browser.customtabs.CustomTabsConnectionService" + android:exported="true" tools:ignore="ExportedService"> <intent-filter> # DIFF-ANCHOR: d46bf795 <action android:name="android.support.customtabs.action.CustomTabsService"/> @@ -1193,142 +1193,142 @@ <category android:name="androidx.browser.trusted.category.WebShareTargetV2"/> </intent-filter> # DIFF-ANCHOR: d46bf795 </service> # DIFF-ANCHOR: ee1c39a8 - <service # DIFF-ANCHOR: 555432db - android:exported="false" - android:name="org.chromium.chrome.browser.download.DownloadBroadcastManager"> - </service> # DIFF-ANCHOR: 555432db - <service # DIFF-ANCHOR: 4cf14268 - android:exported="false" - android:name="org.chromium.chrome.browser.download.DownloadForegroundService"> - </service> # DIFF-ANCHOR: 4cf14268 - <service # DIFF-ANCHOR: a651602a - android:exported="false" - android:name="org.chromium.chrome.browser.incognito.IncognitoNotificationService"> - </service> # DIFF-ANCHOR: a651602a - <service # DIFF-ANCHOR: 4f8e62ea - android:exported="false" - android:name="org.chromium.chrome.browser.media.MediaCaptureNotificationService"> - </service> # DIFF-ANCHOR: 4f8e62ea - <service # DIFF-ANCHOR: 4129c705 - android:exported="false" - android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$CastListenerService"> + <service # DIFF-ANCHOR: 4b22c3f5 + android:name="org.chromium.chrome.browser.download.DownloadBroadcastManager" + android:exported="false"> + </service> # DIFF-ANCHOR: 4b22c3f5 + <service # DIFF-ANCHOR: 413310e5 + android:name="org.chromium.chrome.browser.download.DownloadForegroundService" + android:exported="false"> + </service> # DIFF-ANCHOR: 413310e5 + <service # DIFF-ANCHOR: 7e3ff13a + android:name="org.chromium.chrome.browser.incognito.IncognitoNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 7e3ff13a + <service # DIFF-ANCHOR: ac8469ff + android:name="org.chromium.chrome.browser.media.MediaCaptureNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: ac8469ff + <service # DIFF-ANCHOR: 7ef9e4e5 + android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$CastListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: f401157d <action android:name="android.intent.action.MEDIA_BUTTON"/> </intent-filter> # DIFF-ANCHOR: f401157d - </service> # DIFF-ANCHOR: 4129c705 - <service # DIFF-ANCHOR: c6abf186 - android:exported="false" - android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PlaybackListenerService"> + </service> # DIFF-ANCHOR: 7ef9e4e5 + <service # DIFF-ANCHOR: 41fa6492 + android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PlaybackListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: f401157d <action android:name="android.intent.action.MEDIA_BUTTON"/> </intent-filter> # DIFF-ANCHOR: f401157d - </service> # DIFF-ANCHOR: c6abf186 - <service # DIFF-ANCHOR: 4d0d10fe - android:exported="false" - android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PresentationListenerService"> + </service> # DIFF-ANCHOR: 41fa6492 + <service # DIFF-ANCHOR: 1260bca4 + android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PresentationListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: f401157d <action android:name="android.intent.action.MEDIA_BUTTON"/> </intent-filter> # DIFF-ANCHOR: f401157d - </service> # DIFF-ANCHOR: 4d0d10fe + </service> # DIFF-ANCHOR: 1260bca4 <service # DIFF-ANCHOR: 4b2220c4 - android:exported="false" android:name="org.chromium.chrome.browser.notifications.NotificationJobService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"> </service> # DIFF-ANCHOR: 4b2220c4 - <service # DIFF-ANCHOR: 3224d309 - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationService"> - </service> # DIFF-ANCHOR: 3224d309 - <service android:exported="false" android:name="org.chromium.chrome.browser.omaha.OmahaClient"/> + <service # DIFF-ANCHOR: 7fb8c03f + android:name="org.chromium.chrome.browser.notifications.NotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 7fb8c03f + <service android:name="org.chromium.chrome.browser.omaha.OmahaClient" android:exported="false"/> <service # DIFF-ANCHOR: 53256720 + android:name="org.chromium.chrome.browser.photo_picker.DecoderService" android:description="@string/decoder_description" android:exported="false" android:isolatedProcess="true" - android:name="org.chromium.chrome.browser.photo_picker.DecoderService" android:process=":decoder_service"> </service> # DIFF-ANCHOR: 53256720 <service # DIFF-ANCHOR: 064aae37 - android:exported="true" android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService" + android:exported="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 064aae37 - <service # DIFF-ANCHOR: d930289b - android:exported="false" - android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"> + <service # DIFF-ANCHOR: 6d9cb216 + android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: 69e70070 <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> # DIFF-ANCHOR: 69e70070 - </service> # DIFF-ANCHOR: d930289b - <service # DIFF-ANCHOR: 682abdc1 - android:exported="false" - android:name="org.chromium.chrome.browser.services.gcm.GCMBackgroundService"> - </service> # DIFF-ANCHOR: 682abdc1 - <service # DIFF-ANCHOR: dfb5da84 - android:exported="false" - android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"> - </service> # DIFF-ANCHOR: dfb5da84 - <service # DIFF-ANCHOR: 80f6a8e5 - android:exported="false" - android:name="org.chromium.chrome.browser.tracing.TracingNotificationService"> - </service> # DIFF-ANCHOR: 80f6a8e5 + </service> # DIFF-ANCHOR: 6d9cb216 + <service # DIFF-ANCHOR: 7b05db30 + android:name="org.chromium.chrome.browser.services.gcm.GCMBackgroundService" + android:exported="false"> + </service> # DIFF-ANCHOR: 7b05db30 + <service # DIFF-ANCHOR: dcd6fa39 + android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" + android:exported="false"> + </service> # DIFF-ANCHOR: dcd6fa39 + <service # DIFF-ANCHOR: c26364a8 + android:name="org.chromium.chrome.browser.tracing.TracingNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: c26364a8 <service # DIFF-ANCHOR: 8fc286d0 - android:exported="true" android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskGcmTaskService" + android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> # DIFF-ANCHOR: 99686c45 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> # DIFF-ANCHOR: 99686c45 </service> # DIFF-ANCHOR: 8fc286d0 <service # DIFF-ANCHOR: a550decc - android:exported="false" android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskJobService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"> </service> # DIFF-ANCHOR: a550decc <service # DIFF-ANCHOR: 2a1cd701 - android:exported="true" android:name="org.chromium.components.payments.PaymentDetailsUpdateService" + android:exported="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2a1cd701 <service # DIFF-ANCHOR: 0c6c4fd9 + android:name="org.chromium.content.app.PrivilegedProcessService0" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService0" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process0"> </service> # DIFF-ANCHOR: 0c6c4fd9 <service # DIFF-ANCHOR: 6f89af32 + android:name="org.chromium.content.app.PrivilegedProcessService1" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService1" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process1"> </service> # DIFF-ANCHOR: 6f89af32 <service # DIFF-ANCHOR: 40e0d738 + android:name="org.chromium.content.app.PrivilegedProcessService2" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService2" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process2"> </service> # DIFF-ANCHOR: 40e0d738 <service # DIFF-ANCHOR: b197517d + android:name="org.chromium.content.app.PrivilegedProcessService3" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService3" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process3"> </service> # DIFF-ANCHOR: b197517d <service # DIFF-ANCHOR: 52303702 + android:name="org.chromium.content.app.PrivilegedProcessService4" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService4" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process4"> </service> # DIFF-ANCHOR: 52303702 <service # DIFF-ANCHOR: b1e3e8bd + android:name="org.chromium.content.app.SandboxedProcessService0" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService0" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process0" android:useAppZygote="true" @@ -1336,390 +1336,390 @@ tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b1e3e8bd <service # DIFF-ANCHOR: 76d1ccf8 + android:name="org.chromium.content.app.SandboxedProcessService1" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService1" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process1" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 76d1ccf8 <service # DIFF-ANCHOR: 38b95266 + android:name="org.chromium.content.app.SandboxedProcessService10" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService10" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process10" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 38b95266 <service # DIFF-ANCHOR: e4a2e4a2 + android:name="org.chromium.content.app.SandboxedProcessService11" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService11" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process11" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e4a2e4a2 <service # DIFF-ANCHOR: d9b2ffba + android:name="org.chromium.content.app.SandboxedProcessService12" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService12" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process12" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: d9b2ffba <service # DIFF-ANCHOR: b41bb17d + android:name="org.chromium.content.app.SandboxedProcessService13" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService13" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process13" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b41bb17d <service # DIFF-ANCHOR: aec0ea21 + android:name="org.chromium.content.app.SandboxedProcessService14" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService14" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process14" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: aec0ea21 <service # DIFF-ANCHOR: cf88a5e5 + android:name="org.chromium.content.app.SandboxedProcessService15" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService15" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process15" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: cf88a5e5 <service # DIFF-ANCHOR: 7d85889d + android:name="org.chromium.content.app.SandboxedProcessService16" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService16" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process16" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 7d85889d <service # DIFF-ANCHOR: dae26ed4 + android:name="org.chromium.content.app.SandboxedProcessService17" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService17" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process17" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dae26ed4 <service # DIFF-ANCHOR: 2c6cf029 + android:name="org.chromium.content.app.SandboxedProcessService18" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService18" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process18" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2c6cf029 <service # DIFF-ANCHOR: 1d2f0988 + android:name="org.chromium.content.app.SandboxedProcessService19" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService19" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process19" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 1d2f0988 <service # DIFF-ANCHOR: 4a39041b + android:name="org.chromium.content.app.SandboxedProcessService2" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService2" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process2" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 4a39041b <service # DIFF-ANCHOR: 073533bf + android:name="org.chromium.content.app.SandboxedProcessService20" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService20" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process20" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 073533bf <service # DIFF-ANCHOR: d24da41d + android:name="org.chromium.content.app.SandboxedProcessService21" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService21" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process21" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: d24da41d <service # DIFF-ANCHOR: 594d8b32 + android:name="org.chromium.content.app.SandboxedProcessService22" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService22" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process22" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 594d8b32 <service # DIFF-ANCHOR: 5528c0c3 + android:name="org.chromium.content.app.SandboxedProcessService23" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService23" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process23" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5528c0c3 <service # DIFF-ANCHOR: b7ab2ba3 + android:name="org.chromium.content.app.SandboxedProcessService24" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService24" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process24" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b7ab2ba3 <service # DIFF-ANCHOR: cec6cb64 + android:name="org.chromium.content.app.SandboxedProcessService25" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService25" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process25" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: cec6cb64 <service # DIFF-ANCHOR: 5b4a00fe + android:name="org.chromium.content.app.SandboxedProcessService26" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService26" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process26" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5b4a00fe <service # DIFF-ANCHOR: ad49d203 + android:name="org.chromium.content.app.SandboxedProcessService27" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService27" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process27" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: ad49d203 <service # DIFF-ANCHOR: 573298e9 + android:name="org.chromium.content.app.SandboxedProcessService28" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService28" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process28" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 573298e9 <service # DIFF-ANCHOR: 79897b32 + android:name="org.chromium.content.app.SandboxedProcessService29" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService29" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process29" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 79897b32 <service # DIFF-ANCHOR: 84335864 + android:name="org.chromium.content.app.SandboxedProcessService3" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService3" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process3" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 84335864 <service # DIFF-ANCHOR: c4bd371e + android:name="org.chromium.content.app.SandboxedProcessService30" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService30" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process30" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c4bd371e <service # DIFF-ANCHOR: 394a9fd0 + android:name="org.chromium.content.app.SandboxedProcessService31" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService31" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process31" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 394a9fd0 <service # DIFF-ANCHOR: b811afb8 + android:name="org.chromium.content.app.SandboxedProcessService32" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService32" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process32" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: b811afb8 <service # DIFF-ANCHOR: 2811ddd3 + android:name="org.chromium.content.app.SandboxedProcessService33" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService33" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process33" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2811ddd3 <service # DIFF-ANCHOR: 73ae1688 + android:name="org.chromium.content.app.SandboxedProcessService34" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService34" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process34" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 73ae1688 <service # DIFF-ANCHOR: c476f324 + android:name="org.chromium.content.app.SandboxedProcessService35" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService35" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process35" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: c476f324 <service # DIFF-ANCHOR: 75d5304b + android:name="org.chromium.content.app.SandboxedProcessService36" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService36" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process36" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 75d5304b <service # DIFF-ANCHOR: dc6d0617 + android:name="org.chromium.content.app.SandboxedProcessService37" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService37" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process37" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: dc6d0617 <service # DIFF-ANCHOR: e31efe49 + android:name="org.chromium.content.app.SandboxedProcessService38" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService38" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process38" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: e31efe49 <service # DIFF-ANCHOR: 5736507e + android:name="org.chromium.content.app.SandboxedProcessService39" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService39" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process39" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 5736507e <service # DIFF-ANCHOR: a161be24 + android:name="org.chromium.content.app.SandboxedProcessService4" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService4" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process4" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: a161be24 <service # DIFF-ANCHOR: 8e591688 + android:name="org.chromium.content.app.SandboxedProcessService5" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService5" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process5" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 8e591688 <service # DIFF-ANCHOR: 705141d0 + android:name="org.chromium.content.app.SandboxedProcessService6" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService6" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process6" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 705141d0 <service # DIFF-ANCHOR: 38ed2189 + android:name="org.chromium.content.app.SandboxedProcessService7" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService7" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process7" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 38ed2189 <service # DIFF-ANCHOR: aa417956 + android:name="org.chromium.content.app.SandboxedProcessService8" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService8" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process8" android:visibleToInstantApps="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: aa417956 <service # DIFF-ANCHOR: e2f3bbbd + android:name="org.chromium.content.app.SandboxedProcessService9" android:exported="true" android:externalService="true" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService9" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process9" android:visibleToInstantApps="true"
diff --git a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected index 9637cc07..dcb6341 100644 --- a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected +++ b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
@@ -1,16 +1,16 @@ <?xml version="1.0" ?> <manifest - android:isolatedSplits="true" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" package="org.chromium.chrome.stable" platformBuildVersionCode="30" platformBuildVersionName="11" - tools:ignore="MissingVersion" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + android:isolatedSplits="true" + tools:ignore="MissingVersion"> <permission android:name="$PACKAGE.TOS_ACKED" android:protectionLevel="signatureOrSystem"/> <permission android:name="$PACKAGE.permission.C2D_MESSAGE" android:protectionLevel="signature"/> <permission android:name="$PACKAGE.permission.CHILD_SERVICE" android:protectionLevel="signature"/> - <permission android:label="Debug web pages" android:name="$PACKAGE.permission.DEBUG" android:protectionLevel="signature"/> + <permission android:name="$PACKAGE.permission.DEBUG" android:label="Debug web pages" android:protectionLevel="signature"/> <permission android:name="$PACKAGE.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem"/> <permission android:name="$PACKAGE.permission.TRANSLATE" android:protectionLevel="signature"/> <queries> # DIFF-ANCHOR: 5a71ec1f @@ -19,6 +19,7 @@ </intent> # DIFF-ANCHOR: 28c960ba <package android:name="com.google.ar.core"/> </queries> # DIFF-ANCHOR: 5a71ec1f + <uses-feature android:glEsVersion="0x00020000"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.location.gps" android:required="false"/> <uses-feature android:name="android.hardware.microphone" android:required="false"/> @@ -29,7 +30,6 @@ <uses-feature android:name="android.hardware.vr.headtracking" android:required="false" android:version="1"/> <uses-feature android:name="android.hardware.vr.high_performance" android:required="false"/> <uses-feature android:name="android.software.vr.mode" android:required="false"/> - <uses-feature android:glEsVersion="0x00020000"/> <uses-permission android:name="$PACKAGE.TOS_ACKED"/> <uses-permission android:name="$PACKAGE.permission.C2D_MESSAGE"/> <uses-permission android:name="$PACKAGE.permission.READ_WRITE_BOOKMARK_FOLDERS"/> @@ -70,6 +70,7 @@ <uses-permission-sdk-23 android:name="android.permission.USE_FINGERPRINT"/> <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="30"/> <application + android:name="org.chromium.chrome.browser.base.SplitChromeApplication" android:allowAudioPlaybackCapture="false" android:allowBackup="false" android:appComponentFactory="org.chromium.chrome.browser.base.SplitCompatAppComponentFactory" @@ -79,55 +80,54 @@ android:largeHeap="false" android:manageSpaceActivity="@string/manage_space_activity" android:multiArch="true" - android:name="org.chromium.chrome.browser.base.SplitChromeApplication" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@drawable/ic_launcher_round" android:supportsRtl="true" android:use32bitAbi="true" android:zygotePreloadName="org.chromium.content.app.ZygotePreload"> <activity # DIFF-ANCHOR: ea1a94af - android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" + android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> # DIFF-ANCHOR: ea1a94af <activity # DIFF-ANCHOR: a2bae37c + android:name="com.google.android.play.core.common.PlayCoreDialogWrapperActivity" android:enabled="false" android:exported="false" - android:name="com.google.android.play.core.common.PlayCoreDialogWrapperActivity" android:process=":playcore_dialog_wrapper_activity" android:stateNotNeeded="true" android:theme="@style/Theme.PlayCore.Transparent"> </activity> # DIFF-ANCHOR: a2bae37c <activity # DIFF-ANCHOR: 53a4871f + android:name="com.google.android.play.core.missingsplits.PlayCoreMissingSplitsActivity" android:enabled="false" android:exported="false" android:launchMode="singleInstance" - android:name="com.google.android.play.core.missingsplits.PlayCoreMissingSplitsActivity" android:process=":playcore_missing_splits_activity" android:stateNotNeeded="true"> </activity> # DIFF-ANCHOR: 53a4871f <activity # DIFF-ANCHOR: 28dc9019 + android:name="com.google.ar.core.InstallActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleTop" - android:name="com.google.ar.core.InstallActivity" android:theme="@android:style/Theme.Material.Light.Dialog.Alert"> </activity> # DIFF-ANCHOR: 28dc9019 <activity # DIFF-ANCHOR: 93d41352 + android:name="org.chromium.chrome.browser.BrowserRestartActivity" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleInstance" - android:name="org.chromium.chrome.browser.BrowserRestartActivity" android:process=":browser_restart_process" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> # DIFF-ANCHOR: 93d41352 <activity # DIFF-ANCHOR: 61b2c776 + android:name="org.chromium.chrome.browser.ChromeTabbedActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="true" android:hardwareAccelerated="false" android:launchMode="singleTask" - android:name="org.chromium.chrome.browser.ChromeTabbedActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.TabbedMode" @@ -139,11 +139,11 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 61b2c776 <activity # DIFF-ANCHOR: 610e8ccf + android:name="org.chromium.chrome.browser.ChromeTabbedActivity2" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" android:launchMode="singleTask" - android:name="org.chromium.chrome.browser.ChromeTabbedActivity2" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:taskAffinity="$PACKAGE.ChromeTabbedActivity2" @@ -156,23 +156,23 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 610e8ccf <activity # DIFF-ANCHOR: 76686af9 + android:name="org.chromium.chrome.browser.LauncherShortcutActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.LauncherShortcutActivity" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: 76686af9 <activity # DIFF-ANCHOR: 9af505d2 + android:name="org.chromium.chrome.browser.app.feedmanagement.FeedManagementActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.feedmanagement.FeedManagementActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 9af505d2 <activity # DIFF-ANCHOR: 78326aaf + android:name="org.chromium.chrome.browser.app.followmanagement.FollowManagementActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.followmanagement.FollowManagementActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> <intent-filter> # DIFF-ANCHOR: 0afe8981 @@ -181,38 +181,38 @@ </intent-filter> # DIFF-ANCHOR: 0afe8981 </activity> # DIFF-ANCHOR: 78326aaf <activity # DIFF-ANCHOR: 50c7105b + android:name="org.chromium.chrome.browser.app.reengagement.ReengagementActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.app.reengagement.ReengagementActivity" android:taskAffinity="" android:theme="@android:style/Theme.Translucent"> </activity> # DIFF-ANCHOR: 50c7105b <activity # DIFF-ANCHOR: aeab60ac + android:name="org.chromium.chrome.browser.app.video_tutorials.VideoPlayerActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.video_tutorials.VideoPlayerActivity" android:screenOrientation="portrait" android:theme="@style/Theme.Chromium.Activity.Fullscreen" tools:ignore="LockedOrientationActivity"> </activity> # DIFF-ANCHOR: aeab60ac <activity # DIFF-ANCHOR: 170e9f21 + android:name="org.chromium.chrome.browser.app.video_tutorials.VideoTutorialListActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.app.video_tutorials.VideoTutorialListActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen"> </activity> # DIFF-ANCHOR: 170e9f21 <activity # DIFF-ANCHOR: da2eedc8 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: da2eedc8 <activity # DIFF-ANCHOR: a208e726 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddActivity" android:theme="@android:style/Theme.NoDisplay" android:windowSoftInputMode="stateHidden"> <intent-filter> # DIFF-ANCHOR: 47a8059b @@ -221,35 +221,35 @@ </intent-filter> # DIFF-ANCHOR: 47a8059b </activity> # DIFF-ANCHOR: a208e726 <activity # DIFF-ANCHOR: e0427380 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddEditFolderActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddEditFolderActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge"> </activity> # DIFF-ANCHOR: e0427380 <activity # DIFF-ANCHOR: b66ce3f2 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkEditActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/edit_bookmark" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkEditActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge" android:windowSoftInputMode="stateHidden"> </activity> # DIFF-ANCHOR: b66ce3f2 <activity # DIFF-ANCHOR: 0a21ad35 + android:name="org.chromium.chrome.browser.bookmarks.BookmarkFolderSelectActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/bookmark_choose_folder" - android:name="org.chromium.chrome.browser.bookmarks.BookmarkFolderSelectActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge" android:windowSoftInputMode="stateAlwaysHidden"> </activity> # DIFF-ANCHOR: 0a21ad35 <activity # DIFF-ANCHOR: 209b5ded - android:exported="false" android:name="org.chromium.chrome.browser.browserservices.ClearDataDialogActivity" + android:exported="false" android:theme="@style/Theme.Chromium.ClearDataDialogActivity"> </activity> # DIFF-ANCHOR: 209b5ded <activity # DIFF-ANCHOR: 2b0ee4cd - android:exported="true" android:name="org.chromium.chrome.browser.browserservices.ManageTrustedWebActivityDataActivity" + android:exported="true" android:theme="@style/Theme.Chromium.Activity.Fullscreen.Transparent"> <intent-filter> # DIFF-ANCHOR: 38d9d906 <action android:name="android.support.customtabs.action.ACTION_MANAGE_TRUSTED_WEB_ACTIVITY_DATA"/> @@ -262,10 +262,10 @@ </intent-filter> # DIFF-ANCHOR: 38d9d906 </activity> # DIFF-ANCHOR: 2b0ee4cd <activity # DIFF-ANCHOR: 44266a6a + android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" - android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.Activity" @@ -277,10 +277,10 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 44266a6a <activity # DIFF-ANCHOR: 4d923622 + android:name="org.chromium.chrome.browser.customtabs.TranslucentCustomTabActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" - android:name="org.chromium.chrome.browser.customtabs.TranslucentCustomTabActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.Activity.FakeTranslucent" @@ -292,62 +292,62 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 4d923622 <activity # DIFF-ANCHOR: 1acdfd19 + android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:excludeFromRecents="true" - android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity" android:relinquishTaskIdentity="true" android:taskAffinity="" android:theme="@style/LauncherTheme"> </activity> # DIFF-ANCHOR: 1acdfd19 <activity # DIFF-ANCHOR: 5c83a464 + android:name="org.chromium.chrome.browser.download.DownloadActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.download.DownloadActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 5c83a464 <activity # DIFF-ANCHOR: 2121eb0d + android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity" android:autoRemoveFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:label="@string/fre_activity_label" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge" android:windowSoftInputMode="stateHidden|adjustPan"> </activity> # DIFF-ANCHOR: 2121eb0d <activity # DIFF-ANCHOR: 67932092 + android:name="org.chromium.chrome.browser.firstrun.LightweightFirstRunActivity" android:autoRemoveFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:label="@string/fre_activity_label" android:launchMode="singleInstance" - android:name="org.chromium.chrome.browser.firstrun.LightweightFirstRunActivity" android:theme="@style/Theme.Chromium.AlertDialog.NoActionBar" android:windowSoftInputMode="stateHidden|adjustPan"> </activity> # DIFF-ANCHOR: 67932092 <activity # DIFF-ANCHOR: bb612a34 + android:name="org.chromium.chrome.browser.firstrun.TabbedModeFirstRunActivity" android:autoRemoveFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:label="@string/fre_activity_label" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.firstrun.TabbedModeFirstRunActivity" android:theme="@style/Theme.Chromium.TabbedMode" android:windowSoftInputMode="stateHidden|adjustPan"> </activity> # DIFF-ANCHOR: bb612a34 <activity # DIFF-ANCHOR: 05911131 + android:name="org.chromium.chrome.browser.history.HistoryActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.history.HistoryActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 05911131 <activity # DIFF-ANCHOR: b98302dc + android:name="org.chromium.chrome.browser.incognito.IncognitoTabLauncher" android:enabled="false" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.incognito.IncognitoTabLauncher" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 8f811d02 @@ -356,17 +356,17 @@ </intent-filter> # DIFF-ANCHOR: 8f811d02 </activity> # DIFF-ANCHOR: b98302dc <activity # DIFF-ANCHOR: 349d8ca5 + android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: 349d8ca5 <activity # DIFF-ANCHOR: ecd48344 + android:name="org.chromium.chrome.browser.media.MediaLauncherActivity" android:enabled="false" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.media.MediaLauncherActivity" android:theme="@android:style/Theme.NoDisplay"> <intent-filter tools:ignore="AppLinkUrlError"> # DIFF-ANCHOR: 13c9b0a8 <action android:name="android.intent.action.VIEW"/> @@ -378,40 +378,40 @@ </intent-filter> # DIFF-ANCHOR: 13c9b0a8 </activity> # DIFF-ANCHOR: ecd48344 <activity # DIFF-ANCHOR: d706d96e + android:name="org.chromium.chrome.browser.media.PictureInPictureActivity" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.media.PictureInPictureActivity" android:noHistory="true" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.Chromium.Activity"> </activity> # DIFF-ANCHOR: d706d96e <activity # DIFF-ANCHOR: 9023f153 + android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" - android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity" android:theme="@style/Theme.Chromium.TabbedMode" android:windowSoftInputMode="adjustResize"> </activity> # DIFF-ANCHOR: 9023f153 <activity # DIFF-ANCHOR: e86e2b49 + android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$TrampolineActivity" android:autoRemoveFromRecents="true" android:documentLaunchMode="always" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$TrampolineActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: e86e2b49 <activity # DIFF-ANCHOR: bec48e1f + android:name="org.chromium.chrome.browser.printing.PrintShareActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:enabled="false" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/sharing_print" android:label="@string/print_share_activity_title" - android:name="org.chromium.chrome.browser.printing.PrintShareActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 4ee601b7 @@ -423,6 +423,7 @@ </intent-filter> # DIFF-ANCHOR: 4ee601b7 </activity> # DIFF-ANCHOR: bec48e1f <activity # DIFF-ANCHOR: 7468a722 + android:name="org.chromium.chrome.browser.searchwidget.SearchActivity" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" @@ -430,19 +431,18 @@ android:hardwareAccelerated="false" android:label="Search" android:launchMode="singleTask" - android:name="org.chromium.chrome.browser.searchwidget.SearchActivity" android:taskAffinity="" android:theme="@style/Theme.Chromium.SearchActivity" android:windowSoftInputMode="adjustResize"> </activity> # DIFF-ANCHOR: 7468a722 <activity # DIFF-ANCHOR: f1aedff1 + android:name="org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:enabled="false" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/ic_launcher" android:label="@string/send_tab_to_self_share_activity_title" - android:name="org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 4ee601b7 @@ -452,20 +452,20 @@ </intent-filter> # DIFF-ANCHOR: 4ee601b7 </activity> # DIFF-ANCHOR: f1aedff1 <activity # DIFF-ANCHOR: d32b85df + android:name="org.chromium.chrome.browser.settings.SettingsActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/settings" - android:name="org.chromium.chrome.browser.settings.SettingsActivity" android:theme="@style/Theme.Chromium.Settings"> </activity> # DIFF-ANCHOR: d32b85df <activity # DIFF-ANCHOR: 44158f9b + android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardShareActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:enabled="false" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/ic_devices_48dp" android:label="@string/shared_clipboard_share_activity_title" - android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardShareActivity" android:noHistory="true" android:theme="@style/Theme.Chromium.Activity.TranslucentNoAnimations"> <intent-filter> # DIFF-ANCHOR: 4ee601b7 @@ -475,42 +475,42 @@ </intent-filter> # DIFF-ANCHOR: 4ee601b7 </activity> # DIFF-ANCHOR: 44158f9b <activity # DIFF-ANCHOR: fbf1ba15 + android:name="org.chromium.chrome.browser.signin.SyncConsentActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.signin.SyncConsentActivity" android:theme="@style/Theme.Chromium.DialogWhenLarge"> </activity> # DIFF-ANCHOR: fbf1ba15 <activity # DIFF-ANCHOR: d2967c86 + android:name="org.chromium.chrome.browser.site_settings.ManageSpaceActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" android:label="@string/storage_management_activity_label" - android:name="org.chromium.chrome.browser.site_settings.ManageSpaceActivity" android:theme="@style/Theme.Chromium.Settings.ManageSpace"> </activity> # DIFF-ANCHOR: d2967c86 <activity # DIFF-ANCHOR: 8492e3fd - android:autoRemoveFromRecents="true" android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity" + android:autoRemoveFromRecents="true" android:theme="@style/Theme.Chromium.Activity"> </activity> # DIFF-ANCHOR: 8492e3fd <activity # DIFF-ANCHOR: 76b60c10 + android:name="org.chromium.chrome.browser.sync.ui.TrustedVaultKeyRetrievalProxyActivity" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.sync.ui.TrustedVaultKeyRetrievalProxyActivity" android:theme="@style/Theme.AppCompat"> </activity> # DIFF-ANCHOR: 76b60c10 <activity # DIFF-ANCHOR: 43bfa5de + android:name="org.chromium.chrome.browser.test_dummy.TestDummyActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.test_dummy.TestDummyActivity" android:noHistory="true" android:theme="@style/Theme.AppCompat"> </activity> # DIFF-ANCHOR: 43bfa5de <activity # DIFF-ANCHOR: b007dcaa + android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity" android:enableVrMode="@string/gvr_vr_mode_component" android:excludeFromRecents="true" android:exported="false" - android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity" android:noHistory="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: dea53031 @@ -520,12 +520,12 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: b007dcaa <activity # DIFF-ANCHOR: 5e628a6c + android:name="org.chromium.chrome.browser.vr.VrFirstRunActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode" android:enableVrMode="@string/gvr_vr_mode_component" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleInstance" - android:name="org.chromium.chrome.browser.vr.VrFirstRunActivity" android:theme="@style/VrActivityTheme"> <intent-filter> # DIFF-ANCHOR: dea53031 <action android:name="org.chromium.chrome.browser.dummy.action"/> @@ -534,8 +534,8 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 5e628a6c <activity # DIFF-ANCHOR: 9bb1f409 - android:exported="true" android:name="org.chromium.chrome.browser.webapps.ActivateWebApkActivity" + android:exported="true" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: 0d72b7f0 <action android:name="org.chromium.chrome.browser.webapps.ActivateWebApkActivity.ACTIVATE"/> @@ -543,11 +543,11 @@ </intent-filter> # DIFF-ANCHOR: 0d72b7f0 </activity> # DIFF-ANCHOR: 9bb1f409 <activity # DIFF-ANCHOR: f1dc024a + android:name="org.chromium.chrome.browser.webapps.SameTaskWebApkActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:exported="false" android:hardwareAccelerated="false" android:label="@string/webapp_activity_title" - android:name="org.chromium.chrome.browser.webapps.SameTaskWebApkActivity" android:persistableMode="persistNever" android:resizeableActivity="true" android:supportsPictureInPicture="true" @@ -560,13 +560,13 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: f1dc024a <activity # DIFF-ANCHOR: 5e467d8a + android:name="org.chromium.chrome.browser.webapps.WebappActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" android:documentLaunchMode="intoExisting" android:exported="false" android:hardwareAccelerated="false" android:label="@string/webapp_activity_title" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.webapps.WebappActivity" android:persistableMode="persistNever" android:resizeableActivity="true" android:supportsPictureInPicture="true" @@ -579,9 +579,9 @@ </intent-filter> # DIFF-ANCHOR: dea53031 </activity> # DIFF-ANCHOR: 5e467d8a <activity # DIFF-ANCHOR: aea75380 + android:name="org.chromium.chrome.browser.webapps.WebappLauncherActivity" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.webapps.WebappLauncherActivity" android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> # DIFF-ANCHOR: faf519ad @@ -594,18 +594,18 @@ </intent-filter> # DIFF-ANCHOR: 9c5197e9 </activity> # DIFF-ANCHOR: aea75380 <activity # DIFF-ANCHOR: 66a0be05 + android:name="org.chromium.chrome.browser.webapps.launchpad.LaunchpadActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:exported="false" - android:name="org.chromium.chrome.browser.webapps.launchpad.LaunchpadActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> </activity> # DIFF-ANCHOR: 66a0be05 <activity # DIFF-ANCHOR: a1fac31f + android:name="org.chromium.chrome.browser.webauth.authenticator.CableAuthenticatorActivity" android:excludeFromRecents="true" android:exported="true" android:label="@string/cablev2_activity_title" android:launchMode="singleTop" - android:name="org.chromium.chrome.browser.webauth.authenticator.CableAuthenticatorActivity" android:permission="com.google.android.gms.auth.cryptauth.permission.CABLEV2_SERVER_LINK" android:theme="@style/Theme.Chromium.Activity.Fullscreen"> <intent-filter> # DIFF-ANCHOR: 5873407a @@ -614,18 +614,18 @@ <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/phone_as_a_security_key_accessory_filter"/> </activity> # DIFF-ANCHOR: a1fac31f <activity # DIFF-ANCHOR: 1d9b4077 + android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" android:excludeFromRecents="true" android:hardwareAccelerated="true" android:label="Chrome.CafExpandedControllerActivity" android:launchMode="singleTask" - android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity" android:noHistory="true" android:theme="@style/Theme.Chromium.Activity"> </activity> # DIFF-ANCHOR: 1d9b4077 <activity-alias # DIFF-ANCHOR: 9da0e5b6 - android:exported="true" android:name="com.google.android.apps.chrome.IntentDispatcher" + android:exported="true" android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"> <intent-filter> # DIFF-ANCHOR: a5330430 <action android:name="android.intent.action.MAIN"/> @@ -758,8 +758,8 @@ <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity-alias> # DIFF-ANCHOR: 9da0e5b6 <activity-alias # DIFF-ANCHOR: 5042984f - android:exported="true" android:name="com.google.android.apps.chrome.Main" + android:exported="true" android:targetActivity="org.chromium.chrome.browser.ChromeTabbedActivity"> <intent-filter> # DIFF-ANCHOR: a5330430 <action android:name="android.intent.action.MAIN"/> @@ -776,8 +776,8 @@ <meta-data android:name="android.app.shortcuts" android:resource="@xml/launchershortcuts"/> </activity-alias> # DIFF-ANCHOR: 5042984f <activity-alias # DIFF-ANCHOR: 03398466 - android:exported="true" android:name="com.google.android.apps.chrome.TranslateDispatcher" + android:exported="true" android:permission="$PACKAGE.permission.TRANSLATE" android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"> <intent-filter> # DIFF-ANCHOR: 75e5f897 @@ -786,8 +786,8 @@ </intent-filter> # DIFF-ANCHOR: 75e5f897 </activity-alias> # DIFF-ANCHOR: 03398466 <activity-alias # DIFF-ANCHOR: dcfe2999 - android:label="@string/webapp_activity_title" android:name="com.google.android.apps.chrome.webapps.WebappActivity" + android:label="@string/webapp_activity_title" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"> @@ -797,10 +797,10 @@ android:targetActivity="org.chromium.chrome.browser.webapps.WebappLauncherActivity"> </activity-alias> # DIFF-ANCHOR: 8e23336d <activity-alias # DIFF-ANCHOR: b4a6221b + android:name="org.chromium.chrome.browser.media.AudioLauncherActivity" android:enabled="false" android:excludeFromRecents="true" android:exported="true" - android:name="org.chromium.chrome.browser.media.AudioLauncherActivity" android:targetActivity="org.chromium.chrome.browser.media.MediaLauncherActivity" android:theme="@android:style/Theme.NoDisplay"> <intent-filter tools:ignore="AppLinkUrlError"> # DIFF-ANCHOR: 13c9b0a8 @@ -812,8 +812,8 @@ </intent-filter> # DIFF-ANCHOR: 13c9b0a8 </activity-alias> # DIFF-ANCHOR: b4a6221b <activity-alias # DIFF-ANCHOR: 7c349c4f - android:exported="false" android:name="org.chromium.chrome.browser.webapps.SecureWebAppLauncher" + android:exported="false" android:targetActivity="org.chromium.chrome.browser.webapps.WebappLauncherActivity"> <intent-filter> # DIFF-ANCHOR: 9fe4b527 <action android:name="org.chromium.chrome.browser.webapps.WebappManager.ACTION_START_SECURE_WEBAPP"/> @@ -831,135 +831,135 @@ <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" android:value="5"/> <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" android:value="40"/> <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER" android:value="org.chromium.content_public.browser.SmartClipProvider"/> - <provider # DIFF-ANCHOR: 31002ffd + <provider # DIFF-ANCHOR: bc0a9a7a + android:name="com.google.firebase.provider.FirebaseInitProvider" android:authorities="$PACKAGE.firebaseinitprovider" android:directBootAware="true" android:exported="false" - android:initOrder="100" - android:name="com.google.firebase.provider.FirebaseInitProvider"> - </provider> # DIFF-ANCHOR: 31002ffd - <provider # DIFF-ANCHOR: 97e158a1 + android:initOrder="100"> + </provider> # DIFF-ANCHOR: bc0a9a7a + <provider # DIFF-ANCHOR: b73a881a + android:name="org.chromium.chrome.browser.download.DownloadFileProvider" android:authorities="$PACKAGE.DownloadFileProvider" android:exported="false" - android:grantUriPermissions="true" - android:name="org.chromium.chrome.browser.download.DownloadFileProvider"> + android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> - </provider> # DIFF-ANCHOR: 97e158a1 - <provider # DIFF-ANCHOR: 2215b9cd + </provider> # DIFF-ANCHOR: b73a881a + <provider # DIFF-ANCHOR: f1c2d7e1 + android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider" android:authorities="$PACKAGE.ChromeBrowserProvider;$PACKAGE.browser;$PACKAGE" - android:exported="true" - android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider"> + android:exported="true"> <path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/> - </provider> # DIFF-ANCHOR: 2215b9cd - <provider # DIFF-ANCHOR: 6e306896 + </provider> # DIFF-ANCHOR: f1c2d7e1 + <provider # DIFF-ANCHOR: 67014fab + android:name="org.chromium.chrome.browser.util.ChromeFileProvider" android:authorities="$PACKAGE.FileProvider" android:exported="false" - android:grantUriPermissions="true" - android:name="org.chromium.chrome.browser.util.ChromeFileProvider"> + android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> - </provider> # DIFF-ANCHOR: 6e306896 - <receiver # DIFF-ANCHOR: 7d221226 + </provider> # DIFF-ANCHOR: 67014fab + <receiver # DIFF-ANCHOR: 58d39a0f + android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider" android:exported="true" - android:label="@string/bookmark_widget_title" - android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider"> + android:label="@string/bookmark_widget_title"> <intent-filter> # DIFF-ANCHOR: 1ebe78e9 <action android:name=".BOOKMARK_APPWIDGET_UPDATE"/> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> # DIFF-ANCHOR: 1ebe78e9 <meta-data android:name="android.appwidget.provider" android:resource="@xml/bookmark_widget_info"/> - </receiver> # DIFF-ANCHOR: 7d221226 - <receiver # DIFF-ANCHOR: 1091f66b - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver"> - </receiver> # DIFF-ANCHOR: 1091f66b + </receiver> # DIFF-ANCHOR: 58d39a0f + <receiver # DIFF-ANCHOR: 0a6f8fa5 + android:name="com.google.android.gms.cast.framework.media.MediaIntentReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0a6f8fa5 <receiver # DIFF-ANCHOR: f1c9c29d - android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" + android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> # DIFF-ANCHOR: aae22013 <action android:name="com.google.android.c2dm.intent.RECEIVE"/> </intent-filter> # DIFF-ANCHOR: aae22013 </receiver> # DIFF-ANCHOR: f1c9c29d - <receiver # DIFF-ANCHOR: 9ef4cd0a - android:exported="false" - android:name="org.chromium.chrome.browser.announcement.AnnouncementNotificationManager$Receiver"> - </receiver> # DIFF-ANCHOR: 9ef4cd0a - <receiver # DIFF-ANCHOR: 9a0a00e8 - android:exported="false" - android:name="org.chromium.chrome.browser.app.send_tab_to_self.SendTabToSelfNotificationReceiver"> - </receiver> # DIFF-ANCHOR: 9a0a00e8 - <receiver # DIFF-ANCHOR: b93ab7db - android:exported="false" - android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy"> - </receiver> # DIFF-ANCHOR: b93ab7db - <receiver # DIFF-ANCHOR: 3e596004 - android:exported="true" - android:name="org.chromium.chrome.browser.browserservices.ClientAppBroadcastReceiver"> + <receiver # DIFF-ANCHOR: 68e22783 + android:name="org.chromium.chrome.browser.announcement.AnnouncementNotificationManager$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 68e22783 + <receiver # DIFF-ANCHOR: f6d77f5a + android:name="org.chromium.chrome.browser.app.send_tab_to_self.SendTabToSelfNotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: f6d77f5a + <receiver # DIFF-ANCHOR: be2dce69 + android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy" + android:exported="false"> + </receiver> # DIFF-ANCHOR: be2dce69 + <receiver # DIFF-ANCHOR: 31a8399a + android:name="org.chromium.chrome.browser.browserservices.ClientAppBroadcastReceiver" + android:exported="true"> <intent-filter> # DIFF-ANCHOR: e5bb6a36 <action android:name="android.intent.action.PACKAGE_DATA_CLEARED"/> <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/> <data android:scheme="package"/> </intent-filter> # DIFF-ANCHOR: e5bb6a36 - </receiver> # DIFF-ANCHOR: 3e596004 - <receiver # DIFF-ANCHOR: a31e6ce5 - android:exported="false" - android:name="org.chromium.chrome.browser.browserservices.ui.trustedwebactivity.DisclosureAcceptanceBroadcastReceiver"> - </receiver> # DIFF-ANCHOR: a31e6ce5 - <receiver # DIFF-ANCHOR: 779ee86b - android:exported="false" - android:name="org.chromium.chrome.browser.customtabs.CustomTabsShareBroadcastReceiver"> - </receiver> # DIFF-ANCHOR: 779ee86b - <receiver # DIFF-ANCHOR: bccc7d87 - android:exported="false" - android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver"> + </receiver> # DIFF-ANCHOR: 31a8399a + <receiver # DIFF-ANCHOR: 2f4b69ac + android:name="org.chromium.chrome.browser.browserservices.ui.trustedwebactivity.DisclosureAcceptanceBroadcastReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 2f4b69ac + <receiver # DIFF-ANCHOR: fd245bee + android:name="org.chromium.chrome.browser.customtabs.CustomTabsShareBroadcastReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: fd245bee + <receiver # DIFF-ANCHOR: de591772 + android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: 5458f2a2 <action android:name="android.intent.action.LOCALE_CHANGED"/> </intent-filter> # DIFF-ANCHOR: 5458f2a2 - </receiver> # DIFF-ANCHOR: bccc7d87 - <receiver # DIFF-ANCHOR: 17866e9d - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver"> - </receiver> # DIFF-ANCHOR: 17866e9d - <receiver # DIFF-ANCHOR: de24469c - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver"> - </receiver> # DIFF-ANCHOR: de24469c - <receiver # DIFF-ANCHOR: 2934478c - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationServiceImpl$Receiver"> + </receiver> # DIFF-ANCHOR: de591772 + <receiver # DIFF-ANCHOR: 2b9c19aa + android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 2b9c19aa + <receiver # DIFF-ANCHOR: d8a2af42 + android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: d8a2af42 + <receiver # DIFF-ANCHOR: df76237f + android:name="org.chromium.chrome.browser.notifications.NotificationServiceImpl$Receiver" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: 1c1c5ed8 <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION"/> <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION"/> </intent-filter> # DIFF-ANCHOR: 1c1c5ed8 - </receiver> # DIFF-ANCHOR: 2934478c - <receiver # DIFF-ANCHOR: e1c4d394 - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.scheduler.DisplayAgent$Receiver"> - </receiver> # DIFF-ANCHOR: e1c4d394 - <receiver # DIFF-ANCHOR: de47f306 - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$CompleteNotificationReceiver"> - </receiver> # DIFF-ANCHOR: de47f306 - <receiver # DIFF-ANCHOR: 98349cb3 - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$InProgressCancelReceiver"> - </receiver> # DIFF-ANCHOR: 98349cb3 - <receiver # DIFF-ANCHOR: cfa3bb7f - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$ClickReceiver"> - </receiver> # DIFF-ANCHOR: cfa3bb7f - <receiver # DIFF-ANCHOR: 1f02dc2f - android:exported="false" - android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$SettingsReceiver"> - </receiver> # DIFF-ANCHOR: 1f02dc2f - <receiver # DIFF-ANCHOR: 40a69297 - android:exported="false" - android:name="org.chromium.chrome.browser.omaha.UpdateNotificationController$UpdateNotificationReceiver"> - </receiver> # DIFF-ANCHOR: 40a69297 - <receiver # DIFF-ANCHOR: 3664f7eb + </receiver> # DIFF-ANCHOR: df76237f + <receiver # DIFF-ANCHOR: 0cefd906 + android:name="org.chromium.chrome.browser.notifications.scheduler.DisplayAgent$Receiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0cefd906 + <receiver # DIFF-ANCHOR: 7d28c8e4 + android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$CompleteNotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 7d28c8e4 + <receiver # DIFF-ANCHOR: 05f19ac3 + android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$InProgressCancelReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 05f19ac3 + <receiver # DIFF-ANCHOR: f2ef5c19 + android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$ClickReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: f2ef5c19 + <receiver # DIFF-ANCHOR: 0267e562 + android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$SettingsReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 0267e562 + <receiver # DIFF-ANCHOR: a3a6e991 + android:name="org.chromium.chrome.browser.omaha.UpdateNotificationController$UpdateNotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: a3a6e991 + <receiver # DIFF-ANCHOR: a0d83ae5 + android:name="org.chromium.chrome.browser.searchwidget.SearchWidgetProvider" android:exported="true" - android:label="@string/search_widget_title" - android:name="org.chromium.chrome.browser.searchwidget.SearchWidgetProvider"> + android:label="@string/search_widget_title"> <intent-filter> # DIFF-ANCHOR: 4ed161a4 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> # DIFF-ANCHOR: 4ed161a4 @@ -973,101 +973,101 @@ <action android:name="org.chromium.chrome.browser.searchwidget.UPDATE_ALL_WIDGETS"/> </intent-filter> # DIFF-ANCHOR: fc048873 <meta-data android:name="android.appwidget.provider" android:resource="@xml/search_widget_info"/> - </receiver> # DIFF-ANCHOR: 3664f7eb - <receiver # DIFF-ANCHOR: 93e73992 - android:exported="true" - android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$PhoneUnlockedReceiver"> + </receiver> # DIFF-ANCHOR: a0d83ae5 + <receiver # DIFF-ANCHOR: 2f1fe689 + android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$PhoneUnlockedReceiver" + android:exported="true"> <intent-filter> # DIFF-ANCHOR: 4b5ec7a9 <action android:name="android.intent.action.USER_PRESENT"/> </intent-filter> # DIFF-ANCHOR: 4b5ec7a9 - </receiver> # DIFF-ANCHOR: 93e73992 - <receiver # DIFF-ANCHOR: 956432e8 - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$TapReceiver"> - </receiver> # DIFF-ANCHOR: 956432e8 - <receiver # DIFF-ANCHOR: cbb425dc - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TapReceiver"> - </receiver> # DIFF-ANCHOR: cbb425dc - <receiver # DIFF-ANCHOR: 729144c9 - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TryAgainReceiver"> - </receiver> # DIFF-ANCHOR: 729144c9 - <receiver # DIFF-ANCHOR: e61d98d4 - android:exported="false" - android:name="org.chromium.chrome.browser.sharing.sms_fetcher.SmsFetcherMessageHandler$NotificationReceiver"> - </receiver> # DIFF-ANCHOR: e61d98d4 - <receiver # DIFF-ANCHOR: aa6748fc - android:exported="false" - android:name="org.chromium.chrome.browser.upgrade.PackageReplacedBroadcastReceiver"> + </receiver> # DIFF-ANCHOR: 2f1fe689 + <receiver # DIFF-ANCHOR: 124ac9a1 + android:name="org.chromium.chrome.browser.sharing.click_to_call.ClickToCallMessageHandler$TapReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 124ac9a1 + <receiver # DIFF-ANCHOR: 84094425 + android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TapReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 84094425 + <receiver # DIFF-ANCHOR: 352611a4 + android:name="org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardMessageHandler$TryAgainReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 352611a4 + <receiver # DIFF-ANCHOR: 420d0678 + android:name="org.chromium.chrome.browser.sharing.sms_fetcher.SmsFetcherMessageHandler$NotificationReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: 420d0678 + <receiver # DIFF-ANCHOR: 9015e3cf + android:name="org.chromium.chrome.browser.upgrade.PackageReplacedBroadcastReceiver" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: e8cce90c <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> </intent-filter> # DIFF-ANCHOR: e8cce90c - </receiver> # DIFF-ANCHOR: aa6748fc - <receiver # DIFF-ANCHOR: 3e5f56cb - android:exported="false" - android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskBroadcastReceiver"> - </receiver> # DIFF-ANCHOR: 3e5f56cb + </receiver> # DIFF-ANCHOR: 9015e3cf + <receiver # DIFF-ANCHOR: c787586e + android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskBroadcastReceiver" + android:exported="false"> + </receiver> # DIFF-ANCHOR: c787586e <service android:name="androidx.browser.customtabs.PostMessageService"/> - <service # DIFF-ANCHOR: 41539e3c - android:exported="false" - android:name="com.google.android.gms.cast.framework.ReconnectionService"> - </service> # DIFF-ANCHOR: 41539e3c - <service # DIFF-ANCHOR: 7dad1ec5 - android:exported="false" - android:name="com.google.android.gms.cast.framework.media.MediaNotificationService"> - </service> # DIFF-ANCHOR: 7dad1ec5 + <service # DIFF-ANCHOR: 749391ed + android:name="com.google.android.gms.cast.framework.ReconnectionService" + android:exported="false"> + </service> # DIFF-ANCHOR: 749391ed + <service # DIFF-ANCHOR: 48ce9d28 + android:name="com.google.android.gms.cast.framework.media.MediaNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 48ce9d28 <service # DIFF-ANCHOR: 7e26656b + android:name="com.google.firebase.components.ComponentDiscoveryService" android:directBootAware="true" android:exported="false" - android:name="com.google.firebase.components.ComponentDiscoveryService" tools:targetApi="n"> <meta-data android:name="com.google.firebase.components:com.google.firebase.dynamicloading.DynamicLoadingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/> <meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar" android:value="com.google.firebase.components.ComponentRegistrar"/> <meta-data android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/> <meta-data android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/> </service> # DIFF-ANCHOR: 7e26656b - <service # DIFF-ANCHOR: 137c712b + <service # DIFF-ANCHOR: 2295960c + android:name="com.google.firebase.messaging.FirebaseMessagingService" android:directBootAware="true" - android:exported="false" - android:name="com.google.firebase.messaging.FirebaseMessagingService"> + android:exported="false"> <intent-filter android:priority="-500"> # DIFF-ANCHOR: 69e70070 <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> # DIFF-ANCHOR: 69e70070 - </service> # DIFF-ANCHOR: 137c712b + </service> # DIFF-ANCHOR: 2295960c <service # DIFF-ANCHOR: 4c2196d9 - android:exported="true" android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService" + android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> # DIFF-ANCHOR: 99686c45 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> # DIFF-ANCHOR: 99686c45 </service> # DIFF-ANCHOR: 4c2196d9 <service # DIFF-ANCHOR: c34d99ad - android:exported="true" android:name="org.chromium.chrome.browser.ChromeBackgroundService" + android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> # DIFF-ANCHOR: 99686c45 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> # DIFF-ANCHOR: 99686c45 </service> # DIFF-ANCHOR: c34d99ad <service # DIFF-ANCHOR: ac44dbad - android:exported="false" android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetService" + android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS"> </service> # DIFF-ANCHOR: ac44dbad <service # DIFF-ANCHOR: 90d2ec9b - android:exported="false" android:name="org.chromium.chrome.browser.crash.ChromeMinidumpUploadJobService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"> </service> # DIFF-ANCHOR: 90d2ec9b - <service # DIFF-ANCHOR: 2ce0b6a4 - android:exported="false" - android:name="org.chromium.chrome.browser.crash.MinidumpUploadService"> - </service> # DIFF-ANCHOR: 2ce0b6a4 + <service # DIFF-ANCHOR: f72bb7bc + android:name="org.chromium.chrome.browser.crash.MinidumpUploadService" + android:exported="false"> + </service> # DIFF-ANCHOR: f72bb7bc <service # DIFF-ANCHOR: ee1c39a8 - android:exported="true" android:name="org.chromium.chrome.browser.customtabs.CustomTabsConnectionService" + android:exported="true" tools:ignore="ExportedService"> <intent-filter> # DIFF-ANCHOR: d46bf795 <action android:name="android.support.customtabs.action.CustomTabsService"/> @@ -1081,418 +1081,418 @@ <category android:name="androidx.browser.trusted.category.WebShareTargetV2"/> </intent-filter> # DIFF-ANCHOR: d46bf795 </service> # DIFF-ANCHOR: ee1c39a8 - <service # DIFF-ANCHOR: 555432db - android:exported="false" - android:name="org.chromium.chrome.browser.download.DownloadBroadcastManager"> - </service> # DIFF-ANCHOR: 555432db - <service # DIFF-ANCHOR: 4cf14268 - android:exported="false" - android:name="org.chromium.chrome.browser.download.DownloadForegroundService"> - </service> # DIFF-ANCHOR: 4cf14268 - <service # DIFF-ANCHOR: a651602a - android:exported="false" - android:name="org.chromium.chrome.browser.incognito.IncognitoNotificationService"> - </service> # DIFF-ANCHOR: a651602a - <service # DIFF-ANCHOR: 4f8e62ea - android:exported="false" - android:name="org.chromium.chrome.browser.media.MediaCaptureNotificationService"> - </service> # DIFF-ANCHOR: 4f8e62ea - <service # DIFF-ANCHOR: 4129c705 - android:exported="false" - android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$CastListenerService"> + <service # DIFF-ANCHOR: 4b22c3f5 + android:name="org.chromium.chrome.browser.download.DownloadBroadcastManager" + android:exported="false"> + </service> # DIFF-ANCHOR: 4b22c3f5 + <service # DIFF-ANCHOR: 413310e5 + android:name="org.chromium.chrome.browser.download.DownloadForegroundService" + android:exported="false"> + </service> # DIFF-ANCHOR: 413310e5 + <service # DIFF-ANCHOR: 7e3ff13a + android:name="org.chromium.chrome.browser.incognito.IncognitoNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 7e3ff13a + <service # DIFF-ANCHOR: ac8469ff + android:name="org.chromium.chrome.browser.media.MediaCaptureNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: ac8469ff + <service # DIFF-ANCHOR: 7ef9e4e5 + android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$CastListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: f401157d <action android:name="android.intent.action.MEDIA_BUTTON"/> </intent-filter> # DIFF-ANCHOR: f401157d - </service> # DIFF-ANCHOR: 4129c705 - <service # DIFF-ANCHOR: c6abf186 - android:exported="false" - android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PlaybackListenerService"> + </service> # DIFF-ANCHOR: 7ef9e4e5 + <service # DIFF-ANCHOR: 41fa6492 + android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PlaybackListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: f401157d <action android:name="android.intent.action.MEDIA_BUTTON"/> </intent-filter> # DIFF-ANCHOR: f401157d - </service> # DIFF-ANCHOR: c6abf186 - <service # DIFF-ANCHOR: 4d0d10fe - android:exported="false" - android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PresentationListenerService"> + </service> # DIFF-ANCHOR: 41fa6492 + <service # DIFF-ANCHOR: 1260bca4 + android:name="org.chromium.chrome.browser.media.ui.ChromeMediaNotificationControllerServices$PresentationListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: f401157d <action android:name="android.intent.action.MEDIA_BUTTON"/> </intent-filter> # DIFF-ANCHOR: f401157d - </service> # DIFF-ANCHOR: 4d0d10fe + </service> # DIFF-ANCHOR: 1260bca4 <service # DIFF-ANCHOR: 4b2220c4 - android:exported="false" android:name="org.chromium.chrome.browser.notifications.NotificationJobService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"> </service> # DIFF-ANCHOR: 4b2220c4 - <service # DIFF-ANCHOR: 3224d309 - android:exported="false" - android:name="org.chromium.chrome.browser.notifications.NotificationService"> - </service> # DIFF-ANCHOR: 3224d309 - <service android:exported="false" android:name="org.chromium.chrome.browser.omaha.OmahaClient"/> + <service # DIFF-ANCHOR: 7fb8c03f + android:name="org.chromium.chrome.browser.notifications.NotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: 7fb8c03f + <service android:name="org.chromium.chrome.browser.omaha.OmahaClient" android:exported="false"/> <service # DIFF-ANCHOR: 53256720 + android:name="org.chromium.chrome.browser.photo_picker.DecoderService" android:description="@string/decoder_description" android:exported="false" android:isolatedProcess="true" - android:name="org.chromium.chrome.browser.photo_picker.DecoderService" android:process=":decoder_service"> </service> # DIFF-ANCHOR: 53256720 <service # DIFF-ANCHOR: 064aae37 - android:exported="true" android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService" + android:exported="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 064aae37 - <service # DIFF-ANCHOR: d930289b - android:exported="false" - android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"> + <service # DIFF-ANCHOR: 6d9cb216 + android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService" + android:exported="false"> <intent-filter> # DIFF-ANCHOR: 69e70070 <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> # DIFF-ANCHOR: 69e70070 - </service> # DIFF-ANCHOR: d930289b - <service # DIFF-ANCHOR: 682abdc1 - android:exported="false" - android:name="org.chromium.chrome.browser.services.gcm.GCMBackgroundService"> - </service> # DIFF-ANCHOR: 682abdc1 - <service # DIFF-ANCHOR: dfb5da84 - android:exported="false" - android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"> - </service> # DIFF-ANCHOR: dfb5da84 - <service # DIFF-ANCHOR: 80f6a8e5 - android:exported="false" - android:name="org.chromium.chrome.browser.tracing.TracingNotificationService"> - </service> # DIFF-ANCHOR: 80f6a8e5 + </service> # DIFF-ANCHOR: 6d9cb216 + <service # DIFF-ANCHOR: 7b05db30 + android:name="org.chromium.chrome.browser.services.gcm.GCMBackgroundService" + android:exported="false"> + </service> # DIFF-ANCHOR: 7b05db30 + <service # DIFF-ANCHOR: dcd6fa39 + android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" + android:exported="false"> + </service> # DIFF-ANCHOR: dcd6fa39 + <service # DIFF-ANCHOR: c26364a8 + android:name="org.chromium.chrome.browser.tracing.TracingNotificationService" + android:exported="false"> + </service> # DIFF-ANCHOR: c26364a8 <service # DIFF-ANCHOR: 8fc286d0 - android:exported="true" android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskGcmTaskService" + android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> # DIFF-ANCHOR: 99686c45 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> </intent-filter> # DIFF-ANCHOR: 99686c45 </service> # DIFF-ANCHOR: 8fc286d0 <service # DIFF-ANCHOR: a550decc - android:exported="false" android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskJobService" + android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"> </service> # DIFF-ANCHOR: a550decc <service # DIFF-ANCHOR: 2a1cd701 - android:exported="true" android:name="org.chromium.components.payments.PaymentDetailsUpdateService" + android:exported="true" tools:ignore="ExportedService"> </service> # DIFF-ANCHOR: 2a1cd701 <service # DIFF-ANCHOR: 0c6c4fd9 + android:name="org.chromium.content.app.PrivilegedProcessService0" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService0" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process0"> </service> # DIFF-ANCHOR: 0c6c4fd9 <service # DIFF-ANCHOR: 6f89af32 + android:name="org.chromium.content.app.PrivilegedProcessService1" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService1" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process1"> </service> # DIFF-ANCHOR: 6f89af32 <service # DIFF-ANCHOR: 40e0d738 + android:name="org.chromium.content.app.PrivilegedProcessService2" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService2" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process2"> </service> # DIFF-ANCHOR: 40e0d738 <service # DIFF-ANCHOR: b197517d + android:name="org.chromium.content.app.PrivilegedProcessService3" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService3" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process3"> </service> # DIFF-ANCHOR: b197517d <service # DIFF-ANCHOR: 52303702 + android:name="org.chromium.content.app.PrivilegedProcessService4" android:exported="false" android:isolatedProcess="false" - android:name="org.chromium.content.app.PrivilegedProcessService4" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":privileged_process4"> </service> # DIFF-ANCHOR: 52303702 <service # DIFF-ANCHOR: b1e3e8bd + android:name="org.chromium.content.app.SandboxedProcessService0" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService0" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process0" android:useAppZygote="true"> </service> # DIFF-ANCHOR: b1e3e8bd <service # DIFF-ANCHOR: 76d1ccf8 + android:name="org.chromium.content.app.SandboxedProcessService1" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService1" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process1"> </service> # DIFF-ANCHOR: 76d1ccf8 <service # DIFF-ANCHOR: 38b95266 + android:name="org.chromium.content.app.SandboxedProcessService10" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService10" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process10"> </service> # DIFF-ANCHOR: 38b95266 <service # DIFF-ANCHOR: e4a2e4a2 + android:name="org.chromium.content.app.SandboxedProcessService11" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService11" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process11"> </service> # DIFF-ANCHOR: e4a2e4a2 <service # DIFF-ANCHOR: d9b2ffba + android:name="org.chromium.content.app.SandboxedProcessService12" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService12" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process12"> </service> # DIFF-ANCHOR: d9b2ffba <service # DIFF-ANCHOR: b41bb17d + android:name="org.chromium.content.app.SandboxedProcessService13" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService13" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process13"> </service> # DIFF-ANCHOR: b41bb17d <service # DIFF-ANCHOR: aec0ea21 + android:name="org.chromium.content.app.SandboxedProcessService14" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService14" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process14"> </service> # DIFF-ANCHOR: aec0ea21 <service # DIFF-ANCHOR: cf88a5e5 + android:name="org.chromium.content.app.SandboxedProcessService15" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService15" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process15"> </service> # DIFF-ANCHOR: cf88a5e5 <service # DIFF-ANCHOR: 7d85889d + android:name="org.chromium.content.app.SandboxedProcessService16" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService16" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process16"> </service> # DIFF-ANCHOR: 7d85889d <service # DIFF-ANCHOR: dae26ed4 + android:name="org.chromium.content.app.SandboxedProcessService17" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService17" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process17"> </service> # DIFF-ANCHOR: dae26ed4 <service # DIFF-ANCHOR: 2c6cf029 + android:name="org.chromium.content.app.SandboxedProcessService18" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService18" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process18"> </service> # DIFF-ANCHOR: 2c6cf029 <service # DIFF-ANCHOR: 1d2f0988 + android:name="org.chromium.content.app.SandboxedProcessService19" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService19" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process19"> </service> # DIFF-ANCHOR: 1d2f0988 <service # DIFF-ANCHOR: 4a39041b + android:name="org.chromium.content.app.SandboxedProcessService2" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService2" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process2"> </service> # DIFF-ANCHOR: 4a39041b <service # DIFF-ANCHOR: 073533bf + android:name="org.chromium.content.app.SandboxedProcessService20" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService20" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process20"> </service> # DIFF-ANCHOR: 073533bf <service # DIFF-ANCHOR: d24da41d + android:name="org.chromium.content.app.SandboxedProcessService21" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService21" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process21"> </service> # DIFF-ANCHOR: d24da41d <service # DIFF-ANCHOR: 594d8b32 + android:name="org.chromium.content.app.SandboxedProcessService22" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService22" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process22"> </service> # DIFF-ANCHOR: 594d8b32 <service # DIFF-ANCHOR: 5528c0c3 + android:name="org.chromium.content.app.SandboxedProcessService23" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService23" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process23"> </service> # DIFF-ANCHOR: 5528c0c3 <service # DIFF-ANCHOR: b7ab2ba3 + android:name="org.chromium.content.app.SandboxedProcessService24" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService24" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process24"> </service> # DIFF-ANCHOR: b7ab2ba3 <service # DIFF-ANCHOR: cec6cb64 + android:name="org.chromium.content.app.SandboxedProcessService25" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService25" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process25"> </service> # DIFF-ANCHOR: cec6cb64 <service # DIFF-ANCHOR: 5b4a00fe + android:name="org.chromium.content.app.SandboxedProcessService26" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService26" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process26"> </service> # DIFF-ANCHOR: 5b4a00fe <service # DIFF-ANCHOR: ad49d203 + android:name="org.chromium.content.app.SandboxedProcessService27" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService27" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process27"> </service> # DIFF-ANCHOR: ad49d203 <service # DIFF-ANCHOR: 573298e9 + android:name="org.chromium.content.app.SandboxedProcessService28" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService28" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process28"> </service> # DIFF-ANCHOR: 573298e9 <service # DIFF-ANCHOR: 79897b32 + android:name="org.chromium.content.app.SandboxedProcessService29" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService29" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process29"> </service> # DIFF-ANCHOR: 79897b32 <service # DIFF-ANCHOR: 84335864 + android:name="org.chromium.content.app.SandboxedProcessService3" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService3" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process3"> </service> # DIFF-ANCHOR: 84335864 <service # DIFF-ANCHOR: c4bd371e + android:name="org.chromium.content.app.SandboxedProcessService30" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService30" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process30"> </service> # DIFF-ANCHOR: c4bd371e <service # DIFF-ANCHOR: 394a9fd0 + android:name="org.chromium.content.app.SandboxedProcessService31" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService31" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process31"> </service> # DIFF-ANCHOR: 394a9fd0 <service # DIFF-ANCHOR: b811afb8 + android:name="org.chromium.content.app.SandboxedProcessService32" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService32" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process32"> </service> # DIFF-ANCHOR: b811afb8 <service # DIFF-ANCHOR: 2811ddd3 + android:name="org.chromium.content.app.SandboxedProcessService33" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService33" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process33"> </service> # DIFF-ANCHOR: 2811ddd3 <service # DIFF-ANCHOR: 73ae1688 + android:name="org.chromium.content.app.SandboxedProcessService34" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService34" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process34"> </service> # DIFF-ANCHOR: 73ae1688 <service # DIFF-ANCHOR: c476f324 + android:name="org.chromium.content.app.SandboxedProcessService35" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService35" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process35"> </service> # DIFF-ANCHOR: c476f324 <service # DIFF-ANCHOR: 75d5304b + android:name="org.chromium.content.app.SandboxedProcessService36" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService36" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process36"> </service> # DIFF-ANCHOR: 75d5304b <service # DIFF-ANCHOR: dc6d0617 + android:name="org.chromium.content.app.SandboxedProcessService37" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService37" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process37"> </service> # DIFF-ANCHOR: dc6d0617 <service # DIFF-ANCHOR: e31efe49 + android:name="org.chromium.content.app.SandboxedProcessService38" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService38" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process38"> </service> # DIFF-ANCHOR: e31efe49 <service # DIFF-ANCHOR: 5736507e + android:name="org.chromium.content.app.SandboxedProcessService39" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService39" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process39"> </service> # DIFF-ANCHOR: 5736507e <service # DIFF-ANCHOR: a161be24 + android:name="org.chromium.content.app.SandboxedProcessService4" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService4" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process4"> </service> # DIFF-ANCHOR: a161be24 <service # DIFF-ANCHOR: 8e591688 + android:name="org.chromium.content.app.SandboxedProcessService5" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService5" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process5"> </service> # DIFF-ANCHOR: 8e591688 <service # DIFF-ANCHOR: 705141d0 + android:name="org.chromium.content.app.SandboxedProcessService6" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService6" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process6"> </service> # DIFF-ANCHOR: 705141d0 <service # DIFF-ANCHOR: 38ed2189 + android:name="org.chromium.content.app.SandboxedProcessService7" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService7" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process7"> </service> # DIFF-ANCHOR: 38ed2189 <service # DIFF-ANCHOR: aa417956 + android:name="org.chromium.content.app.SandboxedProcessService8" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService8" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process8"> </service> # DIFF-ANCHOR: aa417956 <service # DIFF-ANCHOR: e2f3bbbd + android:name="org.chromium.content.app.SandboxedProcessService9" android:exported="False" android:isolatedProcess="true" - android:name="org.chromium.content.app.SandboxedProcessService9" android:permission="$PACKAGE.permission.CHILD_SERVICE" android:process=":sandboxed_process9"> </service> # DIFF-ANCHOR: e2f3bbbd - <uses-static-library android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:name="org.chromium.trichromelibrary" android:version="$VERSION_NUMBER"/> + <uses-static-library android:name="org.chromium.trichromelibrary" android:certDigest="32a2fc74d731105859e5a85df16d95f102d85b22099b8064c5d8915c61dad1e0" android:version="$VERSION_NUMBER"/> </application> </manifest>
diff --git a/chrome/android/expectations/trichrome_library_apk.AndroidManifest.expected b/chrome/android/expectations/trichrome_library_apk.AndroidManifest.expected index f7c9802f..8059033 100644 --- a/chrome/android/expectations/trichrome_library_apk.AndroidManifest.expected +++ b/chrome/android/expectations/trichrome_library_apk.AndroidManifest.expected
@@ -1,14 +1,14 @@ <?xml version="1.0" ?> <manifest + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" package="org.chromium.trichromelibrary" platformBuildVersionCode="30" platformBuildVersionName="11" - tools:ignore="MissingVersion,MissingLeanbackLauncher" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + tools:ignore="MissingVersion,MissingLeanbackLauncher"> + <uses-feature android:glEsVersion="0x00020000"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-feature android:name="android.software.leanback" android:required="false"/> - <uses-feature android:glEsVersion="0x00020000"/> <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="30"/> <application android:extractNativeLibs="false"
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java index c7a1ba7..b648e40 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java
@@ -158,6 +158,14 @@ return SHARED_PREFERENCES_MANAGER.readInt(PRICE_ALERTS_MESSAGE_CARD_SHOW_COUNT, 0); } + /** + * @return whether or not the user is in a state that allows them to use price tracking feature. + * Note: These checks can also be used in other commerce features. + */ + public static boolean canFetchCommerceData() { + return isSignedIn() && isOpenTabsSyncEnabled() && isAnonymizedUrlDataCollectionEnabled(); + } + private static boolean isSignedIn() { return IdentityServicesProvider.get() .getIdentityManager(Profile.getLastUsedRegularProfile())
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java index 832ea36..5a6a977 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -116,6 +116,8 @@ LensFeature.SEARCH_BOX_START_VARIANT_LENS_CAMERA_ASSISTED_SEARCH, LensFeature.MIN_AGSA_VERSION_LENS_CAMERA_ASSISTED_SEARCH, MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY, + MerchantViewerConfig.TRUST_SIGNALS_MESSAGE_WINDOW_DURATION_SECONDS, + MerchantViewerConfig.TRUST_SIGNALS_SHEET_USE_PAGE_TITLE, PageAnnotationsServiceConfig.PAGE_ANNOTATIONS_BASE_URL, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS, ShoppingPersistedTabData.TIME_TO_LIVE_MS,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java index dfc2cd1..5aeac61 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java
@@ -23,6 +23,7 @@ import org.chromium.base.EarlyTraceEvent; import org.chromium.base.JNIUtils; import org.chromium.base.LocaleUtils; +import org.chromium.base.Log; import org.chromium.base.PathUtils; import org.chromium.base.TraceEvent; import org.chromium.base.library_loader.LibraryLoader; @@ -30,6 +31,7 @@ import org.chromium.base.memory.MemoryPressureMonitor; import org.chromium.base.supplier.Supplier; import org.chromium.base.task.AsyncTask; +import org.chromium.build.BuildConfig; import org.chromium.chrome.browser.ProductConfig; import org.chromium.chrome.browser.crash.ApplicationStatusTracker; import org.chromium.chrome.browser.crash.FirebaseConfig; @@ -40,6 +42,7 @@ import org.chromium.chrome.browser.metrics.UmaUtils; import org.chromium.components.embedder_support.application.FontPreloadingWorkaround; import org.chromium.components.module_installer.util.ModuleUtil; +import org.chromium.components.version_info.VersionConstants; import org.chromium.ui.base.ResourceBundle; /** @@ -51,6 +54,7 @@ * {@link SplitChromeApplication}. */ public class SplitCompatApplication extends Application { + private static final String TAG = "SplitCompatApp"; private static final String COMMAND_LINE_FILE = "chrome-command-line"; private static final String ATTACH_BASE_CONTEXT_EVENT = "ChromeApplication.attachBaseContext"; // Public to allow use in ChromeBackupAgent @@ -111,7 +115,14 @@ // Quirk: context.getApplicationContext() returns null during this method. @Override protected void attachBaseContext(Context context) { + boolean isIsolatedProcess = ContextUtils.isIsolatedProcess(); boolean isBrowserProcess = isBrowserProcess(); + // Using concatenation rather than %s to allow values to be inlined by R8. + Log.i(TAG, + "Launched version=" + VersionConstants.PRODUCT_VERSION + + " minSdkVersion=" + BuildConfig.MIN_SDK_VERSION + + " isBundle=" + ProductConfig.IS_BUNDLE + " processName=%s isIsolated=%s", + ContextUtils.getProcessName(), isIsolatedProcess); if (isBrowserProcess) { UmaUtils.recordMainEntryPointTime(); @@ -190,7 +201,7 @@ BuildInfo.setFirebaseAppId(FirebaseConfig.getFirebaseAppId()); - if (!ContextUtils.isIsolatedProcess()) { + if (!isIsolatedProcess) { // Incremental install disables process isolation, so things in this block will // actually be run for incremental apks, but not normal apks. PureJavaExceptionHandler.installHandler();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler.java index e55c9140..2fe3323 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler.java
@@ -4,23 +4,16 @@ package org.chromium.chrome.browser.externalnav; -import android.annotation.SuppressLint; import android.content.Intent; import androidx.annotation.Nullable; import org.chromium.base.IntentUtils; -import org.chromium.base.Log; -import org.chromium.base.SecureRandomInitializer; -import org.chromium.base.task.AsyncTask; -import org.chromium.base.task.BackgroundOnlyAsyncTask; import org.chromium.chrome.browser.IntentHandler; import org.chromium.url.Origin; -import java.io.IOException; import java.security.SecureRandom; import java.util.Arrays; -import java.util.concurrent.ExecutionException; /** * This class generates a token for the most recently launched external intent that has @@ -42,8 +35,7 @@ private static final Object INSTANCE_LOCK = new Object(); private static IntentWithRequestMetadataHandler sIntentWithRequestMetadataHandler; - private SecureRandom mSecureRandom; - private AsyncTask<SecureRandom> mSecureRandomInitializer; + private SecureRandom mSecureRandom = new SecureRandom(); private RequestMetadata mRequestMetadata; private byte[] mIntentToken; private String mUri; @@ -89,25 +81,6 @@ return sIntentWithRequestMetadataHandler; } - private IntentWithRequestMetadataHandler() { - mSecureRandomInitializer = new BackgroundOnlyAsyncTask<SecureRandom>() { - // SecureRandomInitializer addresses the bug in SecureRandom that "TrulyRandom" - // warns about, so this lint warning can safely be suppressed. - @SuppressLint("TrulyRandom") - @Override - protected SecureRandom doInBackground() { - SecureRandom secureRandom = null; - try { - secureRandom = new SecureRandom(); - SecureRandomInitializer.initialize(secureRandom); - } catch (IOException ioe) { - Log.e(TAG, "Cannot initialize SecureRandom", ioe); - } - return secureRandom; - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - /** * Generate a new token for the intent and put the token and request metadata in the * intent extra. This will invalidate the token on the previously launched intent with request @@ -117,15 +90,6 @@ * @param metadata Request metadata to be put into the intent extra. */ public void onNewIntentWithRequestMetadata(Intent intent, RequestMetadata metadata) { - if (mSecureRandomInitializer != null) { - try { - mSecureRandom = mSecureRandomInitializer.get(); - } catch (InterruptedException | ExecutionException e) { - Log.e(TAG, "Error fetching SecureRandom", e); - } - mSecureRandomInitializer = null; - } - if (mSecureRandom == null) return; mIntentToken = new byte[32]; mSecureRandom.nextBytes(mIntentToken); intent.putExtra(EXTRA_REQUEST_METADATA_TOKEN, mIntentToken);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java index 73a5499..33d810ef 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java
@@ -11,13 +11,11 @@ import androidx.annotation.VisibleForTesting; import org.chromium.base.Callback; -import org.chromium.base.Log; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.NativeMethods; import org.chromium.base.task.PostTask; import org.chromium.chrome.browser.flags.ChromeFeatureList; -import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceResult; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; @@ -34,8 +32,6 @@ * Bridge to the native AutocompleteControllerAndroid. */ public class AutocompleteController { - private static final String TAG = "Autocomplete"; - // Maximum number of voice suggestions to show. private static final int MAX_VOICE_SUGGESTION_COUNT = 3; @@ -46,14 +42,14 @@ // was the most ideal. private static final int OMNIBOX_SPARE_RENDERER_DELAY_MS = 1000; - private final Callback<Profile> mSpareRendererCreator; + private final @NonNull Callback<Profile> mSpareRendererCreator; private long mNativeAutocompleteControllerAndroid; - private long mCurrentNativeAutocompleteResult; private OnSuggestionsReceivedListener mListener; private boolean mUseCachedZeroSuggestResults; private boolean mWaitingForSuggestionsToCache; private Profile mProfile; + private @NonNull AutocompleteResult mAutocompleteResult; /** * Listener for receiving OmniboxSuggestions. @@ -64,6 +60,7 @@ } public AutocompleteController(@NonNull Callback<Profile> spareRendererCreator) { + mAutocompleteResult = new AutocompleteResult(null, null); mSpareRendererCreator = spareRendererCreator; } @@ -139,9 +136,6 @@ int cursorPosition, boolean preventInlineAutocomplete, @Nullable String queryTileId, boolean isQueryStartedFromTiles) { assert mListener != null : "Ensure a listener is set prior to calling."; - // crbug.com/764749 - Log.w(TAG, "starting autocomplete controller..[%b][%b]", profile == null, - TextUtils.isEmpty(url)); if (profile == null || TextUtils.isEmpty(url)) return; setProfile(profile); @@ -227,20 +221,14 @@ * Stops generating autocomplete suggestions for the currently specified text from * {@link #start(Profile,String, String, boolean)}. * - * <p> - * Calling this method with {@code true}, will result in - * {@link #onSuggestionsReceived(AutocompleteResult, String, long)} being called with an empty - * result set. - * - * @param clear Whether to clear the most recent autocomplete results. + * @param clear Whether to clear the most recent autocomplete results. When true, the + * {@link #onSuggestionsReceived(AutocompleteResult, String)} will be called with an + * empty result set. */ public void stop(boolean clear) { assert mListener != null : "Ensure a listener is set prior to calling."; - mCurrentNativeAutocompleteResult = 0; mWaitingForSuggestionsToCache = false; if (mNativeAutocompleteControllerAndroid != 0) { - // crbug.com/764749 - Log.w(TAG, "stopping autocomplete."); AutocompleteControllerJni.get().stop( mNativeAutocompleteControllerAndroid, AutocompleteController.this, clear); } @@ -261,10 +249,11 @@ * Deletes an omnibox suggestion, if possible. * @param position The position at which the suggestion is located. */ - void deleteSuggestion(int position, int hashCode) { + void deleteSuggestion(int position) { + if (!mAutocompleteResult.verifyCoherency()) return; if (mNativeAutocompleteControllerAndroid != 0) { - AutocompleteControllerJni.get().deleteSuggestion(mNativeAutocompleteControllerAndroid, - AutocompleteController.this, position, hashCode); + AutocompleteControllerJni.get().deleteSuggestion( + mNativeAutocompleteControllerAndroid, AutocompleteController.this, position); } } @@ -273,16 +262,16 @@ */ @VisibleForTesting long getCurrentNativeAutocompleteResult() { - return mCurrentNativeAutocompleteResult; + return mAutocompleteResult.getNativeObjectRef(); } @CalledByNative - protected void onSuggestionsReceived(AutocompleteResult autocompleteResult, - String inlineAutocompleteText, long currentNativeAutocompleteResult) { + protected void onSuggestionsReceived( + AutocompleteResult autocompleteResult, String inlineAutocompleteText) { assert mListener != null : "Ensure a listener is set prior generating suggestions."; final AutocompleteResult originalResult = autocompleteResult; - mCurrentNativeAutocompleteResult = currentNativeAutocompleteResult; + mAutocompleteResult = autocompleteResult; // Notify callbacks of suggestions. mListener.onSuggestionsReceived(autocompleteResult, inlineAutocompleteText); @@ -312,14 +301,13 @@ * @param webContents The web contents for the tab where the selected suggestion will be shown. */ @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) - public void onSuggestionSelected(int selectedIndex, int disposition, int hashCode, int type, + public void onSuggestionSelected(int selectedIndex, int disposition, int type, String currentPageUrl, int pageClassification, long elapsedTimeSinceModified, int completedLength, WebContents webContents) { + if (!mAutocompleteResult.verifyCoherency()) return; assert mNativeAutocompleteControllerAndroid != 0; - // Don't natively log voice suggestion results as we add them in Java. - if (type == OmniboxSuggestionType.VOICE_SUGGEST) return; AutocompleteControllerJni.get().onSuggestionSelected(mNativeAutocompleteControllerAndroid, - AutocompleteController.this, selectedIndex, disposition, hashCode, currentPageUrl, + AutocompleteController.this, selectedIndex, disposition, currentPageUrl, pageClassification, elapsedTimeSinceModified, completedLength, webContents); } @@ -341,55 +329,34 @@ } /** - * Verifies whether the given AutocompleteMatch object has the same hashCode as another - * suggestion. This is used to validate that the native AutocompleteMatch object is in sync - * with the Java version. - */ - @CalledByNative - private static boolean isEquivalentOmniboxSuggestion( - AutocompleteMatch suggestion, int hashCode) { - if (suggestion.hashCode() == hashCode) return true; - - // Note: these are only logged on development builds. - // clang-format off - Log.d(TAG, "Checked suggestion not valid: " + suggestion.getFillIntoEdit() + " (" - + suggestion.getType() + ")"); - // clang-format on - return false; - } - - /** * Updates aqs parameters on the selected match that we will navigate to and returns the - * updated URL. |selectedIndex| and |hashCode| is the position and hash code of the selected - * match. |elapsedTimeSinceInputChange| is the time in ms between the first typed input - * and match selection. + * updated URL. * * @param selectedIndex The index of the autocomplete entry selected. - * @param hashCode Hash code of the AutocompleteMatch object that is selected. * @param elapsedTimeSinceInputChange The number of ms between the time the user started - * typing in the omnibox and the time the user has selected - * a suggestion. + * typing in the omnibox and the time the user has selected a suggestion. */ GURL updateMatchDestinationUrlWithQueryFormulationTime( - int selectedIndex, int hashCode, long elapsedTimeSinceInputChange) { + int selectedIndex, long elapsedTimeSinceInputChange) { + if (!mAutocompleteResult.verifyCoherency()) return null; return updateMatchDestinationUrlWithQueryFormulationTime( - selectedIndex, hashCode, elapsedTimeSinceInputChange, null, null); + selectedIndex, elapsedTimeSinceInputChange, null, null); } /** * Updates destination url on the selected match that we will navigate to and returns the - * updated URL. |selectedIndex| and |hashCode| is the position and hash code of the selected - * match. |elapsedTimeSinceInputChange| is the time in ms between the first typed input - * and match selection. If |newQueryText| and |newQueryParams| is not empty, they will be - * used to replace the existing query string and query params. - * For example, if |elapsedTimeSinceInputChange| > 0, |newQyeryText| is "Politics news". - * and the existing destination URL is "www.google.com/search?q=News+&aqs=chrome.0.69i...l3", + * updated URL. + * + * If |newQueryText| and |newQueryParams| are not empty, they will be used to replace the + * existing query string and query params. For example, if: + * - |elapsedTimeSinceInputChange| > 0, + * - |newQyeryText| is "Politics news", + * - existing destination URL is "www.google.com/search?q=News+&aqs=chrome.0.69i...l3", * the returned new URL will be of the format - * "www.google.com/search?q=Politics+news&aqs=chrome.0.69i...l3.1409j0j9" where - * ".1409j0j9" is the encoded elapsed time. + * "www.google.com/search?q=Politics+news&aqs=chrome.0.69i...l3.1409j0j9" + * where ".1409j0j9" is the encoded elapsed time. * * @param selectedIndex The index of the autocomplete entry selected. - * @param hashCode Hash code of the AutocompleteMatch object that is selected. * @param elapsedTimeSinceInputChange The number of ms between the time the user started * typing in the omnibox and the time the user has selected * a suggestion. @@ -398,11 +365,12 @@ * @return The url to navigate to for this match with aqs parameter, query string and parameters * updated, if we are making a Google search query. */ - GURL updateMatchDestinationUrlWithQueryFormulationTime(int selectedIndex, int hashCode, + GURL updateMatchDestinationUrlWithQueryFormulationTime(int selectedIndex, long elapsedTimeSinceInputChange, String newQueryText, List<String> newQueryParams) { + if (!mAutocompleteResult.verifyCoherency()) return null; return AutocompleteControllerJni.get().updateMatchDestinationURLWithQueryFormulationTime( mNativeAutocompleteControllerAndroid, AutocompleteController.this, selectedIndex, - hashCode, elapsedTimeSinceInputChange, newQueryText, + elapsedTimeSinceInputChange, newQueryText, newQueryParams == null ? null : newQueryParams.toArray(new String[newQueryParams.size()])); } @@ -433,18 +401,18 @@ boolean clearResults); void resetSession(long nativeAutocompleteControllerAndroid, AutocompleteController caller); void onSuggestionSelected(long nativeAutocompleteControllerAndroid, - AutocompleteController caller, int selectedIndex, int disposition, int hashCode, + AutocompleteController caller, int selectedIndex, int disposition, String currentPageUrl, int pageClassification, long elapsedTimeSinceModified, int completedLength, WebContents webContents); void onOmniboxFocused(long nativeAutocompleteControllerAndroid, AutocompleteController caller, String omniboxText, String currentUrl, int pageClassification, String currentTitle); void deleteSuggestion(long nativeAutocompleteControllerAndroid, - AutocompleteController caller, int selectedIndex, int hashCode); + AutocompleteController caller, int selectedIndex); GURL updateMatchDestinationURLWithQueryFormulationTime( long nativeAutocompleteControllerAndroid, AutocompleteController caller, - int selectedIndex, int hashCode, long elapsedTimeSinceInputChange, - String newQueryText, String[] newQueryParams); + int selectedIndex, long elapsedTimeSinceInputChange, String newQueryText, + String[] newQueryParams); Tab findMatchingTabWithUrl( long nativeAutocompleteControllerAndroid, AutocompleteController caller, GURL url); void setVoiceMatches(long nativeAutocompleteControllerAndroid, String[] matches,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java index f85a957..d4a4dce4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
@@ -539,7 +539,7 @@ public void onClick(PropertyModel model, int buttonType) { if (buttonType == ModalDialogProperties.ButtonType.POSITIVE) { RecordUserAction.record("MobileOmniboxDeleteRequested"); - mAutocomplete.deleteSuggestion(position, suggestion.hashCode()); + mAutocomplete.deleteSuggestion(position); manager.dismissDialog(model, DialogDismissalCause.POSITIVE_BUTTON_CLICKED); } else if (buttonType == ModalDialogProperties.ButtonType.NEGATIVE) { manager.dismissDialog(model, DialogDismissalCause.NEGATIVE_BUTTON_CLICKED); @@ -618,7 +618,7 @@ // TODO(mariakhomenko): Ideally we want to update match destination URL with new aqs // for query in the omnibox and voice suggestions, but it's currently difficult to do. GURL updatedUrl = mAutocomplete.updateMatchDestinationUrlWithQueryFormulationTime( - verifiedIndex, suggestion.hashCode(), getElapsedTimeSinceInputChange()); + verifiedIndex, getElapsedTimeSinceInputChange()); return updatedUrl == null ? url : updatedUrl; } @@ -764,6 +764,7 @@ */ void loadTypedOmniboxText(long eventTime) { final String urlText = mUrlBarEditingTextProvider.getTextWithAutocomplete(); + cancelAutocompleteRequests(); if (mNativeInitialized) { findMatchAndLoadUrl(urlText, eventTime); } else { @@ -1019,9 +1020,9 @@ WebContents webContents = mDataProvider.hasTab() ? mDataProvider.getTab().getWebContents() : null; - mAutocomplete.onSuggestionSelected(matchPosition, disposition, suggestion.hashCode(), - suggestion.getType(), currentPageUrl, pageClassification, elapsedTimeSinceModified, - autocompleteLength, webContents); + mAutocomplete.onSuggestionSelected(matchPosition, disposition, suggestion.getType(), + currentPageUrl, pageClassification, elapsedTimeSinceModified, autocompleteLength, + webContents); } @Override @@ -1061,8 +1062,7 @@ } if (suggestion == null) return; GURL updatedUrl = mAutocomplete.updateMatchDestinationUrlWithQueryFormulationTime(position, - suggestion.hashCode(), getElapsedTimeSinceInputChange(), queryTile.queryText, - queryTile.searchParams); + getElapsedTimeSinceInputChange(), queryTile.queryText, queryTile.searchParams); // RecordMetrics has to be called before loadUrl, or otherwise the native AutocompleteResult // object will be reset and the suggestion will fail validation. recordMetrics(position, WindowOpenDisposition.CURRENT_TAB, suggestion);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java index 2e5b24b..4e69b683 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -47,6 +47,8 @@ import org.chromium.chrome.browser.history.HistoryManagerUtils; import org.chromium.chrome.browser.language.LanguageAskPrompt; import org.chromium.chrome.browser.layouts.LayoutStateProvider; +import org.chromium.chrome.browser.merchant_viewer.MerchantTrustMetrics; +import org.chromium.chrome.browser.merchant_viewer.MerchantTrustSignalsCoordinator; import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; import org.chromium.chrome.browser.offlinepages.indicator.OfflineIndicatorControllerV2; import org.chromium.chrome.browser.offlinepages.indicator.OfflineIndicatorInProductHelpController; @@ -62,6 +64,7 @@ import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabAssociatedApp; import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.tasks.tab_management.PriceTrackingUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.toolbar.ToolbarButtonInProductHelpController; import org.chromium.chrome.browser.toolbar.ToolbarIntentMetadata; @@ -114,6 +117,7 @@ private ContinuousSearchContainerCoordinator mContinuousSearchContainerCoordinator; private Callback<Integer> mContinuousSearchObserver; private TabObscuringHandler.Observer mContinuousSearchTabObscuringHandlerObserver; + private MerchantTrustSignalsCoordinator mMerchantTrustSignalsCoordinator; private int mStatusIndicatorHeight; private int mContinuousSearchHeight; @@ -216,6 +220,12 @@ mContinuousSearchObserver = null; mContinuousSearchTabObscuringHandlerObserver = null; } + + if (mMerchantTrustSignalsCoordinator != null) { + mMerchantTrustSignalsCoordinator.destroy(); + mMerchantTrustSignalsCoordinator = null; + } + super.destroy(); } @@ -330,6 +340,21 @@ PwaBottomSheetControllerFactory.attach( mActivity.getWindowAndroid(), mPwaBottomSheetController); initContinuousSearchCoordinator(); + + initMerchantTrustSignals(); + } + + private void initMerchantTrustSignals() { + if (!ChromeFeatureList.isEnabled(ChromeFeatureList.COMMERCE_MERCHANT_VIEWER) + || !PriceTrackingUtilities.canFetchCommerceData()) { + return; + } + + mMerchantTrustSignalsCoordinator = new MerchantTrustSignalsCoordinator(mActivity, + mActivity.getWindowAndroid(), getBottomSheetController(), + mActivity.getWindow().getDecorView(), mActivity.getTabModelSelector(), + MessageDispatcherProvider.from(mActivity.getWindowAndroid()), + mActivity.getActivityTabProvider(), mProfileSupplier, new MerchantTrustMetrics()); } // Protected class methods
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java index 115524e..0be8bdc 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
@@ -245,8 +245,8 @@ if (DeviceClassManager.enableFullscreen()) { mOverlayCoordinator = new TopToolbarOverlayCoordinator(mToolbarLayout.getContext(), layoutManager, mControlContainer::getProgressBarDrawingInfo, tabSupplier, - browserControlsStateProvider, mResourceManagerSupplier, - topUiThemeColorProvider, LayoutType.BROWSING, false); + browserControlsStateProvider, mResourceManagerSupplier, topUiThemeColorProvider, + LayoutType.BROWSING | LayoutType.SIMPLE_ANIMATION, false); layoutManager.addSceneOverlay(mOverlayCoordinator); mToolbarLayout.setOverlayCoordinator(mOverlayCoordinator); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappAuthenticator.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappAuthenticator.java index c72ab6c..b5bf304e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappAuthenticator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappAuthenticator.java
@@ -4,13 +4,11 @@ package org.chromium.chrome.browser.webapps; -import android.annotation.SuppressLint; import android.content.Context; import android.util.Log; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ContextUtils; -import org.chromium.base.SecureRandomInitializer; import org.chromium.base.StrictModeContext; import java.io.File; @@ -178,10 +176,7 @@ /** * Generates the authentication encryption key in a background thread (if necessary). - * SecureRandomInitializer addresses the bug in SecureRandom that "TrulyRandom" warns about, so - * this lint warning can safely be suppressed. */ - @SuppressLint("TrulyRandom") private static SecretKey generateMacKey() { if (sKey != null) { return sKey; @@ -189,10 +184,9 @@ try { KeyGenerator generator = KeyGenerator.getInstance(MAC_ALGORITHM_NAME); SecureRandom random = new SecureRandom(); - SecureRandomInitializer.initialize(random); generator.init(MAC_KEY_BYTE_COUNT * 8, random); return generator.generateKey(); - } catch (NoSuchAlgorithmException | IOException e) { + } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } }
diff --git a/chrome/android/trichrome.gni b/chrome/android/trichrome.gni index 27cc637..cdbfd75 100644 --- a/chrome/android/trichrome.gni +++ b/chrome/android/trichrome.gni
@@ -123,11 +123,6 @@ "//third_party/icu:icu_assets", ] - _native_lib_file = - rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir) - native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)" - native_lib_version_rule = "//build/util:chrome_version_json" - # Flag whether additional deps and libs should be included for each ABI. _include_primary_support = false _include_secondary_support = false
diff --git a/chrome/android/webapk/shell_apk/request_update_for_version.gni b/chrome/android/webapk/shell_apk/request_update_for_version.gni index 8d5127d..4db0b9c 100644 --- a/chrome/android/webapk/shell_apk/request_update_for_version.gni +++ b/chrome/android/webapk/shell_apk/request_update_for_version.gni
@@ -6,4 +6,4 @@ # if the WebAPK's ShellAPK version is less than # |request_update_for_shell_apk_version|. The version should be incremented # after a new ShellAPK has been uploaded to the WebAPK Minting Server. -request_update_for_shell_apk_version = 122 +request_update_for_shell_apk_version = 135
diff --git a/chrome/app/android/chrome_jni_onload.cc b/chrome/app/android/chrome_jni_onload.cc index 0c7c87e..8a8abbcf 100644 --- a/chrome/app/android/chrome_jni_onload.cc +++ b/chrome/app/android/chrome_jni_onload.cc
@@ -4,9 +4,7 @@ #include "chrome/app/android/chrome_jni_onload.h" -#include "base/android/library_loader/library_loader_hooks.h" #include "chrome/app/android/chrome_main_delegate_android.h" -#include "components/version_info/version_info.h" #include "content/public/app/content_jni_onload.h" #include "content/public/app/content_main.h" @@ -16,9 +14,6 @@ if (!content::android::OnJNIOnLoadInit()) return false; - // Pass the library version number to content so that we can check it from the - // Java side before continuing initialization. - base::android::SetVersionNumber(version_info::GetVersionNumber().c_str()); content::SetContentMainDelegate(new ChromeMainDelegateAndroid()); return true; }
diff --git a/chrome/app/theme/default_100_percent/common/favicon_ntp.png b/chrome/app/theme/default_100_percent/common/favicon_ntp.png new file mode 100644 index 0000000..981dbb33 --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/favicon_ntp.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/favicon_ntp.png b/chrome/app/theme/default_200_percent/common/favicon_ntp.png new file mode 100644 index 0000000..1561a58 --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/favicon_ntp.png Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index f26b92c..51792322 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd
@@ -151,6 +151,7 @@ <structure type="chrome_scaled_image" name="IDR_NOTIFICATION_EASYUNLOCK_ENABLED" file="cros/notification_easyunlock_enabled.png" /> </if> <if expr="not is_android"> + <structure type="chrome_scaled_image" name="IDR_NTP_FAVICON" file="common/favicon_ntp.png" /> <structure type="chrome_scaled_image" name="IDR_PASSWORD_CHECK" file="common/password_check.png" /> <structure type="chrome_scaled_image" name="IDR_PASSWORD_CHECK_DARK" file="common/password_check_dark.png" /> </if>
diff --git a/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java b/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java index 87b4dc6..66e6faa 100644 --- a/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java +++ b/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java
@@ -4,7 +4,6 @@ package org.chromium.chrome.browser.crypto; -import android.annotation.SuppressLint; import android.os.Bundle; import androidx.annotation.AnyThread; @@ -13,7 +12,6 @@ import org.chromium.base.ByteArrayGenerator; import org.chromium.base.Log; import org.chromium.base.ObserverList; -import org.chromium.base.SecureRandomInitializer; import org.chromium.base.task.AsyncTask; import org.chromium.base.task.PostTask; import org.chromium.content_public.browser.UiThreadTaskTraits; @@ -193,9 +191,6 @@ */ private Callable<CipherData> createGeneratorCallable() { return new Callable<CipherData>() { - // SecureRandomInitializer addresses the bug in SecureRandom that "TrulyRandom" - // warns about, so this lint warning can safely be suppressed. - @SuppressLint("TrulyRandom") @Override public CipherData call() { // Poll random data to generate initialization parameters for the Cipher. @@ -212,14 +207,10 @@ try { SecureRandom random = new SecureRandom(); - SecureRandomInitializer.initialize(random); KeyGenerator generator = KeyGenerator.getInstance("AES"); generator.init(128, random); return new CipherData(generator.generateKey(), iv); - } catch (IOException e) { - Log.e(TAG, "Couldn't get generator data."); - return null; } catch (GeneralSecurityException e) { Log.e(TAG, "Couldn't get generator instances."); return null;
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.cc b/chrome/browser/android/omnibox/autocomplete_controller_android.cc index 81d27b3..451e49b 100644 --- a/chrome/browser/android/omnibox/autocomplete_controller_android.cc +++ b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
@@ -89,14 +89,6 @@ namespace { -// Used for histograms, append only. -enum class MatchValidationResult { - VALID_MATCH = 0, - WRONG_MATCH = 1, - BAD_RESULT_SIZE = 2, - COUNT = 3 -}; - void RecordClipboardMetrics(AutocompleteMatchType::Type match_type) { if (match_type != AutocompleteMatchType::CLIPBOARD_URL && match_type != AutocompleteMatchType::CLIPBOARD_TEXT && @@ -191,6 +183,8 @@ if (!autocomplete_controller_) return; + autocomplete_controller_->result().DestroyJavaObject(); + std::string desired_tld; GURL current_url; if (!j_current_url.is_null()) @@ -228,6 +222,9 @@ if (!autocomplete_controller_) return ScopedJavaLocalRef<jobject>(); + // The old AutocompleteResult is about to be invalidated. + autocomplete_controller_->result().DestroyJavaObject(); + inside_synchronous_start_ = true; Start(env, obj, j_text, -1, nullptr, nullptr, true, false, false, false, focused_from_fakebox, JavaRef<jstring>(), false); @@ -297,15 +294,11 @@ const JavaParamRef<jobject>& obj, jint selected_index, const jint j_window_open_disposition, - jint hash_code, const JavaParamRef<jstring>& j_current_url, jint j_page_classification, jlong elapsed_time_since_first_modified, jint completed_length, const JavaParamRef<jobject>& j_web_contents) { - if (!IsValidMatch(env, selected_index, hash_code)) - return; - std::u16string url = ConvertJavaStringToUTF16(env, j_current_url); const GURL current_url = GURL(url); const base::TimeTicks& now(base::TimeTicks::Now()); @@ -365,11 +358,7 @@ void AutocompleteControllerAndroid::DeleteSuggestion( JNIEnv* env, const JavaParamRef<jobject>& obj, - jint selected_index, - jint hash_code) { - if (!IsValidMatch(env, selected_index, hash_code)) - return; - + jint selected_index) { const AutocompleteResult& result = autocomplete_controller_->result(); const AutocompleteMatch& match = result.match_at(selected_index); if (match.SupportsDeletion()) @@ -381,12 +370,9 @@ JNIEnv* env, const JavaParamRef<jobject>& obj, jint selected_index, - jint hash_code, jlong elapsed_time_since_input_change, const base::android::JavaParamRef<jstring>& jnew_query_text, const base::android::JavaParamRef<jobjectArray>& jnew_query_params) { - if (!IsValidMatch(env, selected_index, hash_code)) - return ScopedJavaLocalRef<jstring>(); AutocompleteMatch match( autocomplete_controller_->result().match_at(selected_index)); @@ -523,11 +509,9 @@ ScopedJavaLocalRef<jstring> inline_text = ConvertUTF16ToJavaString(env, inline_autocompletion); - jlong j_autocomplete_result_raw_ptr = - reinterpret_cast<intptr_t>(&autocomplete_result); Java_AutocompleteController_onSuggestionsReceived( env, java_bridge, autocomplete_result.GetOrCreateJavaObject(env), - inline_text, j_autocomplete_result_raw_ptr); + inline_text); } void AutocompleteControllerAndroid::SetVoiceMatches( @@ -553,48 +537,6 @@ } } -bool AutocompleteControllerAndroid::IsValidMatch(JNIEnv* env, - jint selected_index, - jint hash_code) { - const AutocompleteResult& result = autocomplete_controller_->result(); - if (base::checked_cast<size_t>(selected_index) >= result.size()) { - UMA_HISTOGRAM_ENUMERATION("Android.Omnibox.InvalidMatch", - MatchValidationResult::BAD_RESULT_SIZE, - MatchValidationResult::COUNT); - NOTREACHED() << "No match at position " << selected_index - << ": Autocomplete result size mismatch."; - - return false; - } - - // TODO(mariakhomenko): After we get results from the histogram, if invalid - // match count is very low, we can consider skipping the expensive - // verification step and removing this code. - bool equal = Java_AutocompleteController_isEquivalentOmniboxSuggestion( - env, result.match_at(selected_index).GetOrCreateJavaObject(env), - hash_code); - UMA_HISTOGRAM_ENUMERATION("Android.Omnibox.InvalidMatch", - equal ? MatchValidationResult::VALID_MATCH - : MatchValidationResult::WRONG_MATCH, - MatchValidationResult::COUNT); - - if (!equal) { -#ifndef NDEBUG - int index = 0; - for (const auto& match : result) { - DLOG(WARNING) << "Native suggestion " << index << ": " - << match.fill_into_edit << " (" << match.provider->GetName() - << ", " << match.type << ")"; - index++; - } -#endif - NOTREACHED() - << "AutocompleteMatch mismatch with native-sourced suggestions."; - } - - return equal; -} - static jlong JNI_AutocompleteController_Init( JNIEnv* env, const JavaParamRef<jobject>& obj,
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.h b/chrome/browser/android/omnibox/autocomplete_controller_android.h index f1a7fcf..5b9d7769 100644 --- a/chrome/browser/android/omnibox/autocomplete_controller_android.h +++ b/chrome/browser/android/omnibox/autocomplete_controller_android.h
@@ -68,7 +68,6 @@ const base::android::JavaParamRef<jobject>& obj, jint selected_index, const jint j_window_open_disposition, - jint hash_code, const base::android::JavaParamRef<jstring>& j_current_url, jint j_page_classification, jlong elapsed_time_since_first_modified, @@ -76,14 +75,12 @@ const base::android::JavaParamRef<jobject>& j_web_contents); void DeleteSuggestion(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, - jint selected_index, - jint hash_code); + jint selected_index); base::android::ScopedJavaLocalRef<jobject> UpdateMatchDestinationURLWithQueryFormulationTime( JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, jint selected_index, - jint hash_code, jlong elapsed_time_since_input_change, const base::android::JavaParamRef<jstring>& jnew_query_text, const base::android::JavaParamRef<jobjectArray>& jnew_query_params); @@ -141,8 +138,6 @@ void NotifySuggestionsReceived( const AutocompleteResult& autocomplete_result); - bool IsValidMatch(JNIEnv* env, jint selected_index, jint hash_code); - std::unique_ptr<AutocompleteController> autocomplete_controller_; // Last input we sent to the autocomplete controller.
diff --git a/chrome/browser/ash/crosapi/browser_data_migrator.cc b/chrome/browser/ash/crosapi/browser_data_migrator.cc index 3c85540f..a3327e61 100644 --- a/chrome/browser/ash/crosapi/browser_data_migrator.cc +++ b/chrome/browser/ash/crosapi/browser_data_migrator.cc
@@ -17,8 +17,11 @@ #include "base/system/sys_info.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" +#include "base/threading/thread_restrictions.h" #include "chrome/browser/ash/crosapi/browser_util.h" +#include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/common/chrome_paths.h" +#include "components/account_id/account_id.h" #include "components/user_manager/user_manager.h" namespace ash { @@ -37,11 +40,13 @@ BrowserDataMigrator::TargetInfo::~TargetInfo() = default; // static -void BrowserDataMigrator::MaybeMigrate(const UserContext& user_context, +void BrowserDataMigrator::MaybeMigrate(const AccountId& account_id, + const std::string& user_id_hash, + bool async, base::OnceClosure callback) { // Get the current user. const user_manager::User* user = - user_manager::UserManager::Get()->FindUser(user_context.GetAccountId()); + user_manager::UserManager::Get()->FindUser(account_id); if (!user || !IsMigrationRequiredOnUI(user)) { // If lacros isn't enabled, skip migration and move on to the next step. RecordStatus(FinalStatus::kSkipped); @@ -57,18 +62,31 @@ return; } - base::FilePath profile_data_dir = user_data_dir.Append( - base::StringPrintf("u-%s", user_context.GetUserIDHash().c_str())); + // Use `GetUserProfileDir()` to manually get base name for profile dir since + // `MaybeMigrate()` is called before profile creation. + base::FilePath profile_data_dir = + user_data_dir.Append(ProfileHelper::GetUserProfileDir(user_id_hash)); std::unique_ptr<BrowserDataMigrator> browser_data_migrator = std::make_unique<BrowserDataMigrator>(profile_data_dir); - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, {base::MayBlock()}, - base::BindOnce(&BrowserDataMigrator::MigrateInternal, - std::move(browser_data_migrator)), - base::BindOnce(&BrowserDataMigrator::MigrateInternalFinishedUIThread, - std::move(callback))); + if (async) { + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, + {base::MayBlock(), base::TaskPriority::USER_VISIBLE, + base::TaskShutdownBehavior::BLOCK_SHUTDOWN}, + base::BindOnce(&BrowserDataMigrator::MigrateInternal, + std::move(browser_data_migrator)), + base::BindOnce(&BrowserDataMigrator::MigrateInternalFinishedUIThread, + std::move(callback))); + } else { + // Temporarily allowing blocking since we have to ensure that the migration + // happens before profile is created. + base::ScopedAllowBlocking allow_blocking; + // Migrate synchronously on UI thread. + bool did_migrate = browser_data_migrator->MigrateInternal(); + MigrateInternalFinishedUIThread(std::move(callback), did_migrate); + } } // static @@ -193,7 +211,7 @@ for (base::FilePath entry = enumerator.Next(); !entry.empty(); entry = enumerator.Next()) { if (base::Contains(kNoCopyPaths, entry.BaseName().value())) { - // Skip if the base name is present in kNoCopyPaths. + // Skip if the base name is present in `kNoCopyPaths`. continue; } @@ -203,7 +221,7 @@ target_info.total_byte_count += info.GetSize(); } else { // Treat symlink the same as directory since even if it points to a file, - // both ComputeDirectorySize and CopyDirectory can be used. + // both `ComputeDirectorySize()` and `CopyDirectory()` can be used. target_info.dir_paths.emplace_back(entry); target_info.total_byte_count += base::ComputeDirectorySize(entry); } @@ -228,7 +246,7 @@ base::File::Error error; if (!base::CreateDirectoryAndGetError(tmp_dir_, &error)) { PLOG(ERROR) << "CreateDirectoryFailed " << error; - // Maps to histogram enum PlatformFileError. + // Maps to histogram enum `PlatformFileError`. UMA_HISTOGRAM_ENUMERATION(kCreateDirectoryFail, -error, -base::File::FILE_ERROR_MAX); return false;
diff --git a/chrome/browser/ash/crosapi/browser_data_migrator.h b/chrome/browser/ash/crosapi/browser_data_migrator.h index 190f158..f38788f 100644 --- a/chrome/browser/ash/crosapi/browser_data_migrator.h +++ b/chrome/browser/ash/crosapi/browser_data_migrator.h
@@ -28,8 +28,8 @@ "Ash.BrowserDataMigrator.CreateDirectoryFailure"; // BrowserDataMigrator is responsible for one time browser data migration from -// ash-chrome to lacros-chrome. The static method MaybeMigrate() instantiates -// an instance and calls MigrateInternal(). +// ash-chrome to lacros-chrome. The static method `MaybeMigrate()` instantiates +// an instance and calls `MigrateInternal()`. class BrowserDataMigrator { public: // Used to describe what files/dirs have to be migrated to the new location @@ -60,18 +60,22 @@ kMaxValue = kMoveFailed }; - // The class is instantiated on UI thread, bound to MigrateInternal and then - // posted to worker thread. + // The class is instantiated on UI thread, bound to `MigrateInternal()` and + // then posted to worker thread. explicit BrowserDataMigrator(const base::FilePath& from); BrowserDataMigrator(const BrowserDataMigrator&) = delete; BrowserDataMigrator& operator=(const BrowserDataMigrator&) = delete; ~BrowserDataMigrator(); - // Called on UI thread. If lacros is enabled, it posts MigrateInternal() to a - // worker thread with callback as reply. If lacros is not enabled, it calls - // the callback immediately. Files are copied to |tmp_dir_| first and then - // moved to |to_dir_| in an atomic way. - static void MaybeMigrate(const UserContext& user_context, + // Called on UI thread. If `async` is true, it posts `MigrateInternal()` to a + // worker thread with callback as reply. If `async` is false, the whole + // process will be done on UI thread. Since the migration copies user data + // files, it has to be completed before ash chrome starts accessing those + // files. Files are copied to `tmp_dir_` first and then moved to `to_dir_` in + // an atomic way. + static void MaybeMigrate(const AccountId& account_id, + const std::string& user_id_hash, + bool async, base::OnceClosure callback); private: @@ -88,8 +92,8 @@ // Called when the migration is finished on the UI thread. static void MigrateInternalFinishedUIThread(base::OnceClosure callback, bool did_migrate); - // Records to UMA histograms. Note that if target_info is nullptr, timer will - // be ignored. + // Records to UMA histograms. Note that if `target_info` is nullptr, timer + // will be ignored. static void RecordStatus(const FinalStatus& final_status, const TargetInfo* target_info = nullptr, const base::ElapsedTimer* timer = nullptr); @@ -100,12 +104,12 @@ // Gets what files/dirs need to be copied and the total byte size of files to // be copied. TargetInfo GetTargetInfo() const; - // Compares space available under |from_dir_| against total byte size that + // Compares space available under `from_dir_` against total byte size that // needs to be copied. bool HasEnoughDiskSpace(const TargetInfo& target_info) const; - // Copies files from |from_dir_| to |tmp_dir_|. + // Copies files from `from_dir_` to `tmp_dir_`. bool CopyToTmpDir(const TargetInfo& target_info) const; - // Moves |tmp_dir_| to |to_dir_|. + // Moves `tmp_dir_` to `to_dir_`. bool MoveTmpToTargetDir() const; // Path to the original profile data directory. It is directly under the
diff --git a/chrome/browser/ash/crosapi/browser_data_migrator_browsertest.cc b/chrome/browser/ash/crosapi/browser_data_migrator_browsertest.cc new file mode 100644 index 0000000..ec61e2db --- /dev/null +++ b/chrome/browser/ash/crosapi/browser_data_migrator_browsertest.cc
@@ -0,0 +1,87 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/crosapi/browser_data_migrator.h" + +#include "ash/constants/ash_features.h" +#include "ash/constants/ash_switches.h" +#include "base/files/file_util.h" +#include "base/test/scoped_feature_list.h" +#include "base/threading/thread_restrictions.h" +#include "chrome/browser/ash/login/login_manager_test.h" +#include "chrome/browser/ash/login/test/login_manager_mixin.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/common/chrome_constants.h" +#include "components/account_id/account_id.h" +#include "content/public/test/browser_test.h" +#include "content/public/test/test_launcher.h" + +namespace ash { +class BrowserDataMigratorRestartTest : public chromeos::LoginManagerTest { + public: + BrowserDataMigratorRestartTest() = default; + BrowserDataMigratorRestartTest(BrowserDataMigratorRestartTest&) = delete; + BrowserDataMigratorRestartTest& operator=(BrowserDataMigratorRestartTest&) = + delete; + ~BrowserDataMigratorRestartTest() override = default; + + // chromeos::LoginManagerTest: + void SetUp() override { + if (content::IsPreTest()) { + feature_list_.InitAndDisableFeature(chromeos::features::kLacrosSupport); + } else { + feature_list_.InitAndEnableFeature(chromeos::features::kLacrosSupport); + } + + login_manager_.AppendRegularUsers(1); + // This allows chrome to startup with the session info from + // `PRE_MigrateOnRestart` without actually needing to go through the login + // screen on `MigrateOnRestart`. + login_manager_.set_session_restore_enabled(); + + chromeos::LoginManagerTest::SetUp(); + } + + void LoginAsRegularUser() { + const auto& users = login_manager_.users(); + + LoginUser(users[0].account_id); + } + + private: + LoginManagerMixin login_manager_{&mixin_host_}; + base::test::ScopedFeatureList feature_list_; +}; + +IN_PROC_BROWSER_TEST_F(BrowserDataMigratorRestartTest, PRE_MigrateOnRestart) { + LoginAsRegularUser(); + Profile* profile = + g_browser_process->profile_manager()->GetPrimaryUserProfile(); + { + base::ScopedAllowBlockingForTesting allow_blocking; + const base::FilePath new_profile_data_directory = + profile->GetPath().Append(kLacrosProfileDir); + // Make sure that lacros directory does not exist before migration. + ASSERT_FALSE(base::DirectoryExists(new_profile_data_directory)); + ASSERT_FALSE(base::PathExists( + new_profile_data_directory.Append(chrome::kPreferencesFilename))); + } +} + +IN_PROC_BROWSER_TEST_F(BrowserDataMigratorRestartTest, MigrateOnRestart) { + Profile* profile = + g_browser_process->profile_manager()->GetPrimaryUserProfile(); + { + base::ScopedAllowBlockingForTesting allow_blocking; + const base::FilePath new_profile_data_directory = + profile->GetPath().Append(kLacrosProfileDir); + // Check that the new profile data directory is created. + ASSERT_TRUE(base::DirectoryExists(new_profile_data_directory)); + ASSERT_TRUE(base::PathExists( + new_profile_data_directory.Append(chrome::kPreferencesFilename))); + } +} +} // namespace ash
diff --git a/chrome/browser/ash/crosapi/browser_data_migrator_unittest.cc b/chrome/browser/ash/crosapi/browser_data_migrator_unittest.cc index d7c1465..b70da0b 100644 --- a/chrome/browser/ash/crosapi/browser_data_migrator_unittest.cc +++ b/chrome/browser/ash/crosapi/browser_data_migrator_unittest.cc
@@ -63,8 +63,8 @@ FakeChromeUserManager fake_user_manager; { - // If lacros is disabled, IsMigrationRequiredOnUI should return false even - // for regular users. + // If lacros is disabled, `IsMigrationRequiredOnUI()` should return false + // even for regular users. base::test::ScopedFeatureList feature_list; feature_list.InitAndDisableFeature(chromeos::features::kLacrosSupport); @@ -110,19 +110,19 @@ TEST_F(BrowserDataMigratorTest, IsMigrationRequiredOnWorker) { BrowserDataMigrator browser_data_migrator(from_dir_.GetPath()); - // If |BrowserDataMigrator::to_dir_| does not exist, run migration. + // If `BrowserDataMigrator::to_dir_` does not exist, run migration. EXPECT_TRUE(browser_data_migrator.IsMigrationRequiredOnWorker()); - // Create |BrowserDataMigrator::to_dir_|. + // Create `BrowserDataMigrator::to_dir_`. ASSERT_TRUE( base::CreateDirectory(from_dir_.GetPath().Append(kLacrosProfileDir))); - // If |BrowserDataMigrator::to_dir_| already exists, do not run migration. + // If `BrowserDataMigrator::to_dir_` already exists, do not run migration. EXPECT_FALSE(browser_data_migrator.IsMigrationRequiredOnWorker()); ASSERT_TRUE(base::DeletePathRecursively(from_dir_.GetPath())); - // If |BrowserDataMigrator::from_dir_| does not exist, do not run migration. + // If `BrowserDataMigrator::from_dir_` does not exist, do not run migration. EXPECT_FALSE(browser_data_migrator.IsMigrationRequiredOnWorker()); } @@ -148,8 +148,8 @@ TEST_F(BrowserDataMigratorTest, RecordStatus) { { - // If FinalStatus::kSkipped, only record the status and do not record copied - // data size or total time. + // If `FinalStatus::kSkipped`, only record the status and do not record + // copied data size or total time. base::HistogramTester histogram_tester; BrowserDataMigrator::RecordStatus( @@ -164,8 +164,8 @@ } { - // If FInalStatus::kSuccess, the three UMA kFinalStatus, - // kCopiedDataSize, kTotalTime should be recorded. + // If `FInalStatus::kSuccess`, the three UMA `kFinalStatus`, + // `kCopiedDataSize`, `kTotalTime` should be recorded. base::HistogramTester histogram_tester; BrowserDataMigrator browser_data_migrator(from_dir_.GetPath()); @@ -217,7 +217,7 @@ .Append(kDirName) .Append(kDownloads) .Append(kFileName))); - } // browser_data_migrator is destructed and RecordStatus is called. + } // `browser_data_migrator` is destructed and `RecordStatus()` is called. histogram_tester.ExpectTotalCount(kFinalStatus, 1); histogram_tester.ExpectTotalCount(kCopiedDataSize, 1);
diff --git a/chrome/browser/ash/login/existing_user_controller.cc b/chrome/browser/ash/login/existing_user_controller.cc index 6de68a6e..20974eb 100644 --- a/chrome/browser/ash/login/existing_user_controller.cc +++ b/chrome/browser/ash/login/existing_user_controller.cc
@@ -935,7 +935,8 @@ // Before continuing with post login setups such as starting a session, // check if browser data needs to be migrated from ash to lacros. ash::BrowserDataMigrator::MaybeMigrate( - user_context, + user_context.GetAccountId(), user_context.GetUserIDHash(), + true /* async */, base::BindOnce(&ExistingUserController::ContinueOnAuthSuccess, weak_factory_.GetWeakPtr(), user_context)); }
diff --git a/chrome/browser/ash/login/saml/saml_browsertest.cc b/chrome/browser/ash/login/saml/saml_browsertest.cc index 5cb7f8ce..6d5f924 100644 --- a/chrome/browser/ash/login/saml/saml_browsertest.cc +++ b/chrome/browser/ash/login/saml/saml_browsertest.cc
@@ -419,6 +419,8 @@ ASSERT_TRUE(message_queue.WaitForMessage(&message)); } while (message != "\"SamlLoaded\""); + test::OobeJS().ExpectPathDisplayed(false, kBackButton); + // Fill-in the SAML IdP form and submit. SigninFrameJS().TypeIntoPath("fake_user", {"Email"}); SigninFrameJS().TypeIntoPath("not_the_password", {"Dummy"}); @@ -464,6 +466,7 @@ histogram_tester.ExpectUniqueSample("ChromeOS.SAML.APILogin", 1, 1); histogram_tester.ExpectUniqueSample("ChromeOS.SAML.Provider", 1, 1); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 0); } // Tests the sign-in flow when the credentials passing API is used w/o 'confirm' @@ -500,6 +503,7 @@ histogram_tester.ExpectUniqueSample("ChromeOS.SAML.APILogin", 1, 1); histogram_tester.ExpectUniqueSample("ChromeOS.SAML.Provider", 1, 1); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 0); } // Tests the single password scraped flow. @@ -540,6 +544,7 @@ histogram_tester.ExpectUniqueSample("ChromeOS.SAML.APILogin", 2, 1); histogram_tester.ExpectUniqueSample("ChromeOS.SAML.Scraping.PasswordCountAll", 1, 1); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 0); } // Tests password scraping from a dynamically created password field. @@ -602,6 +607,7 @@ histogram_tester.ExpectUniqueSample("ChromeOS.SAML.APILogin", 2, 1); histogram_tester.ExpectUniqueSample("ChromeOS.SAML.Scraping.PasswordCountAll", 2, 1); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 0); } // Tests the no password scraped flow. @@ -636,6 +642,7 @@ histogram_tester.ExpectUniqueSample("ChromeOS.SAML.APILogin", 2, 1); histogram_tester.ExpectUniqueSample("ChromeOS.SAML.Scraping.PasswordCountAll", 0, 1); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 0); } // Types the second user e-mail into the GAIA login form but then authenticates
diff --git a/chrome/browser/ash/login/webview_login_browsertest.cc b/chrome/browser/ash/login/webview_login_browsertest.cc index 5d65986..0605be5 100644 --- a/chrome/browser/ash/login/webview_login_browsertest.cc +++ b/chrome/browser/ash/login/webview_login_browsertest.cc
@@ -291,6 +291,7 @@ command_line->AppendSwitch(switches::kOobeSkipPostLogin); OobeBaseTest::SetUpCommandLine(command_line); } + base::HistogramTester histogram_tester; protected: void ExpectIdentifierPage() { @@ -402,7 +403,6 @@ // Basic signin with username and password. IN_PROC_BROWSER_TEST_F(WebviewLoginTest, Basic) { - base::HistogramTester histogram_tester; WaitForGaiaPageLoadAndPropertyUpdate(); ExpectIdentifierPage(); @@ -433,6 +433,7 @@ EXPECT_FALSE(LoginDisplayHost::default_host()); histogram_tester.ExpectUniqueSample("ChromeOS.SAML.APILogin", 0, 1); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 1); } IN_PROC_BROWSER_TEST_F(WebviewLoginTest, BackButton) { @@ -644,6 +645,7 @@ reauth_user_.account_id.GetUserEmail()); EXPECT_EQ(fake_gaia_.fake_gaia()->is_supervised(), "1"); EXPECT_EQ(fake_gaia_.fake_gaia()->is_device_owner(), "1"); + histogram_tester.ExpectTotalCount("OOBE.GaiaLoginTime", 0); } IN_PROC_BROWSER_TEST_F(WebviewLoginTest, StoragePartitionHandling) {
diff --git a/chrome/browser/browsing_data/cookies_tree_model.cc b/chrome/browser/browsing_data/cookies_tree_model.cc index 8e53c73..bcba833 100644 --- a/chrome/browser/browsing_data/cookies_tree_model.cc +++ b/chrome/browser/browsing_data/cookies_tree_model.cc
@@ -741,7 +741,7 @@ if (container) { container->shared_worker_helper_->DeleteSharedWorker( shared_worker_info_->worker, shared_worker_info_->name, - shared_worker_info_->constructor_origin); + shared_worker_info_->storage_key); container->shared_worker_info_list_.erase(shared_worker_info_); } }
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 59cb5cc..c6cd0c1 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2588,7 +2588,7 @@ const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, content::BrowserContext* context, int render_process_id, int render_frame_id) { @@ -2601,7 +2601,7 @@ .get()); content_settings::PageSpecificContentSettings::SharedWorkerAccessed( - render_process_id, render_frame_id, worker_url, name, constructor_origin, + render_process_id, render_frame_id, worker_url, name, storage_key, !allow); return allow; }
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h index 3115a69..c16fb05d 100644 --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h
@@ -70,6 +70,10 @@ class SeatbeltExecClient; } // namespace sandbox +namespace storage { +class StorageKey; +} // namespace storage + namespace ui { class NativeTheme; } @@ -245,7 +249,7 @@ const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, content::BrowserContext* context, int render_process_id, int render_frame_id) override;
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc index bfa27a1..08e79de 100644 --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -24,6 +24,7 @@ #include "ash/system/pcie_peripheral/pcie_peripheral_notification_controller.h" #include "base/bind.h" #include "base/callback.h" +#include "base/callback_helpers.h" #include "base/command_line.h" #include "base/files/file_util.h" #include "base/lazy_instance.h" @@ -48,6 +49,7 @@ #include "chrome/browser/ash/app_mode/web_app/web_kiosk_app_manager.h" #include "chrome/browser/ash/arc/enterprise/arc_data_snapshotd_delegate.h" #include "chrome/browser/ash/arc/session/arc_service_launcher.h" +#include "chrome/browser/ash/crosapi/browser_data_migrator.h" #include "chrome/browser/ash/crosapi/browser_manager.h" #include "chrome/browser/ash/crosapi/crosapi_manager.h" #include "chrome/browser/ash/display/quirks_manager_delegate_impl.h" @@ -846,6 +848,16 @@ // In case of multi-profiles --login-profile will contain user_id_hash. std::string user_id_hash = parsed_command_line().GetSwitchValueASCII(switches::kLoginProfile); + + // Before creating a session, migrate user data if required. The migration + // will happen at this timing only if lacros chrome was enabled via + // chrome://flags. In other cases, migration will happen upon login + // asynchronously. This migration has to complete before profile is created + // and chrome starts accessing those user data files, thus we pass + // async=false. + ash::BrowserDataMigrator::MaybeMigrate( + account_id, user_id_hash, false /* async */, base::DoNothing()); + session_manager::SessionManager::Get()->CreateSessionForRestart( account_id, user_id_hash);
diff --git a/chrome/browser/chromeos/full_restore/app_launch_handler_browsertest.cc b/chrome/browser/chromeos/full_restore/app_launch_handler_browsertest.cc index 8d93072..aa51dc32 100644 --- a/chrome/browser/chromeos/full_restore/app_launch_handler_browsertest.cc +++ b/chrome/browser/chromeos/full_restore/app_launch_handler_browsertest.cc
@@ -725,6 +725,39 @@ CloseAppWindow(app_window2); } +// Tests that fullscreened windows will not be restored as fullscreen, which is +// not supported for full restore. Regression test for +// https://crbug.com/1203010. +IN_PROC_BROWSER_TEST_F(AppLaunchHandlerBrowserTest, ImmersiveFullscreenApp) { + ::full_restore::SetActiveProfilePath(profile()->GetPath()); + + // Create the restore data. + const extensions::Extension* extension = + LoadAndLaunchPlatformApp("launch", "Launched"); + ASSERT_TRUE(extension); + SaveChromeAppLaunchInfo(extension->id()); + + extensions::AppWindow* app_window = CreateAppWindow(profile(), extension); + ASSERT_TRUE(app_window); + + // Toggle immersive fullscreen by simulating what happens when F4 is pressed. + // FullRestoreController will save to file when the state changes. + const ash::WMEvent event(ash::WM_EVENT_TOGGLE_FULLSCREEN); + ash::WindowState::Get(app_window->GetNativeWindow())->OnWMEvent(&event); + + WaitForAppLaunchInfoSaved(); + + // Read from the restore data. + auto app_launch_handler = std::make_unique<AppLaunchHandler>(profile()); + app_launch_handler->SetShouldRestore(); + content::RunAllTasksUntilIdle(); + + // Tests that the created window is not fullscreen. + app_window = CreateAppWindow(browser()->profile(), extension); + ASSERT_TRUE(app_window); + EXPECT_FALSE(app_window->GetBaseWindow()->IsFullscreenOrPending()); +} + class AppLaunchHandlerArcAppBrowserTest : public AppLaunchHandlerBrowserTest { protected: // AppLaunchHandlerBrowserTest:
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc index dd66a7a..db5165c 100644 --- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc +++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
@@ -622,6 +622,35 @@ base::BindOnce(CrashReportsLoaded, upload_list, std::move(callback))); } +em::ActiveTimePeriod::SessionType GetSessionType( + const std::string& user_email) { + policy::DeviceLocalAccount::Type type; + if (!IsDeviceLocalAccountUser(user_email, &type)) { + return em::ActiveTimePeriod::SESSION_AFFILIATED_USER; + } + + switch (type) { + case policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION: + case policy::DeviceLocalAccount::TYPE_SAML_PUBLIC_SESSION: + return em::ActiveTimePeriod::SESSION_MANAGED_GUEST; + + case policy::DeviceLocalAccount::TYPE_KIOSK_APP: + return em::ActiveTimePeriod::SESSION_KIOSK; + + case policy::DeviceLocalAccount::TYPE_ARC_KIOSK_APP: + return em::ActiveTimePeriod::SESSION_ARC_KIOSK; + + case policy::DeviceLocalAccount::TYPE_WEB_KIOSK_APP: + return em::ActiveTimePeriod::SESSION_WEB_KIOSK; + + default: + NOTREACHED(); + } + + NOTREACHED(); + return em::ActiveTimePeriod::SESSION_UNKNOWN; +} + } // namespace namespace policy { @@ -1959,12 +1988,15 @@ // multi-user sessions. const user_manager::User* const primary_user = user_manager::UserManager::Get()->GetPrimaryUser(); - if (!primary_user || !primary_user->HasGaiaAccount()) + if (!primary_user) return std::string(); - // Report only affiliated users for enterprise reporting. + // Store affiliated user emails or the kiosk app id / guest session account + // emails. Those emails will be used to calculate the session type when + // constructing the ActiveTimePeriod protos sent as part of the report. std::string primary_user_email = primary_user->GetAccountId().GetUserEmail(); - if (!ash::ChromeUserManager::Get()->ShouldReportUser(primary_user_email)) { + if (primary_user->HasGaiaAccount() && + !ash::ChromeUserManager::Get()->ShouldReportUser(primary_user_email)) { return std::string(); } return primary_user_email; @@ -2001,9 +2033,19 @@ period->set_end_timestamp(end_timestamp); active_period->set_active_duration(activity_period.end_timestamp() - activity_period.start_timestamp()); - // Report user email only if users reporting is turned on. + // Report user email and session_type only if users reporting is on. if (!user_email.empty()) { - active_period->set_user_email(user_email); + em::ActiveTimePeriod::SessionType session_type = + GetSessionType(user_email); + // Don't report the email address for MGS / Kiosk apps + if (session_type == em::ActiveTimePeriod::SESSION_AFFILIATED_USER) { + active_period->set_user_email(user_email); + } + if (session_type != em::ActiveTimePeriod::SESSION_UNKNOWN && + base::FeatureList::IsEnabled( + features::kActivityReportingSessionType)) { + active_period->set_session_type(session_type); + } } if (last_reported_end_timestamp_ < end_timestamp) { last_reported_end_timestamp_ = end_timestamp; @@ -2656,7 +2698,11 @@ // should be displayed to a user in the transparency panel. User activity for // a current user is reported only if the user is managed by the same // organization as a device. - return report_activity_times_ && !GetUserForActivityReporting().empty(); + if (!report_activity_times_) { + return false; + } + std::string user_email = GetUserForActivityReporting(); + return !user_email.empty() && !IsDeviceLocalAccountUser(user_email, NULL); } bool DeviceStatusCollector::ShouldReportNetworkInterfaces() const { return report_network_interfaces_; @@ -2664,7 +2710,11 @@ bool DeviceStatusCollector::ShouldReportUsers() const { // For more details, see comment in // DeviceStatusCollector::ShouldReportActivityTimes() function. - return report_users_ && !GetUserForActivityReporting().empty(); + if (!report_users_) { + return false; + } + std::string user_email = GetUserForActivityReporting(); + return !user_email.empty() && !IsDeviceLocalAccountUser(user_email, NULL); } bool DeviceStatusCollector::ShouldReportHardwareStatus() const { return report_hardware_status_;
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc index 952a861..42905e83 100644 --- a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
@@ -1397,6 +1397,8 @@ } TEST_F(DeviceStatusCollectorTest, ActivityNoUser) { + scoped_feature_list_.InitAndEnableFeature( + features::kActivityReportingSessionType); ui::IdleState test_states[] = {ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE}; scoped_testing_cros_settings_.device_settings()->SetBoolean( @@ -1411,17 +1413,20 @@ GetStatus(); EXPECT_EQ(1, device_status_.active_periods_size()); EXPECT_TRUE(device_status_.active_periods(0).user_email().empty()); + EXPECT_FALSE(device_status_.active_periods(0).has_session_type()); } TEST_F(DeviceStatusCollectorTest, ActivityWithPublicSessionUser) { + scoped_feature_list_.InitAndEnableFeature( + features::kActivityReportingSessionType); ui::IdleState test_states[] = {ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE}; scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportDeviceActivityTimes, true); scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportDeviceUsers, true); - const AccountId public_account_id( - AccountId::FromUserEmail("public@localhost")); + const AccountId public_account_id(AccountId::FromUserEmail( + "public@public-accounts.device-local.localhost")); user_manager_->CreatePublicAccountUser(public_account_id); EXPECT_FALSE(status_collector_->ShouldReportActivityTimes()); @@ -1431,9 +1436,37 @@ GetStatus(); EXPECT_EQ(1, device_status_.active_periods_size()); EXPECT_TRUE(device_status_.active_periods(0).user_email().empty()); + EXPECT_EQ(em::ActiveTimePeriod::SESSION_MANAGED_GUEST, + device_status_.active_periods(0).session_type()); +} + +TEST_F(DeviceStatusCollectorTest, ActivityWithKioskUser) { + scoped_feature_list_.InitAndEnableFeature( + features::kActivityReportingSessionType); + ui::IdleState test_states[] = {ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE, + ui::IDLE_STATE_ACTIVE}; + scoped_testing_cros_settings_.device_settings()->SetBoolean( + chromeos::kReportDeviceActivityTimes, true); + scoped_testing_cros_settings_.device_settings()->SetBoolean( + chromeos::kReportDeviceUsers, true); + const AccountId public_account_id( + AccountId::FromUserEmail("public@web-kiosk-apps.device-local.localhost")); + user_manager_->CreatePublicAccountUser(public_account_id); + + EXPECT_FALSE(status_collector_->ShouldReportActivityTimes()); + EXPECT_FALSE(status_collector_->ShouldReportUsers()); + + status_collector_->Simulate(test_states, 3); + GetStatus(); + EXPECT_EQ(1, device_status_.active_periods_size()); + EXPECT_TRUE(device_status_.active_periods(0).user_email().empty()); + EXPECT_EQ(em::ActiveTimePeriod::SESSION_WEB_KIOSK, + device_status_.active_periods(0).session_type()); } TEST_F(DeviceStatusCollectorTest, ActivityWithAffiliatedUser) { + scoped_feature_list_.InitAndEnableFeature( + features::kActivityReportingSessionType); ui::IdleState test_states[] = {ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE}; scoped_testing_cros_settings_.device_settings()->SetBoolean( @@ -1452,6 +1485,8 @@ EXPECT_EQ(1, device_status_.active_periods_size()); EXPECT_EQ(account_id0.GetUserEmail(), device_status_.active_periods(0).user_email()); + EXPECT_EQ(em::ActiveTimePeriod::SESSION_AFFILIATED_USER, + device_status_.active_periods(0).session_type()); device_status_.clear_active_periods(); // Clear the result protobuf. scoped_testing_cros_settings_.device_settings()->SetBoolean( @@ -1464,9 +1499,12 @@ GetStatus(); EXPECT_EQ(1, device_status_.active_periods_size()); EXPECT_TRUE(device_status_.active_periods(0).user_email().empty()); + EXPECT_FALSE(device_status_.active_periods(0).has_session_type()); } TEST_F(DeviceStatusCollectorTest, ActivityWithNotAffiliatedUser) { + scoped_feature_list_.InitAndEnableFeature( + features::kActivityReportingSessionType); ui::IdleState test_states[] = {ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE, ui::IDLE_STATE_ACTIVE}; scoped_testing_cros_settings_.device_settings()->SetBoolean( @@ -1484,6 +1522,7 @@ GetStatus(); EXPECT_EQ(1, device_status_.active_periods_size()); EXPECT_TRUE(device_status_.active_periods(0).user_email().empty()); + EXPECT_FALSE(device_status_.active_periods(0).has_session_type()); device_status_.clear_active_periods(); // Clear the result protobuf. scoped_testing_cros_settings_.device_settings()->SetBoolean( @@ -1496,6 +1535,7 @@ GetStatus(); EXPECT_EQ(1, device_status_.active_periods_size()); EXPECT_TRUE(device_status_.active_periods(0).user_email().empty()); + EXPECT_FALSE(device_status_.active_periods(0).has_session_type()); } TEST_F(DeviceStatusCollectorTest, DevSwitchBootMode) {
diff --git a/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc b/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc index 9a1d7a4..8e61921 100644 --- a/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc +++ b/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc
@@ -321,6 +321,14 @@ } void NearbyConnectionBrokerImpl::OnMojoDisconnection() { + PA_LOG(INFO) << __func__; + + // If there is a mojo disconnect while requesting a connection, we should + // still try to disconnect from the endpoint in case the endpoint was almost + // about to be connected. + if (connection_status_ == ConnectionStatus::kRequestingConnection) + need_to_disconnect_endpoint_ = true; + Disconnect(util::NearbyDisconnectionReason::kDisconnectionRequestedByClient); } @@ -361,6 +369,11 @@ return; } + // Ignore in the event we are currently disconnecting. Either + // OnConnectionRejected or OnDisconnected will be called eventually. + if (connection_status_ == ConnectionStatus::kDisconnecting) + return; + DCHECK_EQ(ConnectionStatus::kRequestingConnection, connection_status_); TransitionToStatus(ConnectionStatus::kAcceptingConnection); need_to_disconnect_endpoint_ = true; @@ -399,6 +412,15 @@ return; } + if (connection_status_ == ConnectionStatus::kDisconnecting) { + // If this callback is invoked while we are disconnecting, we can consider + // the disconnect successful. + need_to_disconnect_endpoint_ = false; + Disconnect( + util::NearbyDisconnectionReason::kDisconnectionRequestedByClient); + return; + } + PA_LOG(WARNING) << "Connection rejected: " << status; Disconnect(util::NearbyDisconnectionReason::kConnectionRejected); }
diff --git a/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl_unittest.cc b/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl_unittest.cc index 43294c1..386e951 100644 --- a/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl_unittest.cc +++ b/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl_unittest.cc
@@ -426,9 +426,13 @@ SimulateTimeout(/*expected_to_disconnect=*/false); } +TEST_F(NearbyConnectionBrokerImplTest, MojoDisconnectionBeforeDiscovery) { + DisconnectMojoBindings(/*expected_to_disconnect=*/false); +} + TEST_F(NearbyConnectionBrokerImplTest, MojoDisconnectionAfterDiscovery) { DiscoverEndpoint(); - DisconnectMojoBindings(/*expected_to_disconnect=*/false); + DisconnectMojoBindings(/*expected_to_disconnect=*/true); // Run callback to prevent DCHECK() crash that ensures all Mojo callbacks are // invoked.
diff --git a/chrome/browser/commerce/merchant_viewer/android/BUILD.gn b/chrome/browser/commerce/merchant_viewer/android/BUILD.gn index 1460b3a6..9a4c2e71 100644 --- a/chrome/browser/commerce/merchant_viewer/android/BUILD.gn +++ b/chrome/browser/commerce/merchant_viewer/android/BUILD.gn
@@ -14,6 +14,7 @@ "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java", "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics.java", "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator.java", + "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProvider.java", "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEvent.java", "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEventStorage.java", "java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator.java", @@ -28,18 +29,21 @@ "//chrome/android/features/tab_ui:java_resources", "//chrome/android/features/tab_ui:java_strings_grd", "//chrome/browser/android/lifecycle:java", + "//chrome/browser/commerce/merchant_viewer:optimization_guide_protos_java", "//chrome/browser/flags:java", - "//chrome/browser/preferences:java", + "//chrome/browser/optimization_guide/android:java", "//chrome/browser/profiles/android:java", "//chrome/browser/tab:java", "//chrome/browser/tabmodel:java", "//chrome/browser/version:java", "//components/browser_ui/bottomsheet/android:java", "//components/browser_ui/widget/android:java", + "//components/embedder_support/android:browser_context_java", "//components/embedder_support/android:content_view_java", "//components/embedder_support/android:util_java", "//components/embedder_support/android:web_contents_delegate_java", "//components/messages/android:java", + "//components/optimization_guide/proto:optimization_guide_proto_java", "//components/security_state/content/android:java", "//components/security_state/core:security_state_enums_java", "//components/thin_webview:factory_java", @@ -48,7 +52,6 @@ "//components/url_formatter/android:url_formatter_java", "//content/public/android:content_java", "//third_party/androidx:androidx_annotation_annotation_java", - "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_core_core_java", "//ui/android:ui_no_recycler_view_java", "//url:gurl_java", @@ -68,7 +71,8 @@ "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediatorTest.java", "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContextTest.java", "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java", - "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java", + "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCallbackHelper.java", + "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProviderTest.java", "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediatorTest.java", ] @@ -78,12 +82,15 @@ "//base:base_junit_test_support", "//chrome/android:base_module_java", "//chrome/android:chrome_java", + "//chrome/android/features/tab_ui:java_resources", + "//chrome/android/features/tab_ui:java_strings_grd", "//chrome/browser/android/lifecycle:java", + "//chrome/browser/commerce/merchant_viewer:optimization_guide_protos_java", "//chrome/browser/commerce/merchant_viewer/android:java", "//chrome/browser/flags:java", + "//chrome/browser/optimization_guide/android:java", "//chrome/browser/profiles/android:java", "//chrome/browser/tab:java", - "//chrome/browser/tab:java", "//chrome/browser/tabmodel:java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/bottomsheet/android:java", @@ -91,9 +98,12 @@ "//components/embedder_support/android:util_java", "//components/embedder_support/android:web_contents_delegate_java", "//components/messages/android:java", + "//components/optimization_guide/proto:optimization_guide_proto_java", "//components/security_state/content/android:java", "//components/security_state/core:security_state_enums_java", "//content/public/android:content_java", + "//content/public/test/android:content_java_test_support", + "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_deps:robolectric_all_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_test_runner_java", @@ -103,12 +113,14 @@ "//ui/android:ui_no_recycler_view_java", "//url:gurl_java", ] + resources_package = "org.chromium.chrome.tab_ui" } android_library("javatests") { testonly = true sources = [ + "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java", "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEventLoadCallbackHelper.java", "javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEventStorageTest.java", ] @@ -116,14 +128,24 @@ deps = [ "//base:base_java", "//base:base_java_test_support", + "//chrome/browser/commerce/merchant_viewer:optimization_guide_protos_java", "//chrome/browser/commerce/merchant_viewer/android:java", "//chrome/browser/flags:java", "//chrome/browser/profiles/android:java", + "//chrome/browser/tabmodel:java", "//chrome/test/android:chrome_java_test_support", + "//components/browser_ui/bottomsheet/android:java", + "//components/messages/android:java", + "//content/public/android:content_full_java", "//content/public/test/android:content_java_test_support", + "//third_party/android_support_test_runner:runner_java", "//third_party/androidx:androidx_test_core_java", "//third_party/androidx:androidx_test_runner_java", "//third_party/junit", + "//third_party/mockito:mockito_java", + "//ui/android:ui_java_test_support", + "//ui/android:ui_no_recycler_view_java", + "//url:gurl_java", ] }
diff --git a/chrome/browser/commerce/merchant_viewer/android/DEPS b/chrome/browser/commerce/merchant_viewer/android/DEPS index 79b6e0ec..3ee1847 100644 --- a/chrome/browser/commerce/merchant_viewer/android/DEPS +++ b/chrome/browser/commerce/merchant_viewer/android/DEPS
@@ -1,5 +1,6 @@ include_rules = [ - "+content/public/android/java/src/org/chromium/content_public/browser", + "+chrome/browser/optimization_guide/android/java/src/org/chromium/chrome/browser/optimization_guide", "+components/thin_webview/java/src/org/chromium/components/thinwebview", + "+content/public/android/java/src/org/chromium/content_public/browser", "+content/public/android/java/src/org/chromium/content_public/common", ] \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediator.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediator.java index a6d35c8f94..994d6e1 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediator.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediator.java
@@ -35,9 +35,6 @@ private final MerchantTrustMetrics mMetrics; private static final long HIDE_PROGRESS_BAR_DELAY_MS = 50; - // TODO: Read from config. - private static final boolean sShouldUsePageTitle = true; - /** Creates a new instance. */ MerchantTrustDetailsTabMediator(BottomSheetController bottomSheetController, int topControlsHeightDp, MerchantTrustMetrics metrics) { @@ -81,7 +78,7 @@ @Override public void titleWasSet(String title) { - if (!sShouldUsePageTitle) return; + if (!MerchantViewerConfig.TRUST_SIGNALS_SHEET_USE_PAGE_TITLE.getValue()) return; mSheetContent.setTitle(title); }
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContext.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContext.java index 7796cee..c0c3f6a 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContext.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContext.java
@@ -4,26 +4,26 @@ package org.chromium.chrome.browser.merchant_viewer; -import android.text.TextUtils; +import androidx.annotation.NonNull; import org.chromium.content_public.browser.WebContents; - +import org.chromium.url.GURL; /** * Additional data required for publishing and handling a merchant trust signals message. */ class MerchantTrustMessageContext { - private final String mHostName; private final WebContents mWebContents; + private final GURL mUrl; /** Creates a new instance. */ - MerchantTrustMessageContext(String hostName, WebContents webContents) { - mHostName = hostName; + MerchantTrustMessageContext(@NonNull GURL url, @NonNull WebContents webContents) { + mUrl = url; mWebContents = webContents; } /** Returns the host name for which the message is intended to be shown. */ String getHostName() { - return mHostName; + return mUrl == null ? "" : mUrl.getHost(); } /* Returns the {@link WebContentns} for which the message is intended to be shown. */ @@ -31,8 +31,14 @@ return mWebContents; } + /** Returns the {@link GURL} associated with the context. */ + GURL getUrl() { + return mUrl; + } + /* Checks whether or not the context is valid. */ boolean isValid() { - return mWebContents != null && !mWebContents.isDestroyed() && !TextUtils.isEmpty(mHostName); + return mWebContents != null && !mWebContents.isDestroyed() && mUrl != null + && !mUrl.isEmpty(); } } \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java index 24eb835b..6b98acc 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler.java
@@ -5,11 +5,14 @@ package org.chromium.chrome.browser.merchant_viewer; import android.os.Handler; +import android.util.Pair; import androidx.annotation.VisibleForTesting; +import org.chromium.base.Callback; import org.chromium.base.ThreadUtils; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustMetrics.MessageClearReason; +import org.chromium.components.messages.DismissReason; import org.chromium.components.messages.MessageDispatcher; import org.chromium.components.messages.MessageScopeType; import org.chromium.ui.modelutil.PropertyModel; @@ -21,7 +24,7 @@ private final MessageDispatcher mMessageDispatcher; private final MerchantTrustMetrics mMetrics; private Handler mEnqueueMessageTimer; - private MerchantTrustMessageContext mScheduledMessageContext; + private Pair<MerchantTrustMessageContext, PropertyModel> mScheduledMessage; public MerchantTrustMessageScheduler( MessageDispatcher messageDispatcher, MerchantTrustMetrics metrics) { @@ -32,31 +35,58 @@ /** Cancels any scheduled messages. */ void clear(@MessageClearReason int clearReason) { - if (mScheduledMessageContext != null) { + if (mScheduledMessage != null) { mMetrics.recordMetricsForMessageCleared(clearReason); } mEnqueueMessageTimer.removeCallbacksAndMessages(null); - setScheduledMessageContext(null); + if (mScheduledMessage != null && mScheduledMessage.second != null) { + mMessageDispatcher.dismissMessage( + mScheduledMessage.second, DismissReason.SCOPE_DESTROYED); + } + setScheduledMessage(null); } /** Adds a message to the underlying {@link MessageDispatcher} queue. */ - void schedule( - PropertyModel model, MerchantTrustMessageContext messageContext, long delayInMillis) { - setScheduledMessageContext(messageContext); + void schedule(PropertyModel model, MerchantTrustMessageContext messageContext, + long delayInMillis, Callback<MerchantTrustMessageContext> messageEnqueuedCallback) { + setScheduledMessage( + new Pair<MerchantTrustMessageContext, PropertyModel>(messageContext, model)); mMetrics.recordMetricsForMessagePrepared(); mEnqueueMessageTimer.postDelayed(() -> { if (messageContext.isValid()) { mMessageDispatcher.enqueueMessage( model, messageContext.getWebContents(), MessageScopeType.NAVIGATION); mMetrics.recordMetricsForMessageShown(); + messageEnqueuedCallback.onResult(messageContext); + } else { + messageEnqueuedCallback.onResult(null); } - setScheduledMessageContext(null); + setScheduledMessage(null); }, delayInMillis); } + /** + * Forces the currently scheduled message (if any) to be enqueued through the {@link + * MessageDispatcher} right away without having to wait for the original time. This is achieved + * by calling MerchantTrustMessageScheduler#schedule with no delay time. This is a NOP if there + * isn't a scheduled message. + */ + void expedite(Callback<MerchantTrustMessageContext> callback) { + if (mScheduledMessage == null) { + callback.onResult(null); + return; + } + + Pair<MerchantTrustMessageContext, PropertyModel> replacement = + new Pair<MerchantTrustMessageContext, PropertyModel>( + mScheduledMessage.first, mScheduledMessage.second); + clear(MessageClearReason.NAVIGATE_TO_SAME_DOMAIN); + schedule(replacement.second, replacement.first, MESSAGE_ENQUEUE_NO_DELAY, callback); + } + /** Returns the currently scheduled message. */ MerchantTrustMessageContext getScheduledMessageContext() { - return mScheduledMessageContext; + return mScheduledMessage == null ? null : mScheduledMessage.first; } @VisibleForTesting @@ -65,9 +95,9 @@ } @VisibleForTesting - void setScheduledMessageContext(MerchantTrustMessageContext messageContext) { + void setScheduledMessage(Pair<MerchantTrustMessageContext, PropertyModel> pair) { synchronized (mEnqueueMessageTimer) { - mScheduledMessageContext = messageContext; + mScheduledMessage = pair; } } }
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator.java index febdb50..20b07259 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator.java
@@ -5,29 +5,40 @@ package org.chromium.chrome.browser.merchant_viewer; import android.content.Context; +import android.graphics.Typeface; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.StyleSpan; import android.view.View; import androidx.annotation.VisibleForTesting; +import androidx.core.content.res.ResourcesCompat; +import org.chromium.base.Callback; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustMetrics.MessageClearReason; +import org.chromium.chrome.browser.merchant_viewer.proto.MerchantTrustSignalsOuterClass.MerchantTrustSignals; +import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.tab_ui.R; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.messages.DismissReason; import org.chromium.components.messages.MessageBannerProperties; +import org.chromium.components.messages.MessageDispatcher; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.url.GURL; +import java.text.NumberFormat; import java.util.concurrent.TimeUnit; /** * Coordinator for managing merchant trust signals experience. */ public class MerchantTrustSignalsCoordinator { - // TODO: Make the value configurable. - @VisibleForTesting - public static final long MESSAGE_ENQUEUE_DELAY_MILLIS = TimeUnit.SECONDS.toMillis(2); + private static final int BASELINE_RATING = 5; + private final MerchantTrustSignalsMediator mMediator; private final MerchantTrustMessageScheduler mMessageScheduler; private final MerchantTrustDetailsTabCoordinator mDetailsTabCoordinator; @@ -36,16 +47,33 @@ private final BottomSheetController mBottomSheetController; private final View mLayoutView; private final MerchantTrustMetrics mMetrics; + private final MerchantTrustSignalsDataProvider mDataProvider; + private final MerchantTrustSignalsEventStorage mStorage; /** Creates a new instance. */ public MerchantTrustSignalsCoordinator(Context context, WindowAndroid windowAndroid, BottomSheetController bottomSheetController, View layoutView, + TabModelSelector tabModelSelector, MessageDispatcher messageDispatcher, + Supplier<Tab> tabSupplier, Supplier<Profile> profileSupplier, + MerchantTrustMetrics metrics) { + this(context, windowAndroid, bottomSheetController, layoutView, tabModelSelector, + new MerchantTrustMessageScheduler(messageDispatcher, metrics), tabSupplier, + new MerchantTrustSignalsDataProvider(), + new MerchantTrustSignalsEventStorage(profileSupplier.get()), metrics); + } + + @VisibleForTesting + MerchantTrustSignalsCoordinator(Context context, WindowAndroid windowAndroid, + BottomSheetController bottomSheetController, View layoutView, TabModelSelector tabModelSelector, MerchantTrustMessageScheduler messageScheduler, - Supplier<Tab> tabSupplier, MerchantTrustMetrics metrics) { + Supplier<Tab> tabSupplier, MerchantTrustSignalsDataProvider dataProvider, + MerchantTrustSignalsEventStorage storage, MerchantTrustMetrics metrics) { mContext = context; mWindowAndroid = windowAndroid; mBottomSheetController = bottomSheetController; mLayoutView = layoutView; + mDataProvider = dataProvider; + mStorage = storage; mMetrics = metrics; mMediator = new MerchantTrustSignalsMediator(tabModelSelector, this::maybeDisplayMessage); @@ -65,42 +93,91 @@ mMessageScheduler.getScheduledMessageContext(); if (scheduledMessage != null && scheduledMessage.getHostName() != null && scheduledMessage.getHostName().equals(item.getHostName())) { - MerchantTrustMessageContext replacementMessage = new MerchantTrustMessageContext( - scheduledMessage.getHostName(), scheduledMessage.getWebContents()); - mMessageScheduler.clear(MessageClearReason.NAVIGATE_TO_SAME_DOMAIN); - mMessageScheduler.schedule(getMessagePropertyModel(replacementMessage.getHostName()), - replacementMessage, MerchantTrustMessageScheduler.MESSAGE_ENQUEUE_NO_DELAY); + mMessageScheduler.expedite(this::onMessageEnqueued); } else { mMessageScheduler.clear(MessageClearReason.NAVIGATE_TO_DIFFERENT_DOMAIN); - if (!isUnfamiliarMerchant(item.getHostName())) { - return; - } - mMessageScheduler.schedule(getMessagePropertyModel(item.getHostName()), item, - MESSAGE_ENQUEUE_DELAY_MILLIS); + getDataForUnfamiliarMerchant(item.getUrl(), (trustSignals) -> { + if (trustSignals == null) { + return; + } + + mMessageScheduler.schedule(getMessagePropertyModel(item, trustSignals), item, + MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY.getValue(), + this::onMessageEnqueued); + }); } } - private boolean isUnfamiliarMerchant(String hostname) { - // TODO: Check if the user has never seen the message for hostname before. - return true; + private void onMessageEnqueued(MerchantTrustMessageContext messageContext) { + if (messageContext == null) { + return; + } + mStorage.save(new MerchantTrustSignalsEvent( + messageContext.getHostName(), System.currentTimeMillis())); } - private PropertyModel getMessagePropertyModel(String hostname) { - // TODO: populate the PropertyModel fields. + private void getDataForUnfamiliarMerchant(GURL url, Callback<MerchantTrustSignals> callback) { + mStorage.load(url.getHost(), (event) -> { + if (event == null) { + mDataProvider.getDataForUrl(url, callback); + } else if (System.currentTimeMillis() - event.getTimestamp() + > TimeUnit.SECONDS.toMillis( + MerchantViewerConfig.TRUST_SIGNALS_MESSAGE_WINDOW_DURATION_SECONDS + .getValue())) { + mStorage.delete(event); + mDataProvider.getDataForUrl(url, callback); + } else { + callback.onResult(null); + } + }); + } + + private void launchDetailsPage(GURL url) { + mDetailsTabCoordinator.requestOpenSheet(url, + mContext.getResources().getString(R.string.merchant_viewer_preview_sheet_title)); + } + + private PropertyModel getMessagePropertyModel( + MerchantTrustMessageContext messageContext, MerchantTrustSignals trustSignals) { return new PropertyModel.Builder(MessageBannerProperties.ALL_KEYS) - .with(MessageBannerProperties.ON_PRIMARY_ACTION, this::onMessageTapped) + .with(MessageBannerProperties.ICON, + ResourcesCompat.getDrawable(mContext.getResources(), + R.drawable.ic_logo_googleg_24dp, mContext.getTheme())) + .with(MessageBannerProperties.ICON_TINT_COLOR, MessageBannerProperties.TINT_NONE) + .with(MessageBannerProperties.TITLE, + mContext.getResources().getString(R.string.merchant_viewer_message_title)) + .with(MessageBannerProperties.DESCRIPTION, getMessageDescription(trustSignals)) + .with(MessageBannerProperties.PRIMARY_BUTTON_TEXT, + mContext.getResources().getString(R.string.merchant_viewer_message_action)) .with(MessageBannerProperties.ON_DISMISSED, this::onMessageDismissed) + .with(MessageBannerProperties.ON_PRIMARY_ACTION, + () -> { + mMetrics.recordMetricsForMessageTapped(); + launchDetailsPage(new GURL(trustSignals.getMerchantDetailsPageUrl())); + }) .build(); } @VisibleForTesting - void onMessageTapped() { - mMetrics.recordMetricsForMessageTapped(); - } - - @VisibleForTesting void onMessageDismissed(@DismissReason int dismissReason) { mMetrics.recordMetricsForMessageDismissed(dismissReason); } + + private Spannable getMessageDescription(MerchantTrustSignals trustSignals) { + SpannableStringBuilder builder = new SpannableStringBuilder(); + NumberFormat numberFormatter = NumberFormat.getIntegerInstance(); + numberFormatter.setMaximumFractionDigits(1); + builder.append(mContext.getResources().getString( + R.string.merchant_viewer_message_description_rating, + numberFormatter.format(trustSignals.getMerchantStarRating()), + numberFormatter.format(BASELINE_RATING))); + builder.append(" "); + builder.setSpan(new StyleSpan(Typeface.BOLD), 0, builder.length(), + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + builder.append(mContext.getResources().getQuantityString( + R.plurals.merchant_viewer_message_description_reviews, + trustSignals.getMerchantCountRating(), trustSignals.getMerchantCountRating())); + return builder; + } } \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProvider.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProvider.java new file mode 100644 index 0000000..2b42feb --- /dev/null +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProvider.java
@@ -0,0 +1,55 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +package org.chromium.chrome.browser.merchant_viewer; + +import org.chromium.base.Callback; +import org.chromium.base.Log; +import org.chromium.chrome.browser.merchant_viewer.proto.MerchantTrustSignalsOuterClass.MerchantTrustSignals; +import org.chromium.chrome.browser.optimization_guide.OptimizationGuideBridgeFactory; +import org.chromium.components.optimization_guide.OptimizationGuideDecision; +import org.chromium.components.optimization_guide.proto.HintsProto; +import org.chromium.url.GURL; + +import java.io.IOException; +import java.util.Arrays; + +/** + * Merchant trust data provider using {@link OptimizationGuideBridge}. + */ +class MerchantTrustSignalsDataProvider { + private static final String TAG = "MTDP"; + private static final OptimizationGuideBridgeFactory sOptimizationGuideBridgeFactory = + new OptimizationGuideBridgeFactory( + Arrays.asList(HintsProto.OptimizationType.MERCHANT_TRUST_SIGNALS)); + + /** Fetches {@link MerchantTrustSignals} through {@link OptimizationGuideBridge}. */ + public void getDataForUrl(GURL url, Callback<MerchantTrustSignals> callback) { + sOptimizationGuideBridgeFactory.create().canApplyOptimization( + url, HintsProto.OptimizationType.MERCHANT_TRUST_SIGNALS, (decision, metadata) -> { + if (decision != OptimizationGuideDecision.TRUE || metadata == null) { + callback.onResult(null); + return; + } + try { + MerchantTrustSignals trustSignals = + MerchantTrustSignals.parseFrom(metadata.getValue()); + + callback.onResult( + isValidMerchantTrustSignals(trustSignals) ? trustSignals : null); + } catch (IOException e) { + // Catching Exception instead of InvalidProtocolBufferException in order to + // avoid increasing the apk size by taking a dependency on protobuf lib. + Log.i(TAG, + "There was a problem parsing MerchantTrustSignals." + + e.getMessage()); + callback.onResult(null); + } + }); + } + + private boolean isValidMerchantTrustSignals(MerchantTrustSignals trustSignals) { + return trustSignals.hasMerchantCountRating() && trustSignals.hasMerchantStarRating() + && trustSignals.hasMerchantDetailsPageUrl(); + } +} \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator.java index 0de7ad62..447f68f 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator.java
@@ -13,7 +13,6 @@ import org.chromium.content_public.browser.NavigationHandle; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContentsObserver; -import org.chromium.url.GURL; /** Responsible for detecting candidate events for publishing the merchant trust message. */ class MerchantTrustSignalsMediator { @@ -44,12 +43,8 @@ return; } - if (!hasMerchantTrustSignals(navigation.getUrl())) { - return; - } - - mDelegate.maybeDisplayMessage(new MerchantTrustMessageContext( - navigation.getUrl().getHost(), mCurrentWebContents)); + mDelegate.maybeDisplayMessage( + new MerchantTrustMessageContext(navigation.getUrl(), mCurrentWebContents)); } }; @@ -57,6 +52,7 @@ TabModelSelector tabModelSelector, MerchantTrustSignalsCallback delegate) { mTabModelSelector = tabModelSelector; mDelegate = delegate; + mTabModelObserver = new TabModelObserver() { @Override public void didSelectTab(Tab tab, @TabSelectionType int type, int lastId) { @@ -72,6 +68,13 @@ }; mTabModelSelector.getTabModelFilterProvider().addTabModelFilterObserver(mTabModelObserver); + + // Listen on the initial tab's changes. + mTab = tabModelSelector.getCurrentTab(); + if (mTab != null) { + mCurrentWebContents = mTab.getWebContents(); + mCurrentWebContents.addObserver(mWebContentsObserver); + } } void destroy() { @@ -80,8 +83,4 @@ mTabModelObserver); } } - - private boolean hasMerchantTrustSignals(GURL url) { - return true; - } }
diff --git a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantViewerConfig.java b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantViewerConfig.java index ba70914..9c16b3c 100644 --- a/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantViewerConfig.java +++ b/chrome/browser/commerce/merchant_viewer/android/java/src/org/chromium/chrome/browser/merchant_viewer/MerchantViewerConfig.java
@@ -3,6 +3,7 @@ // found in the LICENSE file. package org.chromium.chrome.browser.merchant_viewer; +import org.chromium.chrome.browser.flags.BooleanCachedFieldTrialParameter; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.IntCachedFieldTrialParameter; @@ -10,9 +11,22 @@ /** Flag configuration for Merchant Viewer experience. */ public class MerchantViewerConfig { - private static final String TRUST_SIGNALS_MESSAGE_DELAY_PARAM = "trust_signals_message_delay"; + private static final String TRUST_SIGNALS_MESSAGE_DELAY_PARAM = + "trust_signals_message_delay_ms"; + private static final String TRUST_SIGNALS_MESSAGE_WINDOW_DURATION_PARAM = + "trust_signals_message_window_duration_ms"; + private static final String TRUST_SIGNALS_SHEET_USE_PAGE_TITLE_PARAM = + "trust_signals_sheet_use_page_title"; public static final IntCachedFieldTrialParameter DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY = new IntCachedFieldTrialParameter(ChromeFeatureList.COMMERCE_MERCHANT_VIEWER, TRUST_SIGNALS_MESSAGE_DELAY_PARAM, (int) TimeUnit.SECONDS.toMillis(30)); + + public static final IntCachedFieldTrialParameter TRUST_SIGNALS_MESSAGE_WINDOW_DURATION_SECONDS = + new IntCachedFieldTrialParameter(ChromeFeatureList.COMMERCE_MERCHANT_VIEWER, + TRUST_SIGNALS_MESSAGE_WINDOW_DURATION_PARAM, (int) TimeUnit.DAYS.toMillis(365)); + + public static final BooleanCachedFieldTrialParameter TRUST_SIGNALS_SHEET_USE_PAGE_TITLE = + new BooleanCachedFieldTrialParameter(ChromeFeatureList.COMMERCE_MERCHANT_VIEWER, + TRUST_SIGNALS_SHEET_USE_PAGE_TITLE_PARAM, true); }
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediatorTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediatorTest.java index c82cb5e..5b9b2d9 100644 --- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediatorTest.java +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustDetailsTabMediatorTest.java
@@ -4,6 +4,8 @@ package org.chromium.chrome.browser.merchant_viewer; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; @@ -166,6 +168,33 @@ } @Test + public void testWebContentsDelegateShouldCreateWebContents() { + MerchantTrustDetailsTabMediator instance = getMediatorUnderTest(); + instance.init(mMockWebContents, mMockContentView, mMockSheetContent, mMockProfile); + verify(mMockSheetContent, times(1)) + .attachWebContents(eq(mMockWebContents), eq(mMockContentView), + mWebContentsDelegateCaptor.capture()); + instance.requestShowContent(mMockDestinationGurl, DUMMY_SHEET_TITLE); + + assertFalse(mWebContentsDelegateCaptor.getValue().shouldCreateWebContents( + mMockDestinationGurl)); + + verify(mMockNavigationController, times(2)).loadUrl(any(LoadUrlParams.class)); + } + + @Test + public void testGetTopControlsHeight() { + MerchantTrustDetailsTabMediator instance = getMediatorUnderTest(); + instance.init(mMockWebContents, mMockContentView, mMockSheetContent, mMockProfile); + verify(mMockSheetContent, times(1)) + .attachWebContents(eq(mMockWebContents), eq(mMockContentView), + mWebContentsDelegateCaptor.capture()); + instance.requestShowContent(mMockDestinationGurl, DUMMY_SHEET_TITLE); + + assertEquals(100, mWebContentsDelegateCaptor.getValue().getTopControlsHeight()); + } + + @Test public void testLoadingStateChanges() { MerchantTrustDetailsTabMediator instance = getMediatorUnderTest(); instance.init(mMockWebContents, mMockContentView, mMockSheetContent, mMockProfile);
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContextTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContextTest.java index 82fac029..265f154b 100644 --- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContextTest.java +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageContextTest.java
@@ -20,6 +20,7 @@ import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.chrome.test.util.browser.Features; import org.chromium.content_public.browser.WebContents; +import org.chromium.url.GURL; /** * Tests for {@link MerchantTrustMessageContext}. @@ -29,19 +30,24 @@ public class MerchantTrustMessageContextTest { @Rule public TestRule mProcessor = new Features.JUnitProcessor(); - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - } + + @Mock + private GURL mMockGurl; @Mock private WebContents mMockWebContents; + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + doReturn("fake_host").when(mMockGurl).getHost(); + } + @Test public void testIsValid() { doReturn(false).when(mMockWebContents).isDestroyed(); MerchantTrustMessageContext context = - new MerchantTrustMessageContext("fake_host", mMockWebContents); + new MerchantTrustMessageContext(mMockGurl, mMockWebContents); assertTrue(context.isValid()); } @@ -49,14 +55,16 @@ public void testIsValidDestroyedWebContents() { doReturn(true).when(mMockWebContents).isDestroyed(); MerchantTrustMessageContext context = - new MerchantTrustMessageContext("fake_host", mMockWebContents); + new MerchantTrustMessageContext(mMockGurl, mMockWebContents); assertFalse(context.isValid()); } @Test public void testIsValidEmptyHostname() { - doReturn(true).when(mMockWebContents).isDestroyed(); - MerchantTrustMessageContext context = new MerchantTrustMessageContext("", mMockWebContents); + doReturn(false).when(mMockWebContents).isDestroyed(); + doReturn(true).when(mMockGurl).isEmpty(); + MerchantTrustMessageContext context = + new MerchantTrustMessageContext(mMockGurl, mMockWebContents); assertFalse(context.isValid()); } @@ -70,7 +78,7 @@ @Test public void testIsValidNullWebContents() { - MerchantTrustMessageContext context = new MerchantTrustMessageContext("fake_host", null); + MerchantTrustMessageContext context = new MerchantTrustMessageContext(mMockGurl, null); assertFalse(context.isValid()); } } \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java index 0d63db3e..1a1752b0 100644 --- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageSchedulerTest.java
@@ -5,7 +5,9 @@ package org.chromium.chrome.browser.merchant_viewer; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -13,7 +15,9 @@ import static org.mockito.Mockito.verify; import android.os.Handler; +import android.util.Pair; +import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -21,17 +25,19 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.robolectric.Robolectric; import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustMetrics.MessageClearReason; import org.chromium.chrome.test.util.browser.Features; +import org.chromium.components.messages.DismissReason; import org.chromium.components.messages.MessageDispatcher; import org.chromium.components.messages.MessageScopeType; import org.chromium.content_public.browser.WebContents; import org.chromium.ui.modelutil.PropertyModel; +import java.util.concurrent.TimeoutException; + /** * Tests for {@link MerchantTrustMessageScheduler}. */ @@ -40,10 +46,6 @@ public class MerchantTrustMessageSchedulerTest { @Rule public TestRule mProcessor = new Features.JUnitProcessor(); - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - } @Mock private MessageDispatcher mMockMessageDispatcher; @@ -54,8 +56,26 @@ @Mock private MerchantTrustMetrics mMockMetrics; + @Mock + private Handler mMockHandler; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + doAnswer(invocation -> { + Runnable runnable = (Runnable) (invocation.getArguments()[0]); + runnable.run(); + return null; + }) + .when(mMockHandler) + .postDelayed(any(Runnable.class), anyLong()); + } + @Test - public void testSchedule() { + public void testSchedule() throws TimeoutException { + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); MerchantTrustMessageScheduler scheduler = getSchedulerUnderTest(); PropertyModel mockPropteryModel = mock(PropertyModel.class); doReturn(false).when(mMockWebContents).isDestroyed(); @@ -64,18 +84,26 @@ doReturn(true).when(mockMessagesContext).isValid(); doReturn(mMockWebContents).when(mockMessagesContext).getWebContents(); - scheduler.schedule(mockPropteryModel, mockMessagesContext, 0); - verify(mMockMetrics, times(1)).recordMetricsForMessagePrepared(); - Robolectric.flushForegroundThreadScheduler(); + scheduler.setHandlerForTesting(mMockHandler); + int callCount = callbackHelper.getCallCount(); + scheduler.schedule( + mockPropteryModel, mockMessagesContext, 2000, callbackHelper::notifyCalled); + + callbackHelper.waitForCallback(callCount); + Assert.assertNotNull(callbackHelper.getResult()); + verify(mMockHandler, times(1)).postDelayed(any(Runnable.class), eq(2000L)); verify(mMockMessageDispatcher, times(1)) .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), eq(MessageScopeType.NAVIGATION)); + verify(mMockMetrics, times(1)).recordMetricsForMessagePrepared(); verify(mMockMetrics, times(1)).recordMetricsForMessageShown(); } @Test - public void testScheduleInvalidWebContents() { + public void testScheduleInvalidMessageContext() throws TimeoutException { + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); MerchantTrustMessageScheduler scheduler = getSchedulerUnderTest(); PropertyModel mockPropteryModel = mock(PropertyModel.class); doReturn(false).when(mMockWebContents).isDestroyed(); @@ -84,8 +112,15 @@ doReturn(false).when(mockMessagesContext).isValid(); doReturn(mMockWebContents).when(mockMessagesContext).getWebContents(); - scheduler.schedule(mockPropteryModel, mockMessagesContext, 0); - Robolectric.flushForegroundThreadScheduler(); + scheduler.setHandlerForTesting(mMockHandler); + + int callCount = callbackHelper.getCallCount(); + scheduler.schedule( + mockPropteryModel, mockMessagesContext, 2000, callbackHelper::notifyCalled); + callbackHelper.waitForCallback(callCount); + + Assert.assertNull(callbackHelper.getResult()); + Assert.assertNull(scheduler.getScheduledMessageContext()); verify(mMockMessageDispatcher, never()) .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), @@ -93,7 +128,7 @@ } @Test - public void testScheduleWithDelay() { + public void testClear() throws TimeoutException { MerchantTrustMessageScheduler scheduler = getSchedulerUnderTest(); PropertyModel mockPropteryModel = mock(PropertyModel.class); doReturn(false).when(mMockWebContents).isDestroyed(); @@ -102,24 +137,77 @@ doReturn(true).when(mockMessagesContext).isValid(); doReturn(mMockWebContents).when(mockMessagesContext).getWebContents(); - Handler mockHandler = mock(Handler.class); - scheduler.setHandlerForTesting(mockHandler); - scheduler.schedule(mockPropteryModel, mockMessagesContext, 100); - verify(mockHandler, times(1)).postDelayed(any(Runnable.class), eq(100L)); + scheduler.setScheduledMessage(new Pair<MerchantTrustMessageContext, PropertyModel>( + mockMessagesContext, mockPropteryModel)); + Assert.assertNotNull(scheduler.getScheduledMessageContext()); + scheduler.clear(MessageClearReason.UNKNOWN); + Assert.assertNull(scheduler.getScheduledMessageContext()); + verify(mMockMessageDispatcher, times(1)) + .dismissMessage(eq(mockPropteryModel), eq(DismissReason.SCOPE_DESTROYED)); + verify(mMockMetrics, times(1)) + .recordMetricsForMessageCleared(eq(MessageClearReason.UNKNOWN)); } @Test - public void testClear() { + public void testExpedite() throws TimeoutException { + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); + + MerchantTrustMessageScheduler scheduler = getSchedulerUnderTest(); + PropertyModel mockPropteryModel = mock(PropertyModel.class); + doReturn(false).when(mMockWebContents).isDestroyed(); + + MerchantTrustMessageContext mockMessagesContext = mock(MerchantTrustMessageContext.class); + doReturn(true).when(mockMessagesContext).isValid(); + doReturn(mMockWebContents).when(mockMessagesContext).getWebContents(); + + scheduler.schedule( + mockPropteryModel, mockMessagesContext, 50000, callbackHelper::notifyCalled); + Assert.assertNotNull(scheduler.getScheduledMessageContext()); + + MerchantTrustSignalsCallbackHelper expediteCallbackHelper = + new MerchantTrustSignalsCallbackHelper(); + int callCount = expediteCallbackHelper.getCallCount(); + scheduler.setHandlerForTesting(mMockHandler); + scheduler.expedite(expediteCallbackHelper::notifyCalled); + expediteCallbackHelper.waitForCallback(callCount); + Assert.assertNotNull(expediteCallbackHelper.getResult()); + Assert.assertNull(scheduler.getScheduledMessageContext()); + verify(mMockMessageDispatcher, times(1)) + .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), + eq(MessageScopeType.NAVIGATION)); + } + + @Test + public void testExpediteNoScheduledMessage() throws TimeoutException { + MerchantTrustMessageScheduler scheduler = getSchedulerUnderTest(); + PropertyModel mockPropteryModel = mock(PropertyModel.class); + doReturn(false).when(mMockWebContents).isDestroyed(); + + MerchantTrustMessageContext mockMessagesContext = mock(MerchantTrustMessageContext.class); + doReturn(true).when(mockMessagesContext).isValid(); + doReturn(mMockWebContents).when(mockMessagesContext).getWebContents(); + + Assert.assertNull(scheduler.getScheduledMessageContext()); + + MerchantTrustSignalsCallbackHelper expediteCallbackHelper = + new MerchantTrustSignalsCallbackHelper(); + int callCount = expediteCallbackHelper.getCallCount(); + scheduler.expedite(expediteCallbackHelper::notifyCalled); + + expediteCallbackHelper.waitForCallback(callCount); + Assert.assertNull(scheduler.getScheduledMessageContext()); + verify(mMockMessageDispatcher, never()) + .enqueueMessage(eq(mockPropteryModel), eq(mMockWebContents), + eq(MessageScopeType.NAVIGATION)); + } + + @Test + public void testClearNoScheduledMessage() { MerchantTrustMessageScheduler scheduler = getSchedulerUnderTest(); scheduler.clear(MessageClearReason.UNKNOWN); verify(mMockMetrics, times(0)) .recordMetricsForMessageCleared(eq(MessageClearReason.UNKNOWN)); - - MerchantTrustMessageContext mockMessagesContext = mock(MerchantTrustMessageContext.class); - scheduler.setScheduledMessageContext(mockMessagesContext); - scheduler.clear(MessageClearReason.UNKNOWN); - verify(mMockMetrics, times(1)) - .recordMetricsForMessageCleared(eq(MessageClearReason.UNKNOWN)); } private MerchantTrustMessageScheduler getSchedulerUnderTest() {
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCallbackHelper.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCallbackHelper.java new file mode 100644 index 0000000..2e8bb4f1 --- /dev/null +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCallbackHelper.java
@@ -0,0 +1,41 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.merchant_viewer; + +import org.chromium.base.test.util.CallbackHelper; +import org.chromium.chrome.browser.merchant_viewer.proto.MerchantTrustSignalsOuterClass.MerchantTrustSignals; + +/** + * Extends {@link CallbackHelper} to offer a set of convenience methods for handling merchant trust + * callbacks. + */ +class MerchantTrustSignalsCallbackHelper extends CallbackHelper { + private MerchantTrustMessageContext mResult; + private MerchantTrustSignals mMerchantTrustSignalsResult; + + /** Handles callbacks with type {@link MerchantTrustMessageContext}. */ + void notifyCalled(MerchantTrustMessageContext context) { + mResult = context; + notifyCalled(); + } + + /** Handles callbacks with type {@link MerchantTrustSignals}. */ + void notifyCalled(MerchantTrustSignals signals) { + mMerchantTrustSignalsResult = signals; + notifyCalled(); + } + + /** Returns the cached {@link MerchantTrustSignals} result. */ + + MerchantTrustSignals getMerchantTrustSignalsResult() { + return mMerchantTrustSignalsResult; + } + + /** Returns the cached {@link MerchantTrustMessageContext} result. */ + + MerchantTrustMessageContext getResult() { + return mResult; + } +}
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java index 85bbd62f..6471715 100644 --- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinatorTest.java
@@ -5,8 +5,12 @@ package org.chromium.chrome.browser.merchant_viewer; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyObject; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -14,37 +18,58 @@ import android.content.res.Resources; import android.view.View; +import androidx.test.filters.SmallTest; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.robolectric.annotation.Config; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.chromium.base.Callback; import org.chromium.base.supplier.Supplier; -import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.BaseJUnit4ClassRunner; +import org.chromium.base.test.UiThreadTest; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustMetrics.MessageClearReason; +import org.chromium.chrome.browser.merchant_viewer.proto.MerchantTrustSignalsOuterClass.MerchantTrustSignals; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelFilterProvider; import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.test.ChromeBrowserTestRule; import org.chromium.chrome.test.util.browser.Features; +import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.messages.DismissReason; import org.chromium.content_public.browser.WebContents; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.display.DisplayAndroid; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.url.GURL; + +import java.util.concurrent.TimeUnit; /** * Tests for {@link MerchantTrustSignalsCoordinator}. */ -@RunWith(BaseRobolectricTestRunner.class) -@Config(manifest = Config.NONE) +@RunWith(BaseJUnit4ClassRunner.class) +@EnableFeatures({ChromeFeatureList.COMMERCE_MERCHANT_VIEWER + "<Study"}) +@CommandLineFlags. +Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"}) public class MerchantTrustSignalsCoordinatorTest { @Rule - public TestRule mProcessor = new Features.JUnitProcessor(); + public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); + + @Rule + public TestRule mProcessor = new Features.InstrumentationProcessor(); @Mock private TabModelSelector mMockTabModelSelector; @@ -82,81 +107,208 @@ @Mock private MerchantTrustMetrics mMockMetrics; + @Mock + private GURL mMockGurl; + + @Mock + private GURL mMockGurl2; + + @Mock + private MerchantTrustSignalsDataProvider mMockMerchantTrustDataProvider; + + @Mock + private MerchantTrustSignalsEventStorage mMockMerchantTrustStorage; + + @Mock + private MerchantTrustSignalsEvent mMockMerchantTrustSignalsEvent; + + @Captor + private ArgumentCaptor<Callback> mOnMessageEnqueuedCallbackCaptor; + + private MerchantTrustSignals mDummyMerchantTrustSignals = + MerchantTrustSignals.newBuilder() + .setMerchantStarRating(4.5f) + .setMerchantCountRating(100) + .setMerchantDetailsPageUrl("http://dummy/url") + .build(); @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(mTabModelFilterProvider).when(mMockTabModelSelector).getTabModelFilterProvider(); + doReturn("Test").when(mMockResources).getString(anyInt(), anyObject()); + doReturn("Test").when(mMockResources).getQuantityString(anyInt(), anyInt(), anyObject()); doReturn(100).when(mMockResources).getDimensionPixelSize(any(Integer.class)); doReturn(mMockResources).when(mMockContext).getResources(); doReturn(1f).when(mMockDisplayAndroid).getDipScale(); doReturn(mMockDisplayAndroid).when(mMockWindowAndroid).getDisplay(); + doReturn("fake_host").when(mMockGurl).getHost(); + doReturn("different_host").when(mMockGurl2).getHost(); } + @UiThreadTest + @SmallTest @Test + @CommandLineFlags. + Add({"force-fieldtrial-params=Study.Group:trust_signals_message_window_duration_ms/-1"}) public void testMaybeDisplayMessage() { // Verify previous scheduled message is canceled. MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); doReturn(null).when(mMockMerchantMessageScheduler).getScheduledMessageContext(); + doReturn(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)) + .when(mMockMerchantTrustSignalsEvent) + .getTimestamp(); + doReturn("fake_host").when(mMockMerchantTrustSignalsEvent).getKey(); + + setMockTrustSignalsData(mDummyMerchantTrustSignals); + setMockTrustSignalsEventData("fake_host", mMockMerchantTrustSignalsEvent); coordinator.maybeDisplayMessage( - new MerchantTrustMessageContext("fake_host", mMockWebContents)); + new MerchantTrustMessageContext(mMockGurl, mMockWebContents)); verify(mMockMerchantMessageScheduler, times(1)) .clear(eq(MessageClearReason.NAVIGATE_TO_DIFFERENT_DOMAIN)); - // TODO: validate PropertyModel once it's populated. verify(mMockMerchantMessageScheduler, times(1)) .schedule(any(PropertyModel.class), any(MerchantTrustMessageContext.class), - eq(MerchantTrustSignalsCoordinator.MESSAGE_ENQUEUE_DELAY_MILLIS)); + eq((long) MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY + .getValue()), + any(Callback.class)); + + verify(mMockMerchantTrustStorage, times(1)).delete(eq(mMockMerchantTrustSignalsEvent)); + verify(mMockMerchantTrustDataProvider, times(1)) + .getDataForUrl(eq(mMockGurl), any(Callback.class)); } + @UiThreadTest + @SmallTest + @Test + @CommandLineFlags. + Add({"force-fieldtrial-params=Study.Group:trust_signals_message_window_duration_ms/60000"}) + public void testMaybeDisplayMessageLastEventWithinTimeWindow() { + // Verify previous scheduled message is canceled. + MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); + doReturn(null).when(mMockMerchantMessageScheduler).getScheduledMessageContext(); + doReturn(System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(10)) + .when(mMockMerchantTrustSignalsEvent) + .getTimestamp(); + doReturn("fake_host").when(mMockMerchantTrustSignalsEvent).getKey(); + + setMockTrustSignalsData(mDummyMerchantTrustSignals); + setMockTrustSignalsEventData("fake_host", mMockMerchantTrustSignalsEvent); + + coordinator.maybeDisplayMessage( + new MerchantTrustMessageContext(mMockGurl, mMockWebContents)); + + verify(mMockMerchantMessageScheduler, times(1)) + .clear(eq(MessageClearReason.NAVIGATE_TO_DIFFERENT_DOMAIN)); + verify(mMockMerchantMessageScheduler, never()) + .schedule(any(PropertyModel.class), any(MerchantTrustMessageContext.class), + eq((long) MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY + .getValue()), + any(Callback.class)); + } + + @UiThreadTest + @SmallTest + @Test + @CommandLineFlags. + Add({"force-fieldtrial-params=Study.Group:trust_signals_message_window_duration_ms/-1"}) + public void testMaybeDisplayMessageFirstTime() { + // Verify previous scheduled message is canceled. + MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); + doReturn(null).when(mMockMerchantMessageScheduler).getScheduledMessageContext(); + doReturn(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)) + .when(mMockMerchantTrustSignalsEvent) + .getTimestamp(); + doReturn("fake_host").when(mMockMerchantTrustSignalsEvent).getKey(); + + setMockTrustSignalsData(mDummyMerchantTrustSignals); + setMockTrustSignalsEventData("fake_host", null); + + coordinator.maybeDisplayMessage( + new MerchantTrustMessageContext(mMockGurl, mMockWebContents)); + + verify(mMockMerchantMessageScheduler, times(1)) + .clear(eq(MessageClearReason.NAVIGATE_TO_DIFFERENT_DOMAIN)); + verify(mMockMerchantMessageScheduler, times(1)) + .schedule(any(PropertyModel.class), any(MerchantTrustMessageContext.class), + eq((long) MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY + .getValue()), + any(Callback.class)); + } + + @UiThreadTest + @SmallTest + @Test + @CommandLineFlags. + Add({"force-fieldtrial-params=Study.Group:trust_signals_message_window_duration_ms/-1"}) + public void testMaybeDisplayMessageNoMerchantTrustData() { + // Verify previous scheduled message is canceled. + MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); + doReturn(null).when(mMockMerchantMessageScheduler).getScheduledMessageContext(); + doReturn(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)) + .when(mMockMerchantTrustSignalsEvent) + .getTimestamp(); + doReturn("fake_host").when(mMockMerchantTrustSignalsEvent).getKey(); + + setMockTrustSignalsData(null); + setMockTrustSignalsEventData("fake_host", null); + + // doReturn(mDummyMerchantTrustSignalsEvent) + coordinator.maybeDisplayMessage( + new MerchantTrustMessageContext(mMockGurl, mMockWebContents)); + + verify(mMockMerchantMessageScheduler, times(1)) + .clear(eq(MessageClearReason.NAVIGATE_TO_DIFFERENT_DOMAIN)); + verify(mMockMerchantMessageScheduler, never()) + .schedule(any(PropertyModel.class), any(MerchantTrustMessageContext.class), + eq((long) MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY + .getValue()), + any(Callback.class)); + } + + @UiThreadTest + @SmallTest @Test public void testMaybeDisplayMessageWithScheduledMessage() { // Verify previous scheduled message is canceled. MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); - doReturn(new MerchantTrustMessageContext("fake_host", mMockWebContents)) + doReturn(new MerchantTrustMessageContext(mMockGurl, mMockWebContents)) .when(mMockMerchantMessageScheduler) .getScheduledMessageContext(); coordinator.maybeDisplayMessage( - new MerchantTrustMessageContext("fake_host", mMockWebContents)); + new MerchantTrustMessageContext(mMockGurl, mMockWebContents)); verify(mMockMerchantMessageScheduler, times(1)) - .clear(eq(MessageClearReason.NAVIGATE_TO_SAME_DOMAIN)); - - // TODO: validate PropertyModel once it's populated. - verify(mMockMerchantMessageScheduler, times(1)) - .schedule(any(PropertyModel.class), any(MerchantTrustMessageContext.class), - eq(MerchantTrustMessageScheduler.MESSAGE_ENQUEUE_NO_DELAY)); + .expedite(mOnMessageEnqueuedCallbackCaptor.capture()); } + @UiThreadTest + @SmallTest @Test - public void testMaybeDisplayMessageWithScheduledMessageDifferentHost() { - // Verify previous scheduled message is canceled. + public void testMaybeDisplayMessageWithScheduledMessageForDifferentHost() { MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); - doReturn(new MerchantTrustMessageContext("different_host", mMockWebContents)) + doReturn(new MerchantTrustMessageContext(mMockGurl2, mMockWebContents)) .when(mMockMerchantMessageScheduler) .getScheduledMessageContext(); + setMockTrustSignalsData(mDummyMerchantTrustSignals); + setMockTrustSignalsEventData("fake_host", null); coordinator.maybeDisplayMessage( - new MerchantTrustMessageContext("fake_host", mMockWebContents)); + new MerchantTrustMessageContext(mMockGurl, mMockWebContents)); verify(mMockMerchantMessageScheduler, times(1)) .clear(eq(MessageClearReason.NAVIGATE_TO_DIFFERENT_DOMAIN)); - // TODO: validate PropertyModel once it's populated. verify(mMockMerchantMessageScheduler, times(1)) .schedule(any(PropertyModel.class), any(MerchantTrustMessageContext.class), - eq(MerchantTrustSignalsCoordinator.MESSAGE_ENQUEUE_DELAY_MILLIS)); + eq((long) MerchantViewerConfig.DEFAULT_TRUST_SIGNALS_MESSAGE_DELAY + .getValue()), + any(Callback.class)); } - @Test - public void testOnMessageTapped() { - MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); - coordinator.onMessageTapped(); - verify(mMockMetrics, times(1)).recordMetricsForMessageTapped(); - } - + @SmallTest @Test public void testOnMessageDismissed() { MerchantTrustSignalsCoordinator coordinator = getCoordinatorUnderTest(); @@ -164,9 +316,36 @@ verify(mMockMetrics, times(1)).recordMetricsForMessageDismissed(eq(DismissReason.TIMER)); } + private void setMockTrustSignalsData(MerchantTrustSignals trustSignalsData) { + doAnswer(new Answer<Void>() { + @Override + public Void answer(InvocationOnMock invocation) { + Callback callback = (Callback) invocation.getArguments()[1]; + callback.onResult(trustSignalsData); + return null; + } + }) + .when(mMockMerchantTrustDataProvider) + .getDataForUrl(any(GURL.class), any(Callback.class)); + } + + private void setMockTrustSignalsEventData(String hostname, MerchantTrustSignalsEvent event) { + doAnswer(new Answer<Void>() { + @Override + public Void answer(InvocationOnMock invocation) { + Callback callback = (Callback) invocation.getArguments()[1]; + callback.onResult(event); + return null; + } + }) + .when(mMockMerchantTrustStorage) + .load(eq(hostname), any(Callback.class)); + } + private MerchantTrustSignalsCoordinator getCoordinatorUnderTest() { return new MerchantTrustSignalsCoordinator(mMockContext, mMockWindowAndroid, mMockBottomSheetController, mMockDecorView, mMockTabModelSelector, - mMockMerchantMessageScheduler, mMockTabProvider, mMockMetrics); + mMockMerchantMessageScheduler, mMockTabProvider, mMockMerchantTrustDataProvider, + mMockMerchantTrustStorage, mMockMetrics); } } \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProviderTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProviderTest.java new file mode 100644 index 0000000..3fcd38f --- /dev/null +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProviderTest.java
@@ -0,0 +1,166 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.merchant_viewer; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; + +import com.google.protobuf.ByteString; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.robolectric.annotation.Config; + +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.JniMocker; +import org.chromium.chrome.browser.merchant_viewer.proto.MerchantTrustSignalsOuterClass.MerchantTrustSignals; +import org.chromium.chrome.browser.optimization_guide.OptimizationGuideBridge; +import org.chromium.chrome.browser.optimization_guide.OptimizationGuideBridge.OptimizationGuideCallback; +import org.chromium.chrome.browser.optimization_guide.OptimizationGuideBridgeJni; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.test.util.browser.Features; +import org.chromium.components.optimization_guide.OptimizationGuideDecision; +import org.chromium.components.optimization_guide.proto.CommonTypesProto.Any; +import org.chromium.url.GURL; + +import java.util.concurrent.TimeoutException; +/** + * Tests for {@link MerchantTrustSignalsDataProvider}. + */ +@RunWith(BaseRobolectricTestRunner.class) +@Config(manifest = Config.NONE) +public class MerchantTrustSignalsDataProviderTest { + @Rule + public TestRule mProcessor = new Features.JUnitProcessor(); + + @Mock + private GURL mMockDestinationGurl; + + @Rule + public JniMocker mMocker = new JniMocker(); + + @Mock + private Profile mMockProfile; + + @Mock + private OptimizationGuideBridge.Natives mMockOptimizationGuideBridgeJni; + + static final MerchantTrustSignals FAKE_MERCHANT_TRUST_SIGNALS = + MerchantTrustSignals.newBuilder() + .setMerchantStarRating(4.5f) + .setMerchantCountRating(100) + .setMerchantDetailsPageUrl("http://dummy/url") + .build(); + + static final Any ANY_MERHCANT_TRUST_SIGNALS = + Any.newBuilder() + .setValue(ByteString.copyFrom(FAKE_MERCHANT_TRUST_SIGNALS.toByteArray())) + .build(); + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mMocker.mock(OptimizationGuideBridgeJni.TEST_HOOKS, mMockOptimizationGuideBridgeJni); + doReturn(1L).when(mMockOptimizationGuideBridgeJni).init(); + doReturn(false).when(mMockProfile).isOffTheRecord(); + Profile.setLastUsedProfileForTesting(mMockProfile); + } + + @Test + public void testGetDataForUrlNoMetadata() throws TimeoutException { + MerchantTrustSignalsDataProvider instance = getDataProvider(); + + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); + + int callCount = callbackHelper.getCallCount(); + mockOptimizationGuideResponse(mMockOptimizationGuideBridgeJni, + OptimizationGuideDecision.FALSE, ANY_MERHCANT_TRUST_SIGNALS); + instance.getDataForUrl(mMockDestinationGurl, callbackHelper::notifyCalled); + callbackHelper.waitForCallback(callCount); + Assert.assertNull(callbackHelper.getMerchantTrustSignalsResult()); + } + + @Test + public void testGetDataForUrlNullMetadata() throws TimeoutException { + MerchantTrustSignalsDataProvider instance = getDataProvider(); + + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); + + int callCount = callbackHelper.getCallCount(); + mockOptimizationGuideResponse( + mMockOptimizationGuideBridgeJni, OptimizationGuideDecision.TRUE, null); + instance.getDataForUrl(mMockDestinationGurl, callbackHelper::notifyCalled); + callbackHelper.waitForCallback(callCount); + Assert.assertNull(callbackHelper.getMerchantTrustSignalsResult()); + } + + @Test + public void testGetDataForUrlInvalidMetadata() throws TimeoutException { + MerchantTrustSignalsDataProvider instance = getDataProvider(); + + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); + + int callCount = callbackHelper.getCallCount(); + mockOptimizationGuideResponse(mMockOptimizationGuideBridgeJni, + OptimizationGuideDecision.TRUE, Any.getDefaultInstance()); + instance.getDataForUrl(mMockDestinationGurl, callbackHelper::notifyCalled); + callbackHelper.waitForCallback(callCount); + Assert.assertNull(callbackHelper.getMerchantTrustSignalsResult()); + } + + @Test + public void testGetDataForUrlValid() throws TimeoutException { + MerchantTrustSignalsDataProvider instance = getDataProvider(); + + MerchantTrustSignalsCallbackHelper callbackHelper = + new MerchantTrustSignalsCallbackHelper(); + + int callCount = callbackHelper.getCallCount(); + mockOptimizationGuideResponse(mMockOptimizationGuideBridgeJni, + OptimizationGuideDecision.TRUE, ANY_MERHCANT_TRUST_SIGNALS); + instance.getDataForUrl(mMockDestinationGurl, callbackHelper::notifyCalled); + callbackHelper.waitForCallback(callCount); + + MerchantTrustSignals result = callbackHelper.getMerchantTrustSignalsResult(); + Assert.assertNotNull(result); + Assert.assertEquals(4.5f, result.getMerchantStarRating(), 0.0f); + Assert.assertEquals(100, result.getMerchantCountRating()); + Assert.assertEquals("http://dummy/url", result.getMerchantDetailsPageUrl()); + } + + static void mockOptimizationGuideResponse(OptimizationGuideBridge.Natives optimizationGuideJni, + @OptimizationGuideDecision int decision, Any metadata) { + doAnswer(new Answer<Void>() { + @Override + public Void answer(InvocationOnMock invocation) { + OptimizationGuideCallback callback = + (OptimizationGuideCallback) invocation.getArguments()[3]; + callback.onOptimizationGuideDecision(decision, metadata); + return null; + } + }) + .when(optimizationGuideJni) + .canApplyOptimization( + anyLong(), any(GURL.class), anyInt(), any(OptimizationGuideCallback.class)); + } + + private MerchantTrustSignalsDataProvider getDataProvider() { + return new MerchantTrustSignalsDataProvider(); + } +} \ No newline at end of file
diff --git a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediatorTest.java b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediatorTest.java index e2b98e04..f68449e 100644 --- a/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediatorTest.java +++ b/chrome/browser/commerce/merchant_viewer/android/javatests/src/org/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediatorTest.java
@@ -198,6 +198,20 @@ verify(mMockDelegate, never()).maybeDisplayMessage(any(MerchantTrustMessageContext.class)); } + @Test + public void testInitialTabSelection() { + doReturn(mMockPrimaryTab).when(mMockTabModelSelector).getCurrentTab(); + MerchantTrustSignalsMediator mediator = getMediatorUnderTest(null); + verify(mMockWebContents, times(1)).addObserver(mWebContentsObserver.capture()); + } + + @Test + public void testInitialTabEmpty() { + doReturn(null).when(mMockTabModelSelector).getCurrentTab(); + MerchantTrustSignalsMediator mediator = getMediatorUnderTest(null); + verify(mMockWebContents, never()).addObserver(mWebContentsObserver.capture()); + } + private MerchantTrustSignalsMediator getMediatorUnderTest(TabImpl tabToSelect) { MerchantTrustSignalsMediator mediator = new MerchantTrustSignalsMediator(mMockTabModelSelector, mMockDelegate);
diff --git a/chrome/browser/commerce/merchant_viewer/proto/merchant_trust_signals.proto b/chrome/browser/commerce/merchant_viewer/proto/merchant_trust_signals.proto index 19ca11e..871062e 100644 --- a/chrome/browser/commerce/merchant_viewer/proto/merchant_trust_signals.proto +++ b/chrome/browser/commerce/merchant_viewer/proto/merchant_trust_signals.proto
@@ -4,9 +4,9 @@ syntax = "proto2"; -package org.chromium.chrome.browser.merchant_viewer; - -option java_package = "org.chromium.chrome.browser.merchant_viewer"; +package org.chromium.chrome.browser.merchant_viewer.proto; +option optimize_for = LITE_RUNTIME; +option java_package = "org.chromium.chrome.browser.merchant_viewer.proto"; message MerchantTrustSignals { // Overall rating out of 5.
diff --git a/chrome/browser/content_creation/notes/internal/BUILD.gn b/chrome/browser/content_creation/notes/internal/BUILD.gn index f3bd411a..1310f25 100644 --- a/chrome/browser/content_creation/notes/internal/BUILD.gn +++ b/chrome/browser/content_creation/notes/internal/BUILD.gn
@@ -12,4 +12,12 @@ "//components/content_creation/notes/core", "//components/keyed_service/core", ] + + if (is_android) { + sources += [ "android/note_service_bridge_factory.cc" ] + + deps += [ + "//chrome/browser/content_creation/notes/internal/android:jni_headers", + ] + } }
diff --git a/chrome/browser/content_creation/notes/internal/android/BUILD.gn b/chrome/browser/content_creation/notes/internal/android/BUILD.gn new file mode 100644 index 0000000..e7018d73 --- /dev/null +++ b/chrome/browser/content_creation/notes/internal/android/BUILD.gn
@@ -0,0 +1,33 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/config.gni") +import("//build/config/android/rules.gni") + +android_library("java") { + visibility = [ + ":*", + "//chrome/android:chrome_all_java", + ] + + sources = [ "android/java/src/org/chromium/chrome/browser/content_creation/notes/NoteServiceFactory.java" ] + + deps = [ + "//base:base_java", + "//chrome/browser/profiles/android:java", + "//components/content_creation/notes/android:java", + ] + + resources_package = "org.chromium.chrome.browser.content_creation.notes" + annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] +} + +generate_jni("jni_headers") { + visibility = [ + ":*", + "//chrome/browser", + ] + + sources = [ "android/java/src/org/chromium/chrome/browser/content_creation/notes/NoteServiceFactory.java" ] +}
diff --git a/chrome/browser/content_creation/notes/internal/android/java/src/org/chromium/chrome/browser/content_creation/notes/NoteServiceFactory.java b/chrome/browser/content_creation/notes/internal/android/java/src/org/chromium/chrome/browser/content_creation/notes/NoteServiceFactory.java new file mode 100644 index 0000000..be4432e --- /dev/null +++ b/chrome/browser/content_creation/notes/internal/android/java/src/org/chromium/chrome/browser/content_creation/notes/NoteServiceFactory.java
@@ -0,0 +1,27 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.content_creation.notes; + +import org.chromium.base.annotations.NativeMethods; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.components.content_creation.notes.NoteService; + +/** + * Basic factory that creates and returns a {@link NoteService} that is + * attached natively to the given {@link Profile}. + */ +public class NoteServiceFactory { + /** + * Used to get access to the note service backend. + */ + public static NoteService getForProfile(Profile profile) { + return NoteServiceFactoryJni.get().getForProfile(profile); + } + + @NativeMethods + interface Natives { + NoteService getForProfile(Profile profile); + } +} \ No newline at end of file
diff --git a/chrome/browser/content_creation/notes/internal/android/note_service_bridge_factory.cc b/chrome/browser/content_creation/notes/internal/android/note_service_bridge_factory.cc new file mode 100644 index 0000000..7ceaaf74 --- /dev/null +++ b/chrome/browser/content_creation/notes/internal/android/note_service_bridge_factory.cc
@@ -0,0 +1,30 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/jni_android.h" +#include "chrome/browser/content_creation/internal/jni_headers/NoteServiceFactory_jni.h" +#include "chrome/browser/content_creation/internal/note_service_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_android.h" +#include "chrome/browser/profiles/profile_key.h" +#include "components/content_creation/notes/android/note_service_bridge.h" + +// Takes a Java Profile and returns a Java NoteService. +static base::android::ScopedJavaLocalRef<jobject> +JNI_NoteServiceFactory_GetForProfile( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& j_profile) { + Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); + ProfileKey* profile_key = profile->GetProfileKey(); + + // Return null if there is no reasonable context for the provided Java + // profile. + if (profile_key == nullptr) + return base::android::ScopedJavaLocalRef<jobject>(); + + content_creation::NoteService* note_service = + NoteServiceFactory::GetInstance()->GetForKey(profile_key); + return content_creation::NoteServiceBridge::GetBridgeForNoteService( + note_service); +}
diff --git a/chrome/browser/extensions/api/tabs/tabs_test.cc b/chrome/browser/extensions/api/tabs/tabs_test.cc index d681c36..fb329f4 100644 --- a/chrome/browser/extensions/api/tabs/tabs_test.cc +++ b/chrome/browser/extensions/api/tabs/tabs_test.cc
@@ -10,6 +10,7 @@ #include <string> #include "apps/test/app_window_waiter.h" +#include "base/format_macros.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/strings/pattern.h"
diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc index 1b241b39..fa8aef7d 100644 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
@@ -446,7 +446,7 @@ return; } - if (HasPersistedPermission()) { + if (HasPersistedPermission() || AncestorHasPersistedPermission()) { // TODO(https://crbug.com/1197304): Add histogram loggging to see how old // the persisted permission was when we use it to auto-grant. SetStatus(PermissionStatus::GRANTED, @@ -548,6 +548,16 @@ } bool HasPersistedPermission() const { return HasPersistedPermission(type_); } + bool AncestorHasPersistedPermission() const { + for (base::FilePath parent = path_.DirName(); parent != parent.DirName(); + parent = parent.DirName()) { + if (context_->HasPersistedPermission(origin_, parent, + HandleType::kDirectory, type_)) { + return true; + } + } + return false; + } const url::Origin& origin() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -779,8 +789,6 @@ // operator[] might insert a new OriginState in |origins_|, but that // is exactly what we want. auto& origin_state = origins_[origin]; - // TODO(https://crbug.com/984772): If a parent directory is already - // readable this newly returned grant should also be readable. auto*& existing_grant = origin_state.read_grants[path]; scoped_refptr<PermissionGrantImpl> new_grant; @@ -810,6 +818,15 @@ PersistedPermissionOptions::kDoNotUpdatePersistedPermission); break; case CONTENT_SETTING_ASK: + // If a parent directory is already readable this new grant should also be + // readable. + if (new_grant && + AncestorHasActivePermission(origin, path, GrantType::kRead)) { + existing_grant->SetStatus( + PermissionStatus::GRANTED, + PersistedPermissionOptions::kUpdatePersistedPermission); + break; + } switch (user_action) { case UserAction::kOpen: case UserAction::kSave: @@ -822,7 +839,6 @@ existing_grant->SetStatus( PermissionStatus::GRANTED, PersistedPermissionOptions::kUpdatePersistedPermission); - ScheduleUsageIconUpdate(); break; case UserAction::kLoadFromStorage: break; @@ -845,6 +861,9 @@ break; } + if (existing_grant->GetStatus() == PermissionStatus::GRANTED) + ScheduleUsageIconUpdate(); + return existing_grant; } @@ -858,8 +877,6 @@ // operator[] might insert a new OriginState in |origins_|, but that // is exactly what we want. auto& origin_state = origins_[origin]; - // TODO(https://crbug.com/984772): If a parent directory is already - // writable this newly returned grant should also be writable. auto*& existing_grant = origin_state.write_grants[path]; scoped_refptr<PermissionGrantImpl> new_grant; @@ -889,13 +906,21 @@ PersistedPermissionOptions::kDoNotUpdatePersistedPermission); break; case CONTENT_SETTING_ASK: + // If a parent directory is already writable this new grant should also be + // writable. + if (new_grant && + AncestorHasActivePermission(origin, path, GrantType::kWrite)) { + existing_grant->SetStatus( + PermissionStatus::GRANTED, + PersistedPermissionOptions::kUpdatePersistedPermission); + break; + } switch (user_action) { case UserAction::kSave: // Only automatically grant write access for save dialogs. existing_grant->SetStatus( PermissionStatus::GRANTED, PersistedPermissionOptions::kUpdatePersistedPermission); - ScheduleUsageIconUpdate(); break; case UserAction::kOpen: case UserAction::kDragAndDrop: @@ -920,6 +945,9 @@ break; } + if (existing_grant->GetStatus() == PermissionStatus::GRANTED) + ScheduleUsageIconUpdate(); + return existing_grant; } @@ -1336,6 +1364,31 @@ #endif } +bool ChromeFileSystemAccessPermissionContext::AncestorHasActivePermission( + const url::Origin& origin, + const base::FilePath& path, + GrantType grant_type) { + auto it = origins_.find(origin); + if (it == origins_.end()) + return false; + const auto& relevant_grants = grant_type == GrantType::kWrite + ? it->second.write_grants + : it->second.read_grants; + if (relevant_grants.empty()) + return false; + + // Permissions are inherited from the closest ancestor. + for (base::FilePath parent = path.DirName(); parent != parent.DirName(); + parent = parent.DirName()) { + auto i = relevant_grants.find(parent); + if (i != relevant_grants.end() && i->second && + i->second->GetStatus() == PermissionStatus::GRANTED) { + return true; + } + } + return false; +} + bool ChromeFileSystemAccessPermissionContext::OriginIsInstalledPWA( const url::Origin& origin) { return DoesOriginContainAnyInstalledWebApp(profile_, origin.GetURL());
diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h index 39c5d932..f1d77db 100644 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h
@@ -213,6 +213,9 @@ const base::Value& grant, bool is_installed_pwa); + bool AncestorHasActivePermission(const url::Origin& origin, + const base::FilePath& path, + GrantType grant_type); base::Optional<base::Value> GetPersistedPermission( const url::Origin& origin, const base::FilePath& path);
diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context_unittest.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context_unittest.cc index 10abb88..578b8a3c 100644 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context_unittest.cc +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context_unittest.cc
@@ -989,6 +989,222 @@ } TEST_F(ChromeFileSystemAccessPermissionContextTest, + GetReadPermissionGrant_InheritFromAncestor) { + FileSystemAccessPermissionRequestManager::FromWebContents(web_contents_.get()) + ->set_auto_response_for_test(PermissionAction::GRANTED); + + auto dir_grant = permission_context()->GetReadPermissionGrant( + kTestOrigin, kTestPath, HandleType::kDirectory, UserAction::kOpen); + EXPECT_EQ(PermissionStatus::ASK, dir_grant->GetStatus()); + base::RunLoop loop; + dir_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop.Quit(); + })); + loop.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, dir_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, kTestPath, HandleType::kDirectory, GrantType::kRead)); + + // A file in |dir_path|'s directory should be auto-granted permissions. + auto file_path = kTestPath.AppendASCII("baz"); + auto file_grant = permission_context()->GetReadPermissionGrant( + kTestOrigin, file_path, HandleType::kFile, UserAction::kLoadFromStorage); + EXPECT_EQ(PermissionStatus::GRANTED, file_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, file_path, HandleType::kFile, GrantType::kRead)); +} + +TEST_F(ChromeFileSystemAccessPermissionContextTest, + GetWritePermissionGrant_InheritFromAncestor) { + FileSystemAccessPermissionRequestManager::FromWebContents(web_contents_.get()) + ->set_auto_response_for_test(PermissionAction::GRANTED); + + auto dir_grant = permission_context()->GetWritePermissionGrant( + kTestOrigin, kTestPath, HandleType::kDirectory, UserAction::kOpen); + EXPECT_EQ(PermissionStatus::ASK, dir_grant->GetStatus()); + base::RunLoop loop; + dir_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop.Quit(); + })); + loop.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, dir_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, kTestPath, HandleType::kDirectory, GrantType::kWrite)); + + // A file in |dir_path|'s directory should be auto-granted permissions. + auto file_path = kTestPath.AppendASCII("baz"); + auto file_grant = permission_context()->GetWritePermissionGrant( + kTestOrigin, file_path, HandleType::kFile, UserAction::kLoadFromStorage); + EXPECT_EQ(PermissionStatus::GRANTED, file_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, file_path, HandleType::kFile, GrantType::kWrite)); +} + +TEST_F(ChromeFileSystemAccessPermissionContextTest, + DoNotInheritFromAncestorOfOppositeType) { + FileSystemAccessPermissionRequestManager::FromWebContents(web_contents_.get()) + ->set_auto_response_for_test(PermissionAction::GRANTED); + + auto dir_grant = permission_context()->GetReadPermissionGrant( + kTestOrigin, kTestPath, HandleType::kDirectory, UserAction::kOpen); + EXPECT_EQ(PermissionStatus::ASK, dir_grant->GetStatus()); + base::RunLoop loop; + dir_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop.Quit(); + })); + loop.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, dir_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, kTestPath, HandleType::kDirectory, GrantType::kRead)); + + // |dir_path| has read permission while we're asking for write permission, so + // do not auto-grant the permission. + auto file_path = kTestPath.AppendASCII("baz"); + auto file_grant = permission_context()->GetWritePermissionGrant( + kTestOrigin, file_path, HandleType::kFile, UserAction::kLoadFromStorage); + EXPECT_EQ(PermissionStatus::ASK, file_grant->GetStatus()); + EXPECT_FALSE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, file_path, HandleType::kFile, GrantType::kWrite)); +} + +TEST_F(ChromeFileSystemAccessPermissionContextTest, + GetReadPermissionGrant_InheritFromPersistedAncestor) { + FileSystemAccessPermissionRequestManager::FromWebContents(web_contents_.get()) + ->set_auto_response_for_test(PermissionAction::GRANTED); + + auto dir_grant = permission_context()->GetReadPermissionGrant( + kTestOrigin, kTestPath, HandleType::kDirectory, UserAction::kOpen); + EXPECT_EQ(PermissionStatus::ASK, dir_grant->GetStatus()); + base::RunLoop loop; + dir_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop.Quit(); + })); + loop.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, dir_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, kTestPath, HandleType::kDirectory, GrantType::kRead)); + + // Remove the active grant, but not the persisted permission. + dir_grant.reset(); + + // A file in |dir_path|'s directory should not be granted permission until + // permission is explicitly requested. + auto file_path = kTestPath.AppendASCII("baz"); + auto file_grant = permission_context()->GetReadPermissionGrant( + kTestOrigin, file_path, HandleType::kFile, UserAction::kLoadFromStorage); + EXPECT_EQ(PermissionStatus::ASK, file_grant->GetStatus()); + base::RunLoop loop2; + file_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kGrantedByPersistentPermission, + outcome); + loop2.Quit(); + })); + loop2.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, file_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, file_path, HandleType::kFile, GrantType::kRead)); +} + +TEST_F(ChromeFileSystemAccessPermissionContextTest, + GetWritePermissionGrant_InheritFromPersistedAncestor) { + FileSystemAccessPermissionRequestManager::FromWebContents(web_contents_.get()) + ->set_auto_response_for_test(PermissionAction::GRANTED); + + auto dir_grant = permission_context()->GetWritePermissionGrant( + kTestOrigin, kTestPath, HandleType::kDirectory, UserAction::kOpen); + EXPECT_EQ(PermissionStatus::ASK, dir_grant->GetStatus()); + base::RunLoop loop; + dir_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop.Quit(); + })); + loop.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, dir_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, kTestPath, HandleType::kDirectory, GrantType::kWrite)); + + // Remove the active grant, but not the persisted permission. + dir_grant.reset(); + + // A file in |dir_path|'s directory should not be granted permission until + // permission is explicitly requested. + auto file_path = kTestPath.AppendASCII("baz"); + auto file_grant = permission_context()->GetWritePermissionGrant( + kTestOrigin, file_path, HandleType::kFile, UserAction::kLoadFromStorage); + EXPECT_EQ(PermissionStatus::ASK, file_grant->GetStatus()); + base::RunLoop loop2; + file_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kGrantedByPersistentPermission, + outcome); + loop2.Quit(); + })); + loop2.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, file_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, file_path, HandleType::kFile, GrantType::kWrite)); +} + +TEST_F(ChromeFileSystemAccessPermissionContextTest, + DoNotInheritFromPersistedAncestorOfOppositeType) { + FileSystemAccessPermissionRequestManager::FromWebContents(web_contents_.get()) + ->set_auto_response_for_test(PermissionAction::GRANTED); + + auto dir_grant = permission_context()->GetReadPermissionGrant( + kTestOrigin, kTestPath, HandleType::kDirectory, UserAction::kOpen); + EXPECT_EQ(PermissionStatus::ASK, dir_grant->GetStatus()); + base::RunLoop loop; + dir_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop.Quit(); + })); + loop.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, dir_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, kTestPath, HandleType::kDirectory, GrantType::kRead)); + + // Remove the active grant, but not the persisted permission. + dir_grant.reset(); + + // |dir_path| has read permission while we're asking for write permission, so + // do not auto-grant the permission and do not grant via persisted permission. + auto file_path = kTestPath.AppendASCII("baz"); + auto file_grant = permission_context()->GetWritePermissionGrant( + kTestOrigin, file_path, HandleType::kFile, UserAction::kLoadFromStorage); + EXPECT_EQ(PermissionStatus::ASK, file_grant->GetStatus()); + base::RunLoop loop2; + file_grant->RequestPermission( + frame_id(), UserActivationState::kNotRequired, + base::BindLambdaForTesting([&](PermissionRequestOutcome outcome) { + EXPECT_EQ(PermissionRequestOutcome::kUserGranted, outcome); + loop2.Quit(); + })); + loop2.Run(); + EXPECT_EQ(PermissionStatus::GRANTED, file_grant->GetStatus()); + EXPECT_TRUE(permission_context_->HasPersistedPermissionForTesting( + kTestOrigin, file_path, HandleType::kFile, GrantType::kWrite)); +} + +TEST_F(ChromeFileSystemAccessPermissionContextTest, PersistedPermission_GrantExpired) { auto grant = permission_context()->GetWritePermissionGrant( kTestOrigin, kTestPath, HandleType::kFile, UserAction::kSave);
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 83a35832..eeb02a758 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -4613,7 +4613,9 @@ const char kLacrosSupportName[] = "Lacros support"; const char kLacrosSupportDescription[] = - "Support for the experimental lacros-chrome browser."; + "Support for the experimental lacros-chrome browser. Please note that the " + "first restart can take some time to setup lacros-chrome. Please DO NOT " + "attempt to turn off the device during the restart."; const char kLimitAltTabToActiveDeskName[] = "Limit Alt-Tab windows to active desk";
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index 358ad0e..84e403b 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -72,7 +72,7 @@ // Array of features exposed through the Java ChromeFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. chrome/, components/, etc). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &autofill::features::kAutofillCreditCardAuthentication, &autofill::features::kAutofillDownstreamCvcPromptUseGooglePayLogo, &autofill::features::kAutofillEnablePasswordInfoBarAccountIndicationFooter,
diff --git a/chrome/browser/media/router/providers/cast/app_activity_unittest.cc b/chrome/browser/media/router/providers/cast/app_activity_unittest.cc index 5d47e30..ae1656a1 100644 --- a/chrome/browser/media/router/providers/cast/app_activity_unittest.cc +++ b/chrome/browser/media/router/providers/cast/app_activity_unittest.cc
@@ -64,10 +64,8 @@ MediaRoute& route() const { return activity_->route_; } MockCastSessionClient* AddMockClient(const std::string& client_id) { - CastMediaSource source("dummySourceId", std::vector<CastAppInfo>()); - source.set_client_id(client_id); - activity_->AddClient(source, url::Origin(), tab_id_counter_++); - return MockCastSessionClient::instances().back(); + return CastActivityTestBase::AddMockClient(activity_.get(), client_id, + tab_id_counter_++); } int tab_id_counter_ = 239; // Arbitrary number.
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc index d456996a..a2498a5 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc +++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc
@@ -205,9 +205,11 @@ if (MediaSource(cast_source.source_id()).IsCastPresentationUrl()) { presentation_connection = activity_ptr->AddClient(cast_source, params.origin, tab_id); - activity_ptr->SendMessageToClient( - client_id, - CreateReceiverActionCastMessage(client_id, sink, hash_token_)); + if (!client_id.empty()) { + activity_ptr->SendMessageToClient( + client_id, + CreateReceiverActionCastMessage(client_id, sink, hash_token_)); + } } if (tab_id != -1) {
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_test_base.cc b/chrome/browser/media/router/providers/cast/cast_activity_test_base.cc index dadb4c7..a192223 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_test_base.cc +++ b/chrome/browser/media/router/providers/cast/cast_activity_test_base.cc
@@ -111,4 +111,14 @@ return std::make_unique<MockCastSessionClient>(client_id, origin, tab_id); } +MockCastSessionClient* CastActivityTestBase::AddMockClient( + CastActivity* activity, + const std::string& client_id, + int tab_id) { + CastMediaSource source("dummySourceId", std::vector<CastAppInfo>()); + source.set_client_id(client_id); + activity->AddClient(source, url::Origin(), tab_id); + return MockCastSessionClient::instances().back(); +} + } // namespace media_router
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_test_base.h b/chrome/browser/media/router/providers/cast/cast_activity_test_base.h index 4a29b6e..cc74733 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_test_base.h +++ b/chrome/browser/media/router/providers/cast/cast_activity_test_base.h
@@ -97,6 +97,11 @@ const url::Origin& origin, int tab_id) override; + // Adds a client to |activity| and returns a mock instance. + MockCastSessionClient* AddMockClient(CastActivity* activity, + const std::string& client_id, + int tab_id); + // TODO(crbug.com/954797): Factor out members also present in // CastActivityManagerTest. content::BrowserTaskEnvironment task_environment_;
diff --git a/chrome/browser/media/router/providers/cast/mirroring_activity.cc b/chrome/browser/media/router/providers/cast/mirroring_activity.cc index f67f8aff..7b8bfa84 100644 --- a/chrome/browser/media/router/providers/cast/mirroring_activity.cc +++ b/chrome/browser/media/router/providers/cast/mirroring_activity.cc
@@ -265,16 +265,6 @@ weak_ptr_factory_.GetWeakPtr(), route().media_route_id())); } -void MirroringActivity::SendMessageToClient( - const std::string& client_id, - blink::mojom::PresentationConnectionMessagePtr message) { - // A client exists if this is a site-initiated mirroring session. Given client - // ID is a Cast SDK concept, the client may not have an ID if it joined by - // directly using the Presentation API, and we wouldn't be able to distinguish - // them. We also do not expect the mirroring receiver to send any messages, so - // we drop them. -} - void MirroringActivity::OnAppMessage( const cast::channel::CastMessage& message) { if (!route_.is_local())
diff --git a/chrome/browser/media/router/providers/cast/mirroring_activity.h b/chrome/browser/media/router/providers/cast/mirroring_activity.h index 2ca6b41..ca1c8fb4 100644 --- a/chrome/browser/media/router/providers/cast/mirroring_activity.h +++ b/chrome/browser/media/router/providers/cast/mirroring_activity.h
@@ -64,9 +64,6 @@ void Send(mirroring::mojom::CastMessagePtr message) override; // CastActivity implementation - void SendMessageToClient( - const std::string& client_id, - blink::mojom::PresentationConnectionMessagePtr message) override; void OnAppMessage(const cast::channel::CastMessage& message) override; void OnInternalMessage(const cast_channel::InternalMessage& message) override;
diff --git a/chrome/browser/media/router/providers/cast/mirroring_activity_unittest.cc b/chrome/browser/media/router/providers/cast/mirroring_activity_unittest.cc index 40eac30..f822fcf 100644 --- a/chrome/browser/media/router/providers/cast/mirroring_activity_unittest.cc +++ b/chrome/browser/media/router/providers/cast/mirroring_activity_unittest.cc
@@ -17,6 +17,7 @@ #include "components/mirroring/mojom/session_parameters.mojom.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "testing/gmock/include/gmock/gmock.h" +#include "third_party/blink/public/mojom/presentation/presentation.mojom.h" using base::test::IsJson; using testing::_; @@ -372,4 +373,21 @@ message_json.value()))); } +// Site-initiated mirroring activities must be able to send messages to the +// client, which may be expecting to receive Cast protocol messages. +// See crbug.com/1078481 for context. +TEST_F(MirroringActivityTest, SendMessageToClient) { + MakeActivity(); + + static constexpr char kClientId[] = "theClientId"; + blink::mojom::PresentationConnectionMessagePtr message = + blink::mojom::PresentationConnectionMessage::NewMessage("\"theMessage\""); + auto* message_ptr = message.get(); + auto* client = AddMockClient(activity_.get(), kClientId, 1); + EXPECT_CALL(*client, SendMessageToClient).WillOnce([=](auto arg) { + EXPECT_EQ(message_ptr, arg.get()); + }); + activity_->SendMessageToClient(kClientId, std::move(message)); +} + } // namespace media_router
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc index a5c98c2..8e5fd2a 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -2840,9 +2840,8 @@ if (!entry) return false; - bool incognito = browser_context_->IsOffTheRecord(); return qrcode_generator::QRCodeGeneratorBubbleController:: - IsGeneratorAvailable(entry->GetURL(), incognito); + IsGeneratorAvailable(entry->GetURL()); } void RenderViewContextMenu::AppendQRCodeGeneratorItem(bool for_image,
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.html b/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.html index 7bc1e48..2183cc9 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.html +++ b/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.html
@@ -94,20 +94,26 @@ flex-direction: column; } - .bottom-buttons-container { + .buttons-common { + /* Always allocate height for buttons even a container is empty */ min-height: var(--oobe-button-height); + z-index: 1; + } + + :host([no-buttons]) .buttons-common { + display: none; + } + + .bottom-buttons-container { padding-bottom: var(--oobe-adaptive-dialog-buttons-vertical-padding); padding-inline-end: var(--oobe-adaptive-dialog-buttons-horizontal-padding); padding-inline-start: var(--oobe-adaptive-dialog-buttons-horizontal-padding); padding-top: var(--oobe-adaptive-dialog-buttons-vertical-padding); - z-index: 1; } .back-button-container { - /* Always allocate height for buttons even a container is empty */ - min-height: var(--oobe-button-height); padding-bottom: var(--oobe-adaptive-dialog-back-button-vertical-padding); padding-inline-end: @@ -115,7 +121,6 @@ padding-inline-start: var(--oobe-adaptive-dialog-back-button-horizontal-padding); padding-top: var(--oobe-adaptive-dialog-back-button-vertical-padding); - z-index: 1; } #oobe-icon-div ::slotted(hd-iron-icon), @@ -127,7 +132,7 @@ </style> <cr-lazy-render id="lazy"> <template> - <div class="back-button-container"> + <div class="buttons-common back-button-container"> <slot name="back-navigation"></slot> </div> <div id="mainContainer" class="layout vertical flex"> @@ -138,7 +143,8 @@ </div> </div> </div> - <div class="bottom-buttons-container vertical-mode-centering"> + <div class="buttons-common bottom-buttons-container + vertical-mode-centering"> <slot class="layout horizontal end-justified" name="bottom-buttons"> </slot> </div>
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.js b/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.js index 58dbcc1..f547b1c 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.js +++ b/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog.js
@@ -9,6 +9,14 @@ properties: { /** + * Supports dialog which is shown without buttons. + */ + noButtons: { + type: Boolean, + value: false, + }, + + /** * If set, prevents lazy instantiation of the dialog. */ noLazy: {
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog_old.js b/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog_old.js index 16aa599..1552516c 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog_old.js +++ b/chrome/browser/resources/chromeos/login/components/oobe_content_dialog/oobe_content_dialog_old.js
@@ -41,7 +41,7 @@ }, /** - * Supports loading dialog which is shown without buttons. + * Supports dialog which is shown without buttons. */ noButtons: { type: Boolean,
diff --git a/chrome/browser/resources/chromeos/login/gaia_dialog.html b/chrome/browser/resources/chromeos/login/gaia_dialog.html index 28c8b3b..6c8606b7 100644 --- a/chrome/browser/resources/chromeos/login/gaia_dialog.html +++ b/chrome/browser/resources/chromeos/login/gaia_dialog.html
@@ -120,8 +120,7 @@ <!-- As this dialog have pre-loading logic that require access to elements, dialog is marked as no-lazy. --> <oobe-content-dialog role="dialog" id="gaiaDialog" - has-buttons$="[[!isSamlSsoVisible]]" - no-footer-padding no-lazy> + no-buttons$="[[isSamlSsoVisible]]" no-footer-padding no-lazy> <div slot="content" id="signin-frame-container" hideshadows$="[[isPopUpOverlayVisible_]]" class="flex layout vertical">
diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js index fcdf0ecd..eeb217c 100644 --- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js +++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
@@ -48,6 +48,12 @@ SAML_INTERSTITIAL: 'saml-interstitial', }; +/** + * Steps that could be the first one in the flow. + */ +const POSSIBLE_FIRST_SIGNIN_STEPS = + [DialogMode.GAIA, DialogMode.GAIA_LOADING, DialogMode.SAML_INTERSTITIAL]; + Polymer({ is: 'gaia-signin-element', @@ -350,8 +356,8 @@ */ isFirstSigninStep(uiStep, canGaiaGoBack, isSaml) { return !this.isClosable_() && - (uiStep == DialogMode.GAIA || uiStep == DialogMode.GAIA_LOADING) && - !canGaiaGoBack && !isSaml; + POSSIBLE_FIRST_SIGNIN_STEPS.includes(uiStep) && !canGaiaGoBack && + !isSaml; }, onIsFirstSigninStepChanged(isFirstSigninStep) {
diff --git a/chrome/browser/resources/new_tab_page/modules/modules.html b/chrome/browser/resources/new_tab_page/modules/modules.html index 8ee4b27..e03ac22 100644 --- a/chrome/browser/resources/new_tab_page/modules/modules.html +++ b/chrome/browser/resources/new_tab_page/modules/modules.html
@@ -16,7 +16,7 @@ <ntp-module-wrapper module="[[item]]" on-dismiss-module="onDismissModule_" on-disable-module="onDisableModule_" - hidden="[[moduleDisabled_(item.id, + hidden="[[moduleDisabled_(item.descriptor.id, dismissedModules_.*, disabledModules_)]]"> </ntp-module-wrapper>
diff --git a/chrome/browser/resources/read_later/read_later_item.js b/chrome/browser/resources/read_later/read_later_item.js index 2f1baf5..265ad52 100644 --- a/chrome/browser/resources/read_later/read_later_item.js +++ b/chrome/browser/resources/read_later/read_later_item.js
@@ -10,18 +10,26 @@ import './icons.js'; import './read_later_shared_style.js'; -import {MouseHoverableElement} from 'chrome://resources/cr_elements/mouse_hoverable_mixin.js'; +import {MouseHoverableMixin, MouseHoverableMixinInterface} from 'chrome://resources/cr_elements/mouse_hoverable_mixin.js'; import {assertNotReached} from 'chrome://resources/js/assert.m.js'; import {getFaviconForPageURL} from 'chrome://resources/js/icon.m.js'; -import {html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ReadLaterApiProxy, ReadLaterApiProxyImpl} from './read_later_api_proxy.js'; /** @type {!Set<string>} */ const navigationKeys = new Set([' ', 'Enter', 'ArrowRight', 'ArrowLeft']); +/** + * @constructor + * @extends PolymerElement + * @implements {MouseHoverableMixinInterface} + * @appliesMixin MouseHoverableMixin + */ +const ReadLaterItemElementBase = MouseHoverableMixin(PolymerElement); + /** @polymer */ -export class ReadLaterItemElement extends MouseHoverableElement { +export class ReadLaterItemElement extends ReadLaterItemElementBase { static get is() { return 'read-later-item'; }
diff --git a/chrome/browser/resources/tab_search/tab_search_item.js b/chrome/browser/resources/tab_search/tab_search_item.js index e7fe30d..bdb93fd 100644 --- a/chrome/browser/resources/tab_search/tab_search_item.js +++ b/chrome/browser/resources/tab_search/tab_search_item.js
@@ -9,17 +9,25 @@ import 'chrome://resources/cr_elements/shared_vars_css.m.js'; import './strings.m.js'; -import {MouseHoverableElement} from 'chrome://resources/cr_elements/mouse_hoverable_mixin.js'; +import {MouseHoverableMixin, MouseHoverableMixinInterface} from 'chrome://resources/cr_elements/mouse_hoverable_mixin.js'; import {getFaviconForPageURL} from 'chrome://resources/js/icon.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {highlight} from 'chrome://resources/js/search_highlight_utils.js'; -import {html} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ariaLabel, TabData, TabItemType} from './tab_data.js'; import {Tab} from './tab_search.mojom-webui.js'; +/** + * @constructor + * @extends PolymerElement + * @implements {MouseHoverableMixinInterface} + * @appliesMixin MouseHoverableMixin + */ +const TabSearchItemBase = MouseHoverableMixin(PolymerElement); + /** @polymer */ -export class TabSearchItem extends MouseHoverableElement { +export class TabSearchItem extends TabSearchItemBase { static get is() { return 'tab-search-item'; }
diff --git a/chrome/browser/signin/chrome_signin_helper.cc b/chrome/browser/signin/chrome_signin_helper.cc index 7329555..db327750 100644 --- a/chrome/browser/signin/chrome_signin_helper.cc +++ b/chrome/browser/signin/chrome_signin_helper.cc
@@ -32,6 +32,7 @@ #include "chrome/browser/signin/header_modification_delegate_impl.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/process_dice_header_delegate_impl.h" +#include "chrome/browser/signin/signin_features.h" #include "chrome/browser/tab_contents/tab_util.h" #include "chrome/browser/ui/webui/signin/login_ui_service.h" #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" @@ -93,6 +94,11 @@ const void* const kRequestDestructionObserverUserDataKey = &kRequestDestructionObserverUserDataKey; +const char kGoogleRemoveLocalAccountResponseHeader[] = + "Google-Accounts-RemoveLocalAccount"; + +const char kRemoveLocalAccountObfuscatedIDAttrName[] = "obfuscatedid"; + // TODO(droger): Remove this delay when the Dice implementation is finished on // the server side. int g_dice_account_reconcilor_blocked_delay_ms = 1000; @@ -506,6 +512,59 @@ } #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) +std::string ParseGaiaIdFromRemoveLocalAccountResponseHeader( + const net::HttpResponseHeaders* response_headers) { + if (!response_headers) + return std::string(); + + std::string header_value; + if (!response_headers->GetNormalizedHeader( + kGoogleRemoveLocalAccountResponseHeader, &header_value)) { + return std::string(); + } + + const SigninHeaderHelper::ResponseHeaderDictionary header_dictionary = + SigninHeaderHelper::ParseAccountConsistencyResponseHeader(header_value); + + std::string gaia_id; + const auto it = + header_dictionary.find(kRemoveLocalAccountObfuscatedIDAttrName); + if (it != header_dictionary.end()) { + // The Gaia ID is wrapped in quotes. + base::TrimString(it->second, "\"", &gaia_id); + } + return gaia_id; +} + +void ProcessRemoveLocalAccountResponseHeaderIfExists(ResponseAdapter* response, + bool is_off_the_record) { + CHECK(gaia::IsGaiaSignonRealm(response->GetOrigin())); + + if (is_off_the_record) + return; + + const std::string gaia_id = + ParseGaiaIdFromRemoveLocalAccountResponseHeader(response->GetHeaders()); + + if (gaia_id.empty()) + return; + + content::WebContents* web_contents = response->GetWebContentsGetter().Run(); + // The tab could have just closed. Technically, it would be possible to + // refactor the code to pass around the profile by other means, but this + // should be rare enough to be worth supporting. + if (!web_contents) + return; + + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + DCHECK(!profile->IsOffTheRecord()); + + IdentityManagerFactory::GetForProfile(profile) + ->GetAccountsCookieMutator() + ->RemoveLoggedOutAccountByGaiaId(gaia_id); +} + } // namespace ChromeRequestAdapter::ChromeRequestAdapter( @@ -604,6 +663,16 @@ // refresh token, on sign-out just follow the sign-out URL. ProcessDiceResponseHeaderIfExists(response, is_off_the_record); #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) + + if (base::FeatureList::IsEnabled(kProcessGaiaRemoveLocalAccountHeader)) { + ProcessRemoveLocalAccountResponseHeaderIfExists(response, + is_off_the_record); + } +} + +std::string ParseGaiaIdFromRemoveLocalAccountResponseHeaderForTesting( + const net::HttpResponseHeaders* response_headers) { + return ParseGaiaIdFromRemoveLocalAccountResponseHeader(response_headers); } } // namespace signin
diff --git a/chrome/browser/signin/chrome_signin_helper.h b/chrome/browser/signin/chrome_signin_helper.h index 057d795..8bfb852 100644 --- a/chrome/browser/signin/chrome_signin_helper.h +++ b/chrome/browser/signin/chrome_signin_helper.h
@@ -114,6 +114,12 @@ const GURL& redirect_url, bool is_off_the_record); +// Parses and returns an account ID (Gaia ID) from HTTP response header +// Google-Accounts-RemoveLocalAccount. Returns an empty string if parsing +// failed. Exposed for testing purposes. +std::string ParseGaiaIdFromRemoveLocalAccountResponseHeaderForTesting( + const net::HttpResponseHeaders* response_headers); + } // namespace signin #endif // CHROME_BROWSER_SIGNIN_CHROME_SIGNIN_HELPER_H_
diff --git a/chrome/browser/signin/chrome_signin_helper_unittest.cc b/chrome/browser/signin/chrome_signin_helper_unittest.cc index 33b95df5..14f379c 100644 --- a/chrome/browser/signin/chrome_signin_helper_unittest.cc +++ b/chrome/browser/signin/chrome_signin_helper_unittest.cc
@@ -157,3 +157,25 @@ signin::kManageAccountsHeaderReceivedUserDataKey)); } #endif // BUILDFLAG(ENABLE_MIRROR) || BUILDFLAG(IS_CHROMEOS_ASH) + +TEST_F(ChromeSigninHelperTest, + ParseGaiaIdFromRemoveLocalAccountResponseHeader) { + EXPECT_EQ("123456", + signin::ParseGaiaIdFromRemoveLocalAccountResponseHeaderForTesting( + TestResponseAdapter("Google-Accounts-RemoveLocalAccount", + "obfuscatedid=\"123456\"", + /*is_main_frame=*/false) + .GetHeaders())); + EXPECT_EQ("123456", + signin::ParseGaiaIdFromRemoveLocalAccountResponseHeaderForTesting( + TestResponseAdapter("Google-Accounts-RemoveLocalAccount", + "obfuscatedid=\"123456\",foo=\"bar\"", + /*is_main_frame=*/false) + .GetHeaders())); + EXPECT_EQ( + "", + signin::ParseGaiaIdFromRemoveLocalAccountResponseHeaderForTesting( + TestResponseAdapter("Google-Accounts-RemoveLocalAccount", "malformed", + /*is_main_frame=*/false) + .GetHeaders())); +}
diff --git a/chrome/browser/signin/signin_features.cc b/chrome/browser/signin/signin_features.cc index 04c9c495..290d7f1 100644 --- a/chrome/browser/signin/signin_features.cc +++ b/chrome/browser/signin/signin_features.cc
@@ -8,3 +8,8 @@ const base::Feature kDiceWebSigninInterceptionFeature{ "DiceWebSigninInterception", base::FEATURE_DISABLED_BY_DEFAULT}; #endif // ENABLE_DICE_SUPPORT + +// Enables the client-side processing of the HTTP response header +// Google-Accounts-RemoveLocalAccount. +const base::Feature kProcessGaiaRemoveLocalAccountHeader{ + "ProcessGaiaRemoveLocalAccountHeader", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/browser/signin/signin_features.h b/chrome/browser/signin/signin_features.h index 6b258b77..9b200fcd 100644 --- a/chrome/browser/signin/signin_features.h +++ b/chrome/browser/signin/signin_features.h
@@ -12,4 +12,6 @@ extern const base::Feature kDiceWebSigninInterceptionFeature; #endif // ENABLE_DICE_SUPPORT +extern const base::Feature kProcessGaiaRemoveLocalAccountHeader; + #endif // CHROME_BROWSER_SIGNIN_SIGNIN_FEATURES_H_
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index bf13fec5..4433cc6 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -3501,11 +3501,11 @@ "autofill/payments/save_upi_bubble_controller.h", "autofill/payments/save_upi_bubble_controller_impl.cc", "autofill/payments/save_upi_bubble_controller_impl.h", - "autofill/save_address_profile_bubble_controller.h", - "autofill/save_address_profile_bubble_controller_impl.cc", - "autofill/save_address_profile_bubble_controller_impl.h", "autofill/save_address_profile_icon_controller.cc", "autofill/save_address_profile_icon_controller.h", + "autofill/save_update_address_profile_bubble_controller.h", + "autofill/save_update_address_profile_bubble_controller_impl.cc", + "autofill/save_update_address_profile_bubble_controller_impl.h", "bubble_anchor_util.h", "manifest_web_app_browser_controller.cc", "manifest_web_app_browser_controller.h",
diff --git a/chrome/browser/ui/android/layouts/java/src/org/chromium/chrome/browser/layouts/LayoutType.java b/chrome/browser/ui/android/layouts/java/src/org/chromium/chrome/browser/layouts/LayoutType.java index f4d4cd0..212219b8 100644 --- a/chrome/browser/ui/android/layouts/java/src/org/chromium/chrome/browser/layouts/LayoutType.java +++ b/chrome/browser/ui/android/layouts/java/src/org/chromium/chrome/browser/layouts/LayoutType.java
@@ -10,14 +10,16 @@ import java.lang.annotation.RetentionPolicy; /** - * The type info of the Layout. + * The type info of the Layout. These types are bit flags, so they can be or-ed together to test for + * multiple. */ @IntDef({LayoutType.BROWSING, LayoutType.TAB_SWITCHER, LayoutType.TOOLBAR_SWIPE, LayoutType.SIMPLE_ANIMATION}) @Retention(RetentionPolicy.SOURCE) public @interface LayoutType { - int BROWSING = 0; - int TAB_SWITCHER = 1; - int TOOLBAR_SWIPE = 2; - int SIMPLE_ANIMATION = 3; + int BROWSING = 1; + int TAB_SWITCHER = 2; + int TOOLBAR_SWIPE = 4; + int SIMPLE_ANIMATION = 8; + // Next layout type should be 16. }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java index 9170055a..a32c11f2 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java
@@ -14,7 +14,6 @@ import org.chromium.chrome.browser.layouts.CompositorModelChangeProcessor; import org.chromium.chrome.browser.layouts.EventFilter; import org.chromium.chrome.browser.layouts.LayoutManager; -import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.layouts.SceneOverlay; import org.chromium.chrome.browser.layouts.components.VirtualView; import org.chromium.chrome.browser.layouts.scene_layer.SceneOverlayLayer; @@ -46,8 +45,8 @@ ObservableSupplier<Tab> tabSupplier, BrowserControlsStateProvider browserControlsStateProvider, Supplier<ResourceManager> resourceManagerSupplier, - TopUiThemeColorProvider topUiThemeColorProvider, - @LayoutType int layoutToShowOn, boolean isVisibilityManuallyControlled) { + TopUiThemeColorProvider topUiThemeColorProvider, int layoutsToShowOn, + boolean isVisibilityManuallyControlled) { mModel = new PropertyModel.Builder(TopToolbarOverlayProperties.ALL_KEYS) .with(TopToolbarOverlayProperties.RESOURCE_ID, R.id.control_container) .with(TopToolbarOverlayProperties.URL_BAR_RESOURCE_ID, @@ -65,7 +64,7 @@ mMediator = new TopToolbarOverlayMediator(mModel, context, layoutManager, progressInfoCallback, tabSupplier, browserControlsStateProvider, - topUiThemeColorProvider, layoutToShowOn, isVisibilityManuallyControlled); + topUiThemeColorProvider, layoutsToShowOn, isVisibilityManuallyControlled); } /**
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator.java index b7ecf0763..2d199ee 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator.java
@@ -75,8 +75,8 @@ Callback<ClipDrawableProgressBar.DrawingInfo> progressInfoCallback, ObservableSupplier<Tab> tabSupplier, BrowserControlsStateProvider browserControlsStateProvider, - TopUiThemeColorProvider topUiThemeColorProvider, - @LayoutType int layoutToShowOn, boolean manualVisibilityControl) { + TopUiThemeColorProvider topUiThemeColorProvider, int layoutsToShowOn, + boolean manualVisibilityControl) { mContext = context; mLayoutStateProvider = layoutStateProvider; mProgressInfoCallback = progressInfoCallback; @@ -88,7 +88,7 @@ mSceneChangeObserver = new LayoutStateObserver() { @Override public void onStartedShowing(@LayoutType int layout, boolean showToolbar) { - mIsOnValidLayout = layout == layoutToShowOn; + mIsOnValidLayout = (layout & layoutsToShowOn) > 0; updateVisibility(); } };
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_browsertest_base.h b/chrome/browser/ui/ash/holding_space/holding_space_browsertest_base.h index 4ed5278..ae45fef 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_browsertest_base.h +++ b/chrome/browser/ui/ash/holding_space/holding_space_browsertest_base.h
@@ -27,6 +27,7 @@ class HoldingSpaceItem; class HoldingSpaceTestApi; +// TODO(crbug.com/1202947): Remove deprecated methods. // Base class for holding space browser tests. Subclasses // SystemWebAppBrowserTestBase for the ability to test with the Media App, which // is the default handler for files opened from the holding space. @@ -46,15 +47,19 @@ // Returns the currently active profile. Profile* GetProfile(); + // DEPRECATED: Use `test_api().Show()`. // Shows holding space UI. This is a no-op if it's already showing. void Show(); + // DEPRECATED: Use `test_api().Close()`. // Closes holding space UI. This is a no-op if it's already closed. void Close(); + // DEPRECATED: Use `test_api().IsShowing()`. // Returns true if holding space UI is showing, false otherwise. bool IsShowing(); + // DEPRECATED: Use `test_api().IsShowingInShelf()`. // Returns true if the holding space tray is showing in the shelf, false // otherwise. bool IsShowingInShelf(); @@ -89,35 +94,45 @@ base::FilePath CreateFile( const base::Optional<std::string>& extension = base::nullopt); + // DEPRECATED: Use `test_api().GetDownloadChips()`. // Returns the collection of download chips in holding space UI. // If holding space UI is not visible, an empty collection is returned. std::vector<views::View*> GetDownloadChips(); + // DEPRECATED: Use `test_api().GetPinnedFileChips()`. // Returns the collection of pinned file chips in holding space UI. // If holding space UI is not visible, an empty collection is returned. std::vector<views::View*> GetPinnedFileChips(); + // DEPRECATED: Use `test_api().GetScreenCaptureViews()`. // Returns the collection of screen capture views in holding space UI. // If holding space UI is not visible, an empty collection is returned. std::vector<views::View*> GetScreenCaptureViews(); + // DEPRECATED: Use `test_api().GetTray()`. // Returns the holding space tray in the shelf. views::View* GetTray(); + // DEPRECATED: Use `test_api().GetTrayDropTargetOverlay()`. // Returns the view drawn on top of the holding space tray to indicate that // it is a drop target capable of handling the current drag payload. views::View* GetTrayDropTargetOverlay(); + // DEPRECATED: Use `test_api().Get[Default|Previews]TrayIcon()`. // Getter for the holding space tray icons in the shelf. views::View* GetDefaultTrayIcon(); views::View* GetPreviewsTrayIcon(); + // DEPRECATED: Use `test_api().RecentFilesBubbleShown()`. // Returns whether the recent files bubble is shown. bool RecentFilesBubbleShown() const; // Requests lock screen, waiting to return until session state is locked. void RequestAndAwaitLockScreen(); + // Returns the holding space test API. + HoldingSpaceTestApi& test_api() { return *test_api_; } + private: base::test::ScopedFeatureList scoped_feature_list_; std::unique_ptr<HoldingSpaceTestApi> test_api_;
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc b/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc index 3fb5130..4974410a 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/ash/holding_space/holding_space_browsertest_base.h" +#include <set> #include <unordered_map> #include <vector> @@ -1008,22 +1009,27 @@ observer.Observe(HoldingSpaceController::Get()->model()); { + // Cache `item_id` of the download item to be removed. + const std::string item_id = + test_api().GetHoldingSpaceItemId(download_chips.front()); + EXPECT_EQ(test_api().GetHoldingSpaceItemView(download_chips, item_id), + download_chips.front()); + base::RunLoop run_loop; EXPECT_CALL(mock, OnHoldingSpaceItemsRemoved) .WillOnce([&](const std::vector<const HoldingSpaceItem*>& items) { ASSERT_EQ(items.size(), 1u); + EXPECT_EQ(items[0]->id(), item_id); run_loop.Quit(); }); - const size_t download_chips_size = download_chips.size(); - // Press `ENTER` to remove the selected download item. PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); run_loop.Run(); - // Verify a download chip has been removed. + // Verify the download chip has been removed. download_chips = GetDownloadChips(); - ASSERT_EQ(download_chips.size(), download_chips_size - 1); + EXPECT_FALSE(test_api().GetHoldingSpaceItemView(download_chips, item_id)); } std::vector<views::View*> screen_capture_views = GetScreenCaptureViews(); @@ -1038,55 +1044,90 @@ ASSERT_TRUE(SelectMenuItemWithCommandId(HoldingSpaceCommandId::kRemoveItem)); { + // Cache `item_id` of the screen capture item to be removed. + const std::string item_id = + test_api().GetHoldingSpaceItemId(screen_capture_views.front()); + EXPECT_EQ(test_api().GetHoldingSpaceItemView(screen_capture_views, item_id), + screen_capture_views.front()); + base::RunLoop run_loop; EXPECT_CALL(mock, OnHoldingSpaceItemsRemoved) .WillOnce([&](const std::vector<const HoldingSpaceItem*>& items) { ASSERT_EQ(items.size(), 1u); + EXPECT_EQ(items[0]->id(), item_id); run_loop.Quit(); }); - const size_t screen_capture_views_size = screen_capture_views.size(); - // Press `ENTER` to remove the selected screen capture item. PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); run_loop.Run(); - // Verify a screen capture view has been removed. + // Verify the screen capture view has been removed. screen_capture_views = GetScreenCaptureViews(); - ASSERT_EQ(screen_capture_views.size(), screen_capture_views_size - 1); + EXPECT_FALSE( + test_api().GetHoldingSpaceItemView(screen_capture_views, item_id)); } - // Select all download items. - for (views::View* download_chip : download_chips) - Click(download_chip, ui::EF_SHIFT_DOWN); + // Remove all items in the recent files bubble. Note that not all download + // items or screen capture items that exist may be visible at the same time + // due to max visibility count restrictions. + while (!download_chips.empty() || !screen_capture_views.empty()) { + // Select all visible download items. + for (views::View* download_chip : download_chips) + Click(download_chip, ui::EF_CONTROL_DOWN); - // Select all screen capture items. - for (views::View* screen_capture_view : screen_capture_views) - Click(screen_capture_view, ui::EF_SHIFT_DOWN); + // Select all visible screen capture items. + for (views::View* screen_capture_view : screen_capture_views) + Click(screen_capture_view, ui::EF_CONTROL_DOWN); - // Show the context menu. There should be a `kRemoveItem` command. - RightClick(download_chips.front()); - ASSERT_TRUE(views::MenuController::GetActiveInstance()); - ASSERT_TRUE(SelectMenuItemWithCommandId(HoldingSpaceCommandId::kRemoveItem)); + // Show the context menu. There should be a `kRemoveItem` command. + RightClick(download_chips.size() ? download_chips.front() + : screen_capture_views.front()); + ASSERT_TRUE(views::MenuController::GetActiveInstance()); + ASSERT_TRUE( + SelectMenuItemWithCommandId(HoldingSpaceCommandId::kRemoveItem)); - { - const size_t recent_files_size = - download_chips.size() + screen_capture_views.size(); + { + // Cache `item_ids` of download and screen capture items to be removed. + std::set<std::string> item_ids; + for (const views::View* download_chip : download_chips) { + auto it = + item_ids.insert(test_api().GetHoldingSpaceItemId(download_chip)); + EXPECT_EQ(test_api().GetHoldingSpaceItemView(download_chips, *it.first), + download_chip); + } + for (const views::View* screen_capture_view : screen_capture_views) { + auto it = item_ids.insert( + test_api().GetHoldingSpaceItemId(screen_capture_view)); + EXPECT_EQ( + test_api().GetHoldingSpaceItemView(screen_capture_views, *it.first), + screen_capture_view); + } - base::RunLoop run_loop; - EXPECT_CALL(mock, OnHoldingSpaceItemsRemoved) - .WillOnce([&](const std::vector<const HoldingSpaceItem*>& items) { - ASSERT_EQ(items.size(), recent_files_size); - run_loop.Quit(); - }); + base::RunLoop run_loop; + EXPECT_CALL(mock, OnHoldingSpaceItemsRemoved) + .WillOnce([&](const std::vector<const HoldingSpaceItem*>& items) { + ASSERT_EQ(items.size(), item_ids.size()); + for (const HoldingSpaceItem* item : items) + ASSERT_TRUE(base::Contains(item_ids, item->id())); + run_loop.Quit(); + }); - // Press `ENTER` to remove the selected items. - PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); - run_loop.Run(); + // Press `ENTER` to remove the selected items. + PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); + run_loop.Run(); - // Verify all download chips and screen capture views have been removed. - ASSERT_EQ(GetDownloadChips().size(), 0u); - ASSERT_EQ(GetScreenCaptureViews().size(), 0u); + // Verify all previously visible download chips and screen capture views + // have been removed. + download_chips = GetDownloadChips(); + screen_capture_views = GetScreenCaptureViews(); + for (const std::string& item_id : item_ids) { + EXPECT_FALSE( + test_api().GetHoldingSpaceItemView(download_chips, item_id)); + EXPECT_FALSE( + test_api().GetHoldingSpaceItemView(screen_capture_views, item_id)); + } + } } // The recent files bubble should be empty and therefore hidden.
diff --git a/chrome/browser/ui/autofill/autofill_bubble_handler.h b/chrome/browser/ui/autofill/autofill_bubble_handler.h index 2a17ef16..52ab722 100644 --- a/chrome/browser/ui/autofill/autofill_bubble_handler.h +++ b/chrome/browser/ui/autofill/autofill_bubble_handler.h
@@ -15,7 +15,7 @@ class AutofillBubbleBase; class LocalCardMigrationBubbleController; class OfferNotificationBubbleController; -class SaveAddressProfileBubbleController; +class SaveUpdateAddressProfileBubbleController; class EditAddressProfileDialogController; class SaveCardBubbleController; class SaveUPIBubble; @@ -49,12 +49,12 @@ virtual AutofillBubbleBase* ShowSaveAddressProfileBubble( content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) = 0; virtual AutofillBubbleBase* ShowUpdateAddressProfileBubble( content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) = 0; virtual AutofillBubbleBase* ShowEditAddressProfileDialog(
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc index ca206a19..588b3cc 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -33,7 +33,7 @@ #include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h" #include "chrome/browser/ui/autofill/payments/create_card_unmask_prompt_view.h" #include "chrome/browser/ui/autofill/payments/credit_card_scanner_controller.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h" #include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/page_info/page_info_dialog.h" #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" @@ -538,9 +538,11 @@ save_address_profile_flow_manager_.OfferSave(web_contents(), profile, std::move(callback)); #else - SaveAddressProfileBubbleControllerImpl::CreateForWebContents(web_contents()); - SaveAddressProfileBubbleControllerImpl* controller = - SaveAddressProfileBubbleControllerImpl::FromWebContents(web_contents()); + SaveUpdateAddressProfileBubbleControllerImpl::CreateForWebContents( + web_contents()); + SaveUpdateAddressProfileBubbleControllerImpl* controller = + SaveUpdateAddressProfileBubbleControllerImpl::FromWebContents( + web_contents()); controller->OfferSave(profile, original_profile, std::move(callback)); #endif }
diff --git a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_browsertest.cc b/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_browsertest.cc index 9cb3037..9524daf 100644 --- a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_browsertest.cc +++ b/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_browsertest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h" #include "base/callback_helpers.h" #include "chrome/browser/ui/autofill/chrome_autofill_client.h" @@ -15,9 +15,10 @@ namespace autofill { -class SaveAddressProfileBubbleControllerImplTest : public DialogBrowserTest { +class SaveUpdateAddressProfileBubbleControllerImplTest + : public DialogBrowserTest { public: - SaveAddressProfileBubbleControllerImplTest() { + SaveUpdateAddressProfileBubbleControllerImplTest() { feature_list_.InitAndEnableFeature( features::kAutofillAddressProfileSavePrompt); } @@ -35,31 +36,33 @@ autofill_client->ConfirmSaveAddressProfile(test::GetFullProfile(), /*original_profile=*/nullptr, base::DoNothing()); - controller_ = - SaveAddressProfileBubbleControllerImpl::FromWebContents(web_contents); + controller_ = SaveUpdateAddressProfileBubbleControllerImpl::FromWebContents( + web_contents); DCHECK(controller_); } - SaveAddressProfileBubbleControllerImpl* controller() { return controller_; } + SaveUpdateAddressProfileBubbleControllerImpl* controller() { + return controller_; + } private: - SaveAddressProfileBubbleControllerImpl* controller_ = nullptr; + SaveUpdateAddressProfileBubbleControllerImpl* controller_ = nullptr; base::test::ScopedFeatureList feature_list_; }; -IN_PROC_BROWSER_TEST_F(SaveAddressProfileBubbleControllerImplTest, +IN_PROC_BROWSER_TEST_F(SaveUpdateAddressProfileBubbleControllerImplTest, InvokeUi_Save) { ShowAndVerifyUi(); } -IN_PROC_BROWSER_TEST_F(SaveAddressProfileBubbleControllerImplTest, +IN_PROC_BROWSER_TEST_F(SaveUpdateAddressProfileBubbleControllerImplTest, InvokeUi_SaveCloseThenReopen) { ShowAndVerifyUi(); controller()->OnBubbleClosed(); ShowAndVerifyUi(); } -IN_PROC_BROWSER_TEST_F(SaveAddressProfileBubbleControllerImplTest, +IN_PROC_BROWSER_TEST_F(SaveUpdateAddressProfileBubbleControllerImplTest, CloseTabWhileBubbleIsOpen) { ShowAndVerifyUi(); content::WebContents* tab =
diff --git a/chrome/browser/ui/autofill/save_address_profile_icon_controller.cc b/chrome/browser/ui/autofill/save_address_profile_icon_controller.cc index 4fe6c90..9387bf5 100644 --- a/chrome/browser/ui/autofill/save_address_profile_icon_controller.cc +++ b/chrome/browser/ui/autofill/save_address_profile_icon_controller.cc
@@ -4,7 +4,7 @@ #include "chrome/browser/ui/autofill/save_address_profile_icon_controller.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h" namespace autofill { @@ -14,7 +14,8 @@ if (!web_contents) return nullptr; - return SaveAddressProfileBubbleControllerImpl::FromWebContents(web_contents); + return SaveUpdateAddressProfileBubbleControllerImpl::FromWebContents( + web_contents); } } // namespace autofill
diff --git a/chrome/browser/ui/autofill/save_address_profile_bubble_controller.h b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h similarity index 67% rename from chrome/browser/ui/autofill/save_address_profile_bubble_controller.h rename to chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h index 88ecc1c..5bd4fb7a 100644 --- a/chrome/browser/ui/autofill/save_address_profile_bubble_controller.h +++ b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_AUTOFILL_SAVE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_H_ -#define CHROME_BROWSER_UI_AUTOFILL_SAVE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_H_ +#ifndef CHROME_BROWSER_UI_AUTOFILL_SAVE_UPDATE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_H_ +#define CHROME_BROWSER_UI_AUTOFILL_SAVE_UPDATE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_H_ #include "components/autofill/core/browser/autofill_client.h" @@ -11,9 +11,9 @@ // Interface that exposes controller functionality to SaveAddressProfileView // bubble. -class SaveAddressProfileBubbleController { +class SaveUpdateAddressProfileBubbleController { public: - virtual ~SaveAddressProfileBubbleController() = default; + virtual ~SaveUpdateAddressProfileBubbleController() = default; virtual std::u16string GetWindowTitle() const = 0; virtual const AutofillProfile& GetProfileToSave() const = 0; @@ -26,4 +26,4 @@ } // namespace autofill -#endif // CHROME_BROWSER_UI_AUTOFILL_SAVE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_H_ +#endif // CHROME_BROWSER_UI_AUTOFILL_SAVE_UPDATE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_H_
diff --git a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.cc b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc similarity index 71% rename from chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.cc rename to chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc index 87280c6..b05b959a 100644 --- a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.cc +++ b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h" #include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" @@ -15,17 +15,18 @@ namespace autofill { -SaveAddressProfileBubbleControllerImpl::SaveAddressProfileBubbleControllerImpl( - content::WebContents* web_contents) +SaveUpdateAddressProfileBubbleControllerImpl:: + SaveUpdateAddressProfileBubbleControllerImpl( + content::WebContents* web_contents) : AutofillBubbleControllerBase(web_contents) { DCHECK(base::FeatureList::IsEnabled( features::kAutofillAddressProfileSavePrompt)); } -SaveAddressProfileBubbleControllerImpl:: - ~SaveAddressProfileBubbleControllerImpl() = default; +SaveUpdateAddressProfileBubbleControllerImpl:: + ~SaveUpdateAddressProfileBubbleControllerImpl() = default; -void SaveAddressProfileBubbleControllerImpl::OfferSave( +void SaveUpdateAddressProfileBubbleControllerImpl::OfferSave( const AutofillProfile& profile, const AutofillProfile* original_profile, AutofillClient::AddressProfileSavePromptCallback @@ -41,23 +42,24 @@ Show(); } -std::u16string SaveAddressProfileBubbleControllerImpl::GetWindowTitle() const { +std::u16string SaveUpdateAddressProfileBubbleControllerImpl::GetWindowTitle() + const { // TODO(crbug.com/1167060): Use ineternationalized string upon having final // strings. return original_profile_ ? u"Update Address?" : u"Save Address?"; } const AutofillProfile& -SaveAddressProfileBubbleControllerImpl::GetProfileToSave() const { +SaveUpdateAddressProfileBubbleControllerImpl::GetProfileToSave() const { return address_profile_; } const AutofillProfile* -SaveAddressProfileBubbleControllerImpl::GetOriginalProfile() const { +SaveUpdateAddressProfileBubbleControllerImpl::GetOriginalProfile() const { return base::OptionalOrNullptr(original_profile_); } -void SaveAddressProfileBubbleControllerImpl::OnUserDecision( +void SaveUpdateAddressProfileBubbleControllerImpl::OnUserDecision( AutofillClient::SaveAddressProfileOfferUserDecision decision) { set_bubble_view(nullptr); @@ -65,7 +67,7 @@ .Run(decision, address_profile_); } -void SaveAddressProfileBubbleControllerImpl::OnEditButtonClicked() { +void SaveUpdateAddressProfileBubbleControllerImpl::OnEditButtonClicked() { HideBubble(); EditAddressProfileDialogControllerImpl::CreateForWebContents(web_contents()); EditAddressProfileDialogControllerImpl* controller = @@ -74,12 +76,12 @@ std::move(address_profile_save_prompt_callback_)); } -void SaveAddressProfileBubbleControllerImpl::OnBubbleClosed() { +void SaveUpdateAddressProfileBubbleControllerImpl::OnBubbleClosed() { set_bubble_view(nullptr); UpdatePageActionIcon(); } -void SaveAddressProfileBubbleControllerImpl::OnPageActionIconClicked() { +void SaveUpdateAddressProfileBubbleControllerImpl::OnPageActionIconClicked() { // Don't show the bubble if it's already visible. if (bubble_view()) return; @@ -87,23 +89,23 @@ Show(); } -bool SaveAddressProfileBubbleControllerImpl::IsBubbleActive() const { +bool SaveUpdateAddressProfileBubbleControllerImpl::IsBubbleActive() const { return !address_profile_save_prompt_callback_.is_null(); } -AutofillBubbleBase* SaveAddressProfileBubbleControllerImpl::GetSaveBubbleView() - const { +AutofillBubbleBase* +SaveUpdateAddressProfileBubbleControllerImpl::GetSaveBubbleView() const { return bubble_view(); } PageActionIconType -SaveAddressProfileBubbleControllerImpl::GetPageActionIconType() { +SaveUpdateAddressProfileBubbleControllerImpl::GetPageActionIconType() { // TODO(crbug.com/1167060): Switch to PageActionIconType::kSaveAutofillAddress // once there are acceesible name for the page icon view. return PageActionIconType::kSaveCard; } -void SaveAddressProfileBubbleControllerImpl::DoShowBubble() { +void SaveUpdateAddressProfileBubbleControllerImpl::DoShowBubble() { DCHECK(!bubble_view()); Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); if (!original_profile_) { @@ -122,6 +124,6 @@ DCHECK(bubble_view()); } -WEB_CONTENTS_USER_DATA_KEY_IMPL(SaveAddressProfileBubbleControllerImpl) +WEB_CONTENTS_USER_DATA_KEY_IMPL(SaveUpdateAddressProfileBubbleControllerImpl) } // namespace autofill
diff --git a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h similarity index 74% rename from chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h rename to chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h index 2073c0e4..ce1ab37c 100644 --- a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h +++ b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_AUTOFILL_SAVE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_IMPL_H_ -#define CHROME_BROWSER_UI_AUTOFILL_SAVE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_IMPL_H_ +#ifndef CHROME_BROWSER_UI_AUTOFILL_SAVE_UPDATE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_IMPL_H_ +#define CHROME_BROWSER_UI_AUTOFILL_SAVE_UPDATE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_IMPL_H_ #include <string> #include "chrome/browser/ui/autofill/autofill_bubble_controller_base.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller.h" #include "chrome/browser/ui/autofill/save_address_profile_icon_controller.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h" #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/data_model/autofill_profile.h" #include "content/public/browser/web_contents_user_data.h" @@ -19,18 +19,18 @@ class AutofillBubbleBase; // The controller functionality for SaveAddressProfileView. -class SaveAddressProfileBubbleControllerImpl +class SaveUpdateAddressProfileBubbleControllerImpl : public AutofillBubbleControllerBase, - public SaveAddressProfileBubbleController, + public SaveUpdateAddressProfileBubbleController, public SaveAddressProfileIconController, public content::WebContentsUserData< - SaveAddressProfileBubbleControllerImpl> { + SaveUpdateAddressProfileBubbleControllerImpl> { public: - SaveAddressProfileBubbleControllerImpl( - const SaveAddressProfileBubbleControllerImpl&) = delete; - SaveAddressProfileBubbleControllerImpl& operator=( - const SaveAddressProfileBubbleControllerImpl&) = delete; - ~SaveAddressProfileBubbleControllerImpl() override; + SaveUpdateAddressProfileBubbleControllerImpl( + const SaveUpdateAddressProfileBubbleControllerImpl&) = delete; + SaveUpdateAddressProfileBubbleControllerImpl& operator=( + const SaveUpdateAddressProfileBubbleControllerImpl&) = delete; + ~SaveUpdateAddressProfileBubbleControllerImpl() override; // Sets up the controller and offers to save the `profile`. If // `original_profile` is not nullptr, it will be updated of the user accepts @@ -41,7 +41,7 @@ AutofillClient::AddressProfileSavePromptCallback address_profile_save_prompt_callback); - // SaveAddressProfileBubbleController: + // SaveUpdateAddressProfileBubbleController: std::u16string GetWindowTitle() const override; const AutofillProfile& GetProfileToSave() const override; const AutofillProfile* GetOriginalProfile() const override; @@ -61,10 +61,10 @@ void DoShowBubble() override; private: - explicit SaveAddressProfileBubbleControllerImpl( + explicit SaveUpdateAddressProfileBubbleControllerImpl( content::WebContents* web_contents); friend class content::WebContentsUserData< - SaveAddressProfileBubbleControllerImpl>; + SaveUpdateAddressProfileBubbleControllerImpl>; // Callback to run once the user makes a decision with respect to the saving // the address profile. @@ -89,4 +89,4 @@ } // namespace autofill -#endif // CHROME_BROWSER_UI_AUTOFILL_SAVE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_IMPL_H_ +#endif // CHROME_BROWSER_UI_AUTOFILL_SAVE_UPDATE_ADDRESS_PROFILE_BUBBLE_CONTROLLER_IMPL_H_
diff --git a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_unittest.cc b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl_unittest.cc similarity index 78% rename from chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_unittest.cc rename to chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl_unittest.cc index 956d059..86047565 100644 --- a/chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl_unittest.cc +++ b/chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h" #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" @@ -13,10 +13,10 @@ namespace autofill { -class SaveAddressProfileBubbleControllerImplTest +class SaveUpdateAddressProfileBubbleControllerImplTest : public BrowserWithTestWindowTest { public: - SaveAddressProfileBubbleControllerImplTest() = default; + SaveUpdateAddressProfileBubbleControllerImplTest() = default; void SetUp() override { base::test::ScopedFeatureList feature_list; feature_list.InitAndEnableFeature( @@ -26,16 +26,17 @@ AddTab(browser(), GURL("about:blank")); content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); - SaveAddressProfileBubbleControllerImpl::CreateForWebContents(web_contents); + SaveUpdateAddressProfileBubbleControllerImpl::CreateForWebContents( + web_contents); } - SaveAddressProfileBubbleControllerImpl* controller() { - return SaveAddressProfileBubbleControllerImpl::FromWebContents( + SaveUpdateAddressProfileBubbleControllerImpl* controller() { + return SaveUpdateAddressProfileBubbleControllerImpl::FromWebContents( browser()->tab_strip_model()->GetActiveWebContents()); } }; -TEST_F(SaveAddressProfileBubbleControllerImplTest, +TEST_F(SaveUpdateAddressProfileBubbleControllerImplTest, DialogAcceptedInvokesCallback) { AutofillProfile profile = test::GetFullProfile(); base::MockCallback<AutofillClient::AddressProfileSavePromptCallback> callback; @@ -50,7 +51,7 @@ AutofillClient::SaveAddressProfileOfferUserDecision::kAccepted); } -TEST_F(SaveAddressProfileBubbleControllerImplTest, +TEST_F(SaveUpdateAddressProfileBubbleControllerImplTest, DialogCancelledInvokesCallback) { AutofillProfile profile = test::GetFullProfile(); base::MockCallback<AutofillClient::AddressProfileSavePromptCallback> callback;
diff --git a/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.cc b/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.cc index 751ffd1..d85ca40 100644 --- a/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.cc +++ b/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.cc
@@ -47,7 +47,7 @@ AutofillBubbleBase* TestAutofillBubbleHandler::ShowSaveAddressProfileBubble( content::WebContents* contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) { if (!save_address_profile_bubble_view_) save_address_profile_bubble_view_ = std::make_unique<TestAutofillBubble>(); @@ -56,7 +56,7 @@ AutofillBubbleBase* TestAutofillBubbleHandler::ShowUpdateAddressProfileBubble( content::WebContents* contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) { if (!update_address_profile_bubble_view_) { update_address_profile_bubble_view_ =
diff --git a/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.h b/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.h index 722a4f8..040bd0db 100644 --- a/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.h +++ b/chrome/browser/ui/autofill/test/test_autofill_bubble_handler.h
@@ -45,11 +45,11 @@ SaveUPIBubbleController* controller) override; AutofillBubbleBase* ShowSaveAddressProfileBubble( content::WebContents* contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) override; AutofillBubbleBase* ShowUpdateAddressProfileBubble( content::WebContents* contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) override; AutofillBubbleBase* ShowEditAddressProfileDialog( content::WebContents* contents,
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc index 16f42df..c6cf69f 100644 --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc
@@ -40,7 +40,7 @@ #include "chrome/browser/ui/autofill/payments/manage_migration_ui_controller.h" #include "chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.h" #include "chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller_impl.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller_impl.h" #include "chrome/browser/ui/bookmarks/bookmark_stats.h" #include "chrome/browser/ui/bookmarks/bookmark_utils.h" #include "chrome/browser/ui/bookmarks/bookmark_utils_desktop.h" @@ -1202,8 +1202,8 @@ void SaveAutofillAddress(Browser* browser) { WebContents* web_contents = browser->tab_strip_model()->GetActiveWebContents(); - autofill::SaveAddressProfileBubbleControllerImpl* controller = - autofill::SaveAddressProfileBubbleControllerImpl::FromWebContents( + autofill::SaveUpdateAddressProfileBubbleControllerImpl* controller = + autofill::SaveUpdateAddressProfileBubbleControllerImpl::FromWebContents( web_contents); controller->OnPageActionIconClicked(); }
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_applescript_utils_test.mm b/chrome/browser/ui/cocoa/applescript/bookmark_applescript_utils_test.mm index bd34d90..1ee7d4c 100644 --- a/chrome/browser/ui/cocoa/applescript/bookmark_applescript_utils_test.mm +++ b/chrome/browser/ui/cocoa/applescript/bookmark_applescript_utils_test.mm
@@ -18,7 +18,7 @@ @implementation FakeScriptCommand -- (id)init { +- (instancetype)init { if ((self = [super init])) { _originalMethod = class_getClassMethod([NSScriptCommand class], @selector(currentCommand));
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_browsertest.mm b/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_browsertest.mm index 6035e125..6a0bae1 100644 --- a/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_browsertest.mm +++ b/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_browsertest.mm
@@ -27,8 +27,8 @@ EXPECT_EQ(2U, [bookmarkFolders count]); - BookmarkFolderAppleScript* f1 = [bookmarkFolders objectAtIndex:0]; - BookmarkFolderAppleScript* f2 = [bookmarkFolders objectAtIndex:1]; + BookmarkFolderAppleScript* f1 = bookmarkFolders[0]; + BookmarkFolderAppleScript* f2 = bookmarkFolders[1]; EXPECT_NSEQ(@"f1", [f1 title]); EXPECT_NSEQ(@"f2", [f2 title]); EXPECT_EQ(2, [[f1 index] intValue]); @@ -53,8 +53,7 @@ [bookmarkBar_.get() insertInBookmarkFolders:bookmarkFolder.get()]; // Represents the bookmark folder after it's added. - BookmarkFolderAppleScript* bf = - [[bookmarkBar_.get() bookmarkFolders] objectAtIndex:2]; + BookmarkFolderAppleScript* bf = [bookmarkBar_.get() bookmarkFolders][2]; EXPECT_NSEQ(@"foo", [bf title]); EXPECT_EQ([bf container], bookmarkBar_.get()); EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty, @@ -75,8 +74,7 @@ [bookmarkBar_.get() insertInBookmarkFolders:bookmarkFolder.get() atIndex:1]; // Represents the bookmark folder after it's added. - BookmarkFolderAppleScript* bf = - [[bookmarkBar_.get() bookmarkFolders] objectAtIndex:1]; + BookmarkFolderAppleScript* bf = [bookmarkBar_.get() bookmarkFolders][1]; EXPECT_NSEQ(@"foo", [bf title]); EXPECT_EQ([bf container], bookmarkBar_.get()); EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty, [bf containerProperty]); @@ -99,9 +97,9 @@ EXPECT_EQ(3U, [bookmarkItems count]); - BookmarkItemAppleScript* i1 = [bookmarkItems objectAtIndex:0]; - BookmarkItemAppleScript* i2 = [bookmarkItems objectAtIndex:1]; - BookmarkItemAppleScript* i3 = [bookmarkItems objectAtIndex:2]; + BookmarkItemAppleScript* i1 = bookmarkItems[0]; + BookmarkItemAppleScript* i2 = bookmarkItems[1]; + BookmarkItemAppleScript* i3 = bookmarkItems[2]; EXPECT_NSEQ(@"a", [i1 title]); EXPECT_NSEQ(@"d", [i2 title]); EXPECT_NSEQ(@"h", [i3 title]); @@ -129,8 +127,7 @@ [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get()]; // Represents the bookmark item after it's added. - BookmarkItemAppleScript* bi = - [[bookmarkBar_.get() bookmarkItems] objectAtIndex:3]; + BookmarkItemAppleScript* bi = [bookmarkBar_.get() bookmarkItems][3]; EXPECT_NSEQ(@"Google", [bi title]); EXPECT_EQ(GURL("http://google.com/"), GURL(base::SysNSStringToUTF8([bi URL]))); @@ -163,8 +160,7 @@ [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get() atIndex:1]; // Represents the bookmark item after its added. - BookmarkItemAppleScript* bi = - [[bookmarkBar_.get() bookmarkItems] objectAtIndex:1]; + BookmarkItemAppleScript* bi = [bookmarkBar_.get() bookmarkItems][1]; EXPECT_NSEQ(@"XKCD", [bi title]); EXPECT_EQ(GURL("http://xkcd.org/"), GURL(base::SysNSStringToUTF8([bi URL]))); @@ -195,7 +191,7 @@ // Set and get title. IN_PROC_BROWSER_TEST_F(BookmarkFolderAppleScriptTest, GetAndSetTitle) { NSArray* bookmarkFolders = [bookmarkBar_.get() bookmarkFolders]; - BookmarkFolderAppleScript* folder1 = [bookmarkFolders objectAtIndex:0]; + BookmarkFolderAppleScript* folder1 = bookmarkFolders[0]; [folder1 setTitle:@"Foo"]; EXPECT_NSEQ(@"Foo", [folder1 title]); }
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript.mm b/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript.mm index 023515cc..8539eb6 100644 --- a/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript.mm +++ b/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript.mm
@@ -23,7 +23,7 @@ @synthesize tempURL = _tempURL; -- (id)init { +- (instancetype)init { if ((self = [super init])) { [self setTempURL:@""]; }
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript_browsertest.mm b/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript_browsertest.mm index cff02a8b..3d52f35c 100644 --- a/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript_browsertest.mm +++ b/chrome/browser/ui/cocoa/applescript/bookmark_item_applescript_browsertest.mm
@@ -25,7 +25,7 @@ // Set and get title. IN_PROC_BROWSER_TEST_F(BookmarkItemAppleScriptTest, GetAndSetTitle) { NSArray* bookmarkItems = [bookmarkBar_.get() bookmarkItems]; - BookmarkItemAppleScript* item1 = [bookmarkItems objectAtIndex:0]; + BookmarkItemAppleScript* item1 = bookmarkItems[0]; [item1 setTitle:@"Foo"]; EXPECT_NSEQ(@"Foo", [item1 title]); } @@ -33,7 +33,7 @@ // Set and get URL. IN_PROC_BROWSER_TEST_F(BookmarkItemAppleScriptTest, GetAndSetURL) { NSArray* bookmarkItems = [bookmarkBar_.get() bookmarkItems]; - BookmarkItemAppleScript* item1 = [bookmarkItems objectAtIndex:0]; + BookmarkItemAppleScript* item1 = bookmarkItems[0]; [item1 setURL:@"http://foo-bar.org"]; EXPECT_EQ(GURL("http://foo-bar.org"), GURL(base::SysNSStringToUTF8([item1 URL]))); @@ -52,7 +52,7 @@ prefs->SetBoolean(prefs::kAllowJavascriptAppleEvents, false); NSArray* bookmarkItems = [bookmarkBar_.get() bookmarkItems]; - BookmarkItemAppleScript* item1 = [bookmarkItems objectAtIndex:0]; + BookmarkItemAppleScript* item1 = bookmarkItems[0]; base::scoped_nsobject<FakeScriptCommand> fakeScriptCommand( [[FakeScriptCommand alloc] init]);
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.h b/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.h index b8f3517..29aa3ab0 100644 --- a/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.h +++ b/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.h
@@ -27,10 +27,11 @@ // Does not actually create a folder/item but just sets its ID, the folder is // created in insertInBookmarksFolder: in the corresponding bookmarks folder. -- (id)init; +- (instancetype)init; // Does not make a folder/item but instead uses an existing one. -- (id)initWithBookmarkNode:(const bookmarks::BookmarkNode*)aBookmarkNode; +- (instancetype)initWithBookmarkNode: + (const bookmarks::BookmarkNode*)aBookmarkNode; // Assigns a node, sets its unique ID and also copies temporary values. - (void)setBookmarkNode:(const bookmarks::BookmarkNode*)aBookmarkNode;
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.mm b/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.mm index efe3ba5f..64a0bc6 100644 --- a/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.mm +++ b/chrome/browser/ui/cocoa/applescript/bookmark_node_applescript.mm
@@ -27,7 +27,7 @@ @synthesize tempTitle = _tempTitle; -- (id)init { +- (instancetype)init { if ((self = [super init])) { BookmarkModel* model = [self bookmarkModel]; if (!model) { @@ -48,8 +48,7 @@ [super dealloc]; } - -- (id)initWithBookmarkNode:(const BookmarkNode*)aBookmarkNode { +- (instancetype)initWithBookmarkNode:(const BookmarkNode*)aBookmarkNode { if (!aBookmarkNode) { [self release]; return nil; @@ -111,7 +110,7 @@ const BookmarkNode* parent = _bookmarkNode->parent(); int index = parent->GetIndexOf(_bookmarkNode); // NOTE: AppleScript is 1-Based. - return [NSNumber numberWithInt:index+1]; + return @(index + 1); } - (BookmarkModel*)bookmarkModel {
diff --git a/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript.mm b/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript.mm index 0661d15..ff1e7ce 100644 --- a/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript.mm +++ b/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript.mm
@@ -59,12 +59,11 @@ property:AppleScript::kWindowsProperty]; // Note: AppleScript is 1-based. index--; - [aWindow setOrderedIndex:[NSNumber numberWithInt:index]]; + [aWindow setOrderedIndex:@(index)]; } - (void)removeFromAppleScriptWindowsAtIndex:(int)index { - [[[self appleScriptWindows] objectAtIndex:index] - handlesCloseScriptCommand:nil]; + [[self appleScriptWindows][index] handlesCloseScriptCommand:nil]; } - (NSScriptObjectSpecifier*)objectSpecifier { @@ -124,9 +123,7 @@ - (NSArray*)bookmarkFolders { BookmarkFolderAppleScript* otherBookmarks = [self otherBookmarks]; BookmarkFolderAppleScript* bookmarksBar = [self bookmarksBar]; - NSArray* folderArray = [NSArray arrayWithObjects:otherBookmarks, - bookmarksBar, - nil]; + NSArray* folderArray = @[ otherBookmarks, bookmarksBar ]; return folderArray; }
diff --git a/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript_test.mm b/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript_test.mm index 09e5c6bc..f055b7a1 100644 --- a/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript_test.mm +++ b/chrome/browser/ui/cocoa/applescript/browsercrapplication+applescript_test.mm
@@ -53,15 +53,14 @@ base::scoped_nsobject<WindowAppleScript> aWindow( [[WindowAppleScript alloc] init]); base::scoped_nsobject<NSNumber> var([[aWindow.get() uniqueID] copy]); - [aWindow.get() setValue:[NSNumber numberWithBool:YES] forKey:@"isVisible"]; + [aWindow.get() setValue:@YES forKey:@"isVisible"]; [NSApp insertInAppleScriptWindows:aWindow.get()]; chrome::testing::NSRunLoopRunAllPending(); // Represents the window after it is added. - WindowAppleScript* window = [[NSApp appleScriptWindows] objectAtIndex:0]; - EXPECT_NSEQ([NSNumber numberWithBool:YES], - [aWindow.get() valueForKey:@"isVisible"]); + WindowAppleScript* window = [NSApp appleScriptWindows][0]; + EXPECT_NSEQ(@YES, [aWindow.get() valueForKey:@"isVisible"]); EXPECT_EQ([window container], NSApp); EXPECT_NSEQ(AppleScript::kWindowsProperty, [window containerProperty]);
diff --git a/chrome/browser/ui/cocoa/applescript/tab_applescript.mm b/chrome/browser/ui/cocoa/applescript/tab_applescript.mm index 12b13b6..1bc4a58 100644 --- a/chrome/browser/ui/cocoa/applescript/tab_applescript.mm +++ b/chrome/browser/ui/cocoa/applescript/tab_applescript.mm
@@ -172,7 +172,7 @@ - (NSNumber*)loading { BOOL loadingValue = _webContents->IsLoading() ? YES : NO; - return [NSNumber numberWithBool:loadingValue]; + return @(loadingValue); } - (void)handlesUndoScriptCommand:(NSScriptCommand*)command { @@ -246,7 +246,7 @@ AppleScript::LogAppleScriptUMA(AppleScript::AppleScriptCommand::TAB_SAVE); NSDictionary* dictionary = [command evaluatedArguments]; - NSURL* fileURL = [dictionary objectForKey:@"File"]; + NSURL* fileURL = dictionary[@"File"]; // Scripter has not specifed the location at which to save, so we prompt for // it. if (!fileURL) { @@ -261,7 +261,7 @@ base::FilePath directoryPath = mainFile.RemoveExtension(); directoryPath = directoryPath.InsertBeforeExtension(std::string("_files/")); - NSString* saveType = [dictionary objectForKey:@"FileType"]; + NSString* saveType = dictionary[@"FileType"]; content::SavePageType savePageType = content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML; if (saveType) { @@ -318,8 +318,8 @@ content::RenderFrameHost::JavaScriptResultCallback callback = base::BindOnce(&ResumeAppleEventAndSendReply, suspensionID); - std::u16string script = base::SysNSStringToUTF16( - [[command evaluatedArguments] objectForKey:@"javascript"]); + std::u16string script = + base::SysNSStringToUTF16([command evaluatedArguments][@"javascript"]); frame->ExecuteJavaScriptInIsolatedWorld(script, std::move(callback), ISOLATED_WORLD_ID_APPLESCRIPT);
diff --git a/chrome/browser/ui/cocoa/applescript/window_applescript.h b/chrome/browser/ui/cocoa/applescript/window_applescript.h index 674b0bb0..e6b74ec73 100644 --- a/chrome/browser/ui/cocoa/applescript/window_applescript.h +++ b/chrome/browser/ui/cocoa/applescript/window_applescript.h
@@ -20,13 +20,13 @@ } // Creates a new window, returns nil if there is an error. -- (id)init; +- (instancetype)init; // Creates a new window with a particular profile. -- (id)initWithProfile:(Profile*)aProfile; +- (instancetype)initWithProfile:(Profile*)aProfile; // Does not create a new window but uses an existing one. -- (id)initWithBrowser:(Browser*)aBrowser; +- (instancetype)initWithBrowser:(Browser*)aBrowser; // Sets and gets the index of the currently selected tab. - (NSNumber*)activeTabIndex;
diff --git a/chrome/browser/ui/cocoa/applescript/window_applescript.mm b/chrome/browser/ui/cocoa/applescript/window_applescript.mm index 7425cf2..bee2a45 100644 --- a/chrome/browser/ui/cocoa/applescript/window_applescript.mm +++ b/chrome/browser/ui/cocoa/applescript/window_applescript.mm
@@ -38,11 +38,10 @@ @implementation WindowAppleScript -- (id)init { +- (instancetype)init { // Check which mode to open a new window. NSScriptCommand* command = [NSScriptCommand currentCommand]; - NSString* mode = [[[command evaluatedArguments] - objectForKey:@"KeyDictionary"] objectForKey:@"mode"]; + NSString* mode = [command evaluatedArguments][@"KeyDictionary"][@"mode"]; AppController* appDelegate = base::mac::ObjCCastStrict<AppController>([NSApp delegate]); @@ -65,12 +64,11 @@ return nil; } // Set the mode to nil, to ensure that it is not set once more. - [[[command evaluatedArguments] objectForKey:@"KeyDictionary"] - setValue:nil forKey:@"mode"]; + [[command evaluatedArguments][@"KeyDictionary"] setValue:nil forKey:@"mode"]; return [self initWithProfile:profile]; } -- (id)initWithProfile:(Profile*)aProfile { +- (instancetype)initWithProfile:(Profile*)aProfile { if (!aProfile) { [self release]; return nil; @@ -95,7 +93,7 @@ return self; } -- (id)initWithBrowser:(Browser*)aBrowser { +- (instancetype)initWithBrowser:(Browser*)aBrowser { if (!aBrowser) { [self release]; return nil; @@ -126,7 +124,7 @@ if (!activeTabIndex) { return nil; } - return [NSNumber numberWithInt:activeTabIndex]; + return @(activeTabIndex); } - (void)setActiveTabIndex:(NSNumber*)anActiveTabIndex {
diff --git a/chrome/browser/ui/cocoa/applescript/window_applescript_test.mm b/chrome/browser/ui/cocoa/applescript/window_applescript_test.mm index 75d12d6..48e3a91 100644 --- a/chrome/browser/ui/cocoa/applescript/window_applescript_test.mm +++ b/chrome/browser/ui/cocoa/applescript/window_applescript_test.mm
@@ -72,7 +72,7 @@ [[WindowAppleScript alloc] initWithBrowser:browser()]); NSArray* tabs = [aWindow.get() tabs]; EXPECT_EQ(1U, [tabs count]); - TabAppleScript* tab1 = [tabs objectAtIndex:0]; + TabAppleScript* tab1 = tabs[0]; EXPECT_EQ([tab1 container], aWindow.get()); EXPECT_NSEQ(AppleScript::kTabsProperty, [tab1 containerProperty]); @@ -91,7 +91,7 @@ [aWindow.get() insertInTabs:aTab.get()]; // Represents the tab after it is inserted. - TabAppleScript* tab = [[aWindow.get() tabs] objectAtIndex:1]; + TabAppleScript* tab = [aWindow.get() tabs][1]; EXPECT_EQ(GURL("http://google.com"), GURL(base::SysNSStringToUTF8([tab URL]))); EXPECT_EQ([tab container], aWindow.get()); @@ -113,7 +113,7 @@ [aWindow.get() insertInTabs:aTab.get() atIndex:0]; // Represents the tab after it is inserted. - TabAppleScript* tab = [[aWindow.get() tabs] objectAtIndex:0]; + TabAppleScript* tab = [aWindow.get() tabs][0]; EXPECT_EQ(GURL("http://google.com"), GURL(base::SysNSStringToUTF8([tab URL]))); EXPECT_EQ([tab container], aWindow.get()); @@ -150,11 +150,9 @@ IN_PROC_BROWSER_TEST_F(WindowAppleScriptTest, NSWindowTest) { base::scoped_nsobject<WindowAppleScript> aWindow( [[WindowAppleScript alloc] initWithBrowser:browser()]); - [aWindow.get() setValue:[NSNumber numberWithBool:YES] - forKey:@"isMiniaturized"]; + [aWindow.get() setValue:@YES forKey:@"isMiniaturized"]; EXPECT_TRUE([[aWindow.get() valueForKey:@"isMiniaturized"] boolValue]); - [aWindow.get() setValue:[NSNumber numberWithBool:NO] - forKey:@"isMiniaturized"]; + [aWindow.get() setValue:@NO forKey:@"isMiniaturized"]; EXPECT_FALSE([[aWindow.get() valueForKey:@"isMiniaturized"] boolValue]); } @@ -164,9 +162,9 @@ [[WindowAppleScript alloc] initWithBrowser:browser()]); base::scoped_nsobject<TabAppleScript> aTab([[TabAppleScript alloc] init]); [aWindow.get() insertInTabs:aTab.get()]; - [aWindow.get() setActiveTabIndex:[NSNumber numberWithInt:2]]; + [aWindow.get() setActiveTabIndex:@2]; EXPECT_EQ(2, [[aWindow.get() activeTabIndex] intValue]); - TabAppleScript* tab2 = [[aWindow.get() tabs] objectAtIndex:1]; + TabAppleScript* tab2 = [aWindow.get() tabs][1]; EXPECT_NSEQ([[aWindow.get() activeTab] uniqueID], [tab2 uniqueID]); }
diff --git a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc index e121139..60c1ae3 100644 --- a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc +++ b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc
@@ -20,11 +20,7 @@ } // static -bool QRCodeGeneratorBubbleController::IsGeneratorAvailable(const GURL& url, - bool in_incognito) { - if (in_incognito) - return false; - +bool QRCodeGeneratorBubbleController::IsGeneratorAvailable(const GURL& url) { if (!base::FeatureList::IsEnabled(kSharingQRCodeGenerator)) return false;
diff --git a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.h b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.h index 8802395..d79d788d 100644 --- a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.h +++ b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.h
@@ -25,9 +25,8 @@ public: ~QRCodeGeneratorBubbleController() override; - // Returns whether the generator is available for a given page and - // state (incognito etc.). - static bool IsGeneratorAvailable(const GURL& url, bool in_incognito); + // Returns whether the generator is available for a given page. + static bool IsGeneratorAvailable(const GURL& url); static QRCodeGeneratorBubbleController* Get( content::WebContents* web_contents);
diff --git a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller_unittest.cc b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller_unittest.cc index 130a7ea..bfc9872 100644 --- a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller_unittest.cc +++ b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller_unittest.cc
@@ -30,33 +30,24 @@ // Allow valid http/https URLs. ASSERT_TRUE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("http://www.example.com"), false)); + GURL("http://www.example.com"))); ASSERT_TRUE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("https://www.example.com"), false)); + GURL("https://www.example.com"))); ASSERT_TRUE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("https://www.example.com/path?q=abc"), false)); - - // Disallow those URLs in incognito. - ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("http://www.example.com"), true)); - ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("https://www.example.com"), true)); - ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("https://www.example.com/path?q=abc"), true)); + GURL("https://www.example.com/path?q=abc"))); // Disallow browser-ui URLs. ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("about:blank"), false)); + GURL("about:blank"))); ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("chrome://newtab"), false)); + GURL("chrome://newtab"))); ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("chrome://settings"), false)); + GURL("chrome://settings"))); // Disallow invalid URLs. + ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable(GURL(""))); ASSERT_FALSE( - QRCodeGeneratorBubbleController::IsGeneratorAvailable(GURL(""), false)); - ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("NotAURL"), false)); + QRCodeGeneratorBubbleController::IsGeneratorAvailable(GURL("NotAURL"))); } TEST_F(QRCodeGeneratorBubbleControllerTest, UnavailableWithFeatureOff) { @@ -64,11 +55,11 @@ // Normally-available URLs should not be allowed when the feature is off. ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("http://www.example.com"), false)); + GURL("http://www.example.com"))); ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("https://www.example.com"), false)); + GURL("https://www.example.com"))); ASSERT_FALSE(QRCodeGeneratorBubbleController::IsGeneratorAvailable( - GURL("https://www.example.com/path?q=abc"), false)); + GURL("https://www.example.com/path?q=abc"))); } } // namespace qrcode_generator
diff --git a/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.cc b/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.cc index 13a4042..a66bf708 100644 --- a/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.cc +++ b/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.cc
@@ -159,7 +159,7 @@ AutofillBubbleBase* AutofillBubbleHandlerImpl::ShowSaveAddressProfileBubble( content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) { views::View* anchor_view = toolbar_button_provider_->GetAnchorView( PageActionIconType::kSaveAutofillAddress); @@ -179,7 +179,7 @@ AutofillBubbleBase* AutofillBubbleHandlerImpl::ShowUpdateAddressProfileBubble( content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) { views::View* anchor_view = toolbar_button_provider_->GetAnchorView( PageActionIconType::kSaveAutofillAddress);
diff --git a/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.h b/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.h index 9308140..aaca7846 100644 --- a/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.h +++ b/chrome/browser/ui/views/autofill/autofill_bubble_handler_impl.h
@@ -51,11 +51,11 @@ SaveUPIBubbleController* controller) override; AutofillBubbleBase* ShowSaveAddressProfileBubble( content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) override; AutofillBubbleBase* ShowUpdateAddressProfileBubble( content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller, + SaveUpdateAddressProfileBubbleController* controller, bool is_user_gesture) override; AutofillBubbleBase* ShowEditAddressProfileDialog( content::WebContents* web_contents,
diff --git a/chrome/browser/ui/views/autofill/save_address_profile_view.cc b/chrome/browser/ui/views/autofill/save_address_profile_view.cc index a423f665..fcf06df 100644 --- a/chrome/browser/ui/views/autofill/save_address_profile_view.cc +++ b/chrome/browser/ui/views/autofill/save_address_profile_view.cc
@@ -7,7 +7,7 @@ #include "base/strings/string_util.h" #include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h" #include "chrome/browser/ui/views/accessibility/theme_tracking_non_accessible_image_view.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/grit/theme_resources.h" @@ -184,7 +184,7 @@ SaveAddressProfileView::SaveAddressProfileView( views::View* anchor_view, content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller) + SaveUpdateAddressProfileBubbleController* controller) : LocationBarBubbleDelegateView(anchor_view, web_contents), controller_(controller) { DCHECK(base::FeatureList::IsEnabled( @@ -192,11 +192,11 @@ // TODO(crbug.com/1167060): Accept action should consider the selected // nickname when saving the address. SetAcceptCallback(base::BindOnce( - &SaveAddressProfileBubbleController::OnUserDecision, + &SaveUpdateAddressProfileBubbleController::OnUserDecision, base::Unretained(controller_), AutofillClient::SaveAddressProfileOfferUserDecision::kAccepted)); SetCancelCallback(base::BindOnce( - &SaveAddressProfileBubbleController::OnUserDecision, + &SaveUpdateAddressProfileBubbleController::OnUserDecision, base::Unretained(controller_), AutofillClient::SaveAddressProfileOfferUserDecision::kDeclined)); @@ -218,7 +218,7 @@ std::unique_ptr<views::ImageButton> edit_button = views::CreateVectorImageButtonWithNativeTheme( base::BindRepeating( - &SaveAddressProfileBubbleController::OnEditButtonClicked, + &SaveUpdateAddressProfileBubbleController::OnEditButtonClicked, base::Unretained(controller_)), vector_icons::kEditIcon, gfx::kFaviconSize); // TODO(crbug.com/1167060): Use internationalized string.
diff --git a/chrome/browser/ui/views/autofill/save_address_profile_view.h b/chrome/browser/ui/views/autofill/save_address_profile_view.h index d02bb4c..1244445 100644 --- a/chrome/browser/ui/views/autofill/save_address_profile_view.h +++ b/chrome/browser/ui/views/autofill/save_address_profile_view.h
@@ -17,7 +17,7 @@ } // namespace views namespace autofill { -class SaveAddressProfileBubbleController; +class SaveUpdateAddressProfileBubbleController; // This is the bubble views that is part of the flow for when the user submits a // form with an address profile that Autofill has not previously saved. @@ -26,7 +26,7 @@ public: SaveAddressProfileView(views::View* anchor_view, content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller); + SaveUpdateAddressProfileBubbleController* controller); SaveAddressProfileView(const SaveAddressProfileView&) = delete; SaveAddressProfileView& operator=(const SaveAddressProfileView&) = delete; @@ -45,7 +45,7 @@ void AddedToWidget() override; private: - SaveAddressProfileBubbleController* controller_; + SaveUpdateAddressProfileBubbleController* controller_; }; } // namespace autofill
diff --git a/chrome/browser/ui/views/autofill/save_address_profile_view_unittest.cc b/chrome/browser/ui/views/autofill/save_address_profile_view_unittest.cc index 2f090db..26c268ec 100644 --- a/chrome/browser/ui/views/autofill/save_address_profile_view_unittest.cc +++ b/chrome/browser/ui/views/autofill/save_address_profile_view_unittest.cc
@@ -5,7 +5,7 @@ #include "chrome/browser/ui/views/autofill/save_address_profile_view.h" #include "base/test/scoped_feature_list.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/views/chrome_views_test_base.h" #include "components/autofill/core/browser/autofill_test_utils.h" @@ -18,8 +18,8 @@ namespace autofill { -class MockSaveAddressProfileBubbleController - : public SaveAddressProfileBubbleController { +class MockSaveUpdateAddressProfileBubbleController + : public SaveUpdateAddressProfileBubbleController { public: MOCK_METHOD(std::u16string, GetWindowTitle, (), (const, override)); MOCK_METHOD(const AutofillProfile&, GetProfileToSave, (), (const, override)); @@ -64,7 +64,7 @@ return address_profile_to_save_; } SaveAddressProfileView* view() { return view_; } - MockSaveAddressProfileBubbleController* mock_controller() { + MockSaveUpdateAddressProfileBubbleController* mock_controller() { return &mock_controller_; } @@ -77,7 +77,8 @@ std::unique_ptr<content::WebContents> test_web_contents_; std::unique_ptr<views::Widget> anchor_widget_; SaveAddressProfileView* view_; - testing::NiceMock<MockSaveAddressProfileBubbleController> mock_controller_; + testing::NiceMock<MockSaveUpdateAddressProfileBubbleController> + mock_controller_; }; void SaveAddressProfileViewTest::CreateViewAndShow() {
diff --git a/chrome/browser/ui/views/autofill/update_address_profile_view.cc b/chrome/browser/ui/views/autofill/update_address_profile_view.cc index 90ba7116..cfa386b 100644 --- a/chrome/browser/ui/views/autofill/update_address_profile_view.cc +++ b/chrome/browser/ui/views/autofill/update_address_profile_view.cc
@@ -4,7 +4,7 @@ #include "chrome/browser/ui/views/autofill/update_address_profile_view.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h" #include "chrome/browser/ui/views/accessibility/theme_tracking_non_accessible_image_view.h" #include "chrome/grit/theme_resources.h" #include "components/autofill/core/common/autofill_features.h" @@ -14,17 +14,17 @@ UpdateAddressProfileView::UpdateAddressProfileView( views::View* anchor_view, content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller) + SaveUpdateAddressProfileBubbleController* controller) : LocationBarBubbleDelegateView(anchor_view, web_contents), controller_(controller) { DCHECK(base::FeatureList::IsEnabled( features::kAutofillAddressProfileSavePrompt)); SetAcceptCallback(base::BindOnce( - &SaveAddressProfileBubbleController::OnUserDecision, + &SaveUpdateAddressProfileBubbleController::OnUserDecision, base::Unretained(controller_), AutofillClient::SaveAddressProfileOfferUserDecision::kAccepted)); SetCancelCallback(base::BindOnce( - &SaveAddressProfileBubbleController::OnUserDecision, + &SaveUpdateAddressProfileBubbleController::OnUserDecision, base::Unretained(controller_), AutofillClient::SaveAddressProfileOfferUserDecision::kDeclined)); }
diff --git a/chrome/browser/ui/views/autofill/update_address_profile_view.h b/chrome/browser/ui/views/autofill/update_address_profile_view.h index 711f5f8..0badda3 100644 --- a/chrome/browser/ui/views/autofill/update_address_profile_view.h +++ b/chrome/browser/ui/views/autofill/update_address_profile_view.h
@@ -17,16 +17,17 @@ } namespace autofill { -class SaveAddressProfileBubbleController; +class SaveUpdateAddressProfileBubbleController; // Shown after a user submits a form with an address profile that's slightly // different from an address profile previously saved. class UpdateAddressProfileView : public AutofillBubbleBase, public LocationBarBubbleDelegateView { public: - UpdateAddressProfileView(views::View* anchor_view, - content::WebContents* web_contents, - SaveAddressProfileBubbleController* controller); + UpdateAddressProfileView( + views::View* anchor_view, + content::WebContents* web_contents, + SaveUpdateAddressProfileBubbleController* controller); UpdateAddressProfileView(const UpdateAddressProfileView&) = delete; UpdateAddressProfileView& operator=(const UpdateAddressProfileView&) = delete; @@ -45,7 +46,7 @@ void AddedToWidget() override; private: - SaveAddressProfileBubbleController* controller_; + SaveUpdateAddressProfileBubbleController* controller_; }; } // namespace autofill
diff --git a/chrome/browser/ui/views/autofill/update_address_profile_view_unittest.cc b/chrome/browser/ui/views/autofill/update_address_profile_view_unittest.cc index f2d3b0a..c12b097f 100644 --- a/chrome/browser/ui/views/autofill/update_address_profile_view_unittest.cc +++ b/chrome/browser/ui/views/autofill/update_address_profile_view_unittest.cc
@@ -5,7 +5,7 @@ #include "chrome/browser/ui/views/autofill/update_address_profile_view.h" #include "base/test/scoped_feature_list.h" -#include "chrome/browser/ui/autofill/save_address_profile_bubble_controller.h" +#include "chrome/browser/ui/autofill/save_update_address_profile_bubble_controller.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/views/chrome_views_test_base.h" #include "components/autofill/core/browser/autofill_test_utils.h" @@ -18,8 +18,8 @@ namespace autofill { -class MockSaveAddressProfileBubbleController - : public SaveAddressProfileBubbleController { +class MockSaveUpdateAddressProfileBubbleController + : public SaveUpdateAddressProfileBubbleController { public: MOCK_METHOD(std::u16string, GetWindowTitle, (), (const, override)); MOCK_METHOD(const AutofillProfile&, GetProfileToSave, (), (const, override)); @@ -64,7 +64,7 @@ return address_profile_to_save_; } UpdateAddressProfileView* view() { return view_; } - MockSaveAddressProfileBubbleController* mock_controller() { + MockSaveUpdateAddressProfileBubbleController* mock_controller() { return &mock_controller_; } @@ -77,7 +77,8 @@ std::unique_ptr<content::WebContents> test_web_contents_; std::unique_ptr<views::Widget> anchor_widget_; UpdateAddressProfileView* view_; - testing::NiceMock<MockSaveAddressProfileBubbleController> mock_controller_; + testing::NiceMock<MockSaveUpdateAddressProfileBubbleController> + mock_controller_; }; void UpdateAddressProfileViewTest::CreateViewAndShow() {
diff --git a/chrome/browser/ui/views/qrcode_generator/qrcode_generator_icon_view.cc b/chrome/browser/ui/views/qrcode_generator/qrcode_generator_icon_view.cc index cc3dbfb..4f6ec563 100644 --- a/chrome/browser/ui/views/qrcode_generator/qrcode_generator_icon_view.cc +++ b/chrome/browser/ui/views/qrcode_generator/qrcode_generator_icon_view.cc
@@ -58,8 +58,7 @@ bool feature_available = QRCodeGeneratorBubbleController::IsGeneratorAvailable( - web_contents->GetLastCommittedURL(), - web_contents->GetBrowserContext()->IsOffTheRecord()); + web_contents->GetLastCommittedURL()); bool visible = GetBubble() != nullptr || (feature_available && omnibox_view->model()->has_focus() &&
diff --git a/chrome/browser/ui/views/tabs/tab_icon.cc b/chrome/browser/ui/views/tabs/tab_icon.cc index 974c8831..8829e1b 100644 --- a/chrome/browser/ui/views/tabs/tab_icon.cc +++ b/chrome/browser/ui/views/tabs/tab_icon.cc
@@ -46,9 +46,7 @@ url.host_piece() != chrome::kChromeUIAppLauncherPageHost && url.host_piece() != chrome::kChromeUIHelpHost && url.host_piece() != chrome::kChromeUIVersionHost && - url.host_piece() != chrome::kChromeUINetExportHost && - // Covers all default NTPs, including in incognito. - url.host_piece() != chrome::kChromeUINewTabHost; + url.host_piece() != chrome::kChromeUINetExportHost; } bool NetworkStateIsAnimated(TabNetworkState network_state) {
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc index 9a26d61..b236789 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
@@ -17,6 +17,7 @@ #include "chrome/browser/ui/view_ids.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/extensions/extension_context_menu_controller.h" +#include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_ink_drop_util.h" #include "components/sessions/content/session_tab_helper.h" #include "content/public/browser/notification_source.h" @@ -88,6 +89,12 @@ return bounds; } +void ToolbarActionView::OnThemeChanged() { + MenuButton::OnThemeChanged(); + + ToolbarButton::UpdateFocusRingColor(this, focus_ring()); +} + std::unique_ptr<LabelButtonBorder> ToolbarActionView::CreateDefaultBorder() const { std::unique_ptr<LabelButtonBorder> border = @@ -216,6 +223,8 @@ void ToolbarActionView::AddedToWidget() { MenuButton::AddedToWidget(); + ToolbarButton::UpdateFocusRingColor(this, focus_ring()); + // This cannot happen until there's a focus controller, which lives on the // widget. view_controller_->RegisterCommand();
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.h b/chrome/browser/ui/views/toolbar/toolbar_action_view.h index 0ce959e..9eefcb7 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_action_view.h +++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.h
@@ -47,7 +47,7 @@ virtual gfx::Size GetToolbarActionSize() = 0; protected: - ~Delegate() override {} + ~Delegate() override = default; }; ToolbarActionView(ToolbarActionViewController* view_controller, @@ -58,6 +58,7 @@ // views::MenuButton: gfx::Rect GetAnchorBoundsInScreen() const override; + void OnThemeChanged() override; std::unique_ptr<views::LabelButtonBorder> CreateDefaultBorder() const override; bool IsTriggerableEvent(const ui::Event& event) override;
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index 7b736f7b..583574c5 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -42,6 +42,7 @@ #include "chrome/browser/ash/login/saml/saml_metric_utils.h" #include "chrome/browser/ash/login/screens/network_error.h" #include "chrome/browser/ash/login/screens/signin_fatal_error_screen.h" +#include "chrome/browser/ash/login/session/user_session_manager.h" #include "chrome/browser/ash/login/signin_partition_manager.h" #include "chrome/browser/ash/login/ui/login_display_host.h" #include "chrome/browser/ash/login/ui/login_display_host_webui.h" @@ -769,6 +770,17 @@ return; } + // Record amount of time from the moment screen was shown till + // completeAuthentication signal come. Only for no SAML flow and only during + // first run in OOBE. + if (elapsed_timer_ && !using_saml && + session_manager::SessionManager::Get()->session_state() == + session_manager::SessionState::OOBE) { + base::UmaHistogramMediumTimes("OOBE.GaiaLoginTime", + elapsed_timer_->Elapsed()); + elapsed_timer_.reset(); + } + const std::string sanitized_email = gaia::SanitizeEmail(email); LoginDisplayHost::default_host()->SetDisplayEmail(sanitized_email); @@ -1112,6 +1124,7 @@ void GaiaScreenHandler::Show() { ShowScreen(GaiaView::kScreenId); + elapsed_timer_ = std::make_unique<base::ElapsedTimer>(); hidden_ = false; }
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h index 3931f6b6..f5174d10 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h
@@ -28,6 +28,7 @@ namespace base { class DictionaryValue; +class ElapsedTimer; } // namespace base namespace network { @@ -399,6 +400,9 @@ bool hidden_ = true; + // Used to record amount of time user needed for successful online login. + std::unique_ptr<base::ElapsedTimer> elapsed_timer_; + std::string signin_partition_name_; // Handler for `samlChallengeMachineKey` request.
diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc index f54e5a11..efde47f 100644 --- a/chrome/browser/ui/webui/management/management_ui_handler.cc +++ b/chrome/browser/ui/webui/management/management_ui_handler.cc
@@ -815,11 +815,16 @@ base::Value ManagementUIHandler::GetManagedWebsitesInfo( Profile* profile) const { base::Value managed_websites(base::Value::Type::LIST); - for (const auto& entry : - ManagedConfigurationAPIFactory::GetForProfile(profile) - ->GetManagedOrigins()) { + auto* managed_configuration = + ManagedConfigurationAPIFactory::GetForProfile(profile); + + if (!managed_configuration) + return managed_websites; + + for (const auto& entry : managed_configuration->GetManagedOrigins()) { managed_websites.Append(entry.Serialize()); } + return managed_websites; }
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc index b4ebe83..00acc8a 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -508,5 +508,5 @@ ui::ScaleFactor scale_factor) { return static_cast<base::RefCountedMemory*>( ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( - IDR_PRODUCT_LOGO_16, scale_factor)); + IDR_NTP_FAVICON, scale_factor)); }
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index b2b62cc1..97bddf9c 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1619524394-48033df19b0f37e24e0b0da6507e9b3956233bd0.profdata +chrome-mac-master-1619546379-20f90ebeb75ecf41e96b23dab18358a4953a8c02.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 299f857f5..004edb94 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1619524394-f046af2c1d0f74d493605f08cafed80e68639533.profdata +chrome-win32-master-1619535568-f9f3d0e78e8e9d18be7f93808c31850e4c6dfdec.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 456cd4d9..1c6a7e2 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1619524394-b127d25ce2bf50d36f6be1c0d07e9eb022985f6a.profdata +chrome-win64-master-1619535568-e1590f0dc714ab34c1f50650a262ae1f1fca57d5.profdata
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 3fef855..3acc14a 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2457,7 +2457,10 @@ # Browser tests for functionality that is only intended to be present in # ash-chrome, not lacros-chrome. if (is_chromeos_ash && !is_chromeos_lacros) { - sources += [ "../browser/ash/crosapi/screen_manager_ash_browsertest.cc" ] + sources += [ + "../browser/ash/crosapi/browser_data_migrator_browsertest.cc", + "../browser/ash/crosapi/screen_manager_ash_browsertest.cc", + ] } # NOTE: This is the main "browser_tests" section for |is_chromeos_ash|. @@ -4957,7 +4960,7 @@ "../browser/ui/autofill/payments/local_card_migration_bubble_controller_impl_unittest.cc", "../browser/ui/autofill/payments/offer_notification_bubble_controller_impl_unittest.cc", "../browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc", - "../browser/ui/autofill/save_address_profile_bubble_controller_impl_unittest.cc", + "../browser/ui/autofill/save_update_address_profile_bubble_controller_impl_unittest.cc", "../browser/ui/bluetooth/bluetooth_chooser_controller_unittest.cc", "../browser/ui/bluetooth/bluetooth_scanning_prompt_controller_unittest.cc", "../browser/ui/media_router/cast_modes_with_media_sources_unittest.cc",
diff --git a/chrome/test/android/browsertests_apk/android_browsertests_jni_onload.cc b/chrome/test/android/browsertests_apk/android_browsertests_jni_onload.cc index a70e3753..302c558 100644 --- a/chrome/test/android/browsertests_apk/android_browsertests_jni_onload.cc +++ b/chrome/test/android/browsertests_apk/android_browsertests_jni_onload.cc
@@ -5,7 +5,6 @@ #include <memory> #include "base/android/jni_android.h" -#include "base/android/library_loader/library_loader_hooks.h" #include "chrome/app/android/chrome_jni_onload.h" #include "chrome/test/base/chrome_test_launcher.h" #include "content/public/app/content_jni_onload.h" @@ -22,10 +21,6 @@ if (!content::android::OnJNIOnLoadInit()) return -1; - // Tests do not have a version so they expect the version number to be "" in - // java. - base::android::SetVersionNumber(""); - // This needs to be done before base::TestSuite::Initialize() is called, // as it also tries to set MessagePumpForUIFactory. base::MessagePump::OverrideMessagePumpForUIFactory(
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/OmniboxTestUtils.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/OmniboxTestUtils.java index beb4982..8ec6f4b 100644 --- a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/OmniboxTestUtils.java +++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/OmniboxTestUtils.java
@@ -77,7 +77,7 @@ * do not attempt to log selection. */ @Override - public void onSuggestionSelected(int selectedIndex, int disposition, int hashCode, int type, + public void onSuggestionSelected(int selectedIndex, int disposition, int type, String currentPageUrl, int pageClassification, long elapsedTimeSinceModified, int completedLength, WebContents webContents) {} @@ -102,7 +102,7 @@ Pair<String, AutocompleteResult> autocompleteSet = mAutocompleteResults.get(autocompleteText); if (autocompleteSet == null) return false; - onSuggestionsReceived(autocompleteSet.second, autocompleteSet.first, 0); + onSuggestionsReceived(autocompleteSet.second, autocompleteSet.first); return true; } }
diff --git a/chrome/test/chromedriver/BUILD.gn b/chrome/test/chromedriver/BUILD.gn index dd6c4b66..31237143 100644 --- a/chrome/test/chromedriver/BUILD.gn +++ b/chrome/test/chromedriver/BUILD.gn
@@ -4,6 +4,7 @@ import("//build/config/python.gni") import("//build/config/ui.gni") +import("//build/linux/strip_binary.gni") import("//build/util/lastchange.gni") import("//testing/test.gni") import("//third_party/ffmpeg/ffmpeg_options.gni") @@ -305,7 +306,13 @@ } } -executable("chromedriver") { +if (is_linux) { + chromedriver_output = "chromedriver.unstripped" +} else { + chromedriver_output = "chromedriver" +} + +executable("$chromedriver_output") { testonly = true sources = [ "server/chromedriver_server.cc" ] @@ -328,6 +335,16 @@ } } +if (is_linux) { + strip_binary("chromedriver") { + testonly = true + binary_input = "$root_out_dir/$chromedriver_output" + symbol_output = "$root_out_dir/chromedriver.debug" + stripped_binary_output = "$root_out_dir/chromedriver" + deps = [ ":$chromedriver_output" ] + } +} + python_library("chromedriver_py_tests") { testonly = true deps = [
diff --git a/chrome/test/data/webui/chromeos/scanning/scan_done_section_test.js b/chrome/test/data/webui/chromeos/scanning/scan_done_section_test.js index 91d01d3..0a8ee33 100644 --- a/chrome/test/data/webui/chromeos/scanning/scan_done_section_test.js +++ b/chrome/test/data/webui/chromeos/scanning/scan_done_section_test.js
@@ -133,6 +133,22 @@ assertTrue(doneEventFired); }); + // Verify clicking the Show in folder button invokes showFileInLocation(). + test('showInFolderButtonClick', () => { + const scannedFilePaths = + [{'path': '/test/path/scan1.jpg'}, {'path': '/test/path/scan2.jpg'}]; + scanningBrowserProxy.setPathToFile(scannedFilePaths[1].path); + scanDoneSection.scannedFilePaths = scannedFilePaths; + + return flushTasks().then(() => { + scanDoneSection.$$('#showInFolderButton').click(); + return flushTasks().then(() => { + assertEquals( + 1, scanningBrowserProxy.getCallCount('showFileInLocation')); + }); + }); + }); + // Verify clicking the edit button attempts to open the Media app with the // correct file paths. test('editButtonClick', () => {
diff --git a/chrome/test/data/webui/new_tab_page/modules/modules_test.js b/chrome/test/data/webui/new_tab_page/modules/modules_test.js index 4c477ca..f55acbe3 100644 --- a/chrome/test/data/webui/new_tab_page/modules/modules_test.js +++ b/chrome/test/data/webui/new_tab_page/modules/modules_test.js
@@ -4,10 +4,10 @@ import {$$, Module, ModuleRegistry, ModulesElement, NewTabPageProxy} from 'chrome://new-tab-page/new_tab_page.js'; -import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js'; +import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from '../../chai_assert.js'; import {TestBrowserProxy} from '../../test_browser_proxy.m.js'; import {fakeMetricsPrivate, MetricsTracker} from '../metrics_test_support.js'; -import {createMock} from '../test_support.js'; +import {assertNotStyle, assertStyle, createMock} from '../test_support.js'; /** @return {!TestBrowserProxy} */ function installMockHandler() { @@ -79,6 +79,12 @@ const moduleWrappers = modulesElement.shadowRoot.querySelectorAll('ntp-module-wrapper'); assertEquals(2, moduleWrappers.length); + if (visible) { + assertNotStyle(moduleWrappers[0], 'display', 'none'); + } else { + assertStyle(moduleWrappers[0], 'display', 'none'); + } + assertStyle(moduleWrappers[1], 'display', 'none'); const histogram = 'NewTabPage.Modules.EnabledOnNTPLoad'; assertEquals(1, metrics.count(`${histogram}.foo`, visible)); assertEquals(1, metrics.count(`${histogram}.bar`, false)); @@ -100,11 +106,14 @@ element: document.createElement('div'), }, ]); + callbackRouterRemote.setDisabledModules(false, []); + await callbackRouterRemote.$.flushForTesting(); // Assert. const moduleWrappers = modulesElement.shadowRoot.querySelectorAll('ntp-module-wrapper'); assertEquals(1, moduleWrappers.length); + assertNotStyle(moduleWrappers[0], 'display', 'none'); assertFalse($$(modulesElement, '#removeModuleToast').open); // Act. @@ -120,6 +129,7 @@ })); // Assert. + assertStyle(moduleWrappers[0], 'display', 'none'); assertTrue($$(modulesElement, '#removeModuleToast').open); assertEquals( 'Foo', @@ -132,6 +142,7 @@ $$(modulesElement, '#undoRemoveModuleButton').click(); // Assert. + assertNotStyle(moduleWrappers[0], 'display', 'none'); assertFalse($$(modulesElement, '#removeModuleToast').open); assertTrue(restoreCalled); assertEquals('foo', handler.getArgs('onRestoreModule')[0]); @@ -149,11 +160,14 @@ }, element: document.createElement('div'), }]); + callbackRouterRemote.setDisabledModules(false, []); + await callbackRouterRemote.$.flushForTesting(); // Assert. const moduleWrappers = modulesElement.shadowRoot.querySelectorAll('ntp-module-wrapper'); assertEquals(1, moduleWrappers.length); + assertNotStyle(moduleWrappers[0], 'display', 'none'); assertFalse($$(modulesElement, '#removeModuleToast').open); // Act. @@ -169,6 +183,14 @@ })); // Assert. + assertDeepEquals(['foo', true], handler.getArgs('setModuleDisabled')[0]); + + // Act. + callbackRouterRemote.setDisabledModules(false, ['foo']); + await callbackRouterRemote.$.flushForTesting(); + + // Assert. + assertStyle(moduleWrappers[0], 'display', 'none'); assertTrue($$(modulesElement, '#removeModuleToast').open); assertEquals( 'Foo', @@ -182,6 +204,14 @@ $$(modulesElement, '#undoRemoveModuleButton').click(); // Assert. + assertDeepEquals(['foo', false], handler.getArgs('setModuleDisabled')[1]); + + // Act. + callbackRouterRemote.setDisabledModules(false, []); + await callbackRouterRemote.$.flushForTesting(); + + // Assert. + assertNotStyle(moduleWrappers[0], 'display', 'none'); assertFalse($$(modulesElement, '#removeModuleToast').open); assertTrue(restoreCalled); assertEquals(1, metrics.count('NewTabPage.Modules.Enabled', 'foo'));
diff --git a/chrome/test/data/webui/new_tab_page/test_support.js b/chrome/test/data/webui/new_tab_page/test_support.js index 64b6161..9f332cc 100644 --- a/chrome/test/data/webui/new_tab_page/test_support.js +++ b/chrome/test/data/webui/new_tab_page/test_support.js
@@ -20,7 +20,7 @@ /** * Asserts the computed style value for an element. - * @param {!HTMLElement} element The element. + * @param {!Element} element The element. * @param {string} name The name of the style to assert. * @param {string} expected The expected style value. */ @@ -31,7 +31,7 @@ /** * Asserts the computed style for an element is not value. - * @param {!HTMLElement} element The element. + * @param {!Element} element The element. * @param {string} name The name of the style to assert. * @param {string} not The value the style should not be. */
diff --git a/chromecast/public/reboot_shlib.h b/chromecast/public/reboot_shlib.h index 1fd01e03..73fee78 100644 --- a/chromecast/public/reboot_shlib.h +++ b/chromecast/public/reboot_shlib.h
@@ -94,6 +94,15 @@ // bugs. In that case, business logic can't proceed and busy references // can't be trusted, so a dirty reboot will be executed. MULTI_SERVICE_BUG = 17, + + // Intentional shutdown by power manager of battery powered devices. + POWER_MANAGER_SHUTDOWN = 18, + + // Restart of the Cast component to apply changes due to an experiment flag + // value change. This is only used to handle flag changes that would be more + // risky to attempt without a full process restart. Very few experiments + // trigger this path. + EXPERIMENT_CHANGE = 19, }; // Initializes any platform-specific reboot systems.
diff --git a/chromecast/system/reboot/reboot_util_core.cc b/chromecast/system/reboot/reboot_util_core.cc index da32813..4abcfe0 100644 --- a/chromecast/system/reboot/reboot_util_core.cc +++ b/chromecast/system/reboot/reboot_util_core.cc
@@ -46,6 +46,8 @@ case RebootShlib::RebootSource::GRACEFUL_RESTART: case RebootShlib::RebootSource::UNGRACEFUL_RESTART: case RebootShlib::RebootSource::MULTI_SERVICE_BUG: + case RebootShlib::RebootSource::POWER_MANAGER_SHUTDOWN: + case RebootShlib::RebootSource::EXPERIMENT_CHANGE: return true; default: return false;
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd index 0806ed81..2da5e8f 100644 --- a/chromeos/chromeos_strings.grd +++ b/chromeos/chromeos_strings.grd
@@ -659,6 +659,9 @@ =1 {Edit file} other {Edit files}} </message> + <message name="IDS_SCANNING_APP_SHOW_IN_FOLDER_BUTTON_LABEL" desc="The label for the button that opens the files app in the location of the saved scan."> + Show in folder + </message> <!-- Diagnostics App --> <message name="IDS_DIAGNOSTICS_TITLE" desc="The title of the diagnostics app.">
diff --git a/chromeos/chromeos_strings_grd/IDS_SCANNING_APP_SHOW_IN_FOLDER_BUTTON_LABEL.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SCANNING_APP_SHOW_IN_FOLDER_BUTTON_LABEL.png.sha1 new file mode 100644 index 0000000..0275c7a8 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SCANNING_APP_SHOW_IN_FOLDER_BUTTON_LABEL.png.sha1
@@ -0,0 +1 @@ +5abb7f7216fd5f56406ae9350ef342e6a4c4ef53 \ No newline at end of file
diff --git a/chromeos/dbus/rmad/OWNERS b/chromeos/dbus/rmad/OWNERS new file mode 100644 index 0000000..4822e6f6 --- /dev/null +++ b/chromeos/dbus/rmad/OWNERS
@@ -0,0 +1,3 @@ +# Primary Owners +joonbug@chromium.org +zentaro@chromium.org
diff --git a/chromeos/dbus/rmad/fake_rmad_client.cc b/chromeos/dbus/rmad/fake_rmad_client.cc index 5bb2d69..5f8f6a1 100644 --- a/chromeos/dbus/rmad/fake_rmad_client.cc +++ b/chromeos/dbus/rmad/fake_rmad_client.cc
@@ -10,7 +10,7 @@ FakeRmadClient::~FakeRmadClient() = default; void FakeRmadClient::GetCurrentState( - DBusMethodCallback<rmad::GetCurrentStateReply> callback) { + DBusMethodCallback<rmad::GetStateReply> callback) { // TODO(gavindodd): Implement fake state. std::move(callback).Run(base::nullopt); }
diff --git a/chromeos/dbus/rmad/fake_rmad_client.h b/chromeos/dbus/rmad/fake_rmad_client.h index 927f39c..0c63a71 100644 --- a/chromeos/dbus/rmad/fake_rmad_client.h +++ b/chromeos/dbus/rmad/fake_rmad_client.h
@@ -6,7 +6,6 @@ #define CHROMEOS_DBUS_RMAD_FAKE_RMAD_CLIENT_H_ #include "base/component_export.h" -#include "chromeos/dbus/rmad/rmad.pb.h" #include "chromeos/dbus/rmad/rmad_client.h" namespace chromeos { @@ -19,7 +18,7 @@ ~FakeRmadClient() override; void GetCurrentState( - DBusMethodCallback<rmad::GetCurrentStateReply> callback) override; + DBusMethodCallback<rmad::GetStateReply> callback) override; }; } // namespace chromeos
diff --git a/chromeos/dbus/rmad/rmad_client.cc b/chromeos/dbus/rmad/rmad_client.cc index 7ac0e7e..96bc6dec 100644 --- a/chromeos/dbus/rmad/rmad_client.cc +++ b/chromeos/dbus/rmad/rmad_client.cc
@@ -22,7 +22,7 @@ public: void Init(dbus::Bus* bus); void GetCurrentState( - DBusMethodCallback<rmad::GetCurrentStateReply> callback) override; + DBusMethodCallback<rmad::GetStateReply> callback) override; RmadClientImpl() = default; RmadClientImpl(const RmadClientImpl&) = delete; @@ -30,9 +30,8 @@ ~RmadClientImpl() override = default; private: - void OnGetCurrentStateMethod( - DBusMethodCallback<rmad::GetCurrentStateReply> callback, - dbus::Response* response); + void OnGetCurrentStateMethod(DBusMethodCallback<rmad::GetStateReply> callback, + dbus::Response* response); dbus::ObjectProxy* rmad_proxy_ = nullptr; @@ -47,18 +46,10 @@ } void RmadClientImpl::GetCurrentState( - DBusMethodCallback<rmad::GetCurrentStateReply> callback) { + DBusMethodCallback<rmad::GetStateReply> callback) { dbus::MethodCall method_call(rmad::kRmadInterfaceName, rmad::kGetCurrentStateMethod); dbus::MessageWriter writer(&method_call); - // Create the empty request proto. - rmad::GetCurrentStateRequest protobuf_request; - if (!writer.AppendProtoAsArrayOfBytes(protobuf_request)) { - LOG(ERROR) << "Error constructing message for " - << rmad::kGetCurrentStateMethod; - std::move(callback).Run(base::nullopt); - return; - } rmad_proxy_->CallMethod( &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, base::BindOnce(&RmadClientImpl::OnGetCurrentStateMethod, @@ -66,7 +57,7 @@ } void RmadClientImpl::OnGetCurrentStateMethod( - DBusMethodCallback<rmad::GetCurrentStateReply> callback, + DBusMethodCallback<rmad::GetStateReply> callback, dbus::Response* response) { if (!response) { LOG(ERROR) << "Error calling " << rmad::kGetCurrentStateMethod; @@ -75,13 +66,8 @@ } dbus::MessageReader reader(response); - rmad::GetCurrentStateReply response_proto; - if (!reader.PopArrayOfBytesAsProto(&response_proto)) { - LOG(ERROR) << "Unable to decode " << rmad::kGetCurrentStateMethod - << " response"; - std::move(callback).Run(base::nullopt); - return; - } + rmad::GetStateReply response_proto; + // TODO(gavindodd): pop the proto. std::move(callback).Run(response_proto); }
diff --git a/chromeos/dbus/rmad/rmad_client.h b/chromeos/dbus/rmad/rmad_client.h index 1a4db79e..e1b09d3 100644 --- a/chromeos/dbus/rmad/rmad_client.h +++ b/chromeos/dbus/rmad/rmad_client.h
@@ -7,12 +7,20 @@ #include "base/component_export.h" #include "chromeos/dbus/dbus_method_call_status.h" -#include "chromeos/dbus/rmad/rmad.pb.h" namespace dbus { class Bus; } +// Temporary to allow code to compile while prototype rmad.proto is replaced. +namespace rmad { +class GetStateReply { + public: + int state() { return 0; } +}; + +} // namespace rmad + namespace chromeos { // RmadClient is responsible for receiving D-bus signals from the RmaDaemon @@ -37,7 +45,7 @@ // Asynchronously gets the current RMA state. // The state contains an error code and the current state of the RMA process. virtual void GetCurrentState( - DBusMethodCallback<rmad::GetCurrentStateReply> callback) = 0; + DBusMethodCallback<rmad::GetStateReply> callback) = 0; protected: // Initialize/Shutdown should be used instead.
diff --git a/components/browser_ui/contacts_picker/android/contacts_picker_feature_list.cc b/components/browser_ui/contacts_picker/android/contacts_picker_feature_list.cc index 95195ed3..2d0d737a 100644 --- a/components/browser_ui/contacts_picker/android/contacts_picker_feature_list.cc +++ b/components/browser_ui/contacts_picker/android/contacts_picker_feature_list.cc
@@ -5,8 +5,6 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" #include "base/notreached.h" -#include "base/stl_util.h" - #include "components/browser_ui/contacts_picker/android/contacts_picker_jni_headers/ContactsPickerFeatureList_jni.h" #include "components/browser_ui/contacts_picker/android/features.h" @@ -20,15 +18,15 @@ // Array of features exposed through the Java ContentFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. content_features.h). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &kContactsPickerSelectAll, }; // TODO(crbug.com/1060097): Remove this once a generalized FeatureList exists. const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature not found in ContactsPickerFeatureList: " << feature_name;
diff --git a/components/browser_ui/site_settings/android/site_settings_feature_list.cc b/components/browser_ui/site_settings/android/site_settings_feature_list.cc index 71f5492..8670bc96 100644 --- a/components/browser_ui/site_settings/android/site_settings_feature_list.cc +++ b/components/browser_ui/site_settings/android/site_settings_feature_list.cc
@@ -5,8 +5,6 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" #include "base/notreached.h" -#include "base/stl_util.h" - #include "components/browser_ui/site_settings/android/features.h" #include "components/browser_ui/site_settings/android/site_settings_jni_headers/SiteSettingsFeatureList_jni.h" @@ -20,16 +18,16 @@ // Array of features exposed through the Java ContentFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. content_features.h). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &kAppNotificationStatusMessaging, &kActionableContentSettings, }; // TODO(crbug.com/1060097): Remove this once a generalized FeatureList exists. const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature not found in SiteSettingsFeatureList: " << feature_name;
diff --git a/components/browsing_data/content/BUILD.gn b/components/browsing_data/content/BUILD.gn index 2d0ff22..74eebd4 100644 --- a/components/browsing_data/content/BUILD.gn +++ b/components/browsing_data/content/BUILD.gn
@@ -41,6 +41,7 @@ "//components/content_settings/core/common", "//components/no_state_prefetch/browser", "//components/prefs", + "//components/services/storage/public/cpp", "//components/site_isolation", "//content/public/browser", "//net", @@ -97,6 +98,7 @@ deps = [ ":content", "//base", + "//components/services/storage/public/cpp", "//content/public/browser", "//testing/gtest", "//url",
diff --git a/components/browsing_data/content/local_shared_objects_container.cc b/components/browsing_data/content/local_shared_objects_container.cc index f6c6b871..5233e8d 100644 --- a/components/browsing_data/content/local_shared_objects_container.cc +++ b/components/browsing_data/content/local_shared_objects_container.cc
@@ -196,7 +196,7 @@ hosts.insert(origin.host()); for (const auto& info : shared_workers()->GetSharedWorkerInfo()) - hosts.insert(info.constructor_origin.host()); + hosts.insert(info.storage_key.origin().host()); for (const auto& origin : cache_storages()->GetOrigins()) hosts.insert(origin.host());
diff --git a/components/browsing_data/content/mock_shared_worker_helper.cc b/components/browsing_data/content/mock_shared_worker_helper.cc index ddbb001..bad017d7 100644 --- a/components/browsing_data/content/mock_shared_worker_helper.cc +++ b/components/browsing_data/content/mock_shared_worker_helper.cc
@@ -6,6 +6,7 @@ #include "base/callback.h" #include "base/containers/contains.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/storage_partition.h" #include "testing/gtest/include/gtest/gtest.h" @@ -28,8 +29,8 @@ void MockSharedWorkerHelper::DeleteSharedWorker( const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) { - SharedWorkerInfo key(worker, name, constructor_origin); + const storage::StorageKey& storage_key) { + SharedWorkerInfo key(worker, name, storage_key); ASSERT_TRUE(base::Contains(workers_, key)); workers_[key] = false; } @@ -37,15 +38,15 @@ void MockSharedWorkerHelper::AddSharedWorkerSamples() { GURL worker1("https://sharedworkerhost1:1/app/worker.js"); std::string name1("my worker"); - url::Origin constructor_origin1 = url::Origin::Create(worker1); + storage::StorageKey storage_key1(url::Origin::Create(worker1)); GURL worker2("https://sharedworkerhost2:2/worker.js"); std::string name2("another worker"); - url::Origin constructor_origin2 = url::Origin::Create(worker2); + storage::StorageKey storage_key2(url::Origin::Create(worker2)); - response_.push_back({worker1, name1, constructor_origin1}); - response_.push_back({worker2, name2, constructor_origin2}); - workers_[{worker1, name1, constructor_origin1}] = true; - workers_[{worker2, name2, constructor_origin2}] = true; + response_.emplace_back(worker1, name1, storage_key1); + response_.emplace_back(worker2, name2, storage_key2); + workers_[{worker1, name1, storage_key1}] = true; + workers_[{worker2, name2, storage_key2}] = true; } void MockSharedWorkerHelper::Notify() {
diff --git a/components/browsing_data/content/mock_shared_worker_helper.h b/components/browsing_data/content/mock_shared_worker_helper.h index f6a01e4..464f124 100644 --- a/components/browsing_data/content/mock_shared_worker_helper.h +++ b/components/browsing_data/content/mock_shared_worker_helper.h
@@ -14,6 +14,10 @@ class BrowserContext; } +namespace storage { +class StorageKey; +} // namespace storage + namespace browsing_data { class MockSharedWorkerHelper : public SharedWorkerHelper { @@ -37,7 +41,7 @@ void StartFetching(FetchCallback callback) override; void DeleteSharedWorker(const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) override; + const storage::StorageKey& storage_key) override; private: ~MockSharedWorkerHelper() override;
diff --git a/components/browsing_data/content/shared_worker_helper.cc b/components/browsing_data/content/shared_worker_helper.cc index 4c838c4..d9c10ae 100644 --- a/components/browsing_data/content/shared_worker_helper.cc +++ b/components/browsing_data/content/shared_worker_helper.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/location.h" #include "components/browsing_data/content/browsing_data_helper.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/shared_worker_service.h" @@ -20,8 +21,8 @@ SharedWorkerHelper::SharedWorkerInfo::SharedWorkerInfo( const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) - : worker(worker), name(name), constructor_origin(constructor_origin) {} + const storage::StorageKey& storage_key) + : worker(worker), name(name), storage_key(storage_key) {} SharedWorkerHelper::SharedWorkerInfo::SharedWorkerInfo( const SharedWorkerInfo& other) = default; @@ -30,8 +31,8 @@ bool SharedWorkerHelper::SharedWorkerInfo::operator<( const SharedWorkerInfo& other) const { - return std::tie(worker, name, constructor_origin) < - std::tie(other.worker, other.name, other.constructor_origin); + return std::tie(worker, name, storage_key) < + std::tie(other.worker, other.name, other.storage_key); } SharedWorkerHelper::SharedWorkerHelper( @@ -53,10 +54,10 @@ void SharedWorkerHelper::DeleteSharedWorker( const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - storage_partition_->GetSharedWorkerService()->TerminateWorker( - worker, name, constructor_origin); + storage_partition_->GetSharedWorkerService()->TerminateWorker(worker, name, + storage_key); } CannedSharedWorkerHelper::CannedSharedWorkerHelper( @@ -68,12 +69,12 @@ void CannedSharedWorkerHelper::AddSharedWorker( const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { if (!HasWebScheme(worker)) return; // Non-websafe state is not considered browsing data. pending_shared_worker_info_.insert( - SharedWorkerInfo(worker, name, constructor_origin)); + SharedWorkerInfo(worker, name, storage_key)); } void CannedSharedWorkerHelper::Reset() { @@ -107,13 +108,13 @@ void CannedSharedWorkerHelper::DeleteSharedWorker( const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { for (auto it = pending_shared_worker_info_.begin(); it != pending_shared_worker_info_.end();) { if (it->worker == worker && it->name == name && - it->constructor_origin == constructor_origin) { + it->storage_key == storage_key) { SharedWorkerHelper::DeleteSharedWorker(it->worker, it->name, - it->constructor_origin); + it->storage_key); it = pending_shared_worker_info_.erase(it); } else { ++it;
diff --git a/components/browsing_data/content/shared_worker_helper.h b/components/browsing_data/content/shared_worker_helper.h index ff00b0f0..916a186a 100644 --- a/components/browsing_data/content/shared_worker_helper.h +++ b/components/browsing_data/content/shared_worker_helper.h
@@ -14,6 +14,7 @@ #include "base/callback.h" #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "url/gurl.h" #include "url/origin.h" @@ -33,7 +34,7 @@ struct SharedWorkerInfo { SharedWorkerInfo(const GURL& worker, const std::string& name, - const url::Origin& constructor_origin); + const storage::StorageKey& storage_key); SharedWorkerInfo(const SharedWorkerInfo& other); ~SharedWorkerInfo(); @@ -41,7 +42,7 @@ GURL worker; std::string name; - url::Origin constructor_origin; + storage::StorageKey storage_key; }; using FetchCallback = @@ -57,7 +58,7 @@ // Requests the given Shared Worker to be deleted. virtual void DeleteSharedWorker(const GURL& worker, const std::string& name, - const url::Origin& constructor_origin); + const storage::StorageKey& storage_key); protected: virtual ~SharedWorkerHelper(); @@ -82,7 +83,7 @@ // this helper. void AddSharedWorker(const GURL& worker, const std::string& name, - const url::Origin& constructor_origin); + const storage::StorageKey& storage_key); // Clears the list of canned Shared Workers. void Reset(); @@ -101,7 +102,7 @@ void StartFetching(FetchCallback callback) override; void DeleteSharedWorker(const GURL& worker, const std::string& name, - const url::Origin& constructor_origin) override; + const storage::StorageKey& storage_key) override; private: ~CannedSharedWorkerHelper() override;
diff --git a/components/browsing_data/content/shared_worker_helper_unittest.cc b/components/browsing_data/content/shared_worker_helper_unittest.cc index edb167d..bd2649e 100644 --- a/components/browsing_data/content/shared_worker_helper_unittest.cc +++ b/components/browsing_data/content/shared_worker_helper_unittest.cc
@@ -27,13 +27,14 @@ TEST_F(CannedSharedWorkerHelperTest, Empty) { const GURL worker("https://host1:1/worker.js"); std::string name("test"); - const url::Origin constructor_origin = url::Origin::Create(worker); + const storage::StorageKey storage_key = + storage::StorageKey(url::Origin::Create(worker)); auto helper = base::MakeRefCounted<CannedSharedWorkerHelper>( content::BrowserContext::GetDefaultStoragePartition(browser_context())); EXPECT_TRUE(helper->empty()); - helper->AddSharedWorker(worker, name, constructor_origin); + helper->AddSharedWorker(worker, name, storage_key); EXPECT_FALSE(helper->empty()); helper->Reset(); EXPECT_TRUE(helper->empty()); @@ -42,19 +43,19 @@ TEST_F(CannedSharedWorkerHelperTest, Delete) { const GURL worker1("http://host1:9000/worker.js"); std::string name1("name"); - const url::Origin constructor_origin1 = url::Origin::Create(worker1); + const storage::StorageKey storage_key1(url::Origin::Create(worker1)); const GURL worker2("https://example.com/worker.js"); std::string name2("name"); - const url::Origin constructor_origin2 = url::Origin::Create(worker2); + const storage::StorageKey storage_key2(url::Origin::Create(worker2)); auto helper = base::MakeRefCounted<CannedSharedWorkerHelper>( content::BrowserContext::GetDefaultStoragePartition(browser_context())); EXPECT_TRUE(helper->empty()); - helper->AddSharedWorker(worker1, name1, constructor_origin1); - helper->AddSharedWorker(worker2, name2, constructor_origin2); + helper->AddSharedWorker(worker1, name1, storage_key1); + helper->AddSharedWorker(worker2, name2, storage_key2); EXPECT_EQ(2u, helper->GetSharedWorkerCount()); - helper->DeleteSharedWorker(worker2, name2, constructor_origin2); + helper->DeleteSharedWorker(worker2, name2, storage_key2); EXPECT_EQ(1u, helper->GetSharedWorkerCount()); } @@ -62,16 +63,16 @@ const GURL worker1("chrome-extension://abcdefghijklmnopqrstuvwxyz/worker.js"); const GURL worker2("devtools://abcdefghijklmnopqrstuvwxyz/worker.js"); std::string name("name"); - const url::Origin constructor_origin1 = url::Origin::Create(worker1); - const url::Origin constructor_origin2 = url::Origin::Create(worker2); + const storage::StorageKey storage_key1(url::Origin::Create(worker1)); + const storage::StorageKey storage_key2(url::Origin::Create(worker2)); auto helper = base::MakeRefCounted<CannedSharedWorkerHelper>( content::BrowserContext::GetDefaultStoragePartition(browser_context())); EXPECT_TRUE(helper->empty()); - helper->AddSharedWorker(worker1, name, constructor_origin1); + helper->AddSharedWorker(worker1, name, storage_key1); EXPECT_TRUE(helper->empty()); - helper->AddSharedWorker(worker2, name, constructor_origin2); + helper->AddSharedWorker(worker2, name, storage_key2); EXPECT_TRUE(helper->empty()); }
diff --git a/components/content_creation/notes/android/BUILD.gn b/components/content_creation/notes/android/BUILD.gn index e6678045..e45e09b0 100644 --- a/components/content_creation/notes/android/BUILD.gn +++ b/components/content_creation/notes/android/BUILD.gn
@@ -9,6 +9,7 @@ sources = [ "java/src/org/chromium/components/content_creation/notes/NoteService.java", "java/src/org/chromium/components/content_creation/notes/bridges/NoteServiceBridge.java", + "java/src/org/chromium/components/content_creation/notes/bridges/NoteTemplateConversionBridge.java", "java/src/org/chromium/components/content_creation/notes/models/NoteTemplate.java", ] @@ -19,13 +20,18 @@ } generate_jni("jni_headers") { - sources = [ "java/src/org/chromium/components/content_creation/notes/bridges/NoteServiceBridge.java" ] + sources = [ + "java/src/org/chromium/components/content_creation/notes/bridges/NoteServiceBridge.java", + "java/src/org/chromium/components/content_creation/notes/bridges/NoteTemplateConversionBridge.java", + ] } source_set("android") { sources = [ "note_service_bridge.cc", "note_service_bridge.h", + "note_template_conversion_bridge.cc", + "note_template_conversion_bridge.h", ] deps = [
diff --git a/components/content_creation/notes/android/java/src/org/chromium/components/content_creation/notes/bridges/NoteTemplateConversionBridge.java b/components/content_creation/notes/android/java/src/org/chromium/components/content_creation/notes/bridges/NoteTemplateConversionBridge.java new file mode 100644 index 0000000..b8c26b9c --- /dev/null +++ b/components/content_creation/notes/android/java/src/org/chromium/components/content_creation/notes/bridges/NoteTemplateConversionBridge.java
@@ -0,0 +1,45 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.components.content_creation.notes.bridges; + +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.JNINamespace; +import org.chromium.components.content_creation.notes.models.NoteTemplate; + +import java.util.ArrayList; +import java.util.List; + +/** + * Bridge class in charge of creating Java NoteTemplate instances based on their + * native struct counterpart. + */ +@JNINamespace("content_creation") +public class NoteTemplateConversionBridge { + /** + * Creates an empty Java List instance to be used in native. + * @return a reference to an empty Java List. + */ + @CalledByNative + private static List<NoteTemplate> createTemplateList() { + return new ArrayList<>(); + } + + /** + * Creates a {@link NoteTemplate} instance based on the given parameters, + * and then attempts to add it to the given list. + * @return the {@link NoteTemplate} instance. + */ + @CalledByNative + private static NoteTemplate createTemplateAndMaybeAddToList( + @Nullable List<NoteTemplate> list, String localizedName) { + NoteTemplate template = new NoteTemplate(localizedName); + + if (list != null) { + list.add(template); + } + + return template; + } +} \ No newline at end of file
diff --git a/components/content_creation/notes/android/note_service_bridge.cc b/components/content_creation/notes/android/note_service_bridge.cc index b62509da..f0e6840 100644 --- a/components/content_creation/notes/android/note_service_bridge.cc +++ b/components/content_creation/notes/android/note_service_bridge.cc
@@ -8,6 +8,8 @@ #include "base/android/jni_array.h" #include "base/bind.h" #include "components/content_creation/notes/android/jni_headers/NoteServiceBridge_jni.h" +#include "components/content_creation/notes/android/jni_headers/NoteTemplateConversionBridge_jni.h" +#include "components/content_creation/notes/android/note_template_conversion_bridge.h" #include "components/content_creation/notes/core/notes_types.h" using base::android::AttachCurrentThread; @@ -18,7 +20,10 @@ void RunGetTemplatesCallback(const JavaRef<jobject>& j_callback, std::vector<NoteTemplate> templates) { - // TODO(crbug.com/1194168): Invoke callback with templates as Java objects. + JNIEnv* env = AttachCurrentThread(); + RunObjectCallbackAndroid( + j_callback, + NoteTemplateConversionBridge::CreateJavaNoteTemplates(env, templates)); } } // namespace
diff --git a/components/content_creation/notes/android/note_template_conversion_bridge.cc b/components/content_creation/notes/android/note_template_conversion_bridge.cc new file mode 100644 index 0000000..442edc9 --- /dev/null +++ b/components/content_creation/notes/android/note_template_conversion_bridge.cc
@@ -0,0 +1,42 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/content_creation/notes/android/note_template_conversion_bridge.h" + +#include "base/android/jni_string.h" +#include "components/content_creation/notes/android/jni_headers/NoteTemplateConversionBridge_jni.h" + +namespace content_creation { + +using base::android::ConvertUTF8ToJavaString; +using base::android::ScopedJavaLocalRef; + +namespace { + +ScopedJavaLocalRef<jobject> CreateJavaTemplateAndMaybeAddToList( + JNIEnv* env, + ScopedJavaLocalRef<jobject> jlist, + const NoteTemplate& template) { + return Java_NoteTemplateConversionBridge_createTemplateAndMaybeAddToList( + env, jlist, ConvertUTF8ToJavaString(template.localized_name)); +} + +} // namespace + +// static +ScopedJavaLocalRef<jobject> +NoteTemplateConversionBridge::CreateJavaNoteTemplates( + JNIEnv* env, + const std::vector<NoteTemplate>& templates) { + ScopedJavaLocalRef<jobject> jlist = + Java_NoteTemplateConversionBridge_createTemplateList(env); + + for (const auto& template : templates) { + CreateJavaTemplateAndMaybeAddToList(env, jlist, templates); + } + + return jlist; +} + +} // namespace content_creation
diff --git a/components/content_creation/notes/android/note_template_conversion_bridge.h b/components/content_creation/notes/android/note_template_conversion_bridge.h new file mode 100644 index 0000000..d62c0d7 --- /dev/null +++ b/components/content_creation/notes/android/note_template_conversion_bridge.h
@@ -0,0 +1,24 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_CONTENT_CREATION_NOTES_ANDROID_NOTE_TEMPLATE_CONVERSION_BRIDGE_H_ +#define COMPONENTS_CONTENT_CREATION_NOTES_ANDROID_NOTE_TEMPLATE_CONVERSION_BRIDGE_H_ + +#include "base/android/jni_android.h" +#include "components/content_creation/notes/notes_types.h" + +using base::android::ScopedJavaLocalRef; + +namespace content_creation { + +class NoteTemplateConversionBridge { + public: + static ScopedJavaLocalRef<jobject> CreateJavaNoteTemplates( + JNIEnv* env, + const std::vector<NoteTemplate>& templates); +}; + +} // namespace content_creation + +#endif // COMPONENTS_CONTENT_CREATION_NOTES_ANDROID_NOTE_TEMPLATE_CONVERSION_BRIDGE_H_
diff --git a/components/content_settings/browser/BUILD.gn b/components/content_settings/browser/BUILD.gn index 8f8045a..4a1cc00 100644 --- a/components/content_settings/browser/BUILD.gn +++ b/components/content_settings/browser/BUILD.gn
@@ -46,6 +46,7 @@ "//base", "//components/content_settings/core/browser", "//components/security_state/core", + "//components/services/storage/public/cpp", "//components/sync_preferences:test_support", "//content/test:test_support", "//net",
diff --git a/components/content_settings/browser/DEPS b/components/content_settings/browser/DEPS index cb87cc1c..464bc8a 100644 --- a/components/content_settings/browser/DEPS +++ b/components/content_settings/browser/DEPS
@@ -2,6 +2,7 @@ "+components/browsing_data/content", "+components/page_load_metrics/browser", "+components/security_state/core", + "+components/services/storage/public/cpp", "+components/sync_preferences", "+components/url_formatter", "+content/public/browser",
diff --git a/components/content_settings/browser/page_specific_content_settings.cc b/components/content_settings/browser/page_specific_content_settings.cc index c397f72..49d1a941 100644 --- a/components/content_settings/browser/page_specific_content_settings.cc +++ b/components/content_settings/browser/page_specific_content_settings.cc
@@ -425,13 +425,13 @@ int render_frame_id, const GURL& worker_url, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, bool blocked_by_policy) { DCHECK_CURRENTLY_ON(BrowserThread::UI); PageSpecificContentSettings* settings = GetForFrame(render_process_id, render_frame_id); if (settings) - settings->OnSharedWorkerAccessed(worker_url, name, constructor_origin, + settings->OnSharedWorkerAccessed(worker_url, name, storage_key, blocked_by_policy); } @@ -649,16 +649,16 @@ void PageSpecificContentSettings::OnSharedWorkerAccessed( const GURL& worker_url, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, bool blocked_by_policy) { DCHECK(worker_url.is_valid()); if (blocked_by_policy) { blocked_local_shared_objects_.shared_workers()->AddSharedWorker( - worker_url, name, constructor_origin); + worker_url, name, storage_key); OnContentBlocked(ContentSettingsType::COOKIES); } else { allowed_local_shared_objects_.shared_workers()->AddSharedWorker( - worker_url, name, constructor_origin); + worker_url, name, storage_key); OnContentAllowed(ContentSettingsType::COOKIES); } }
diff --git a/components/content_settings/browser/page_specific_content_settings.h b/components/content_settings/browser/page_specific_content_settings.h index eab1e84..1fd75bd7 100644 --- a/components/content_settings/browser/page_specific_content_settings.h +++ b/components/content_settings/browser/page_specific_content_settings.h
@@ -35,6 +35,10 @@ class NavigationHandle; } +namespace storage { +class StorageKey; +} // namespace storage + namespace url { class Origin; } // namespace url @@ -248,7 +252,7 @@ int render_frame_id, const GURL& worker_url, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, bool blocked_by_policy); static content::WebContentsObserver* GetWebContentsObserverForTest( @@ -351,7 +355,7 @@ void OnCacheStorageAccessed(const GURL& url, bool blocked_by_policy); void OnSharedWorkerAccessed(const GURL& worker_url, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, bool blocked_by_policy); void OnWebDatabaseAccessed(const GURL& url, bool blocked_by_policy); #if defined(OS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_WIN)
diff --git a/components/content_settings/browser/page_specific_content_settings_unittest.cc b/components/content_settings/browser/page_specific_content_settings_unittest.cc index e36561c..4547300 100644 --- a/components/content_settings/browser/page_specific_content_settings_unittest.cc +++ b/components/content_settings/browser/page_specific_content_settings_unittest.cc
@@ -14,6 +14,7 @@ #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/security_state/core/security_state.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "components/sync_preferences/testing_pref_service_syncable.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/test/mock_navigation_handle.h" @@ -343,7 +344,8 @@ blocked_by_policy); content_settings->OnSharedWorkerAccessed( GURL("http://youtube.com/worker.js"), "worker", - url::Origin::Create(GURL("https://youtube.com")), blocked_by_policy); + storage::StorageKey(url::Origin::Create(GURL("https://youtube.com"))), + blocked_by_policy); const auto& objects = content_settings->allowed_local_shared_objects(); EXPECT_EQ(6u, objects.GetObjectCount());
diff --git a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java index c6458f9f..4f9b7a5 100644 --- a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java +++ b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java
@@ -190,6 +190,11 @@ mNativeMatch = nativeMatch; } + /** Returns a reference to Native AutocompleteMatch object. */ + long getNativeObjectRef() { + return mNativeMatch; + } + /** * Update the suggestion with content retrieved from clilpboard. *
diff --git a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java index 6525ff776..35e57d7 100644 --- a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java +++ b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java
@@ -90,6 +90,11 @@ mSuggestions = Arrays.asList(suggestions); } + @CalledByNative + private void destroy() { + mNativeAutocompleteResult = 0; + } + /** * @return List of Omnibox Suggestions. */ @@ -106,6 +111,28 @@ return mGroupsDetails; } + /** + * Verifies coherency of this AutocompleteResult object with its C++ counterpart. + * Records histogram data reflecting the outcome. + * @return Whether Java and C++ AutocompleteResult objects are in sync. + */ + public boolean verifyCoherency() { + // May happen with either test data, or AutocompleteResult built from the ZeroSuggestCache. + // This is a valid case, despite not meeting coherency criteria. Do not record. + if (mNativeAutocompleteResult == 0) return false; + long nativeMatches[] = new long[mSuggestions.size()]; + for (int index = 0; index < mSuggestions.size(); index++) { + nativeMatches[index] = mSuggestions.get(index).getNativeObjectRef(); + } + return AutocompleteResultJni.get().verifyCoherency( + mNativeAutocompleteResult, nativeMatches); + } + + /** Returns a reference to Native AutocompleteResult object. */ + public long getNativeObjectRef() { + return mNativeAutocompleteResult; + } + @Override public boolean equals(Object otherObj) { if (otherObj == this) return true; @@ -146,8 +173,12 @@ */ public void groupSuggestionsBySearchVsURL(int firstIndex, int lastIndex) { if (mNativeAutocompleteResult != 0) { + assert verifyCoherency() : "Pre-group verification failed"; AutocompleteResultJni.get().groupSuggestionsBySearchVsURL( mNativeAutocompleteResult, firstIndex, lastIndex); + // Verify that the Native AutocompleteResult update has been properly + // reflected on the Java part. + assert verifyCoherency() : "Post-group verification failed"; } } @@ -155,5 +186,6 @@ interface Natives { void groupSuggestionsBySearchVsURL( long nativeAutocompleteResult, int firstIndex, int lastIndex); + boolean verifyCoherency(long nativeAutocompleteResult, long[] matches); } }
diff --git a/components/omnibox/browser/autocomplete_match_android.cc b/components/omnibox/browser/autocomplete_match_android.cc index 93bd73c..98f0896 100644 --- a/components/omnibox/browser/autocomplete_match_android.cc +++ b/components/omnibox/browser/autocomplete_match_android.cc
@@ -89,9 +89,8 @@ java_match_ = std::make_unique<ScopedJavaGlobalRef<jobject>>( Java_AutocompleteMatch_build( env, reinterpret_cast<intptr_t>(this), type, - ToJavaIntArray(env, temp_subtypes), - AutocompleteMatch::IsSearchType(type), relevance, transition, - ConvertUTF16ToJavaString(env, contents), + ToJavaIntArray(env, temp_subtypes), IsSearchType(type), relevance, + transition, ConvertUTF16ToJavaString(env, contents), ToJavaIntArray(env, contents_class_offsets), ToJavaIntArray(env, contents_class_styles), ConvertUTF16ToJavaString(env, description),
diff --git a/components/omnibox/browser/autocomplete_result.h b/components/omnibox/browser/autocomplete_result.h index 9f5e7a4a..f7287b73 100644 --- a/components/omnibox/browser/autocomplete_result.h +++ b/components/omnibox/browser/autocomplete_result.h
@@ -56,6 +56,10 @@ base::android::ScopedJavaLocalRef<jobject> GetOrCreateJavaObject( JNIEnv* env) const; + // Notify the Java object that its native counterpart is about to be + // destroyed. + void DestroyJavaObject() const; + // Construct an array of AutocompleteMatch objects arranged in the exact same // order as |matches_|. base::android::ScopedJavaLocalRef<jobjectArray> BuildJavaMatches( @@ -68,6 +72,12 @@ void GroupSuggestionsBySearchVsURL(JNIEnv* env, int firstIndex, int lastIndex); + + // Compares the set of AutocompleteMatch references held by Java with the + // AutocompleteMatch objects held by this instance of the AutocompleteResult + // and returns true if the two sets are same. + bool VerifyCoherency(JNIEnv* env, + const base::android::JavaParamRef<jlongArray>& matches); #endif // Moves matches from |old_matches| to provide a consistent result set.
diff --git a/components/omnibox/browser/autocomplete_result_android.cc b/components/omnibox/browser/autocomplete_result_android.cc index 530c2e1c..e4f648f 100644 --- a/components/omnibox/browser/autocomplete_result_android.cc +++ b/components/omnibox/browser/autocomplete_result_android.cc
@@ -11,16 +11,29 @@ #include "base/android/jni_android.h" #include "base/android/jni_array.h" #include "base/android/jni_string.h" +#include "base/metrics/histogram_macros.h" #include "components/omnibox/browser/jni_headers/AutocompleteResult_jni.h" #include "components/omnibox/browser/search_suggestion_parser.h" #include "components/query_tiles/android/tile_conversion_bridge.h" #include "url/android/gurl_android.h" +using base::android::JavaParamRef; using base::android::ScopedJavaLocalRef; using base::android::ToJavaArrayOfStrings; using base::android::ToJavaBooleanArray; using base::android::ToJavaIntArray; +namespace { +// Used for histograms, append only. +enum class MatchVerificationResult { + VALID_MATCH = 0, + WRONG_MATCH = 1, + BAD_RESULT_SIZE = 2, + // Keep as the last entry: + COUNT +}; +} // namespace + ScopedJavaLocalRef<jobject> AutocompleteResult::GetOrCreateJavaObject( JNIEnv* env) const { // Short circuit if we already built the java object. @@ -55,6 +68,15 @@ return ScopedJavaLocalRef<jobject>(java_result_); } +void AutocompleteResult::DestroyJavaObject() const { + if (!java_result_) + return; + + JNIEnv* env = base::android::AttachCurrentThread(); + Java_AutocompleteResult_destroy(env, java_result_); + java_result_.Reset(); +} + ScopedJavaLocalRef<jobjectArray> AutocompleteResult::BuildJavaMatches( JNIEnv* env) const { jclass clazz = AutocompleteMatch::GetClazz(env); @@ -86,3 +108,52 @@ Java_AutocompleteResult_updateMatches(env, java_result_, BuildJavaMatches(env)); } + +bool AutocompleteResult::VerifyCoherency( + JNIEnv* env, + const JavaParamRef<jlongArray>& j_matches_array) { + DCHECK(j_matches_array); + + std::vector<jlong> j_matches; + base::android::JavaLongArrayToLongVector(env, j_matches_array, &j_matches); + + if (j_matches.size() != size()) { + UMA_HISTOGRAM_ENUMERATION("Android.Omnibox.InvalidMatch", + MatchVerificationResult::BAD_RESULT_SIZE, + MatchVerificationResult::COUNT); + NOTREACHED() << "AutocompletResult objects are of different size: " + << j_matches.size() << " (Java) vs " << size() << " (Native)"; + return false; + } + + for (auto index = 0u; index < size(); index++) { + if (reinterpret_cast<intptr_t>(match_at(index)) != j_matches[index]) { + UMA_HISTOGRAM_ENUMERATION("Android.Omnibox.InvalidMatch", + MatchVerificationResult::WRONG_MATCH, + MatchVerificationResult::COUNT); + // Note: the NDEBUG is defined for release / debug-disabled builds. +#ifndef NDEBUG + // Print the list of matches at every position on each side. + // Used for debugging purposes. + for (auto i = 0u; i < size(); i++) { + auto* this_match = match_at(i); + auto* other_match = reinterpret_cast<AutocompleteMatch*>(j_matches[i]); + DLOG(WARNING) << "Suggestion at index " << i << ": " + << "(Native): " << this_match->fill_into_edit + << "(Java): " + << (other_match ? other_match->fill_into_edit + : u"<null>"); + } +#endif + NOTREACHED() + << "AutocompleteMatch mismatch with native-sourced suggestions at " + << index; + return false; + } + } + + UMA_HISTOGRAM_ENUMERATION("Android.Omnibox.InvalidMatch", + MatchVerificationResult::VALID_MATCH, + MatchVerificationResult::COUNT); + return true; +}
diff --git a/components/password_manager/core/browser/leak_detection/leak_detection_request.cc b/components/password_manager/core/browser/leak_detection/leak_detection_request.cc index 750e35f5..ce3a50e 100644 --- a/components/password_manager/core/browser/leak_detection/leak_detection_request.cc +++ b/components/password_manager/core/browser/leak_detection/leak_detection_request.cc
@@ -150,9 +150,6 @@ int net_error = simple_url_loader_->NetError(); DLOG(ERROR) << "Net Error: " << net::ErrorToString(net_error); - // Network error codes are negative. See: src/net/base/net_error_list.h. - base::UmaHistogramSparse("PasswordManager.LeakDetection.NetErrorCode", - -net_error); std::move(callback).Run(nullptr, error); return;
diff --git a/components/password_manager/core/browser/leak_detection/leak_detection_request_unittest.cc b/components/password_manager/core/browser/leak_detection/leak_detection_request_unittest.cc index ff6c5710..7c4a4a3 100644 --- a/components/password_manager/core/browser/leak_detection/leak_detection_request_unittest.cc +++ b/components/password_manager/core/browser/leak_detection/leak_detection_request_unittest.cc
@@ -60,9 +60,6 @@ histogram_tester().ExpectUniqueSample( "PasswordManager.LeakDetection.HttpResponseCode", net::HTTP_INTERNAL_SERVER_ERROR, 1); - histogram_tester().ExpectUniqueSample( - "PasswordManager.LeakDetection.NetErrorCode", - -net::ERR_HTTP_RESPONSE_CODE_FAILURE, 1); } TEST_F(LeakDetectionRequestTest, QuotaLimit) { @@ -83,9 +80,6 @@ histogram_tester().ExpectUniqueSample( "PasswordManager.LeakDetection.HttpResponseCode", net::HTTP_TOO_MANY_REQUESTS, 1); - histogram_tester().ExpectUniqueSample( - "PasswordManager.LeakDetection.NetErrorCode", - -net::ERR_HTTP_RESPONSE_CODE_FAILURE, 1); } TEST_F(LeakDetectionRequestTest, MalformedServerResponse) {
diff --git a/components/password_manager/core/browser/leak_detection_delegate.cc b/components/password_manager/core/browser/leak_detection_delegate.cc index fbcf5f8..6e866ac 100644 --- a/components/password_manager/core/browser/leak_detection_delegate.cc +++ b/components/password_manager/core/browser/leak_detection_delegate.cc
@@ -127,8 +127,6 @@ IsPasswordSaved(leak_type)); base::UmaHistogramBoolean("PasswordManager.LeakDetection.IsPasswordReused", IsPasswordUsedOnOtherSites(leak_type)); - base::UmaHistogramBoolean("PasswordManager.LeakDetection.IsSyncing", - IsSyncingPasswordsNormally(leak_type)); client_->NotifyUserCredentialsWereLeaked(leak_type, url, username); }
diff --git a/components/password_manager/core/browser/store_metrics_reporter.cc b/components/password_manager/core/browser/store_metrics_reporter.cc index 6a39adf..29b7f08 100644 --- a/components/password_manager/core/browser/store_metrics_reporter.cc +++ b/components/password_manager/core/browser/store_metrics_reporter.cc
@@ -197,10 +197,6 @@ base::UmaHistogramBoolean( "PasswordManager.Enabled", prefs->GetBoolean(password_manager::prefs::kCredentialsEnableService)); - base::UmaHistogramBoolean( - "PasswordManager.LeakDetection.Enabled", - prefs->GetBoolean( - password_manager::prefs::kPasswordLeakDetectionEnabled)); // If both stores exist, kick off the MultiStoreMetricsReporter. PasswordStore* profile_store = client->GetProfilePasswordStore();
diff --git a/components/password_manager/core/browser/store_metrics_reporter_unittest.cc b/components/password_manager/core/browser/store_metrics_reporter_unittest.cc index 3444f6c1..a6d8dc5 100644 --- a/components/password_manager/core/browser/store_metrics_reporter_unittest.cc +++ b/components/password_manager/core/browser/store_metrics_reporter_unittest.cc
@@ -49,8 +49,6 @@ StoreMetricsReporterTest() { prefs_.registry()->RegisterBooleanPref(prefs::kCredentialsEnableService, false); - prefs_.registry()->RegisterBooleanPref(prefs::kPasswordLeakDetectionEnabled, - false); prefs_.registry()->RegisterBooleanPref( password_manager::prefs::kWasAutoSignInFirstRunExperienceShown, false); } @@ -74,12 +72,9 @@ // Test that store-independent metrics are reported correctly. TEST_P(StoreMetricsReporterTestWithParams, StoreIndependentMetrics) { const bool password_manager_enabled = std::get<0>(GetParam()); - const bool leak_detection_enabled = std::get<1>(GetParam()); prefs_.SetBoolean(password_manager::prefs::kCredentialsEnableService, password_manager_enabled); - prefs_.SetBoolean(password_manager::prefs::kPasswordLeakDetectionEnabled, - leak_detection_enabled); base::HistogramTester histogram_tester; EXPECT_CALL(client_, GetProfilePasswordStore()) .WillRepeatedly(Return(nullptr)); @@ -88,8 +83,6 @@ histogram_tester.ExpectUniqueSample("PasswordManager.Enabled", password_manager_enabled, 1); - histogram_tester.ExpectUniqueSample("PasswordManager.LeakDetection.Enabled", - leak_detection_enabled, 1); } // Test that sync username and syncing state are passed correctly to the
diff --git a/components/performance_manager/BUILD.gn b/components/performance_manager/BUILD.gn index eb38d69..a13b9c75 100644 --- a/components/performance_manager/BUILD.gn +++ b/components/performance_manager/BUILD.gn
@@ -301,6 +301,7 @@ "test_support:test_support_common", "//base/test:test_support", "//base/util/memory_pressure:test_support", + "//components/services/storage/public/cpp", "//content/test:test_support", "//testing/gmock", "//testing/gtest",
diff --git a/components/performance_manager/DEPS b/components/performance_manager/DEPS index 47eb04de4..f5027315 100644 --- a/components/performance_manager/DEPS +++ b/components/performance_manager/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+components/services/storage/public/cpp", "+content/public/common", "+content/public/browser", "+content/public/test",
diff --git a/components/performance_manager/worker_watcher_unittest.cc b/components/performance_manager/worker_watcher_unittest.cc index 9fe8323..1fa3bca 100644 --- a/components/performance_manager/worker_watcher_unittest.cc +++ b/components/performance_manager/worker_watcher_unittest.cc
@@ -25,6 +25,7 @@ #include "components/performance_manager/performance_manager_impl.h" #include "components/performance_manager/process_node_source.h" #include "components/performance_manager/public/features.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/shared_worker_service.h" #include "content/public/test/browser_task_environment.h" @@ -161,7 +162,7 @@ void EnumerateSharedWorkers(Observer* observer) override; bool TerminateWorker(const GURL& url, const std::string& name, - const url::Origin& constructor_origin) override; + const storage::StorageKey& storage_key) override; void Shutdown() override; // Creates a new shared worker and returns its token. @@ -209,7 +210,7 @@ bool TestSharedWorkerService::TerminateWorker( const GURL& url, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { // Not implemented. ADD_FAILURE(); return false;
diff --git a/components/policy/proto/device_management_backend.proto b/components/policy/proto/device_management_backend.proto index dbffa1c..df14be9 100644 --- a/components/policy/proto/device_management_backend.proto +++ b/components/policy/proto/device_management_backend.proto
@@ -844,6 +844,17 @@ // Email address of the active user. Present only if the user type is managed // and affiliated. optional string user_email = 3; + + enum SessionType { + SESSION_UNKNOWN = 0; + SESSION_AFFILIATED_USER = 1; + SESSION_MANAGED_GUEST = 2; + SESSION_KIOSK = 3; + SESSION_ARC_KIOSK = 4; + SESSION_WEB_KIOSK = 5; + } + + optional SessionType session_type = 4; } // Details about a network interface.
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index c85c2fe..86f7409 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -7137,7 +7137,7 @@ 'owners': [ 'yusuyoutube@google.com', 'benwgold@google.com', 'wylieb@chromium.org', 'fgorski@chromium.org', 'lens-chrome@google.com'], 'type': 'main', 'schema': { 'type': 'boolean' }, - 'future_on': ['android'], + 'supported_on': ['android:91-'], 'features': { 'dynamic_refresh': False, 'per_profile': False,
diff --git a/components/signin/core/browser/signin_header_helper.h b/components/signin/core/browser/signin_header_helper.h index dd2eed0..ee388594 100644 --- a/components/signin/core/browser/signin_header_helper.h +++ b/components/signin/core/browser/signin_header_helper.h
@@ -204,10 +204,6 @@ const GURL& url, const content_settings::CookieSettings* cookie_settings) = 0; - protected: - SigninHeaderHelper(); - virtual ~SigninHeaderHelper(); - // Dictionary of fields in a account consistency response header. using ResponseHeaderDictionary = std::multimap<std::string, std::string>; @@ -216,6 +212,10 @@ static ResponseHeaderDictionary ParseAccountConsistencyResponseHeader( const std::string& header_value); + protected: + SigninHeaderHelper(); + virtual ~SigninHeaderHelper(); + // Returns whether the url is eligible for the request header. virtual bool IsUrlEligibleForRequestHeader(const GURL& url) = 0;
diff --git a/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.cc b/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.cc index d03c005f..8ce9809a 100644 --- a/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.cc +++ b/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.cc
@@ -116,4 +116,13 @@ source, std::move(completion_callback)); } +void AccountsCookieMutatorImpl::RemoveLoggedOutAccountByGaiaId( + const std::string& gaia_id) { + // Note that RemoveLoggedOutAccountByGaiaId() does NOT internally trigger a + // ListAccounts fetch. It could make sense to force a request here, e.g. via + // ForceOnCookieChangeProcessing(), but this isn't considered important enough + // to justify the risk for overloading the server. + gaia_cookie_manager_service_->RemoveLoggedOutAccountByGaiaId(gaia_id); +} + } // namespace signin
diff --git a/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.h b/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.h index cf8dc8e..d98f0afc 100644 --- a/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.h +++ b/components/signin/internal/identity_manager/accounts_cookie_mutator_impl.h
@@ -69,6 +69,8 @@ gaia::GaiaSource source, LogOutFromCookieCompletedCallback completion_callback) override; + void RemoveLoggedOutAccountByGaiaId(const std::string& gaia_id) override; + private: class MultiloginHelperWrapper : public SetAccountsInCookieTask { public:
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc index 773aa606..e0069af0 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
@@ -663,6 +663,33 @@ } } +void GaiaCookieManagerService::RemoveLoggedOutAccountByGaiaId( + const std::string& gaia_id) { + // TODO(crbug.com/1078762): Add UMA for the various codepaths in this + // function. + VLOG(1) << "GaiaCookieManagerService::RemoveLoggedOutAccountByGaiaId"; + + if (list_accounts_stale_) { + return; + } + + const bool accounts_updated = + base::EraseIf(signed_out_accounts_, + [&gaia_id](const gaia::ListedAccount& account) { + return account.gaia_id == gaia_id; + }) != 0; + + if (!accounts_updated) { + return; + } + + if (gaia_accounts_updated_in_cookie_callback_) { + gaia_accounts_updated_in_cookie_callback_.Run( + listed_accounts_, signed_out_accounts_, + GoogleServiceAuthError(GoogleServiceAuthError::NONE)); + } +} + void GaiaCookieManagerService::CancelAll() { VLOG(1) << "GaiaCookieManagerService::CancelAll"; gaia_auth_fetcher_.reset();
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h index b1c73919..6bb2ae9b 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h
@@ -271,6 +271,11 @@ void LogOutAllAccounts(gaia::GaiaSource source, LogOutFromCookieCompletedCallback callback); + // Indicates that an account previously listed via ListAccounts should now + // be removed. Does not trigger a ListAccounts request and does not change the + // staleness of the account information. + void RemoveLoggedOutAccountByGaiaId(const std::string& gaia_id); + // Call observers when setting accounts in cookie completes. void SignalSetAccountsComplete(signin::SetAccountsInCookieResult result);
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc index c123e3d..4e1dbca 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service_unittest.cc
@@ -16,6 +16,7 @@ #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/single_thread_task_runner.h" +#include "base/strings/stringprintf.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/mock_callback.h" #include "base/test/task_environment.h" @@ -97,6 +98,11 @@ return AreAccountListsEqual(expected, arg); } +// Custom matcher for ListedAccount. +MATCHER_P(ListedAccountMatchesGaiaId, gaia_id, "") { + return arg.gaia_id == std::string(gaia_id); +} + class InstrumentedGaiaCookieManagerService : public GaiaCookieManagerService { public: InstrumentedGaiaCookieManagerService(ProfileOAuth2TokenService* token_service, @@ -247,6 +253,7 @@ } // namespace using ::testing::_; +using ::testing::ElementsAre; TEST_F(GaiaCookieManagerServiceTest, Success) { InstrumentedGaiaCookieManagerService helper(token_service(), signin_client()); @@ -1096,3 +1103,130 @@ EXPECT_CALL(helper, StartFetchingMergeSession()); SimulateUbertokenSuccess(&helper, "token3"); } + +TEST_F(GaiaCookieManagerServiceTest, RemoveLoggedOutAccountByGaiaId) { + const std::string kTestGaiaId1 = "8"; + const std::string kTestGaiaId2 = "9"; + + ::testing::NiceMock<InstrumentedGaiaCookieManagerService> helper( + token_service(), signin_client()); + ::testing::NiceMock<MockObserver> observer(&helper); + + std::vector<gaia::ListedAccount> signed_in_accounts; + std::vector<gaia::ListedAccount> signed_out_accounts; + ASSERT_FALSE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + + // Simulate two signed out accounts being listed. + SimulateListAccountsSuccess( + &helper, + base::StringPrintf( + "[\"f\"," + "[[\"a\", 0, \"n\", \"a@d.com\", \"p\", 0, 0, 0, 0, 1, \"%s\"," + "null,null,null,1]," + "[\"b\", 0, \"n\", \"b@d.com\", \"p\", 0, 0, 0, 0, 1, \"%s\"," + "null,null,null,1]]]", + kTestGaiaId1.c_str(), kTestGaiaId2.c_str())); + + ASSERT_TRUE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + ASSERT_THAT(signed_out_accounts, + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1), + ListedAccountMatchesGaiaId(kTestGaiaId2))); + + // The removal should notify observers, with one account removed. + EXPECT_CALL(observer, + OnGaiaAccountsInCookieUpdated( + _, /*signed_out_accounts=*/ + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId2)), _)); + EXPECT_CALL(helper, StartFetchingListAccounts()).Times(0); + helper.RemoveLoggedOutAccountByGaiaId(kTestGaiaId1); + + // Verify that ListAccounts wasn't triggered. + EXPECT_FALSE(helper.is_running()); + EXPECT_TRUE(testing::Mock::VerifyAndClearExpectations(&helper)); + + ASSERT_TRUE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + EXPECT_THAT(signed_out_accounts, + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId2))); +} + +TEST_F(GaiaCookieManagerServiceTest, + RemoveLoggedOutAccountByGaiaIdWhileAccountsStale) { + const std::string kTestGaiaId1 = "8"; + + ::testing::NiceMock<InstrumentedGaiaCookieManagerService> helper( + token_service(), signin_client()); + ::testing::NiceMock<MockObserver> observer(&helper); + + std::vector<gaia::ListedAccount> signed_in_accounts; + std::vector<gaia::ListedAccount> signed_out_accounts; + ASSERT_FALSE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + + // Simulate one signed out account being listed. + SimulateListAccountsSuccess( + &helper, + base::StringPrintf( + "[\"f\"," + "[[\"a\", 0, \"n\", \"a@d.com\", \"p\", 0, 0, 0, 0, 1, \"%s\"," + "null,null,null,1]]]", + kTestGaiaId1.c_str())); + + // Change list account state to be stale, which will trigger list accounts + // request. + helper.ForceOnCookieChangeProcessing(); + + ASSERT_FALSE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + ASSERT_THAT(signed_out_accounts, + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1))); + + // The removal should be ignored because the account list is stale. + EXPECT_CALL(observer, OnGaiaAccountsInCookieUpdated(_, _, _)).Times(0); + EXPECT_CALL(helper, StartFetchingListAccounts()).Times(0); + helper.RemoveLoggedOutAccountByGaiaId(kTestGaiaId1); + + // Verify that ListAccounts wasn't triggered again. + EXPECT_TRUE(testing::Mock::VerifyAndClearExpectations(&helper)); + + ASSERT_FALSE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + EXPECT_THAT(signed_out_accounts, + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1))); +} + +TEST_F(GaiaCookieManagerServiceTest, + RemoveLoggedOutAccountByGaiaIdForUnknownAccount) { + const std::string kTestGaiaId1 = "8"; + const std::string kNonListedAccount = "9"; + + ::testing::NiceMock<InstrumentedGaiaCookieManagerService> helper( + token_service(), signin_client()); + ::testing::NiceMock<MockObserver> observer(&helper); + + std::vector<gaia::ListedAccount> signed_in_accounts; + std::vector<gaia::ListedAccount> signed_out_accounts; + ASSERT_FALSE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + + // Simulate one signed out account being listed. + SimulateListAccountsSuccess( + &helper, + base::StringPrintf( + "[\"f\"," + "[[\"a\", 0, \"n\", \"a@d.com\", \"p\", 0, 0, 0, 0, 1, \"%s\"," + "null,null,null,1]]]", + kTestGaiaId1.c_str())); + + ASSERT_TRUE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + ASSERT_THAT(signed_out_accounts, + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1))); + + // The removal should be ignored because the Gaia ID is not listed/known. + EXPECT_CALL(observer, OnGaiaAccountsInCookieUpdated(_, _, _)).Times(0); + EXPECT_CALL(helper, StartFetchingListAccounts()).Times(0); + helper.RemoveLoggedOutAccountByGaiaId(kNonListedAccount); + + // Verify that ListAccounts wasn't triggered. + EXPECT_FALSE(helper.is_running()); + EXPECT_TRUE(testing::Mock::VerifyAndClearExpectations(&helper)); + + ASSERT_TRUE(helper.ListAccounts(&signed_in_accounts, &signed_out_accounts)); + EXPECT_THAT(signed_out_accounts, + ElementsAre(ListedAccountMatchesGaiaId(kTestGaiaId1))); +}
diff --git a/components/signin/public/identity_manager/accounts_cookie_mutator.h b/components/signin/public/identity_manager/accounts_cookie_mutator.h index 200fd2a..81df07c 100644 --- a/components/signin/public/identity_manager/accounts_cookie_mutator.h +++ b/components/signin/public/identity_manager/accounts_cookie_mutator.h
@@ -132,6 +132,10 @@ gaia::GaiaSource source, LogOutFromCookieCompletedCallback completion_callback) = 0; + // Indicates that an account previously listed via ListAccounts should now + // be removed. + virtual void RemoveLoggedOutAccountByGaiaId(const std::string& gaia_id) = 0; + private: DISALLOW_COPY_AND_ASSIGN(AccountsCookieMutator); };
diff --git a/components/subresource_filter/android/subresource_filter_feature_list.cc b/components/subresource_filter/android/subresource_filter_feature_list.cc index e9ecae93..320eb7f9 100644 --- a/components/subresource_filter/android/subresource_filter_feature_list.cc +++ b/components/subresource_filter/android/subresource_filter_feature_list.cc
@@ -4,7 +4,7 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" -#include "base/stl_util.h" +#include "base/notreached.h" #include "components/subresource_filter/android/subresource_filter_jni_headers/SubresourceFilterFeatureList_jni.h" #include "components/subresource_filter/core/browser/subresource_filter_features.h" @@ -18,15 +18,15 @@ // Array of features exposed through the Java ContentFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. content_features.h). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &kSafeBrowsingSubresourceFilter, }; // TODO(crbug.com/1060097): Removethis once a generalized FeatureList exists. const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature not found in SubresourceFilterFeatureList: " << feature_name;
diff --git a/components/translate/content/android/translate_feature_list.cc b/components/translate/content/android/translate_feature_list.cc index cb8e2e6..a58ed41a 100644 --- a/components/translate/content/android/translate_feature_list.cc +++ b/components/translate/content/android/translate_feature_list.cc
@@ -17,7 +17,7 @@ // Array of translate features exposed through the Java TranslateFeatureList // API. Entries in this array refer to features defined in // components/language/core/common/language_experiments.h. -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &language::kContentLanguagesInLanguagePicker, &language::kDetectedSourceLanguageOption, }; @@ -25,9 +25,9 @@ // TODO(crbug.com/1060097): Remove/update this once a generalized FeatureList // exists. const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature cannot be found in TranslateFeatureList: " << feature_name;
diff --git a/components/viz/service/display/delegated_ink_trail_data.cc b/components/viz/service/display/delegated_ink_trail_data.cc index 51ecdff..0d2bf360 100644 --- a/components/viz/service/display/delegated_ink_trail_data.cc +++ b/components/viz/service/display/delegated_ink_trail_data.cc
@@ -26,7 +26,7 @@ for (int i = 0; i < kNumberOfPredictionConfigs; ++i) { prediction_handlers_[i].metrics_handler = std::make_unique<ui::PredictionMetricsHandler>( - (full_name + base::NumberToString(i)).c_str()); + base::StrCat({full_name, base::NumberToString(i)})); prediction_handlers_[i].predictor = std::make_unique<ui::KalmanPredictor>(predictor_options); } @@ -106,12 +106,7 @@ // produce a prediction if the predicted point would go in to the // opposite direction of most recently stored points. If this happens, // don't continue trying to generate more predicted points. - handler.metrics_handler->EvaluatePrediction(); - base::UmaHistogramTimes( - base::StrCat( - {histogram_base_name, base::NumberToString(experiment)}), - latency_improvement_with_prediction); - continue; + break; } } }
diff --git a/components/viz/service/display/surface_aggregator_unittest.cc b/components/viz/service/display/surface_aggregator_unittest.cc index b7a2d9f..e8e56e5 100644 --- a/components/viz/service/display/surface_aggregator_unittest.cc +++ b/components/viz/service/display/surface_aggregator_unittest.cc
@@ -14,6 +14,7 @@ #include <vector> #include "base/bind.h" +#include "base/format_macros.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/stl_util.h"
diff --git a/components/viz/test/test_context_provider.cc b/components/viz/test/test_context_provider.cc index 659f7f1c..34b6426e 100644 --- a/components/viz/test/test_context_provider.cc +++ b/components/viz/test/test_context_provider.cc
@@ -155,6 +155,7 @@ gpu::Mailbox TestSharedImageInterface::CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type,
diff --git a/components/viz/test/test_context_provider.h b/components/viz/test/test_context_provider.h index 662ee6c..97b360c 100644 --- a/components/viz/test/test_context_provider.h +++ b/components/viz/test/test_context_provider.h
@@ -61,6 +61,7 @@ gpu::Mailbox CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type,
diff --git a/content/browser/accessibility/browser_accessibility_state_impl_android.cc b/content/browser/accessibility/browser_accessibility_state_impl_android.cc index 038cf693..ccbcf87b 100644 --- a/content/browser/accessibility/browser_accessibility_state_impl_android.cc +++ b/content/browser/accessibility/browser_accessibility_state_impl_android.cc
@@ -74,7 +74,7 @@ UMA_FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 42, UMA_FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 43, UMA_SERVICE_TYPE_UNKNOWN = 44, - UMA_SERVICE_TYPE_PASSWORD_MANAGER = 45, + UMA_SERVICE_TYPE_PASSWORD_MANAGER = 45, // unused UMA_SERVICE_TYPE_ASSISTIVE_TECH = 46, UMA_CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 47, @@ -285,7 +285,6 @@ Java_BrowserAccessibilityState_getAccessibilityServiceIds(env); jsize len = env->GetArrayLength(service_ids.obj()); bool has_assistive_tech = false; - bool has_password_manager = false; bool has_unknown = false; const uint32_t kAssistiveTechPackageHashes[] = { @@ -295,10 +294,6 @@ 0xb38ef877, // Voice Access 0xbc2897b4, // BrailleBack }; - const uint32_t kPasswordPackageHashes[] = { - 0x013b76f2, 0x31cd47e3, 0x353cf6c5, 0x48723526, 0x4a8cfa8a, - 0x7e0ad835, 0x7e3515d0, 0x8e4c009f, 0x920ad3bd, 0xca841f39, - }; // TODO(crbug.com/1197608): Consider adding further categories. for (jsize i = 0; i < len; ++i) { auto* id = env->GetObjectArrayElement(service_ids.obj(), i); @@ -309,15 +304,12 @@ if (base::Contains(kAssistiveTechPackageHashes, service_hash)) { has_assistive_tech = true; - } else if (base::Contains(kPasswordPackageHashes, service_hash)) { - has_password_manager = true; } else { has_unknown = true; } } SERVICE_TYPE_HISTOGRAM(has_assistive_tech, ASSISTIVE_TECH); - SERVICE_TYPE_HISTOGRAM(has_password_manager, PASSWORD_MANAGER); SERVICE_TYPE_HISTOGRAM(has_unknown, UNKNOWN); }
diff --git a/content/browser/android/content_feature_list.cc b/content/browser/android/content_feature_list.cc index 9358847d..4299769 100644 --- a/content/browser/android/content_feature_list.cc +++ b/content/browser/android/content_feature_list.cc
@@ -5,7 +5,6 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" #include "base/notreached.h" -#include "base/stl_util.h" #include "content/public/android/content_jni_headers/ContentFeatureListImpl_jni.h" #include "content/public/common/content_features.h" @@ -20,7 +19,7 @@ // Array of features exposed through the Java ContentFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. content_features.h). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &features::kBackgroundMediaRendererHasModerateBinding, &features::kBindingManagementWaiveCpu, &features::kExperimentalAccessibilityLabels, @@ -31,9 +30,9 @@ }; const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature cannot be found in ContentFeatureList: " << feature_name;
diff --git a/content/browser/conversions/conversion_registration_browsertest.cc b/content/browser/conversions/conversion_registration_browsertest.cc index fab544ff..8b93861 100644 --- a/content/browser/conversions/conversion_registration_browsertest.cc +++ b/content/browser/conversions/conversion_registration_browsertest.cc
@@ -49,6 +49,7 @@ void RegisterConversion(blink::mojom::ConversionPtr conversion) override { last_conversion_data_ = conversion->conversion_data; + last_event_source_trigger_data_ = conversion->event_source_trigger_data; num_conversions_++; // Don't quit the run loop if we have not seen the expected number of @@ -68,10 +69,15 @@ return last_conversion_data_; } + uint64_t last_event_source_trigger_data() const { + return last_event_source_trigger_data_; + } + size_t num_conversions() { return num_conversions_; } private: uint64_t last_conversion_data_ = 0; + uint64_t last_event_source_trigger_data_ = 0; size_t num_conversions_ = 0; size_t expected_num_conversions_ = 0; base::RunLoop conversion_waiter_; @@ -162,6 +168,20 @@ EXPECT_TRUE(ExecJs(web_contents(), "registerConversion(123)")); EXPECT_EQ(123UL, host->WaitForNumConversions(1)); + EXPECT_EQ(0UL, host->last_event_source_trigger_data()); +} + +IN_PROC_BROWSER_TEST_F(ConversionRegistrationBrowserTest, + ConversionRegistered_EventSourceTriggerDataReceived) { + EXPECT_TRUE(NavigateToURL( + shell(), + embedded_test_server()->GetURL("/page_with_conversion_redirect.html"))); + std::unique_ptr<TestConversionHost> host = + TestConversionHost::ReplaceAndGetConversionHost(web_contents()); + + EXPECT_TRUE(ExecJs(web_contents(), "registerConversion(123, 456)")); + EXPECT_EQ(123UL, host->WaitForNumConversions(1)); + EXPECT_EQ(456UL, host->last_event_source_trigger_data()); } IN_PROC_BROWSER_TEST_F(ConversionRegistrationBrowserTest, @@ -261,6 +281,7 @@ EXPECT_TRUE(ExecJs(web_contents(), JsReplace("createTrackingPixel($1);", registration_url))); EXPECT_EQ(200UL, host->WaitForNumConversions(1)); + EXPECT_EQ(0UL, host->last_event_source_trigger_data()); } IN_PROC_BROWSER_TEST_F(ConversionRegistrationBrowserTest, @@ -286,8 +307,9 @@ EXPECT_TRUE(ExecJs(web_contents(), "createTrackingPixel(\"server-redirect?" + kWellKnownUrl + "\");")); - // Conversion data should be defaulted to 0. + // Conversion data and event source trigger data should be defaulted to 0. EXPECT_EQ(0UL, host->WaitForNumConversions(1)); + EXPECT_EQ(0UL, host->last_event_source_trigger_data()); } IN_PROC_BROWSER_TEST_F(ConversionRegistrationBrowserTest, @@ -304,6 +326,7 @@ EXPECT_TRUE(ExecJs(ChildFrameAt(web_contents()->GetMainFrame(), 0), JsReplace("createTrackingPixel($1);", redirect_url))); EXPECT_EQ(200u, host->WaitForNumConversions(1)); + EXPECT_EQ(0u, host->last_event_source_trigger_data()); EXPECT_TRUE(NavigateToURL(shell(), GURL("about:blank"))); EXPECT_EQ(1u, host->num_conversions()); @@ -358,6 +381,7 @@ EXPECT_TRUE(ExecJs(ChildFrameAt(web_contents()->GetMainFrame(), 0), JsReplace("createTrackingPixel($1);", redirect_url))); EXPECT_EQ(200u, host->WaitForNumConversions(1)); + EXPECT_EQ(0u, host->last_event_source_trigger_data()); EXPECT_TRUE(NavigateToURL(shell(), GURL("about:blank"))); EXPECT_EQ(1u, host->num_conversions());
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc index 33907f5..117e009 100644 --- a/content/browser/devtools/protocol/network_handler.cc +++ b/content/browser/devtools/protocol/network_handler.cc
@@ -1869,7 +1869,7 @@ return; net::HttpRequestHeaders headers; - headers.AddHeadersFromString(nav_request.begin_params()->headers); + headers.AddHeadersFromString(nav_request.begin_params().headers); std::unique_ptr<DictionaryValue> headers_dict(DictionaryValue::create()); for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) headers_dict->setString(it.name(), it.value()); @@ -1919,7 +1919,7 @@ std::unique_ptr<Network::Initiator> initiator; const base::Optional<base::Value>& initiator_optional = - nav_request.begin_params()->devtools_initiator; + nav_request.begin_params().devtools_initiator; if (initiator_optional.has_value()) { initiator = protocol::ValueTypeConverter<Network::Initiator>::FromValue( *toProtocolValue(&initiator_optional.value(), 1000)); @@ -1935,10 +1935,10 @@ std::string frame_token = nav_request.frame_tree_node()->devtools_frame_token().ToString(); - const mojom::BeginNavigationParams* begin_params = nav_request.begin_params(); - if (begin_params->trust_token_params) { + const mojom::BeginNavigationParams& begin_params = nav_request.begin_params(); + if (begin_params.trust_token_params) { request->SetTrustTokenParams( - BuildTrustTokenParams(*begin_params->trust_token_params)); + BuildTrustTokenParams(*begin_params.trust_token_params)); } frontend_->RequestWillBeSent(
diff --git a/content/browser/devtools/shared_worker_devtools_agent_host.cc b/content/browser/devtools/shared_worker_devtools_agent_host.cc index a9c94c6..85faa461 100644 --- a/content/browser/devtools/shared_worker_devtools_agent_host.cc +++ b/content/browser/devtools/shared_worker_devtools_agent_host.cc
@@ -66,8 +66,8 @@ return instance_.url(); } -url::Origin SharedWorkerDevToolsAgentHost::GetConstructorOrigin() { - return instance_.constructor_origin(); +storage::StorageKey SharedWorkerDevToolsAgentHost::GetStorageKey() const { + return instance_.storage_key(); } bool SharedWorkerDevToolsAgentHost::Activate() { @@ -109,7 +109,7 @@ bool SharedWorkerDevToolsAgentHost::Matches(SharedWorkerHost* worker_host) { return instance_.Matches(worker_host->instance().url(), worker_host->instance().name(), - worker_host->instance().constructor_origin()); + worker_host->instance().storage_key()); } void SharedWorkerDevToolsAgentHost::WorkerReadyForInspection( @@ -148,7 +148,7 @@ DevToolsAgentHostImpl::NetworkLoaderFactoryParamsAndInfo SharedWorkerDevToolsAgentHost::CreateNetworkFactoryParamsForDevTools() { DCHECK(worker_host_); - return {GetConstructorOrigin(), net::SiteForCookies::FromUrl(GetURL()), + return {GetStorageKey().origin(), net::SiteForCookies::FromUrl(GetURL()), worker_host_->CreateNetworkFactoryParamsForSubresources()}; }
diff --git a/content/browser/devtools/shared_worker_devtools_agent_host.h b/content/browser/devtools/shared_worker_devtools_agent_host.h index 82c3bdc..c37e2b58 100644 --- a/content/browser/devtools/shared_worker_devtools_agent_host.h +++ b/content/browser/devtools/shared_worker_devtools_agent_host.h
@@ -40,7 +40,7 @@ override; RenderProcessHost* GetProcessHost() override; - url::Origin GetConstructorOrigin(); + storage::StorageKey GetStorageKey() const; bool Matches(SharedWorkerHost* worker_host); void WorkerReadyForInspection(
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc index 8d29d2c8..445bb94 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc
@@ -5804,11 +5804,11 @@ } const GURL& NavigationRequest::GetSearchableFormURL() { - return begin_params()->searchable_form_url; + return begin_params().searchable_form_url; } const std::string& NavigationRequest::GetSearchableFormEncoding() { - return begin_params()->searchable_form_encoding; + return begin_params().searchable_form_encoding; } ReloadType NavigationRequest::GetReloadType() { @@ -5833,11 +5833,11 @@ } bool NavigationRequest::IsFormSubmission() { - return begin_params()->is_form_submission; + return begin_params().is_form_submission; } bool NavigationRequest::WasInitiatedByLinkClick() { - return begin_params()->was_initiated_by_link_click; + return begin_params().was_initiated_by_link_click; } const std::string& NavigationRequest::GetHrefTranslate() { @@ -5845,7 +5845,7 @@ } const base::Optional<blink::Impression>& NavigationRequest::GetImpression() { - return begin_params()->impression; + return begin_params().impression; } const base::Optional<blink::LocalFrameToken>&
diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h index a501981..7bea4f9a 100644 --- a/content/browser/renderer_host/navigation_request.h +++ b/content/browser/renderer_host/navigation_request.h
@@ -363,8 +363,8 @@ return *common_params_; } - const mojom::BeginNavigationParams* begin_params() const { - return begin_params_.get(); + const mojom::BeginNavigationParams& begin_params() const { + return *begin_params_; } const mojom::CommitNavigationParams& commit_params() const { @@ -1597,7 +1597,7 @@ const GlobalFrameRoutingId previous_render_frame_host_id_; // Frame token of the frame host that initiated the navigation, derived from - // |begin_params()->initiator_frame_token|. This is best effort: it is only + // |begin_params().initiator_frame_token|. This is best effort: it is only // defined for some renderer-initiated navigations (e.g., not drag and drop). // The frame with the corresponding frame token may have been deleted before // the navigation begins. This parameter is defined if and only if
diff --git a/content/browser/renderer_host/navigator.cc b/content/browser/renderer_host/navigator.cc index 22dca70..bc2d7c7f 100644 --- a/content/browser/renderer_host/navigator.cc +++ b/content/browser/renderer_host/navigator.cc
@@ -881,8 +881,8 @@ false /* is_browser_initiated_before_unload */); LogRendererInitiatedBeforeUnloadTime( - navigation_request->begin_params()->before_unload_start, - navigation_request->begin_params()->before_unload_end); + navigation_request->begin_params().before_unload_start, + navigation_request->begin_params().before_unload_end); // This frame has already run beforeunload before it sent this IPC. See if // any of its cross-process subframes also need to run beforeunload. If so,
diff --git a/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc b/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc index 5e90f94..282916f 100644 --- a/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc +++ b/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc
@@ -7,6 +7,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/format_macros.h" #include "base/no_destructor.h" #include "base/path_service.h" #include "base/run_loop.h"
diff --git a/content/browser/web_package/web_bundle_browsertest.cc b/content/browser/web_package/web_bundle_browsertest.cc index 32dff24..2a5854bc 100644 --- a/content/browser/web_package/web_bundle_browsertest.cc +++ b/content/browser/web_package/web_bundle_browsertest.cc
@@ -4,6 +4,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/format_macros.h" #include "base/optional.h" #include "base/path_service.h" #include "base/run_loop.h"
diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser/worker_host/shared_worker_host.cc index 2ff575a..af053af8 100644 --- a/content/browser/worker_host/shared_worker_host.cc +++ b/content/browser/worker_host/shared_worker_host.cc
@@ -237,7 +237,7 @@ // Send the CreateSharedWorker message. factory_.Bind(std::move(factory)); factory_->CreateSharedWorker( - std::move(info), token_, instance_.constructor_origin(), + std::move(info), token_, instance_.storage_key().origin(), GetContentClient()->browser()->GetUserAgent(), GetContentClient()->browser()->GetUserAgentMetadata(), devtools_handle_->pause_on_start(), devtools_handle_->dev_tools_token(), @@ -311,13 +311,13 @@ network::mojom::URLLoaderFactoryParamsPtr SharedWorkerHost::CreateNetworkFactoryParamsForSubresources() { - url::Origin origin = url::Origin::Create(instance_.url()); + url::Origin origin = instance().storage_key().origin(); // TODO(https://crbug.com/1060832): Implement COEP reporter for shared // workers. network::mojom::URLLoaderFactoryParamsPtr factory_params = URLLoaderFactoryParamsHelper::CreateForWorker( - GetProcessHost(), instance_.constructor_origin(), + GetProcessHost(), origin, net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther, origin, origin, net::SiteForCookies::FromOrigin(origin)), @@ -474,11 +474,11 @@ } net::NetworkIsolationKey SharedWorkerHost::GetNetworkIsolationKey() const { - const url::Origin origin = url::Origin::Create(instance().url()); // TODO(https://crbug.com/1147281): This is the NetworkIsolationKey of a // top-level browsing context, which shouldn't be use for SharedWorkers used // in iframes. - return net::NetworkIsolationKey::ToDoUseTopFrameOriginAsWell(origin); + return net::NetworkIsolationKey::ToDoUseTopFrameOriginAsWell( + instance().storage_key().origin()); } void SharedWorkerHost::ReportNoBinderForInterface(const std::string& error) {
diff --git a/content/browser/worker_host/shared_worker_host_unittest.cc b/content/browser/worker_host/shared_worker_host_unittest.cc index 0707ad2..98cdec5 100644 --- a/content/browser/worker_host/shared_worker_host_unittest.cc +++ b/content/browser/worker_host/shared_worker_host_unittest.cc
@@ -74,7 +74,7 @@ SharedWorkerInstance instance( kWorkerUrl, blink::mojom::ScriptType::kClassic, network::mojom::CredentialsMode::kSameOrigin, "name", - url::Origin::Create(kWorkerUrl), + storage::StorageKey(url::Origin::Create(kWorkerUrl)), network::mojom::IPAddressSpace::kPublic, blink::mojom::SharedWorkerCreationContextType::kSecure); auto host = std::make_unique<SharedWorkerHost>(
diff --git a/content/browser/worker_host/shared_worker_instance_unittest.cc b/content/browser/worker_host/shared_worker_instance_unittest.cc index 0e34cc51..eddb330 100644 --- a/content/browser/worker_host/shared_worker_instance_unittest.cc +++ b/content/browser/worker_host/shared_worker_instance_unittest.cc
@@ -9,6 +9,7 @@ #include "base/macros.h" #include "base/strings/utf_string_conversions.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "services/network/public/mojom/content_security_policy.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -20,10 +21,10 @@ SharedWorkerInstance CreateInstance(const GURL& script_url, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { return SharedWorkerInstance( script_url, blink::mojom::ScriptType::kClassic, - network::mojom::CredentialsMode::kSameOrigin, name, constructor_origin, + network::mojom::CredentialsMode::kSameOrigin, name, storage_key, network::mojom::IPAddressSpace::kPublic, blink::mojom::SharedWorkerCreationContextType::kNonsecure); } @@ -31,12 +32,14 @@ bool Matches(const SharedWorkerInstance& instance, const std::string& url, const base::StringPiece& name) { - url::Origin constructor_origin; - if (GURL(url).SchemeIs(url::kDataScheme)) - constructor_origin = url::Origin::Create(GURL("http://example.com/")); - else - constructor_origin = url::Origin::Create(GURL(url)); - return instance.Matches(GURL(url), name.as_string(), constructor_origin); + storage::StorageKey storage_key; + if (GURL(url).SchemeIs(url::kDataScheme)) { + storage_key = + storage::StorageKey(url::Origin::Create(GURL("http://example.com/"))); + } else { + storage_key = storage::StorageKey(url::Origin::Create(GURL(url))); + } + return instance.Matches(GURL(url), name.as_string(), storage_key); } private: @@ -50,9 +53,9 @@ // SharedWorker that doesn't have a name option. GURL script_url1("http://example.com/w.js"); std::string name1(""); - url::Origin constructor_origin1 = url::Origin::Create(script_url1); + storage::StorageKey storage_key1(url::Origin::Create(script_url1)); SharedWorkerInstance instance1 = - CreateInstance(script_url1, name1, constructor_origin1); + CreateInstance(script_url1, name1, storage_key1); EXPECT_TRUE(Matches(instance1, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance1, "http://example.com/w2.js", "")); @@ -70,9 +73,9 @@ // SharedWorker that has a name option. GURL script_url2("http://example.com/w.js"); std::string name2("name"); - url::Origin constructor_origin2 = url::Origin::Create(script_url2); + storage::StorageKey storage_key2(url::Origin::Create(script_url2)); SharedWorkerInstance instance2 = - CreateInstance(script_url2, name2, constructor_origin2); + CreateInstance(script_url2, name2, storage_key2); EXPECT_FALSE(Matches(instance2, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance2, "http://example.com/w2.js", "")); @@ -99,10 +102,10 @@ // SharedWorker created from a data: URL without a name option. GURL script_url1(kDataURL); std::string name1(""); - url::Origin constructor_origin1 = - url::Origin::Create(GURL("http://example.com/")); + storage::StorageKey storage_key1( + url::Origin::Create(GURL("http://example.com/"))); SharedWorkerInstance instance1 = - CreateInstance(script_url1, name1, constructor_origin1); + CreateInstance(script_url1, name1, storage_key1); EXPECT_FALSE(Matches(instance1, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance1, "http://example.com/w2.js", "")); @@ -126,10 +129,10 @@ // SharedWorker created from a data: URL with a name option. GURL script_url2(kDataURL); std::string name2("name"); - url::Origin constructor_origin2 = - url::Origin::Create(GURL("http://example.com/")); + storage::StorageKey storage_key2( + url::Origin::Create(GURL("http://example.com/"))); SharedWorkerInstance instance2 = - CreateInstance(script_url2, name2, constructor_origin2); + CreateInstance(script_url2, name2, storage_key2); EXPECT_FALSE(Matches(instance2, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance2, "http://example.com/w2.js", "")); @@ -154,10 +157,10 @@ // opposed to example.com) without a name option. GURL script_url3(kDataURL); std::string name3(""); - url::Origin constructor_origin3 = - url::Origin::Create(GURL("http://example.net/")); + storage::StorageKey storage_key3( + url::Origin::Create(GURL("http://example.net/"))); SharedWorkerInstance instance3 = - CreateInstance(script_url3, name3, constructor_origin3); + CreateInstance(script_url3, name3, storage_key3); EXPECT_FALSE(Matches(instance3, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance3, "http://example.com/w2.js", "")); @@ -182,10 +185,10 @@ // opposed to example.com) with a name option. GURL script_url4(kDataURL); std::string name4(""); - url::Origin constructor_origin4 = - url::Origin::Create(GURL("http://example.net/")); + storage::StorageKey storage_key4( + url::Origin::Create(GURL("http://example.net/"))); SharedWorkerInstance instance4 = - CreateInstance(script_url4, name4, constructor_origin4); + CreateInstance(script_url4, name4, storage_key4); EXPECT_FALSE(Matches(instance4, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance4, "http://example.com/w2.js", "")); @@ -214,9 +217,9 @@ // SharedWorker created from a file:// URL without a name option. GURL script_url1(kFileURL); std::string name1(""); - url::Origin constructor_origin1 = url::Origin::Create(GURL(kFileURL)); + storage::StorageKey storage_key1(url::Origin::Create(GURL(kFileURL))); SharedWorkerInstance instance1 = - CreateInstance(script_url1, name1, constructor_origin1); + CreateInstance(script_url1, name1, storage_key1); EXPECT_FALSE(Matches(instance1, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance1, "http://example.com/w2.js", "")); @@ -239,9 +242,9 @@ // SharedWorker created from a file:// URL with a name option. GURL script_url2(kFileURL); std::string name2("name"); - url::Origin constructor_origin2 = url::Origin::Create(GURL(kFileURL)); + storage::StorageKey storage_key2(url::Origin::Create(GURL(kFileURL))); SharedWorkerInstance instance2 = - CreateInstance(script_url2, name2, constructor_origin2); + CreateInstance(script_url2, name2, storage_key2); EXPECT_FALSE(Matches(instance2, "http://example.com/w.js", "")); EXPECT_FALSE(Matches(instance2, "http://example.com/w2.js", "")); @@ -271,7 +274,8 @@ SharedWorkerInstance instance( GURL("http://example.com/w.js"), blink::mojom::ScriptType::kClassic, network::mojom::CredentialsMode::kSameOrigin, "name", - url::Origin::Create(GURL("http://example.com/")), address_space, + storage::StorageKey(url::Origin::Create(GURL("http://example.com/"))), + address_space, blink::mojom::SharedWorkerCreationContextType::kNonsecure); EXPECT_EQ(address_space, instance.creation_address_space()); }
diff --git a/content/browser/worker_host/shared_worker_service_impl.cc b/content/browser/worker_host/shared_worker_service_impl.cc index 5966521..35db6fde 100644 --- a/content/browser/worker_host/shared_worker_service_impl.cc +++ b/content/browser/worker_host/shared_worker_service_impl.cc
@@ -17,6 +17,7 @@ #include "base/feature_list.h" #include "base/macros.h" #include "base/task/post_task.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "content/browser/appcache/appcache_navigation_handle.h" #include "content/browser/devtools/shared_worker_devtools_agent_host.h" #include "content/browser/loader/file_url_loader_factory.h" @@ -90,11 +91,11 @@ bool SharedWorkerServiceImpl::TerminateWorker( const GURL& url, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { DCHECK_CURRENTLY_ON(BrowserThread::UI); SharedWorkerHost* worker_host = - FindMatchingSharedWorkerHost(url, name, constructor_origin); + FindMatchingSharedWorkerHost(url, name, storage_key); if (worker_host) { DestroyHost(worker_host); return true; @@ -133,12 +134,12 @@ // Enforce same-origin policy. // data: URLs are not considered a different origin. - url::Origin constructor_origin = render_frame_host->GetLastCommittedOrigin(); + storage::StorageKey storage_key(render_frame_host->GetLastCommittedOrigin()); bool is_cross_origin = !info->url.SchemeIs(url::kDataScheme) && - url::Origin::Create(info->url) != constructor_origin; + url::Origin::Create(info->url) != storage_key.origin(); if (is_cross_origin && !GetContentClient()->browser()->DoesSchemeAllowCrossOriginSharedWorker( - constructor_origin.scheme())) { + storage_key.origin().scheme())) { ScriptLoadFailed(std::move(client), /*error_message=*/""); return; } @@ -148,7 +149,7 @@ info->url, render_frame_host->ComputeSiteForCookies().RepresentativeUrl(), main_frame->GetLastCommittedOrigin(), info->options->name, - constructor_origin, + storage_key, WebContentsImpl::FromRenderFrameHostID(client_render_frame_host_id) ->GetBrowserContext(), client_render_frame_host_id.child_id, @@ -157,8 +158,8 @@ return; } - SharedWorkerHost* host = FindMatchingSharedWorkerHost( - info->url, info->options->name, constructor_origin); + SharedWorkerHost* host = + FindMatchingSharedWorkerHost(info->url, info->options->name, storage_key); if (host) { // Non-secure contexts cannot connect to secure workers, and secure contexts // cannot connect to non-secure workers: @@ -194,10 +195,10 @@ return; } auto partition_domain = site_instance->GetPartitionDomain(storage_partition_); - SharedWorkerInstance instance( - info->url, info->options->type, info->options->credentials, - info->options->name, constructor_origin, info->creation_address_space, - creation_context_type); + SharedWorkerInstance instance(info->url, info->options->type, + info->options->credentials, info->options->name, + storage_key, info->creation_address_space, + creation_context_type); host = CreateWorker( *render_frame_host, instance, std::move(info->content_security_policies), std::move(info->outside_fetch_client_settings_object), partition_domain, @@ -364,7 +365,7 @@ WorkerScriptFetchInitiator::Start( worker_process_host->GetID(), host->token(), host->instance().url(), &creator, net::SiteForCookies::FromOrigin(worker_origin), - host->instance().constructor_origin(), + host->instance().storage_key().origin(), net::IsolationInfo::Create( net::IsolationInfo::RequestType::kOther, worker_origin, worker_origin, net::SiteForCookies::FromOrigin(worker_origin)), @@ -446,9 +447,9 @@ SharedWorkerHost* SharedWorkerServiceImpl::FindMatchingSharedWorkerHost( const GURL& url, const std::string& name, - const url::Origin& constructor_origin) { + const storage::StorageKey& storage_key) { for (auto& host : worker_hosts_) { - if (host->instance().Matches(url, name, constructor_origin)) + if (host->instance().Matches(url, name, storage_key)) return host.get(); } return nullptr;
diff --git a/content/browser/worker_host/shared_worker_service_impl.h b/content/browser/worker_host/shared_worker_service_impl.h index f53581c7..777cff19 100644 --- a/content/browser/worker_host/shared_worker_service_impl.h +++ b/content/browser/worker_host/shared_worker_service_impl.h
@@ -14,6 +14,7 @@ #include "base/containers/unique_ptr_adapters.h" #include "base/macros.h" #include "base/observer_list.h" +#include "components/services/storage/public/cpp/storage_key.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "content/browser/worker_host/shared_worker_host.h" #include "content/public/browser/global_routing_id.h" @@ -54,7 +55,7 @@ void EnumerateSharedWorkers(Observer* observer) override; bool TerminateWorker(const GURL& url, const std::string& name, - const url::Origin& constructor_origin) override; + const storage::StorageKey& storage_key) override; void Shutdown() override; // Uses |url_loader_factory| to load workers' scripts instead of @@ -124,7 +125,7 @@ SharedWorkerHost* FindMatchingSharedWorkerHost( const GURL& url, const std::string& name, - const url::Origin& constructor_origin); + const storage::StorageKey& storage_key); void ScriptLoadFailed( mojo::PendingRemote<blink::mojom::SharedWorkerClient> client,
diff --git a/content/browser/worker_host/worker_browsertest.cc b/content/browser/worker_host/worker_browsertest.cc index b7eeaaf..e77094f78 100644 --- a/content/browser/worker_host/worker_browsertest.cc +++ b/content/browser/worker_host/worker_browsertest.cc
@@ -209,8 +209,8 @@ DCHECK(partition); auto* service = static_cast<SharedWorkerServiceImpl*>( partition->GetSharedWorkerService()); - return service->FindMatchingSharedWorkerHost(url, "", - url::Origin::Create(url)); + return service->FindMatchingSharedWorkerHost( + url, "", storage::StorageKey(url::Origin::Create(url))); } net::test_server::EmbeddedTestServer* ssl_server() { return &ssl_server_; }
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn index 9b5f90a..d0e5901 100644 --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn
@@ -82,6 +82,7 @@ deps = [ ":content_java_resources", "//base:base_java", + "//components/version_info/android:version_constants_java", "//third_party/android_deps:com_google_code_findbugs_jsr305_java", "//third_party/androidx:androidx_annotation_annotation_java", "//ui/android:ui_no_recycler_view_java",
diff --git a/content/public/android/java/src/org/chromium/content/app/ZygotePreload.java b/content/public/android/java/src/org/chromium/content/app/ZygotePreload.java index 3a27008..7c6df5e 100644 --- a/content/public/android/java/src/org/chromium/content/app/ZygotePreload.java +++ b/content/public/android/java/src/org/chromium/content/app/ZygotePreload.java
@@ -15,6 +15,8 @@ import org.chromium.base.Log; import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.process_launcher.ChildProcessService; +import org.chromium.build.BuildConfig; +import org.chromium.components.version_info.VersionConstants; /** * Class used in android:zygotePreloadName attribute of manifest. @@ -31,6 +33,12 @@ @Override public void doPreload(ApplicationInfo appInfo) { try { + // Using concatenation rather than %s to allow values to be inlined by R8. + Log.i(TAG, + "Loaded Zygote. version=" + VersionConstants.PRODUCT_VERSION + + " minSdkVersion=" + BuildConfig.MIN_SDK_VERSION + + " isBundle=" + BuildConfig.BUNDLES_SUPPORTED); + // The current thread time is the best approximation we have of the zygote start time // since Process.getStartUptimeMillis() is not reliable in the zygote process. This will // be the total CPU time the current thread has been running, and is reset on fork so
diff --git a/content/public/browser/BUILD.gn b/content/public/browser/BUILD.gn index f929502..e833ef9 100644 --- a/content/public/browser/BUILD.gn +++ b/content/public/browser/BUILD.gn
@@ -467,6 +467,7 @@ deps = [ "//build:chromeos_buildflags", "//cc", + "//components/services/storage/public/cpp", "//components/viz/host", "//content/browser", # Must not be public_deps! "//device/fido",
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc index 9778e66..338c0091 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc
@@ -358,7 +358,7 @@ const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, BrowserContext* context, int render_process_id, int render_frame_id) {
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h index 28363c6..802e4f28 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h
@@ -182,6 +182,7 @@ namespace storage { class FileSystemBackend; +class StorageKey; } // namespace storage namespace content { @@ -679,7 +680,7 @@ const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, BrowserContext* context, int render_process_id, int render_frame_id);
diff --git a/content/public/browser/shared_worker_instance.cc b/content/public/browser/shared_worker_instance.cc index d47d957..1ebc741 100644 --- a/content/public/browser/shared_worker_instance.cc +++ b/content/public/browser/shared_worker_instance.cc
@@ -15,21 +15,21 @@ blink::mojom::ScriptType script_type, network::mojom::CredentialsMode credentials_mode, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, network::mojom::IPAddressSpace creation_address_space, blink::mojom::SharedWorkerCreationContextType creation_context_type) : url_(url), script_type_(script_type), credentials_mode_(credentials_mode), name_(name), - constructor_origin_(constructor_origin), + storage_key_(storage_key), creation_address_space_(creation_address_space), creation_context_type_(creation_context_type) { // Ensure the same-origin policy is enforced correctly. DCHECK(url.SchemeIs(url::kDataScheme) || GetContentClient()->browser()->DoesSchemeAllowCrossOriginSharedWorker( - constructor_origin.scheme()) || - url::Origin::Create(url).IsSameOriginWith(constructor_origin)); + storage_key.origin().scheme()) || + url::Origin::Create(url).IsSameOriginWith(storage_key.origin())); } SharedWorkerInstance::SharedWorkerInstance(const SharedWorkerInstance& other) = @@ -43,20 +43,19 @@ bool SharedWorkerInstance::Matches( const GURL& url, const std::string& name, - const url::Origin& constructor_origin) const { + const storage::StorageKey& storage_key) const { // Step 11.2: "If there exists a SharedWorkerGlobalScope object whose closing // flag is false, constructor origin is same origin with outside settings's // origin, constructor url equals urlRecord, and name equals the value of // options's name member, then set worker global scope to that // SharedWorkerGlobalScope object." - if (!constructor_origin_.IsSameOriginWith(constructor_origin) || - url_ != url || name_ != name) { + if (storage_key_ != storage_key || url_ != url || name_ != name) { return false; } // TODO(https://crbug.com/794098): file:// URLs should be treated as opaque // origins, but not in url::Origin. Therefore, we manually check it here. - if (url.SchemeIsFile() || constructor_origin.scheme() == url::kFileScheme) + if (url.SchemeIsFile() || storage_key.origin().scheme() == url::kFileScheme) return false; return true;
diff --git a/content/public/browser/shared_worker_instance.h b/content/public/browser/shared_worker_instance.h index 4bfd64e..97a25e3d 100644 --- a/content/public/browser/shared_worker_instance.h +++ b/content/public/browser/shared_worker_instance.h
@@ -7,6 +7,7 @@ #include <string> +#include "components/services/storage/public/cpp/storage_key.h" #include "content/common/content_export.h" #include "services/network/public/mojom/content_security_policy.mojom.h" #include "services/network/public/mojom/fetch_api.mojom.h" @@ -33,7 +34,7 @@ blink::mojom::ScriptType script_type, network::mojom::CredentialsMode credentials_mode, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, network::mojom::IPAddressSpace creation_address_space, blink::mojom::SharedWorkerCreationContextType creation_context_type); SharedWorkerInstance(const SharedWorkerInstance& other); @@ -46,9 +47,10 @@ // constructor origin params according to the SharedWorker constructor steps // in the HTML spec: // https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface + // Note that we are using StorageKey to represent the constructor origin. bool Matches(const GURL& url, const std::string& name, - const url::Origin& constructor_origin) const; + const storage::StorageKey& storage_key) const; // Accessors. const GURL& url() const { return url_; } @@ -57,7 +59,7 @@ network::mojom::CredentialsMode credentials_mode() const { return credentials_mode_; } - const url::Origin& constructor_origin() const { return constructor_origin_; } + const storage::StorageKey& storage_key() const { return storage_key_; } network::mojom::IPAddressSpace creation_address_space() const { return creation_address_space_; } @@ -74,10 +76,11 @@ const std::string name_; - // The origin of the document that created this shared worker instance. Used - // for security checks. See Matches() for details. + // The storage key. The key contains the origin of the document that created + // this shared worker instance. Used for security checks. See Matches() for + // details. // https://html.spec.whatwg.org/multipage/workers.html#concept-sharedworkerglobalscope-constructor-origin - const url::Origin constructor_origin_; + const storage::StorageKey storage_key_; const network::mojom::IPAddressSpace creation_address_space_; const blink::mojom::SharedWorkerCreationContextType creation_context_type_;
diff --git a/content/public/browser/shared_worker_service.h b/content/public/browser/shared_worker_service.h index e0721b9..1f40342 100644 --- a/content/public/browser/shared_worker_service.h +++ b/content/public/browser/shared_worker_service.h
@@ -18,9 +18,9 @@ class UnguessableToken; } -namespace url { -class Origin; -} +namespace storage { +class StorageKey; +} // namespace storage namespace content { @@ -76,12 +76,11 @@ // OnClientAdded() for each worker's clients. virtual void EnumerateSharedWorkers(Observer* observer) = 0; - // Terminates the given shared worker identified by its name, the URL of - // its main script resource, and the constructor origin. Returns true on - // success. + // Terminates the given shared worker identified by its name, the URL of its + // main script resource, and the storage key. Returns true on success. virtual bool TerminateWorker(const GURL& url, const std::string& name, - const url::Origin& constructor_origin) = 0; + const storage::StorageKey& storage_key) = 0; // Drops all shared workers and references to processes for shared workers // synchronously.
diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc index 2448553b..77e39f1 100644 --- a/content/renderer/media/media_factory.cc +++ b/content/renderer/media/media_factory.cc
@@ -265,13 +265,6 @@ // Helper function returning whether SurfaceLayer should be enabled. blink::WebMediaPlayer::SurfaceLayerMode GetSurfaceLayerMode( MediaPlayerType type) { -#if defined(OS_ANDROID) - if (base::FeatureList::IsEnabled(media::kDisableSurfaceLayerForVideo) && - !features::IsUsingVizForWebView()) { - return blink::WebMediaPlayer::SurfaceLayerMode::kNever; - } -#endif // OS_ANDROID - if (type != MediaPlayerType::kMediaStream) return blink::WebMediaPlayer::SurfaceLayerMode::kAlways;
diff --git a/content/test/data/conversions/register_conversion.js b/content/test/data/conversions/register_conversion.js index 14a6e9b..2e5db76 100644 --- a/content/test/data/conversions/register_conversion.js +++ b/content/test/data/conversions/register_conversion.js
@@ -2,16 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -function registerConversion(data) { +function registerConversion(data, eventSourceTriggerData) { // Use a relative URL for conversion registration. - registerConversionForOrigin(data, ""); + registerConversionForOrigin(data, "", eventSourceTriggerData); } -function registerConversionForOrigin(data, origin) { +function registerConversionForOrigin(data, origin, eventSourceTriggerData) { let img = document.createElement("img"); img.src = origin + "/server-redirect?.well-known/register-conversion?conversion-data=" + - data; + data + (eventSourceTriggerData === undefined ? "" + : "&event-source-trigger-data=" + eventSourceTriggerData); img.onerror = function () { document.title = "converted"; }; document.body.appendChild(img); }
diff --git a/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt index f60bcfd..991da643 100644 --- a/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
@@ -57,5 +57,3 @@ # tags: [ display-server-wayland display-server-x ] # results: [ Failure RetryOnFailure Skip ] # END TAG HEADER - -WebCodecs_EncodeDecodeRender_* [ Failure ] \ No newline at end of file
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt index 031867b..46ceea9 100644 --- a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
@@ -694,7 +694,7 @@ crbug.com/1175233 [ android android-pixel-4 no-passthrough ] deqp/functional/gles3/fborender/resize_03.html [ RetryOnFailure ] crbug.com/1179432 [ android android-pixel-4 angle-disabled no-passthrough ] deqp/functional/gles3/texturespecification/basic_teximage2d_2d_01.html [ RetryOnFailure ] -crbug.com/1179432 [ android android-pixel-4 angle-disabled no-passthrough ] deqp/functional/gles3/transformfeedback/array_interleaved_points.html [ RetryOnFailure ] +crbug.com/1179432 [ android android-pixel-4 angle-disabled no-passthrough ] deqp/functional/gles3/transformfeedback/* [ RetryOnFailure ] crbug.com/1191030 [ android android-pixel-4 ] conformance/textures/misc/video-rotation.html [ Failure ]
diff --git a/docs/security/security-labels.md b/docs/security/security-labels.md index e398a1c..cce7440e 100644 --- a/docs/security/security-labels.md +++ b/docs/security/security-labels.md
@@ -50,6 +50,9 @@ *security@chromium.org* is a member of that group so the former is a superset of the latter. **Restrict-View-SecurityNotify** is not suitable for sensitive bugs. + * **Restrict-View-SecurityNotifyWebRTC**: As above, but additionally + gives access to *security-notify@webrtc.org*, a community of downstream + WebRTC embedders. * **Restrict-View-Google**: Restricts access to users that are Google employees (but also via their *chromium.org* accounts). This should be used for bugs that aren't OK for external contributors to see (even if we trust @@ -241,7 +244,8 @@ ### Drop **Restrict-View-{SecurityTeam,SecurityNotify}** From Old And Fixed Bugs -Remove **Restrict-View-SecurityTeam** and **Restrict-View-SecurityNotify** from +Remove **Restrict-View-SecurityTeam**, **Restrict-View-SecurityNotify** and +**Restrict-View-SecurityNotifyWebRTC** from security bugs that have been closed (Fixed, Verified, Duplicate, WontFix, Invalid) more than 14 weeks ago and add the **allpublic** label to make the bugs accessible publicly. The idea here is that security bug fixes will generally @@ -255,6 +259,7 @@ fixed security bugs. Rationale is that while fixed bugs are generally not intended to become public immediately, we'd like to give access to external parties depending on Chromium via *security-notify@chromium.org*. +(WebRTC bugs instead get set to **Restrict-View-SecurityNotifyWebRTC**). ### Set **Merge-Request-X** For Fixed Bugs
diff --git a/extensions/browser/api/declarative_net_request/file_sequence_helper_unittest.cc b/extensions/browser/api/declarative_net_request/file_sequence_helper_unittest.cc index 98c413e..e58cf516 100644 --- a/extensions/browser/api/declarative_net_request/file_sequence_helper_unittest.cc +++ b/extensions/browser/api/declarative_net_request/file_sequence_helper_unittest.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/files/file_util.h" +#include "base/format_macros.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" #include "base/task/post_task.h"
diff --git a/gpu/command_buffer/client/shared_image_interface.cc b/gpu/command_buffer/client/shared_image_interface.cc index 6f501c4..6fc75d6 100644 --- a/gpu/command_buffer/client/shared_image_interface.cc +++ b/gpu/command_buffer/client/shared_image_interface.cc
@@ -21,4 +21,16 @@ return Mailbox(); } +Mailbox SharedImageInterface::CreateSharedImage( + gfx::GpuMemoryBuffer* gpu_memory_buffer, + GpuMemoryBufferManager* gpu_memory_buffer_manager, + const gfx::ColorSpace& color_space, + GrSurfaceOrigin surface_origin, + SkAlphaType alpha_type, + uint32_t usage) { + return CreateSharedImage(gpu_memory_buffer, gpu_memory_buffer_manager, + gfx::BufferPlane::DEFAULT, color_space, + surface_origin, alpha_type, usage); +} + } // namespace gpu
diff --git a/gpu/command_buffer/client/shared_image_interface.h b/gpu/command_buffer/client/shared_image_interface.h index 8026dad..1b2c6a1 100644 --- a/gpu/command_buffer/client/shared_image_interface.h +++ b/gpu/command_buffer/client/shared_image_interface.h
@@ -97,11 +97,20 @@ virtual Mailbox CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type, uint32_t usage) = 0; + // Same as the above, but specifies gfx::BufferPlane::DEFAULT for |plane|. + Mailbox CreateSharedImage(gfx::GpuMemoryBuffer* gpu_memory_buffer, + GpuMemoryBufferManager* gpu_memory_buffer_manager, + const gfx::ColorSpace& color_space, + GrSurfaceOrigin surface_origin, + SkAlphaType alpha_type, + uint32_t usage); + // The primary purpose of this is API to use an AHB from media/AImageReader in // a thread-safe way. The source mailbox passed to this API must be backed by // a SharedImageVideo. The current AHB associated with the video is wrapped in
diff --git a/gpu/command_buffer/service/external_vk_image_skia_representation.cc b/gpu/command_buffer/service/external_vk_image_skia_representation.cc index 775d88bb..60e8f44e 100644 --- a/gpu/command_buffer/service/external_vk_image_skia_representation.cc +++ b/gpu/command_buffer/service/external_vk_image_skia_representation.cc
@@ -62,7 +62,7 @@ SkColorType sk_color_type = viz::ResourceFormatToClosestSkColorType( true /* gpu_compositing */, format()); surface = SkSurface::MakeFromBackendTexture( - gr_context, promise_texture->backendTexture(), kTopLeft_GrSurfaceOrigin, + gr_context, promise_texture->backendTexture(), surface_origin(), final_msaa_count, sk_color_type, backing_impl()->color_space().ToSkColorSpace(), &surface_props); if (!surface) {
diff --git a/gpu/ipc/client/client_shared_image_interface.cc b/gpu/ipc/client/client_shared_image_interface.cc index 774d607..4f40653 100644 --- a/gpu/ipc/client/client_shared_image_interface.cc +++ b/gpu/ipc/client/client_shared_image_interface.cc
@@ -105,13 +105,14 @@ Mailbox ClientSharedImageInterface::CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type, uint32_t usage) { return AddMailbox(proxy_->CreateSharedImage( - gpu_memory_buffer, gpu_memory_buffer_manager, color_space, surface_origin, - alpha_type, usage)); + gpu_memory_buffer, gpu_memory_buffer_manager, plane, color_space, + surface_origin, alpha_type, usage)); } #if defined(OS_ANDROID)
diff --git a/gpu/ipc/client/client_shared_image_interface.h b/gpu/ipc/client/client_shared_image_interface.h index e65e745..81de5162 100644 --- a/gpu/ipc/client/client_shared_image_interface.h +++ b/gpu/ipc/client/client_shared_image_interface.h
@@ -61,6 +61,7 @@ base::span<const uint8_t> pixel_data) override; Mailbox CreateSharedImage(gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type,
diff --git a/gpu/ipc/client/shared_image_interface_proxy.cc b/gpu/ipc/client/shared_image_interface_proxy.cc index 02e74d5a..68cae6b 100644 --- a/gpu/ipc/client/shared_image_interface_proxy.cc +++ b/gpu/ipc/client/shared_image_interface_proxy.cc
@@ -156,6 +156,7 @@ Mailbox SharedImageInterfaceProxy::CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type, @@ -172,7 +173,7 @@ params.handle = gpu_memory_buffer->CloneHandle(); params.size = gpu_memory_buffer->GetSize(); params.format = gpu_memory_buffer->GetFormat(); - params.plane = gfx::BufferPlane::DEFAULT; + params.plane = plane; params.color_space = color_space; params.usage = usage; params.surface_origin = surface_origin;
diff --git a/gpu/ipc/client/shared_image_interface_proxy.h b/gpu/ipc/client/shared_image_interface_proxy.h index b97c35b91..cc5f411 100644 --- a/gpu/ipc/client/shared_image_interface_proxy.h +++ b/gpu/ipc/client/shared_image_interface_proxy.h
@@ -35,6 +35,7 @@ base::span<const uint8_t> pixel_data); Mailbox CreateSharedImage(gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type,
diff --git a/gpu/ipc/shared_image_interface_in_process.cc b/gpu/ipc/shared_image_interface_in_process.cc index dfb2ba9a8..caa1cec 100644 --- a/gpu/ipc/shared_image_interface_in_process.cc +++ b/gpu/ipc/shared_image_interface_in_process.cc
@@ -233,6 +233,7 @@ Mailbox SharedImageInterfaceInProcess::CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type, @@ -244,6 +245,8 @@ // TODO(piman): DCHECK GMB format support. DCHECK(IsImageSizeValidForGpuMemoryBufferFormat( gpu_memory_buffer->GetSize(), gpu_memory_buffer->GetFormat())); + DCHECK(IsPlaneValidForGpuMemoryBufferFormat(plane, + gpu_memory_buffer->GetFormat())); auto mailbox = Mailbox::GenerateForSharedImage(); gfx::GpuMemoryBufferHandle handle = gpu_memory_buffer->CloneHandle(); @@ -260,7 +263,7 @@ base::BindOnce( &SharedImageInterfaceInProcess::CreateGMBSharedImageOnGpuThread, base::Unretained(this), mailbox, std::move(handle), - gpu_memory_buffer->GetFormat(), gpu_memory_buffer->GetSize(), + gpu_memory_buffer->GetFormat(), plane, gpu_memory_buffer->GetSize(), color_space, surface_origin, alpha_type, usage, sync_token), {}); } @@ -276,6 +279,7 @@ const Mailbox& mailbox, gfx::GpuMemoryBufferHandle handle, gfx::BufferFormat format, + gfx::BufferPlane plane, const gfx::Size& size, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, @@ -291,9 +295,9 @@ // TODO(piman): add support for SurfaceHandle (for backbuffers for ozone/drm). SurfaceHandle surface_handle = kNullSurfaceHandle; if (!shared_image_factory_->CreateSharedImage( - mailbox, kDisplayCompositorClientId, std::move(handle), format, - gfx::BufferPlane::DEFAULT, surface_handle, size, color_space, - surface_origin, alpha_type, usage)) { + mailbox, kDisplayCompositorClientId, std::move(handle), format, plane, + surface_handle, size, color_space, surface_origin, alpha_type, + usage)) { // Signal errors by losing the command buffer. // Signal errors by losing the command buffer. command_buffer_helper_->SetError();
diff --git a/gpu/ipc/shared_image_interface_in_process.h b/gpu/ipc/shared_image_interface_in_process.h index 0a2246f..e3a1dff 100644 --- a/gpu/ipc/shared_image_interface_in_process.h +++ b/gpu/ipc/shared_image_interface_in_process.h
@@ -71,6 +71,7 @@ // the GPU channel is lost). Mailbox CreateSharedImage(gfx::GpuMemoryBuffer* gpu_memory_buffer, GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type, @@ -184,6 +185,7 @@ void CreateGMBSharedImageOnGpuThread(const Mailbox& mailbox, gfx::GpuMemoryBufferHandle handle, gfx::BufferFormat format, + gfx::BufferPlane plane, const gfx::Size& size, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin,
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg index bef88abd..16251c5 100644 --- a/infra/config/generated/commit-queue.cfg +++ b/infra/config/generated/commit-queue.cfg
@@ -1246,6 +1246,10 @@ includable_only: true } builders { + name: "chromium/try/linux-xenial-rel" + includable_only: true + } + builders { name: "chromium/try/linux_android_dbg_ng" includable_only: true } @@ -1269,10 +1273,7 @@ } builders { name: "chromium/try/linux_chromium_asan_rel_ng_bionic" - experiment_percentage: 10 - location_regexp: ".*" - location_regexp_exclude: ".+/[+]/docs/.+" - location_regexp_exclude: ".+/[+]/infra/config/.+" + includable_only: true } builders { name: "chromium/try/linux_chromium_cfi_rel_ng" @@ -1326,7 +1327,10 @@ } builders { name: "chromium/try/linux_chromium_tsan_rel_ng_bionic" - includable_only: true + experiment_percentage: 10 + location_regexp: ".*" + location_regexp_exclude: ".+/[+]/docs/.+" + location_regexp_exclude: ".+/[+]/infra/config/.+" } builders { name: "chromium/try/linux_chromium_ubsan_rel_ng"
diff --git a/infra/config/generated/cq-builders.md b/infra/config/generated/cq-builders.md index 384f33e1..5a3b9ee 100644 --- a/infra/config/generated/cq-builders.md +++ b/infra/config/generated/cq-builders.md
@@ -449,6 +449,6 @@ * [linux-rel-rts](https://ci.chromium.org/p/chromium/builders/try/linux-rel-rts) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+linux-rel-rts)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+linux-rel-rts)) * Experiment percentage: 5.0 -* [linux_chromium_asan_rel_ng_bionic](https://ci.chromium.org/p/chromium/builders/try/linux_chromium_asan_rel_ng_bionic) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+linux_chromium_asan_rel_ng_bionic)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+linux_chromium_asan_rel_ng_bionic)) +* [linux_chromium_tsan_rel_ng_bionic](https://ci.chromium.org/p/chromium/builders/try/linux_chromium_tsan_rel_ng_bionic) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+linux_chromium_tsan_rel_ng_bionic)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+linux_chromium_tsan_rel_ng_bionic)) * Experiment percentage: 10.0
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 0465d162..c224ca96 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -27082,6 +27082,68 @@ } } builders { + name: "linux-xenial-rel" + swarming_host: "chromium-swarm.appspot.com" + swarming_tags: "vpython:native-python-wrapper" + dimensions: "builderless:1" + dimensions: "cores:8" + dimensions: "cpu:x86-64" + dimensions: "os:Ubuntu-16.04" + dimensions: "pool:luci.chromium.ci" + dimensions: "ssd:0" + exe { + cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" + cipd_version: "refs/heads/master" + cmd: "recipes" + } + properties: "{\"$build/goma\":{\"enable_ats\":true,\"jobs\":500,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"chromium.linux\",\"recipe\":\"chromium\"}" + execution_timeout_secs: 10800 + build_numbers: YES + service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" + experiments { + key: "chromium.resultdb.result_sink" + value: 100 + } + experiments { + key: "chromium.resultdb.result_sink.gtests_local" + value: 100 + } + experiments { + key: "chromium.resultdb.result_sink.junit_tests" + value: 100 + } + experiments { + key: "luci.buildbucket.use_bbagent" + value: 100 + } + experiments { + key: "luci.use_realms" + value: 100 + } + resultdb { + enable: true + bq_exports { + project: "luci-resultdb" + dataset: "chromium" + table: "ci_test_results" + test_results {} + } + bq_exports { + project: "luci-resultdb" + dataset: "chromium" + table: "gpu_ci_test_results" + test_results { + predicate { + test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test/.+" + } + } + } + history_options { + use_invocation_timestamp: true + } + } + } + builders { name: "mac-angle-amd" swarming_host: "chromium-swarm.appspot.com" swarming_tags: "vpython:native-python-wrapper" @@ -47771,6 +47833,71 @@ } } builders { + name: "linux-xenial-rel" + swarming_host: "chromium-swarm.appspot.com" + swarming_tags: "vpython:native-python-wrapper" + dimensions: "builderless:1" + dimensions: "cores:8" + dimensions: "cpu:x86-64" + dimensions: "os:Ubuntu-16.04" + dimensions: "pool:luci.chromium.try" + dimensions: "ssd:0" + exe { + cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" + cipd_version: "refs/heads/master" + cmd: "recipes" + } + properties: "{\"$build/goma\":{\"enable_ats\":true,\"jobs\":150,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.linux\",\"recipe\":\"chromium_trybot\"}" + execution_timeout_secs: 14400 + expiration_secs: 7200 + grace_period { + seconds: 120 + } + caches { + name: "win_toolchain" + path: "win_toolchain" + } + build_numbers: YES + service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" + task_template_canary_percentage { + value: 5 + } + experiments { + key: "chromium.resultdb.result_sink" + value: 100 + } + experiments { + key: "chromium.resultdb.result_sink.junit_tests" + value: 100 + } + experiments { + key: "luci.use_realms" + value: 100 + } + resultdb { + enable: true + bq_exports { + project: "luci-resultdb" + dataset: "chromium" + table: "try_test_results" + test_results {} + } + bq_exports { + project: "luci-resultdb" + dataset: "chromium" + table: "gpu_try_test_results" + test_results { + predicate { + test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test/.+" + } + } + } + history_options { + use_invocation_timestamp: true + } + } + } + builders { name: "linux_android_dbg_ng" swarming_host: "chromium-swarm.appspot.com" swarming_tags: "vpython:native-python-wrapper" @@ -48036,7 +48163,7 @@ dimensions: "builderless:1" dimensions: "cores:8" dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" + dimensions: "os:Ubuntu-16.04|Ubuntu-18.04" dimensions: "pool:luci.chromium.try" dimensions: "ssd:1" exe {
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg index 65337bf..abb4a68 100644 --- a/infra/config/generated/luci-milo.cfg +++ b/infra/config/generated/luci-milo.cfg
@@ -256,6 +256,11 @@ short_name: "tru" } builders { + name: "buildbucket/luci.chromium.ci/linux-xenial-rel" + category: "chromium.linux|release" + short_name: "xen" + } + builders { name: "buildbucket/luci.chromium.ci/Linux Tester (Ozone Headless)" category: "chromium.linux|release|ozone" short_name: "ltoh" @@ -8060,6 +8065,11 @@ short_name: "tru" } builders { + name: "buildbucket/luci.chromium.ci/linux-xenial-rel" + category: "release" + short_name: "xen" + } + builders { name: "buildbucket/luci.chromium.ci/Linux Tester (Ozone Headless)" category: "release|ozone" short_name: "ltoh" @@ -12980,6 +12990,9 @@ name: "buildbucket/luci.chromium.try/linux-wpt-input-fyi-rel" } builders { + name: "buildbucket/luci.chromium.try/linux-xenial-rel" + } + builders { name: "buildbucket/luci.chromium.try/linux_android_dbg_ng" } builders { @@ -13927,6 +13940,9 @@ name: "buildbucket/luci.chromium.try/linux-wpt-input-fyi-rel" } builders { + name: "buildbucket/luci.chromium.try/linux-xenial-rel" + } + builders { name: "buildbucket/luci.chromium.try/linux_chromium_analysis" } builders {
diff --git a/infra/config/generated/luci-notify.cfg b/infra/config/generated/luci-notify.cfg index 1fae14a..6f727714 100644 --- a/infra/config/generated/luci-notify.cfg +++ b/infra/config/generated/luci-notify.cfg
@@ -3252,6 +3252,32 @@ } template: "tree_closure_email_template" } + notifications { + on_occurrence: FAILURE + failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|runhooks|update|\\w*nocompile_test)\\b" + email { + recipients: "thomasanderson@chromium.org" + } + } + builders { + bucket: "ci" + name: "linux-xenial-rel" + repository: "https://chromium.googlesource.com/chromium/src" + } + tree_closers { + tree_status_host: "chromium-status.appspot.com" + failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|runhooks|update|\\w*nocompile_test)\\b" + } +} +notifiers { + notifications { + on_occurrence: FAILURE + failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|runhooks|update|\\w*nocompile_test)\\b" + email { + rotation_urls: "https://chrome-ops-rotation-proxy.appspot.com/current/oncallator:chrome-build-sheriff" + } + template: "tree_closure_email_template" + } builders { bucket: "ci" name: "mac-archive-dbg"
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg index f03934ca..dce6c2e 100644 --- a/infra/config/generated/luci-scheduler.cfg +++ b/infra/config/generated/luci-scheduler.cfg
@@ -5759,6 +5759,16 @@ } } job { + id: "linux-xenial-rel" + realm: "ci" + acl_sets: "ci" + buildbucket { + server: "cr-buildbucket.appspot.com" + bucket: "luci.chromium.ci" + builder: "linux-xenial-rel" + } +} +job { id: "linux_chromium_bot_db_exporter" realm: "findit" schedule: "0 0,6,12,18 * * *" @@ -6983,6 +6993,7 @@ triggers: "linux-wpt-fyi-rel" triggers: "linux-wpt-identity-fyi-rel" triggers: "linux-wpt-input-fyi-rel" + triggers: "linux-xenial-rel" triggers: "mac-angle-builder" triggers: "mac-angle-chromium-builder" triggers: "mac-archive-dbg"
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star index ad44aa02..22617d76 100644 --- a/infra/config/lib/builders.star +++ b/infra/config/lib/builders.star
@@ -59,6 +59,10 @@ ANDROID = os_enum("Android", os_category.ANDROID), LINUX_TRUSTY = os_enum("Ubuntu-14.04", os_category.LINUX), LINUX_XENIAL = os_enum("Ubuntu-16.04", os_category.LINUX), + LINUX_XENIAL_OR_BIONIC = os_enum( + "Ubuntu-16.04|Ubuntu-18.04", + os_category.LINUX, + ), LINUX_BIONIC = os_enum("Ubuntu-18.04", os_category.LINUX), # xenial -> bionic migration # * If a builder does not already explicitly set an os value, use
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star index 0cd7ee8..2d3a3959 100644 --- a/infra/config/subprojects/chromium/ci.star +++ b/infra/config/subprojects/chromium/ci.star
@@ -5111,6 +5111,16 @@ ) ci.linux_builder( + name = "linux-xenial-rel", + console_view_entry = consoles.console_view_entry( + category = "release", + short_name = "xen", + ), + main_console_view = "main", + os = os.LINUX_XENIAL, +) + +ci.linux_builder( name = "metadata-exporter", console_view_entry = consoles.console_view_entry( console_view = "metadata.exporter",
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star index 41f8cb3..801bb82 100644 --- a/infra/config/subprojects/chromium/try.star +++ b/infra/config/subprojects/chromium/try.star
@@ -1294,6 +1294,12 @@ ) try_.chromium_linux_builder( + name = "linux-xenial-rel", + goma_jobs = goma.jobs.J150, + os = os.LINUX_XENIAL, +) + +try_.chromium_linux_builder( name = "linux-viz-rel", ) @@ -1328,6 +1334,7 @@ ssd = True, main_list_view = "try", tryjob = try_.job(), + os = os.LINUX_XENIAL_OR_BIONIC, ) # TODO(crbug.com/1200574): Remove after migration. @@ -1338,9 +1345,6 @@ ssd = True, os = os.LINUX_BIONIC, main_list_view = "try", - tryjob = try_.job( - experiment_percentage = 10, - ), ) try_.chromium_linux_builder( @@ -1421,6 +1425,9 @@ goma_jobs = goma.jobs.J150, os = os.LINUX_BIONIC, main_list_view = "try", + tryjob = try_.job( + experiment_percentage = 10, + ), ) try_.chromium_linux_builder(
diff --git a/ios/chrome/app/app_startup_parameters.h b/ios/chrome/app/app_startup_parameters.h index c210376..5134b9e4 100644 --- a/ios/chrome/app/app_startup_parameters.h +++ b/ios/chrome/app/app_startup_parameters.h
@@ -8,6 +8,7 @@ #import <Foundation/Foundation.h> #include <map> +#include <string> enum class ApplicationModeForTabOpening { NORMAL, INCOGNITO, CURRENT };
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h b/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h index e175bd88..e8ea108 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h +++ b/ios/chrome/browser/crash_report/breadcrumbs/application_breadcrumbs_logger.h
@@ -8,6 +8,7 @@ #import <UIKit/UIKit.h> #include <memory> +#include <string> #include "base/memory/memory_pressure_listener.h" #include "base/metrics/user_metrics.h"
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_observer_bridge.h b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_observer_bridge.h index bcc99253..96441d9a 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_observer_bridge.h +++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_observer_bridge.h
@@ -7,8 +7,9 @@ #import <Foundation/Foundation.h> -#include "components/breadcrumbs/core/breadcrumb_manager_observer.h" +#include <string> +#include "components/breadcrumbs/core/breadcrumb_manager_observer.h" namespace breadcrumbs { class BreadcrumbManager;
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.h b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.h index 15b6eb5..506931d 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.h +++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_CRASH_REPORT_BREADCRUMBS_BREADCRUMB_MANAGER_TAB_HELPER_H_ #define IOS_CHROME_BROWSER_CRASH_REPORT_BREADCRUMBS_BREADCRUMB_MANAGER_TAB_HELPER_H_ +#include <string> + #include "base/scoped_observer.h" #include "components/infobars/core/infobar_manager.h" #include "ios/web/public/web_state_observer.h"
diff --git a/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer.h b/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer.h index 6cb66e1..d362979 100644 --- a/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer.h +++ b/ios/chrome/browser/crash_report/crash_reporter_breadcrumb_observer.h
@@ -7,6 +7,7 @@ #include <map> #include <memory> +#include <string> #import <Foundation/Foundation.h>
diff --git a/ios/chrome/browser/crash_report/crash_reporter_url_observer.h b/ios/chrome/browser/crash_report/crash_reporter_url_observer.h index 51bbd6e..1150a50 100644 --- a/ios/chrome/browser/crash_report/crash_reporter_url_observer.h +++ b/ios/chrome/browser/crash_report/crash_reporter_url_observer.h
@@ -8,6 +8,7 @@ #import <Foundation/Foundation.h> #include <map> +#include <string> #include "ios/chrome/browser/web_state_list/web_state_list_observer.h" #include "ios/web/public/web_state_observer.h"
diff --git a/ios/chrome/browser/link_to_text/link_to_text_utils.h b/ios/chrome/browser/link_to_text/link_to_text_utils.h index 7937242..6627e48 100644 --- a/ios/chrome/browser/link_to_text/link_to_text_utils.h +++ b/ios/chrome/browser/link_to_text/link_to_text_utils.h
@@ -8,6 +8,8 @@ #import <CoreGraphics/CoreGraphics.h> #import <UIKit/UIKit.h> +#include <string> + #import "base/optional.h" #import "components/shared_highlighting/core/common/shared_highlighting_metrics.h" #import "ios/chrome/browser/link_to_text/link_generation_outcome.h"
diff --git a/ios/chrome/browser/metrics/first_user_action_recorder.h b/ios/chrome/browser/metrics/first_user_action_recorder.h index 5bc87aa..6ce03cc 100644 --- a/ios/chrome/browser/metrics/first_user_action_recorder.h +++ b/ios/chrome/browser/metrics/first_user_action_recorder.h
@@ -5,6 +5,7 @@ #ifndef IOS_CHROME_BROWSER_METRICS_FIRST_USER_ACTION_RECORDER_H_ #define IOS_CHROME_BROWSER_METRICS_FIRST_USER_ACTION_RECORDER_H_ +#include <string> #include <vector> #include "base/cancelable_callback.h"
diff --git a/ios/chrome/browser/omaha/omaha_service.h b/ios/chrome/browser/omaha/omaha_service.h index 902f8c38..a89a81238 100644 --- a/ios/chrome/browser/omaha/omaha_service.h +++ b/ios/chrome/browser/omaha/omaha_service.h
@@ -6,6 +6,7 @@ #define IOS_CHROME_BROWSER_OMAHA_OMAHA_SERVICE_H_ #include <memory> +#include <string> #include "base/callback.h" #include "base/gtest_prod_util.h"
diff --git a/ios/chrome/browser/open_in/open_in_tab_helper.h b/ios/chrome/browser/open_in/open_in_tab_helper.h index 409b496..99b9c4ddc 100644 --- a/ios/chrome/browser/open_in/open_in_tab_helper.h +++ b/ios/chrome/browser/open_in/open_in_tab_helper.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_OPEN_IN_OPEN_IN_TAB_HELPER_H_ #define IOS_CHROME_BROWSER_OPEN_IN_OPEN_IN_TAB_HELPER_H_ +#include <string> + #include "base/macros.h" #import "ios/chrome/browser/open_in/open_in_tab_helper_delegate.h" #include "ios/web/public/web_state_observer.h"
diff --git a/ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h b/ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h index 8a5cbea..e53ec58 100644 --- a/ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h +++ b/ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_HTTP_AUTH_OVERLAY_H_ #define IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_HTTP_AUTH_OVERLAY_H_ +#include <string> + #include "ios/chrome/browser/overlays/public/overlay_request_config.h" #include "ios/chrome/browser/overlays/public/overlay_response_info.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/reading_list/reading_list_download_service.h b/ios/chrome/browser/reading_list/reading_list_download_service.h index d187fda..4e383475 100644 --- a/ios/chrome/browser/reading_list/reading_list_download_service.h +++ b/ios/chrome/browser/reading_list/reading_list_download_service.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_READING_LIST_READING_LIST_DOWNLOAD_SERVICE_H_ #define IOS_CHROME_BROWSER_READING_LIST_READING_LIST_DOWNLOAD_SERVICE_H_ +#include <string> + #include "base/macros.h" #include "components/keyed_service/core/keyed_service.h" #include "components/reading_list/core/reading_list_model_observer.h"
diff --git a/ios/chrome/browser/reading_list/url_downloader.h b/ios/chrome/browser/reading_list/url_downloader.h index f5331da..30f044f3 100644 --- a/ios/chrome/browser/reading_list/url_downloader.h +++ b/ios/chrome/browser/reading_list/url_downloader.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_READING_LIST_URL_DOWNLOADER_H_ #define IOS_CHROME_BROWSER_READING_LIST_URL_DOWNLOADER_H_ +#include <string> + #include "base/callback.h" #include "base/containers/circular_deque.h" #include "base/files/file_path.h"
diff --git a/ios/chrome/browser/safe_browsing/safe_browsing_query_manager.h b/ios/chrome/browser/safe_browsing/safe_browsing_query_manager.h index 0d2aa785..80e4299 100644 --- a/ios/chrome/browser/safe_browsing/safe_browsing_query_manager.h +++ b/ios/chrome/browser/safe_browsing/safe_browsing_query_manager.h
@@ -6,6 +6,7 @@ #define IOS_CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_QUERY_MANAGER_H_ #include <map> +#include <string> #include "base/containers/flat_map.h" #include "base/containers/unique_ptr_adapters.h"
diff --git a/ios/chrome/browser/safe_browsing/unsafe_resource_util.h b/ios/chrome/browser/safe_browsing/unsafe_resource_util.h index b3cc294..314c5b12 100644 --- a/ios/chrome/browser/safe_browsing/unsafe_resource_util.h +++ b/ios/chrome/browser/safe_browsing/unsafe_resource_util.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_SAFE_BROWSING_UNSAFE_RESOURCE_UTIL_H_ #define IOS_CHROME_BROWSER_SAFE_BROWSING_UNSAFE_RESOURCE_UTIL_H_ +#include <string> + #include "components/security_interstitials/core/base_safe_browsing_error_ui.h" #include "components/security_interstitials/core/unsafe_resource.h"
diff --git a/ios/chrome/browser/signin/gaia_auth_fetcher_ios_ns_url_session_bridge.h b/ios/chrome/browser/signin/gaia_auth_fetcher_ios_ns_url_session_bridge.h index 795f9b1..d26a9bc3 100644 --- a/ios/chrome/browser/signin/gaia_auth_fetcher_ios_ns_url_session_bridge.h +++ b/ios/chrome/browser/signin/gaia_auth_fetcher_ios_ns_url_session_bridge.h
@@ -7,6 +7,7 @@ #import <Foundation/Foundation.h> +#include <string> #include <vector> #include "ios/chrome/browser/signin/gaia_auth_fetcher_ios_bridge.h"
diff --git a/ios/chrome/browser/test/perf_test_with_bvc_ios.h b/ios/chrome/browser/test/perf_test_with_bvc_ios.h index c1440308..0b81780 100644 --- a/ios/chrome/browser/test/perf_test_with_bvc_ios.h +++ b/ios/chrome/browser/test/perf_test_with_bvc_ios.h
@@ -8,6 +8,7 @@ #import <UIKit/UIKit.h> #include <memory> +#include <string> #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" #import "ios/chrome/browser/main/browser_web_state_list_delegate.h"
diff --git a/ios/chrome/browser/translate/fake_translate_infobar_delegate.h b/ios/chrome/browser/translate/fake_translate_infobar_delegate.h index 7a16e67..283fc3f1 100644 --- a/ios/chrome/browser/translate/fake_translate_infobar_delegate.h +++ b/ios/chrome/browser/translate/fake_translate_infobar_delegate.h
@@ -5,9 +5,10 @@ #ifndef IOS_CHROME_BROWSER_TRANSLATE_FAKE_TRANSLATE_INFOBAR_DELEGATE_H_ #define IOS_CHROME_BROWSER_TRANSLATE_FAKE_TRANSLATE_INFOBAR_DELEGATE_H_ -#include "components/translate/core/browser/translate_infobar_delegate.h" +#include <string> #include "components/translate/core/browser/mock_translate_driver.h" +#include "components/translate/core/browser/translate_infobar_delegate.h" namespace sync_preferences { class TestingPrefServiceSyncable;
diff --git a/ios/chrome/browser/translate/translate_service_ios.h b/ios/chrome/browser/translate/translate_service_ios.h index 4bbc3a7f..b10e57e3 100644 --- a/ios/chrome/browser/translate/translate_service_ios.h +++ b/ios/chrome/browser/translate/translate_service_ios.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_TRANSLATE_TRANSLATE_SERVICE_IOS_H_ #define IOS_CHROME_BROWSER_TRANSLATE_TRANSLATE_SERVICE_IOS_H_ +#include <string> + #include "base/macros.h" #include "components/web_resource/resource_request_allowed_notifier.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm index 5f1ce51..8eba7d5 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.h" +#include "base/format_macros.h" #include "base/strings/sys_string_conversions.h" #import "base/test/ios/wait_util.h" #include "components/bookmarks/browser/bookmark_model.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/mediator_util.h b/ios/chrome/browser/ui/content_suggestions/mediator_util.h index aaff7a9..6eabac4 100644 --- a/ios/chrome/browser/ui/content_suggestions/mediator_util.h +++ b/ios/chrome/browser/ui/content_suggestions/mediator_util.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_MEDIATOR_UTIL_H_ #define IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_MEDIATOR_UTIL_H_ +#include <string> + #include "base/bind.h" #include "base/optional.h" #include "components/ntp_snippets/category_info.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/cells/autofill_card_item.h b/ios/chrome/browser/ui/settings/autofill/cells/autofill_card_item.h index 2e53a424..ae85c7a 100644 --- a/ios/chrome/browser/ui/settings/autofill/cells/autofill_card_item.h +++ b/ios/chrome/browser/ui/settings/autofill/cells/autofill_card_item.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_CELLS_AUTOFILL_CARD_ITEM_H_ #define IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_CELLS_AUTOFILL_CARD_ITEM_H_ +#include <string> + #import "ios/chrome/browser/ui/table_view/cells/table_view_multi_detail_text_item.h" // Item for autofill credit card.
diff --git a/ios/chrome/browser/ui/settings/autofill/cells/autofill_profile_item.h b/ios/chrome/browser/ui/settings/autofill/cells/autofill_profile_item.h index dd02fd52..fc7a708e 100644 --- a/ios/chrome/browser/ui/settings/autofill/cells/autofill_profile_item.h +++ b/ios/chrome/browser/ui/settings/autofill/cells/autofill_profile_item.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_CELLS_AUTOFILL_PROFILE_ITEM_H_ #define IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_CELLS_AUTOFILL_PROFILE_ITEM_H_ +#include <string> + #import "ios/chrome/browser/ui/table_view/cells/table_view_multi_detail_text_item.h" // Item for autofill profile (address).
diff --git a/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.h b/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.h index 9525857..d9d7c0f 100644 --- a/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.h +++ b/ios/chrome/browser/ui/settings/language/add_language_table_view_controller.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_UI_SETTINGS_LANGUAGE_ADD_LANGUAGE_TABLE_VIEW_CONTROLLER_H_ #define IOS_CHROME_BROWSER_UI_SETTINGS_LANGUAGE_ADD_LANGUAGE_TABLE_VIEW_CONTROLLER_H_ +#include <string> + #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h" @class AddLanguageTableViewController;
diff --git a/ios/chrome/browser/ui/settings/password/password_exporter.h b/ios/chrome/browser/ui/settings/password/password_exporter.h index 4ad6710..0c41922 100644 --- a/ios/chrome/browser/ui/settings/password/password_exporter.h +++ b/ios/chrome/browser/ui/settings/password/password_exporter.h
@@ -8,6 +8,7 @@ #import <Foundation/Foundation.h> #include <memory> +#include <string> #include <vector> namespace password_manager {
diff --git a/ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.mm b/ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.mm index fb8b7b56..d16adce 100644 --- a/ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.mm +++ b/ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.mm
@@ -54,6 +54,7 @@ void StartSurfaceRecentTabBrowserAgent::BrowserDestroyed(Browser* browser) { browser_->GetWebStateList()->RemoveObserver(this); browser_->RemoveObserver(this); + favicon_driver_observer_.Reset(); } #pragma mark - WebStateListObserver
diff --git a/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.h b/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.h index b8a1654..fb485bba 100644 --- a/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.h +++ b/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_UI_WEBUI_AUTOFILL_AND_PASSWORD_MANAGER_INTERNALS_PASSWORD_MANAGER_INTERNALS_UI_IOS_H_ #define IOS_CHROME_BROWSER_UI_WEBUI_AUTOFILL_AND_PASSWORD_MANAGER_INTERNALS_PASSWORD_MANAGER_INTERNALS_UI_IOS_H_ +#include <string> + #include "base/macros.h" #import "ios/web/public/webui/web_ui_ios_controller.h"
diff --git a/ios/chrome/browser/ui/webui/user_actions_handler.h b/ios/chrome/browser/ui/webui/user_actions_handler.h index 314901d..d0f554d 100644 --- a/ios/chrome/browser/ui/webui/user_actions_handler.h +++ b/ios/chrome/browser/ui/webui/user_actions_handler.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_HANDLER_H_ #define IOS_CHROME_BROWSER_UI_WEBUI_USER_ACTIONS_HANDLER_H_ +#include <string> + #include "base/macros.h" #include "base/metrics/user_metrics.h" #include "ios/web/public/webui/web_ui_ios_message_handler.h"
diff --git a/ios/chrome/browser/web/font_size/font_size_tab_helper.h b/ios/chrome/browser/web/font_size/font_size_tab_helper.h index ff84495..7042fe6 100644 --- a/ios/chrome/browser/web/font_size/font_size_tab_helper.h +++ b/ios/chrome/browser/web/font_size/font_size_tab_helper.h
@@ -5,6 +5,8 @@ #ifndef IOS_CHROME_BROWSER_WEB_FONT_SIZE_FONT_SIZE_TAB_HELPER_H_ #define IOS_CHROME_BROWSER_WEB_FONT_SIZE_FONT_SIZE_TAB_HELPER_H_ +#include <string> + #include "base/macros.h" #include "ios/web/public/web_state_observer.h" #import "ios/web/public/web_state_user_data.h"
diff --git a/ios/chrome/browser/web/image_fetch_tab_helper.h b/ios/chrome/browser/web/image_fetch_tab_helper.h index 0f154feb..b1fed21 100644 --- a/ios/chrome/browser/web/image_fetch_tab_helper.h +++ b/ios/chrome/browser/web/image_fetch_tab_helper.h
@@ -5,6 +5,7 @@ #ifndef IOS_CHROME_BROWSER_WEB_IMAGE_FETCH_TAB_HELPER_H_ #define IOS_CHROME_BROWSER_WEB_IMAGE_FETCH_TAB_HELPER_H_ +#include <string> #include <unordered_map> #include "base/macros.h"
diff --git a/ios/chrome/test/app/histogram_test_util.h b/ios/chrome/test/app/histogram_test_util.h index 6f00337..93317c9 100644 --- a/ios/chrome/test/app/histogram_test_util.h +++ b/ios/chrome/test/app/histogram_test_util.h
@@ -7,6 +7,7 @@ #include <map> #include <memory> +#include <string> #include <vector> #include "base/macros.h"
diff --git a/ios/chrome/test/base/perf_test_ios.h b/ios/chrome/test/base/perf_test_ios.h index df8e959..c100682 100644 --- a/ios/chrome/test/base/perf_test_ios.h +++ b/ios/chrome/test/base/perf_test_ios.h
@@ -7,6 +7,8 @@ #import <Foundation/Foundation.h> +#include <string> + #import "base/ios/block_types.h" #include "base/time/time.h" #import "ios/chrome/test/block_cleanup_test.h"
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc index 95f5d9b..fb31baa9 100644 --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc
@@ -627,11 +627,6 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{ "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT}; -// Prevents using SurfaceLayer for videos. This is meant to be used by embedders -// that cannot support SurfaceLayer at the moment. -const base::Feature kDisableSurfaceLayerForVideo{ - "DisableSurfaceLayerForVideo", base::FEATURE_DISABLED_BY_DEFAULT}; - // Enable picture in picture web api for android. const base::Feature kPictureInPictureAPI{"PictureInPictureAPI", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/media/base/media_switches.h b/media/base/media_switches.h index 3e2e482..1e5c3f89 100644 --- a/media/base/media_switches.h +++ b/media/base/media_switches.h
@@ -206,7 +206,6 @@ MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense; MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioning; MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioningAtStartup; -MEDIA_EXPORT extern const base::Feature kDisableSurfaceLayerForVideo; MEDIA_EXPORT extern const base::Feature kCanPlayHls; MEDIA_EXPORT extern const base::Feature kPictureInPictureAPI; MEDIA_EXPORT extern const base::Feature kHlsPlayer;
diff --git a/media/filters/fuchsia/fuchsia_video_decoder_unittest.cc b/media/filters/fuchsia/fuchsia_video_decoder_unittest.cc index 2b319ea..767b167 100644 --- a/media/filters/fuchsia/fuchsia_video_decoder_unittest.cc +++ b/media/filters/fuchsia/fuchsia_video_decoder_unittest.cc
@@ -115,6 +115,7 @@ gpu::Mailbox CreateSharedImage( gfx::GpuMemoryBuffer* gpu_memory_buffer, gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, + gfx::BufferPlane plane, const gfx::ColorSpace& color_space, GrSurfaceOrigin surface_origin, SkAlphaType alpha_type,
diff --git a/media/fuchsia/common/sysmem_buffer_pool.cc b/media/fuchsia/common/sysmem_buffer_pool.cc index 4c907ebe..de58ebf 100644 --- a/media/fuchsia/common/sysmem_buffer_pool.cc +++ b/media/fuchsia/common/sysmem_buffer_pool.cc
@@ -111,10 +111,11 @@ } if (acquire_buffers_cb_) { + auto buffers = VmoBuffer::CreateBuffersFromSysmemCollection( + &buffer_collection_info, writable_); + std::move(acquire_buffers_cb_) - .Run(VmoBuffer::CreateBuffersFromSysmemCollection( - std::move(buffer_collection_info), writable_), - buffer_collection_info.settings); + .Run(std::move(buffers), buffer_collection_info.settings); } }
diff --git a/media/fuchsia/common/vmo_buffer.cc b/media/fuchsia/common/vmo_buffer.cc index d304f70..693508d 100644 --- a/media/fuchsia/common/vmo_buffer.cc +++ b/media/fuchsia/common/vmo_buffer.cc
@@ -39,15 +39,15 @@ // static std::vector<VmoBuffer> VmoBuffer::CreateBuffersFromSysmemCollection( - fuchsia::sysmem::BufferCollectionInfo_2 info, + fuchsia::sysmem::BufferCollectionInfo_2* info, bool writable) { std::vector<VmoBuffer> buffers; - buffers.resize(info.buffer_count); + buffers.resize(info->buffer_count); fuchsia::sysmem::BufferMemorySettings& settings = - info.settings.buffer_settings; - for (size_t i = 0; i < info.buffer_count; ++i) { - fuchsia::sysmem::VmoBuffer& buffer = info.buffers[i]; + info->settings.buffer_settings; + for (size_t i = 0; i < info->buffer_count; ++i) { + fuchsia::sysmem::VmoBuffer& buffer = info->buffers[i]; if (!buffers[i].Initialize(std::move(buffer.vmo), writable, buffer.vmo_usable_start, settings.size_bytes, settings.coherency_domain)) {
diff --git a/media/fuchsia/common/vmo_buffer.h b/media/fuchsia/common/vmo_buffer.h index 160fe39..67541c0 100644 --- a/media/fuchsia/common/vmo_buffer.h +++ b/media/fuchsia/common/vmo_buffer.h
@@ -29,7 +29,7 @@ // Creates a set of buffers from a sysmem collection. An empty vector is // returned in case of a failure. static std::vector<VmoBuffer> CreateBuffersFromSysmemCollection( - fuchsia::sysmem::BufferCollectionInfo_2 info, + fuchsia::sysmem::BufferCollectionInfo_2* info, bool writable); VmoBuffer();
diff --git a/media/gpu/h265_decoder.cc b/media/gpu/h265_decoder.cc index 64d5106..54715468 100644 --- a/media/gpu/h265_decoder.cc +++ b/media/gpu/h265_decoder.cc
@@ -40,7 +40,7 @@ case HEVCPROFILE_MAIN_STILL_PICTURE: return bit_depth == 8u; default: - NOTREACHED(); + DVLOG(1) << "Invalid profile specified for H265"; return false; } }
diff --git a/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc b/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc index 4dabdb1..e61b7fd 100644 --- a/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc +++ b/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc
@@ -254,6 +254,7 @@ frame_rate_ = kMaxFrameRateNumerator / kMaxFrameRateDenominator; target_bitrate_ = config.initial_bitrate; bitstream_buffer_size_ = config.input_visible_size.GetArea(); + gop_length_ = config.gop_length; if (!SetEncoderModes()) { DLOG(ERROR) << "Failed setting encoder parameters."; @@ -669,6 +670,12 @@ } } + if (gop_length_.has_value()) { + var.ulVal = gop_length_.value(); + hr = codec_api_->SetValue(&CODECAPI_AVEncMPVGOPSize, &var); + RETURN_ON_HR_FAILURE(hr, "Couldn't set low keyframe interval", false); + } + if (!is_async_mft_ || (is_async_mft_ && S_OK == codec_api_->IsModifiable(&CODECAPI_AVLowLatencyMode))) {
diff --git a/media/gpu/windows/media_foundation_video_encode_accelerator_win.h b/media/gpu/windows/media_foundation_video_encode_accelerator_win.h index f2e7df8..3ce96cc 100644 --- a/media/gpu/windows/media_foundation_video_encode_accelerator_win.h +++ b/media/gpu/windows/media_foundation_video_encode_accelerator_win.h
@@ -137,6 +137,10 @@ uint32_t frame_rate_; uint32_t target_bitrate_; + // Group of picture length for encoded output stream, indicates the + // distance between two key frames. + base::Optional<uint32_t> gop_length_; + Microsoft::WRL::ComPtr<IMFActivate> activate_; Microsoft::WRL::ComPtr<IMFTransform> encoder_; Microsoft::WRL::ComPtr<ICodecAPI> codec_api_;
diff --git a/media/video/video_encode_accelerator_adapter.cc b/media/video/video_encode_accelerator_adapter.cc index ba84a36e..ad210ec 100644 --- a/media/video/video_encode_accelerator_adapter.cc +++ b/media/video/video_encode_accelerator_adapter.cc
@@ -44,7 +44,7 @@ format, opts.frame_size, profile, opts.bitrate.value_or(opts.frame_size.width() * opts.frame_size.height() * kVEADefaultBitratePerPixel), - initial_framerate); + initial_framerate, opts.keyframe_interval); if (opts.temporal_layers > 1) { VideoEncodeAccelerator::Config::SpatialLayer layer;
diff --git a/printing/BUILD.gn b/printing/BUILD.gn index e4d5d0fe..5b7ecdf 100644 --- a/printing/BUILD.gn +++ b/printing/BUILD.gn
@@ -32,12 +32,6 @@ use_cups_ipp = use_cups && !(is_linux || is_chromeos_lacros) } -# Several targets want to include this header file. We separate it out -# here so multiple targets can depend on it. -source_set("printing_export") { - sources = [ "printing_export.h" ] -} - if (use_cups_ipp && is_chromeos_ash) { ipp_handler_map_path = "$target_gen_dir/backend/ipp_handler_map.cc" @@ -55,8 +49,7 @@ "sandbox/print_backend_sandbox_hook_linux.h", ] deps = [ - ":printing_export", - "//base:base", + "//base", "//sandbox/linux:sandbox_services", "//sandbox/policy", "//services/network:network_sandbox_hook", @@ -111,11 +104,10 @@ configs += [ "//build/config/compiler:noshadowing" ] cflags = [] - defines = [ "PRINTING_IMPLEMENTATION" ] + defines = [ "IS_PRINTING_IMPL" ] public_deps = [ "//printing/buildflags" ] deps = [ - ":printing_export", "//base", "//base:i18n", "//base/third_party/dynamic_annotations",
diff --git a/printing/backend/cups_connection.h b/printing/backend/cups_connection.h index af02dcd..0f9f7830 100644 --- a/printing/backend/cups_connection.h +++ b/printing/backend/cups_connection.h
@@ -11,18 +11,18 @@ #include <string> #include <vector> +#include "base/component_export.h" #include "base/memory/weak_ptr.h" #include "printing/backend/cups_deleters.h" #include "printing/backend/cups_jobs.h" #include "printing/backend/cups_printer.h" #include "printing/printer_status.h" -#include "printing/printing_export.h" #include "url/gurl.h" namespace printing { // Represents the status of a printer queue. -struct PRINTING_EXPORT QueueStatus { +struct COMPONENT_EXPORT(PRINTING) QueueStatus { QueueStatus(); QueueStatus(const QueueStatus& other); ~QueueStatus(); @@ -32,7 +32,7 @@ }; // Represents a connection to a CUPS server. -class PRINTING_EXPORT CupsConnection { +class COMPONENT_EXPORT(PRINTING) CupsConnection { public: virtual ~CupsConnection() = default;
diff --git a/printing/backend/cups_deleters.h b/printing/backend/cups_deleters.h index 1f71d06..1d455b6d 100644 --- a/printing/backend/cups_deleters.h +++ b/printing/backend/cups_deleters.h
@@ -8,23 +8,23 @@ #include <cups/cups.h> #include <memory> -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { -struct PRINTING_EXPORT HttpDeleter { +struct COMPONENT_EXPORT(PRINTING) HttpDeleter { void operator()(http_t* http) const; }; -struct PRINTING_EXPORT DestinationDeleter { +struct COMPONENT_EXPORT(PRINTING) DestinationDeleter { void operator()(cups_dest_t* dest) const; }; -struct PRINTING_EXPORT DestInfoDeleter { +struct COMPONENT_EXPORT(PRINTING) DestInfoDeleter { void operator()(cups_dinfo_t* info) const; }; -struct PRINTING_EXPORT OptionDeleter { +struct COMPONENT_EXPORT(PRINTING) OptionDeleter { void operator()(cups_option_t* option) const; };
diff --git a/printing/backend/cups_helper.h b/printing/backend/cups_helper.h index 5a1ee119..38f64668 100644 --- a/printing/backend/cups_helper.h +++ b/printing/backend/cups_helper.h
@@ -7,8 +7,8 @@ #include <cups/cups.h> +#include "base/component_export.h" #include "base/strings/string_piece.h" -#include "printing/printing_export.h" class GURL; @@ -19,7 +19,7 @@ // Helper wrapper around http_t structure, with connection and cleanup // functionality. -class PRINTING_EXPORT HttpConnectionCUPS { +class COMPONENT_EXPORT(PRINTING) HttpConnectionCUPS { public: HttpConnectionCUPS(const GURL& print_server_url, http_encryption_t encryption, @@ -34,11 +34,11 @@ // Helper function to parse and convert PPD capabilitites to // semantic options. -PRINTING_EXPORT bool ParsePpdCapabilities( - cups_dest_t* dest, - base::StringPiece locale, - base::StringPiece printer_capabilities, - PrinterSemanticCapsAndDefaults* printer_info); +COMPONENT_EXPORT(PRINTING) +bool ParsePpdCapabilities(cups_dest_t* dest, + base::StringPiece locale, + base::StringPiece printer_capabilities, + PrinterSemanticCapsAndDefaults* printer_info); } // namespace printing
diff --git a/printing/backend/cups_ipp_constants.h b/printing/backend/cups_ipp_constants.h index 38d1c46a..6348f328 100644 --- a/printing/backend/cups_ipp_constants.h +++ b/printing/backend/cups_ipp_constants.h
@@ -5,35 +5,35 @@ #ifndef PRINTING_BACKEND_CUPS_IPP_CONSTANTS_H_ #define PRINTING_BACKEND_CUPS_IPP_CONSTANTS_H_ +#include "base/component_export.h" #include "build/chromeos_buildflags.h" -#include "printing/printing_export.h" namespace printing { // property names -PRINTING_EXPORT extern const char kIppCollate[]; -PRINTING_EXPORT extern const char kIppCopies[]; -PRINTING_EXPORT extern const char kIppColor[]; -PRINTING_EXPORT extern const char kIppMedia[]; -PRINTING_EXPORT extern const char kIppDuplex[]; -PRINTING_EXPORT extern const char kIppRequestingUserName[]; -PRINTING_EXPORT extern const char kIppResolution[]; -PRINTING_EXPORT extern const char kIppPin[]; -PRINTING_EXPORT extern const char kIppPinEncryption[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppCollate[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppCopies[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppColor[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppMedia[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppDuplex[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppRequestingUserName[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppResolution[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppPin[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppPinEncryption[]; // collation values -PRINTING_EXPORT extern const char kCollated[]; -PRINTING_EXPORT extern const char kUncollated[]; +COMPONENT_EXPORT(PRINTING) extern const char kCollated[]; +COMPONENT_EXPORT(PRINTING) extern const char kUncollated[]; #if BUILDFLAG(IS_CHROMEOS_ASH) -PRINTING_EXPORT extern const char kIppDocumentAttributes[]; -PRINTING_EXPORT extern const char kIppJobAttributes[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppDocumentAttributes[]; +COMPONENT_EXPORT(PRINTING) extern const char kIppJobAttributes[]; -PRINTING_EXPORT extern const char kPinEncryptionNone[]; +COMPONENT_EXPORT(PRINTING) extern const char kPinEncryptionNone[]; -PRINTING_EXPORT extern const char kOptionFalse[]; -PRINTING_EXPORT extern const char kOptionTrue[]; +COMPONENT_EXPORT(PRINTING) extern const char kOptionFalse[]; +COMPONENT_EXPORT(PRINTING) extern const char kOptionTrue[]; #endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/printing/backend/cups_ipp_helper.h b/printing/backend/cups_ipp_helper.h index 4ee174cd..b6faae4 100644 --- a/printing/backend/cups_ipp_helper.h +++ b/printing/backend/cups_ipp_helper.h
@@ -9,9 +9,9 @@ #include <memory> +#include "base/component_export.h" #include "printing/backend/cups_printer.h" #include "printing/backend/print_backend.h" -#include "printing/printing_export.h" namespace printing { @@ -24,12 +24,12 @@ // Populates the `printer_info` object with attributes retrieved using IPP from // `printer`. -PRINTING_EXPORT void CapsAndDefaultsFromPrinter( - const CupsOptionProvider& printer, - PrinterSemanticCapsAndDefaults* printer_info); +COMPONENT_EXPORT(PRINTING) +void CapsAndDefaultsFromPrinter(const CupsOptionProvider& printer, + PrinterSemanticCapsAndDefaults* printer_info); // Wraps `ipp` in unique_ptr with appropriate deleter -PRINTING_EXPORT ScopedIppPtr WrapIpp(ipp_t* ipp); +COMPONENT_EXPORT(PRINTING) ScopedIppPtr WrapIpp(ipp_t* ipp); } // namespace printing
diff --git a/printing/backend/cups_jobs.h b/printing/backend/cups_jobs.h index 60b8691..f276740 100644 --- a/printing/backend/cups_jobs.h +++ b/printing/backend/cups_jobs.h
@@ -13,9 +13,9 @@ #include <utility> #include <vector> +#include "base/component_export.h" #include "base/version.h" #include "printing/printer_query_result.h" -#include "printing/printing_export.h" // This file contains a collection of functions used to query IPP printers or // print servers and the related code to parse these responses. All Get* @@ -26,7 +26,7 @@ struct PrinterStatus; // Represents a print job sent to the queue. -struct PRINTING_EXPORT CupsJob { +struct COMPONENT_EXPORT(PRINTING) CupsJob { // Corresponds to job-state from RFC2911. enum JobState { UNKNOWN, @@ -58,8 +58,7 @@ int processing_started = 0; }; - -struct PRINTING_EXPORT PrinterInfo { +struct COMPONENT_EXPORT(PRINTING) PrinterInfo { PrinterInfo(); PrinterInfo(const PrinterInfo& info); @@ -88,7 +87,8 @@ // Returns the uri for printer with `id` as served by CUPS. Assumes that `id` is // a valid CUPS printer name and performs no error checking or escaping. -std::string PRINTING_EXPORT PrinterUriFromName(const std::string& id); +std::string COMPONENT_EXPORT(PRINTING) + PrinterUriFromName(const std::string& id); // Extracts structured job information from the `response` for `printer_id`. // Extracted jobs are added to `jobs`. @@ -102,13 +102,13 @@ // Queries the printer at `address` on `port` with a Get-Printer-Attributes // request to populate `printer_info`. If `encrypted` is true, request is made // using ipps, otherwise, ipp is used. Returns false if the request failed. -PrinterQueryResult PRINTING_EXPORT -GetPrinterInfo(const std::string& address, - int port, - const std::string& resource, - bool encrypted, - PrinterInfo* printer_info, - PrinterStatus* printer_status); +PrinterQueryResult COMPONENT_EXPORT(PRINTING) + GetPrinterInfo(const std::string& address, + int port, + const std::string& resource, + bool encrypted, + PrinterInfo* printer_info, + PrinterStatus* printer_status); // Attempts to retrieve printer status using connection `http` for `printer_id`. // Returns true if succcssful and updates the fields in `printer_status` as
diff --git a/printing/backend/cups_printer.h b/printing/backend/cups_printer.h index 15e6e217..e4dc672 100644 --- a/printing/backend/cups_printer.h +++ b/printing/backend/cups_printer.h
@@ -11,8 +11,8 @@ #include <string> #include <vector> +#include "base/component_export.h" #include "printing/backend/cups_deleters.h" -#include "printing/printing_export.h" #include "url/gurl.h" namespace printing { @@ -20,7 +20,7 @@ struct PrinterBasicInfo; // Provides information regarding cups options. -class PRINTING_EXPORT CupsOptionProvider { +class COMPONENT_EXPORT(PRINTING) CupsOptionProvider { public: virtual ~CupsOptionProvider() = default; @@ -48,7 +48,7 @@ // Retrieves information from CUPS printer objects as requested. This class // is only valid as long as the CupsConnection which created it exists as they // share an http connection which the CupsConnection closes on destruction. -class PRINTING_EXPORT CupsPrinter : public CupsOptionProvider { +class COMPONENT_EXPORT(PRINTING) CupsPrinter : public CupsOptionProvider { public: // Represents the margins that CUPS reports for some given media. // Its members are valued in PWG units (100ths of mm).
diff --git a/printing/backend/print_backend.h b/printing/backend/print_backend.h index 57fae55..092853c 100644 --- a/printing/backend/print_backend.h +++ b/printing/backend/print_backend.h
@@ -11,12 +11,12 @@ #include <string> #include <vector> +#include "base/component_export.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "printing/mojom/print.mojom.h" -#include "printing/printing_export.h" #include "ui/gfx/geometry/size.h" namespace base { @@ -28,7 +28,7 @@ using PrinterBasicInfoOptions = std::map<std::string, std::string>; -struct PRINTING_EXPORT PrinterBasicInfo { +struct COMPONENT_EXPORT(PRINTING) PrinterBasicInfo { PrinterBasicInfo(); PrinterBasicInfo(const std::string& printer_name, const std::string& display_name, @@ -58,7 +58,7 @@ #if defined(OS_CHROMEOS) -struct PRINTING_EXPORT AdvancedCapabilityValue { +struct COMPONENT_EXPORT(PRINTING) AdvancedCapabilityValue { AdvancedCapabilityValue(); AdvancedCapabilityValue(const std::string& name, const std::string& display_name); @@ -74,7 +74,7 @@ std::string display_name; }; -struct PRINTING_EXPORT AdvancedCapability { +struct COMPONENT_EXPORT(PRINTING) AdvancedCapability { enum class Type : uint8_t { kBoolean, kFloat, kInteger, kString }; AdvancedCapability(); @@ -109,7 +109,7 @@ #endif // defined(OS_CHROMEOS) -struct PRINTING_EXPORT PrinterSemanticCapsAndDefaults { +struct COMPONENT_EXPORT(PRINTING) PrinterSemanticCapsAndDefaults { PrinterSemanticCapsAndDefaults(); PrinterSemanticCapsAndDefaults(const PrinterSemanticCapsAndDefaults& other); ~PrinterSemanticCapsAndDefaults(); @@ -130,7 +130,7 @@ mojom::ColorModel color_model = mojom::ColorModel::kUnknownColorModel; mojom::ColorModel bw_model = mojom::ColorModel::kUnknownColorModel; - struct PRINTING_EXPORT Paper { + struct COMPONENT_EXPORT(PRINTING) Paper { std::string display_name; std::string vendor_id; gfx::Size size_um; @@ -151,7 +151,7 @@ #endif // defined(OS_CHROMEOS) }; -struct PRINTING_EXPORT PrinterCapsAndDefaults { +struct COMPONENT_EXPORT(PRINTING) PrinterCapsAndDefaults { PrinterCapsAndDefaults(); PrinterCapsAndDefaults(const PrinterCapsAndDefaults& other); ~PrinterCapsAndDefaults(); @@ -169,7 +169,7 @@ // print system specific. For example, CUPS is available on both Linux and Mac, // but not available on ChromeOS, etc. This design allows us to add more // functionality on some platforms, while reusing core (CUPS) functions. -class PRINTING_EXPORT PrintBackend +class COMPONENT_EXPORT(PRINTING) PrintBackend : public base::RefCountedThreadSafe<PrintBackend> { public: // Enumerates the list of installed local and network printers.
diff --git a/printing/backend/print_backend_consts.h b/printing/backend/print_backend_consts.h index 55232b3..600c7d73 100644 --- a/printing/backend/print_backend_consts.h +++ b/printing/backend/print_backend_consts.h
@@ -5,24 +5,24 @@ #ifndef PRINTING_BACKEND_PRINT_BACKEND_CONSTS_H_ #define PRINTING_BACKEND_PRINT_BACKEND_CONSTS_H_ -#include "printing/printing_export.h" +#include "base/component_export.h" -PRINTING_EXPORT extern const char kCUPSBlocking[]; -PRINTING_EXPORT extern const char kCUPSEncryption[]; -PRINTING_EXPORT extern const char kCUPSEnterprisePrinter[]; -PRINTING_EXPORT extern const char kCUPSPrintServerURL[]; -PRINTING_EXPORT extern const char kDriverInfoTagName[]; -PRINTING_EXPORT extern const char kDriverNameTagName[]; -PRINTING_EXPORT extern const char kLocationTagName[]; -PRINTING_EXPORT extern const char kValueFalse[]; -PRINTING_EXPORT extern const char kValueTrue[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSBlocking[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSEncryption[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSEnterprisePrinter[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSPrintServerURL[]; +COMPONENT_EXPORT(PRINTING) extern const char kDriverInfoTagName[]; +COMPONENT_EXPORT(PRINTING) extern const char kDriverNameTagName[]; +COMPONENT_EXPORT(PRINTING) extern const char kLocationTagName[]; +COMPONENT_EXPORT(PRINTING) extern const char kValueFalse[]; +COMPONENT_EXPORT(PRINTING) extern const char kValueTrue[]; // CUPS destination option names. -PRINTING_EXPORT extern const char kCUPSOptDeviceUri[]; -PRINTING_EXPORT extern const char kCUPSOptPrinterInfo[]; -PRINTING_EXPORT extern const char kCUPSOptPrinterLocation[]; -PRINTING_EXPORT extern const char kCUPSOptPrinterMakeAndModel[]; -PRINTING_EXPORT extern const char kCUPSOptPrinterState[]; -PRINTING_EXPORT extern const char kCUPSOptPrinterType[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSOptDeviceUri[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSOptPrinterInfo[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSOptPrinterLocation[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSOptPrinterMakeAndModel[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSOptPrinterState[]; +COMPONENT_EXPORT(PRINTING) extern const char kCUPSOptPrinterType[]; #endif // PRINTING_BACKEND_PRINT_BACKEND_CONSTS_H_
diff --git a/printing/backend/print_backend_cups.h b/printing/backend/print_backend_cups.h index 2a07f2bd..0623192 100644 --- a/printing/backend/print_backend_cups.h +++ b/printing/backend/print_backend_cups.h
@@ -10,9 +10,9 @@ #include <memory> #include <string> +#include "base/component_export.h" #include "base/files/file_path.h" #include "printing/backend/print_backend.h" -#include "printing/printing_export.h" #include "url/gurl.h" namespace printing { @@ -25,11 +25,11 @@ const std::string& locale); // These static functions are exposed here for use in the tests. - PRINTING_EXPORT static bool PrinterBasicInfoFromCUPS( - const cups_dest_t& printer, - PrinterBasicInfo* printer_info); - PRINTING_EXPORT static std::string PrinterDriverInfoFromCUPS( - const cups_dest_t& printer); + COMPONENT_EXPORT(PRINTING) + static bool PrinterBasicInfoFromCUPS(const cups_dest_t& printer, + PrinterBasicInfo* printer_info); + COMPONENT_EXPORT(PRINTING) + static std::string PrinterDriverInfoFromCUPS(const cups_dest_t& printer); private: struct DestinationDeleter {
diff --git a/printing/backend/print_backend_utils.h b/printing/backend/print_backend_utils.h index 59d0145..d2c661e 100644 --- a/printing/backend/print_backend_utils.h +++ b/printing/backend/print_backend_utils.h
@@ -5,14 +5,14 @@ #ifndef PRINTING_BACKEND_PRINT_BACKEND_UTILS_H_ #define PRINTING_BACKEND_PRINT_BACKEND_UTILS_H_ +#include "base/component_export.h" #include "base/strings/string_piece.h" #include "printing/backend/print_backend.h" -#include "printing/printing_export.h" namespace printing { -PRINTING_EXPORT PrinterSemanticCapsAndDefaults::Paper ParsePaper( - base::StringPiece value); +COMPONENT_EXPORT(PRINTING) +PrinterSemanticCapsAndDefaults::Paper ParsePaper(base::StringPiece value); } // namespace printing
diff --git a/printing/backend/printing_info_win.h b/printing/backend/printing_info_win.h index 0fd1160..2ee907e 100644 --- a/printing/backend/printing_info_win.h +++ b/printing/backend/printing_info_win.h
@@ -11,14 +11,14 @@ #include <memory> -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { namespace internal { -PRINTING_EXPORT uint8_t* GetDriverInfo(HANDLE printer, int level); -PRINTING_EXPORT uint8_t* GetPrinterInfo(HANDLE printer, int level); +COMPONENT_EXPORT(PRINTING) uint8_t* GetDriverInfo(HANDLE printer, int level); +COMPONENT_EXPORT(PRINTING) uint8_t* GetPrinterInfo(HANDLE printer, int level); // This class is designed to work with PRINTER_INFO_X structures // and calls GetPrinter internally with correctly allocated buffer.
diff --git a/printing/backend/printing_restrictions.h b/printing/backend/printing_restrictions.h index b35d647..149ecfb 100644 --- a/printing/backend/printing_restrictions.h +++ b/printing/backend/printing_restrictions.h
@@ -5,8 +5,8 @@ #ifndef PRINTING_BACKEND_PRINTING_RESTRICTIONS_H_ #define PRINTING_BACKEND_PRINTING_RESTRICTIONS_H_ +#include "base/component_export.h" #include "build/chromeos_buildflags.h" -#include "printing/printing_export.h" namespace printing { @@ -40,12 +40,12 @@ // Dictionary key for printing policies. // Must coincide with the name of field in `print_preview.Policies` in // chrome/browser/resources/print_preview/data/destination.js -PRINTING_EXPORT extern const char kAllowedColorModes[]; -PRINTING_EXPORT extern const char kAllowedDuplexModes[]; -PRINTING_EXPORT extern const char kAllowedPinModes[]; -PRINTING_EXPORT extern const char kDefaultColorMode[]; -PRINTING_EXPORT extern const char kDefaultDuplexMode[]; -PRINTING_EXPORT extern const char kDefaultPinMode[]; +COMPONENT_EXPORT(PRINTING) extern const char kAllowedColorModes[]; +COMPONENT_EXPORT(PRINTING) extern const char kAllowedDuplexModes[]; +COMPONENT_EXPORT(PRINTING) extern const char kAllowedPinModes[]; +COMPONENT_EXPORT(PRINTING) extern const char kDefaultColorMode[]; +COMPONENT_EXPORT(PRINTING) extern const char kDefaultDuplexMode[]; +COMPONENT_EXPORT(PRINTING) extern const char kDefaultPinMode[]; #endif // BUILDFLAG(IS_CHROMEOS_ASH) // Allowed background graphics modes. @@ -57,11 +57,11 @@ }; // Dictionary keys to be used with `kPrintingPaperSizeDefault` policy. -PRINTING_EXPORT extern const char kPaperSizeName[]; -PRINTING_EXPORT extern const char kPaperSizeNameCustomOption[]; -PRINTING_EXPORT extern const char kPaperSizeCustomSize[]; -PRINTING_EXPORT extern const char kPaperSizeWidth[]; -PRINTING_EXPORT extern const char kPaperSizeHeight[]; +COMPONENT_EXPORT(PRINTING) extern const char kPaperSizeName[]; +COMPONENT_EXPORT(PRINTING) extern const char kPaperSizeNameCustomOption[]; +COMPONENT_EXPORT(PRINTING) extern const char kPaperSizeCustomSize[]; +COMPONENT_EXPORT(PRINTING) extern const char kPaperSizeWidth[]; +COMPONENT_EXPORT(PRINTING) extern const char kPaperSizeHeight[]; } // namespace printing
diff --git a/printing/backend/win_helper.h b/printing/backend/win_helper.h index 1fe6eaa2..4b38b627 100644 --- a/printing/backend/win_helper.h +++ b/printing/backend/win_helper.h
@@ -19,16 +19,16 @@ #include <memory> #include <string> +#include "base/component_export.h" #include "base/memory/free_deleter.h" #include "base/win/scoped_handle.h" -#include "printing/printing_export.h" // These are helper functions for dealing with Windows Printing. namespace printing { -struct PRINTING_EXPORT PrinterBasicInfo; +struct COMPONENT_EXPORT(PRINTING) PrinterBasicInfo; -class PRINTING_EXPORT PrinterHandleTraits { +class COMPONENT_EXPORT(PRINTING) PrinterHandleTraits { public: PrinterHandleTraits() = delete; PrinterHandleTraits(const PrinterHandleTraits&) = delete; @@ -43,14 +43,14 @@ static HANDLE NullHandle() { return nullptr; } }; -class PRINTING_EXPORT ScopedPrinterHandle +class COMPONENT_EXPORT(PRINTING) ScopedPrinterHandle : public base::win::GenericScopedHandle<PrinterHandleTraits, base::win::DummyVerifierTraits> { public: bool OpenPrinterWithName(const wchar_t* printer); }; -class PRINTING_EXPORT PrinterChangeHandleTraits { +class COMPONENT_EXPORT(PRINTING) PrinterChangeHandleTraits { public: PrinterChangeHandleTraits() = delete; PrinterChangeHandleTraits(const PrinterChangeHandleTraits&) = delete; @@ -75,7 +75,7 @@ // this would mean having to add that to every binary that links with // printing.lib (which is a LOT of binaries). So choosing the GetProcAddress // route instead). -class PRINTING_EXPORT XPSModule { +class COMPONENT_EXPORT(PRINTING) XPSModule { public: // All the other methods can ONLY be called after a successful call to Init. // Init can be called many times and by multiple threads. @@ -115,7 +115,7 @@ }; // See comments in cc file explaining why we need this. -class PRINTING_EXPORT ScopedXPSInitializer { +class COMPONENT_EXPORT(PRINTING) ScopedXPSInitializer { public: ScopedXPSInitializer(); ScopedXPSInitializer(const ScopedXPSInitializer&) = delete; @@ -131,7 +131,7 @@ // Wrapper class to wrap the XPS Print APIs (these are different from the PTxxx // which deal with the XML Print Schema). This is needed because these // APIs are only available on Windows 7 and higher. -class PRINTING_EXPORT XPSPrintModule { +class COMPONENT_EXPORT(PRINTING) XPSPrintModule { public: // All the other methods can ONLY be called after a successful call to Init. // Init can be called many times and by multiple threads. @@ -153,34 +153,38 @@ }; // Sets the function that gets friendly names for network printers. -PRINTING_EXPORT void SetGetDisplayNameFunction( +COMPONENT_EXPORT(PRINTING) +void SetGetDisplayNameFunction( std::string (*get_display_name_func)(const std::string& printer_name)); -PRINTING_EXPORT bool InitBasicPrinterInfo(HANDLE printer, - PrinterBasicInfo* printer_info); +COMPONENT_EXPORT(PRINTING) +bool InitBasicPrinterInfo(HANDLE printer, PrinterBasicInfo* printer_info); -PRINTING_EXPORT std::string GetDriverInfo(HANDLE printer); +COMPONENT_EXPORT(PRINTING) std::string GetDriverInfo(HANDLE printer); -PRINTING_EXPORT std::unique_ptr<DEVMODE, base::FreeDeleter> XpsTicketToDevMode( +COMPONENT_EXPORT(PRINTING) +std::unique_ptr<DEVMODE, base::FreeDeleter> XpsTicketToDevMode( const std::wstring& printer_name, const std::string& print_ticket); -PRINTING_EXPORT bool IsDevModeWithColor(const DEVMODE* devmode); +COMPONENT_EXPORT(PRINTING) bool IsDevModeWithColor(const DEVMODE* devmode); // Creates default DEVMODE and sets color option. Some devices need special // workaround for color. -PRINTING_EXPORT std::unique_ptr<DEVMODE, base::FreeDeleter> -CreateDevModeWithColor(HANDLE printer, - const std::wstring& printer_name, - bool color); +COMPONENT_EXPORT(PRINTING) +std::unique_ptr<DEVMODE, base::FreeDeleter> CreateDevModeWithColor( + HANDLE printer, + const std::wstring& printer_name, + bool color); // Creates new DEVMODE. If `in` is not NULL copy settings from there. -PRINTING_EXPORT std::unique_ptr<DEVMODE, base::FreeDeleter> CreateDevMode( - HANDLE printer, - DEVMODE* in); +COMPONENT_EXPORT(PRINTING) +std::unique_ptr<DEVMODE, base::FreeDeleter> CreateDevMode(HANDLE printer, + DEVMODE* in); // Prompts for new DEVMODE. If `in` is not NULL copy settings from there. -PRINTING_EXPORT std::unique_ptr<DEVMODE, base::FreeDeleter> PromptDevMode( +COMPONENT_EXPORT(PRINTING) +std::unique_ptr<DEVMODE, base::FreeDeleter> PromptDevMode( HANDLE printer, const std::wstring& printer_name, DEVMODE* in,
diff --git a/printing/emf_win.h b/printing/emf_win.h index 7688d6a..b7c77314 100644 --- a/printing/emf_win.h +++ b/printing/emf_win.h
@@ -28,7 +28,7 @@ namespace printing { // Simple wrapper class that manage an EMF data stream and its virtual HDC. -class PRINTING_EXPORT Emf : public Metafile { +class COMPONENT_EXPORT(PRINTING) Emf : public Metafile { public: class Record; class Enumerator; @@ -110,7 +110,7 @@ // One EMF record. It keeps pointers to the EMF buffer held by Emf::emf_. // The entries become invalid once Emf::CloseEmf() is called. -class PRINTING_EXPORT Emf::Record { +class COMPONENT_EXPORT(PRINTING) Emf::Record { public: // Plays the record. bool Play(EnumerationContext* context) const; @@ -134,7 +134,7 @@ // Retrieves individual records out of a Emf buffer. The main use is to skip // over records that are unsupported on a specific printer or to play back // only a part of an EMF buffer. -class PRINTING_EXPORT Emf::Enumerator { +class COMPONENT_EXPORT(PRINTING) Emf::Enumerator { public: // Iterator type used for iterating the records. typedef std::vector<Record>::const_iterator const_iterator; @@ -169,7 +169,6 @@ std::vector<Record> items_; EnumerationContext context_; - }; } // namespace printing
diff --git a/printing/metafile.h b/printing/metafile.h index 58f74bb..ba38232c 100644 --- a/printing/metafile.h +++ b/printing/metafile.h
@@ -9,11 +9,11 @@ #include <vector> +#include "base/component_export.h" #include "base/containers/span.h" #include "build/build_config.h" #include "printing/mojom/print.mojom-forward.h" #include "printing/native_drawing_context.h" -#include "printing/printing_export.h" #if defined(OS_WIN) #include <windows.h> @@ -35,7 +35,7 @@ namespace printing { // This class plays metafiles from data stream (usually PDF or EMF). -class PRINTING_EXPORT MetafilePlayer { +class COMPONENT_EXPORT(PRINTING) MetafilePlayer { public: MetafilePlayer(); MetafilePlayer(const MetafilePlayer&) = delete; @@ -81,7 +81,7 @@ // This class creates a graphics context that renders into a data stream // (usually PDF or EMF). -class PRINTING_EXPORT Metafile : public MetafilePlayer { +class COMPONENT_EXPORT(PRINTING) Metafile : public MetafilePlayer { public: Metafile(); Metafile(const Metafile&) = delete;
diff --git a/printing/metafile_skia.h b/printing/metafile_skia.h index 945a8b7..157dade9 100644 --- a/printing/metafile_skia.h +++ b/printing/metafile_skia.h
@@ -31,7 +31,7 @@ struct MetafileSkiaData; // This class uses Skia graphics library to generate a PDF or MSKP document. -class PRINTING_EXPORT MetafileSkia : public Metafile { +class COMPONENT_EXPORT(PRINTING) MetafileSkia : public Metafile { public: // Default constructor, for mojom::SkiaDocumentType::kPDF type only. // TODO(weili): we should split up this use case into a different class, see
diff --git a/printing/nup_parameters.h b/printing/nup_parameters.h index 00df338..bbc6444 100644 --- a/printing/nup_parameters.h +++ b/printing/nup_parameters.h
@@ -5,11 +5,11 @@ #ifndef PRINTING_NUP_PARAMETERS_H_ #define PRINTING_NUP_PARAMETERS_H_ -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { -class PRINTING_EXPORT NupParameters { +class COMPONENT_EXPORT(PRINTING) NupParameters { public: NupParameters();
diff --git a/printing/page_number.h b/printing/page_number.h index 4f363a2..48372a1 100644 --- a/printing/page_number.h +++ b/printing/page_number.h
@@ -15,7 +15,7 @@ // Represents a page series following the array of page ranges defined in a // PrintSettings. -class PRINTING_EXPORT PageNumber { +class COMPONENT_EXPORT(PRINTING) PageNumber { public: // Initializes the page to the first page in the settings's range or 0. PageNumber(const PrintSettings& settings, uint32_t document_page_count);
diff --git a/printing/page_range.h b/printing/page_range.h index 20e84fa..5cdb31a 100644 --- a/printing/page_range.h +++ b/printing/page_range.h
@@ -9,7 +9,7 @@ #include <vector> -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { @@ -18,7 +18,7 @@ using PageRanges = std::vector<PageRange>; // Print range is inclusive. To select one page, set from == to. -struct PRINTING_EXPORT PageRange { +struct COMPONENT_EXPORT(PRINTING) PageRange { uint32_t from; uint32_t to;
diff --git a/printing/page_setup.h b/printing/page_setup.h index b9d02ca..76bcb4dd 100644 --- a/printing/page_setup.h +++ b/printing/page_setup.h
@@ -5,13 +5,13 @@ #ifndef PRINTING_PAGE_SETUP_H_ #define PRINTING_PAGE_SETUP_H_ -#include "printing/printing_export.h" +#include "base/component_export.h" #include "ui/gfx/geometry/rect.h" namespace printing { // Margins for a page setup. -class PRINTING_EXPORT PageMargins { +class COMPONENT_EXPORT(PRINTING) PageMargins { public: PageMargins(); @@ -33,7 +33,7 @@ // Settings that define the size and printable areas of a page. Unit is // unspecified. -class PRINTING_EXPORT PageSetup { +class COMPONENT_EXPORT(PRINTING) PageSetup { public: PageSetup(); PageSetup(const PageSetup& other);
diff --git a/printing/pdf_metafile_cg_mac.h b/printing/pdf_metafile_cg_mac.h index cfe26e3..8b5c2d8 100644 --- a/printing/pdf_metafile_cg_mac.h +++ b/printing/pdf_metafile_cg_mac.h
@@ -15,7 +15,7 @@ namespace printing { // This class creates a graphics context that renders into a PDF data stream. -class PRINTING_EXPORT PdfMetafileCg : public Metafile { +class COMPONENT_EXPORT(PRINTING) PdfMetafileCg : public Metafile { public: PdfMetafileCg(); PdfMetafileCg(const PdfMetafileCg&) = delete;
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h index 03d7f70..5950ba0 100644 --- a/printing/print_job_constants.h +++ b/printing/print_job_constants.h
@@ -7,109 +7,109 @@ #include <stdint.h> -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { -PRINTING_EXPORT extern const char kIsFirstRequest[]; -PRINTING_EXPORT extern const char kPreviewRequestID[]; -PRINTING_EXPORT extern const char kPreviewUIID[]; -PRINTING_EXPORT extern const char kSettingCapabilities[]; -PRINTING_EXPORT extern const char kSettingCloudPrintId[]; -PRINTING_EXPORT extern const char kSettingCollate[]; -PRINTING_EXPORT extern const char kSettingColor[]; -PRINTING_EXPORT extern const char kSettingSetColorAsDefault[]; -PRINTING_EXPORT extern const char kSettingContentHeight[]; -PRINTING_EXPORT extern const char kSettingContentWidth[]; -PRINTING_EXPORT extern const char kSettingCopies[]; -PRINTING_EXPORT extern const char kSettingDeviceName[]; -PRINTING_EXPORT extern const char kSettingDisableScaling[]; -PRINTING_EXPORT extern const char kSettingDpiDefault[]; -PRINTING_EXPORT extern const char kSettingDpiHorizontal[]; -PRINTING_EXPORT extern const char kSettingDpiVertical[]; -PRINTING_EXPORT extern const char kSettingDuplexMode[]; -PRINTING_EXPORT extern const char kSettingFitToPageScaling[]; -PRINTING_EXPORT extern const char kSettingHeaderFooterEnabled[]; -PRINTING_EXPORT extern const float kSettingHeaderFooterInterstice; -PRINTING_EXPORT extern const char kSettingHeaderFooterDate[]; -PRINTING_EXPORT extern const char kSettingHeaderFooterTitle[]; -PRINTING_EXPORT extern const char kSettingHeaderFooterURL[]; -PRINTING_EXPORT extern const char kSettingLandscape[]; -PRINTING_EXPORT extern const char kSettingMediaSize[]; -PRINTING_EXPORT extern const char kSettingMediaSizeHeightMicrons[]; -PRINTING_EXPORT extern const char kSettingMediaSizeWidthMicrons[]; -PRINTING_EXPORT extern const char kSettingMediaSizeVendorId[]; -PRINTING_EXPORT extern const char kSettingMediaSizeIsDefault[]; -PRINTING_EXPORT extern const char kSettingMarginBottom[]; -PRINTING_EXPORT extern const char kSettingMarginLeft[]; -PRINTING_EXPORT extern const char kSettingMarginRight[]; -PRINTING_EXPORT extern const char kSettingMarginTop[]; -PRINTING_EXPORT extern const char kSettingMarginsCustom[]; -PRINTING_EXPORT extern const char kSettingMarginsType[]; -PRINTING_EXPORT extern const char kSettingPreviewPageCount[]; -PRINTING_EXPORT extern const char kSettingPageRange[]; -PRINTING_EXPORT extern const char kSettingPageRangeFrom[]; -PRINTING_EXPORT extern const char kSettingPageRangeTo[]; -PRINTING_EXPORT extern const char kSettingPageWidth[]; -PRINTING_EXPORT extern const char kSettingPageHeight[]; -PRINTING_EXPORT extern const char kSettingPagesPerSheet[]; -PRINTING_EXPORT extern const char kSettingPinValue[]; -PRINTING_EXPORT extern const char kSettingPolicies[]; -PRINTING_EXPORT extern const char kSettingPreviewIsFromArc[]; -PRINTING_EXPORT extern const char kSettingPreviewIsPdf[]; -PRINTING_EXPORT extern const char kSettingPreviewModifiable[]; -PRINTING_EXPORT extern const char kSettingPrintToGoogleDrive[]; -PRINTING_EXPORT extern const char kSettingPrintableAreaHeight[]; -PRINTING_EXPORT extern const char kSettingPrintableAreaWidth[]; -PRINTING_EXPORT extern const char kSettingPrintableAreaX[]; -PRINTING_EXPORT extern const char kSettingPrintableAreaY[]; -PRINTING_EXPORT extern const char kSettingPrinterDescription[]; -PRINTING_EXPORT extern const char kSettingPrinterName[]; -PRINTING_EXPORT extern const char kSettingPrinterOptions[]; -PRINTING_EXPORT extern const char kSettingPrinterType[]; -PRINTING_EXPORT extern const char kSettingRasterizePdf[]; -PRINTING_EXPORT extern const char kSettingScaleFactor[]; -PRINTING_EXPORT extern const char kSettingScalingType[]; -PRINTING_EXPORT extern const char kSettingTicket[]; -PRINTING_EXPORT extern const char kSettingSendUserInfo[]; -PRINTING_EXPORT extern const char kSettingShouldPrintBackgrounds[]; -PRINTING_EXPORT extern const char kSettingShouldPrintSelectionOnly[]; -PRINTING_EXPORT extern const char kSettingShowSystemDialog[]; -PRINTING_EXPORT extern const char kSettingUsername[]; -PRINTING_EXPORT extern const char kSettingAdvancedSettings[]; +COMPONENT_EXPORT(PRINTING) extern const char kIsFirstRequest[]; +COMPONENT_EXPORT(PRINTING) extern const char kPreviewRequestID[]; +COMPONENT_EXPORT(PRINTING) extern const char kPreviewUIID[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingCapabilities[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingCloudPrintId[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingCollate[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingColor[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingSetColorAsDefault[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingContentHeight[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingContentWidth[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingCopies[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingDeviceName[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingDisableScaling[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingDpiDefault[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingDpiHorizontal[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingDpiVertical[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingDuplexMode[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingFitToPageScaling[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingHeaderFooterEnabled[]; +COMPONENT_EXPORT(PRINTING) extern const float kSettingHeaderFooterInterstice; +COMPONENT_EXPORT(PRINTING) extern const char kSettingHeaderFooterDate[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingHeaderFooterTitle[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingHeaderFooterURL[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingLandscape[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMediaSize[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMediaSizeHeightMicrons[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMediaSizeWidthMicrons[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMediaSizeVendorId[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMediaSizeIsDefault[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMarginBottom[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMarginLeft[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMarginRight[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMarginTop[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMarginsCustom[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingMarginsType[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPreviewPageCount[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPageRange[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPageRangeFrom[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPageRangeTo[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPageWidth[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPageHeight[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPagesPerSheet[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPinValue[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPolicies[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPreviewIsFromArc[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPreviewIsPdf[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPreviewModifiable[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrintToGoogleDrive[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrintableAreaHeight[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrintableAreaWidth[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrintableAreaX[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrintableAreaY[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrinterDescription[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrinterName[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrinterOptions[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingPrinterType[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingRasterizePdf[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingScaleFactor[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingScalingType[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingTicket[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingSendUserInfo[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingShouldPrintBackgrounds[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingShouldPrintSelectionOnly[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingShowSystemDialog[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingUsername[]; +COMPONENT_EXPORT(PRINTING) extern const char kSettingAdvancedSettings[]; -PRINTING_EXPORT extern const int FIRST_PAGE_INDEX; -PRINTING_EXPORT extern const int COMPLETE_PREVIEW_DOCUMENT_INDEX; -PRINTING_EXPORT extern const char kSettingOpenPDFInPreview[]; +COMPONENT_EXPORT(PRINTING) extern const int FIRST_PAGE_INDEX; +COMPONENT_EXPORT(PRINTING) extern const int COMPLETE_PREVIEW_DOCUMENT_INDEX; +COMPONENT_EXPORT(PRINTING) extern const char kSettingOpenPDFInPreview[]; -PRINTING_EXPORT extern const uint32_t kInvalidPageIndex; -PRINTING_EXPORT extern const uint32_t kMaxPageCount; +COMPONENT_EXPORT(PRINTING) extern const uint32_t kInvalidPageIndex; +COMPONENT_EXPORT(PRINTING) extern const uint32_t kMaxPageCount; #if defined(USE_CUPS) // Printer color models -PRINTING_EXPORT extern const char kBlack[]; -PRINTING_EXPORT extern const char kCMYK[]; -PRINTING_EXPORT extern const char kKCMY[]; -PRINTING_EXPORT extern const char kCMY_K[]; -PRINTING_EXPORT extern const char kCMY[]; -PRINTING_EXPORT extern const char kColor[]; -PRINTING_EXPORT extern const char kEpsonColor[]; -PRINTING_EXPORT extern const char kEpsonMono[]; -PRINTING_EXPORT extern const char kFullColor[]; -PRINTING_EXPORT extern const char kGray[]; -PRINTING_EXPORT extern const char kGrayscale[]; -PRINTING_EXPORT extern const char kGreyscale[]; -PRINTING_EXPORT extern const char kMono[]; -PRINTING_EXPORT extern const char kMonochrome[]; -PRINTING_EXPORT extern const char kNormal[]; -PRINTING_EXPORT extern const char kNormalGray[]; -PRINTING_EXPORT extern const char kRGB[]; -PRINTING_EXPORT extern const char kRGBA[]; -PRINTING_EXPORT extern const char kRGB16[]; -PRINTING_EXPORT extern const char kSharpCMColor[]; -PRINTING_EXPORT extern const char kSharpCMBW[]; -PRINTING_EXPORT extern const char kXeroxAutomatic[]; -PRINTING_EXPORT extern const char kXeroxBW[]; +COMPONENT_EXPORT(PRINTING) extern const char kBlack[]; +COMPONENT_EXPORT(PRINTING) extern const char kCMYK[]; +COMPONENT_EXPORT(PRINTING) extern const char kKCMY[]; +COMPONENT_EXPORT(PRINTING) extern const char kCMY_K[]; +COMPONENT_EXPORT(PRINTING) extern const char kCMY[]; +COMPONENT_EXPORT(PRINTING) extern const char kColor[]; +COMPONENT_EXPORT(PRINTING) extern const char kEpsonColor[]; +COMPONENT_EXPORT(PRINTING) extern const char kEpsonMono[]; +COMPONENT_EXPORT(PRINTING) extern const char kFullColor[]; +COMPONENT_EXPORT(PRINTING) extern const char kGray[]; +COMPONENT_EXPORT(PRINTING) extern const char kGrayscale[]; +COMPONENT_EXPORT(PRINTING) extern const char kGreyscale[]; +COMPONENT_EXPORT(PRINTING) extern const char kMono[]; +COMPONENT_EXPORT(PRINTING) extern const char kMonochrome[]; +COMPONENT_EXPORT(PRINTING) extern const char kNormal[]; +COMPONENT_EXPORT(PRINTING) extern const char kNormalGray[]; +COMPONENT_EXPORT(PRINTING) extern const char kRGB[]; +COMPONENT_EXPORT(PRINTING) extern const char kRGBA[]; +COMPONENT_EXPORT(PRINTING) extern const char kRGB16[]; +COMPONENT_EXPORT(PRINTING) extern const char kSharpCMColor[]; +COMPONENT_EXPORT(PRINTING) extern const char kSharpCMBW[]; +COMPONENT_EXPORT(PRINTING) extern const char kXeroxAutomatic[]; +COMPONENT_EXPORT(PRINTING) extern const char kXeroxBW[]; #endif // Specifies the horizontal alignment of the headers and footers.
diff --git a/printing/print_settings.h b/printing/print_settings.h index 773c14c7..703a720 100644 --- a/printing/print_settings.h +++ b/printing/print_settings.h
@@ -8,6 +8,7 @@ #include <algorithm> #include <string> +#include "base/component_export.h" #include "base/optional.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -15,7 +16,6 @@ #include "printing/page_range.h" #include "printing/page_setup.h" #include "printing/print_job_constants.h" -#include "printing/printing_export.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" @@ -29,33 +29,35 @@ // Convert from `color_mode` into a `color_model`. An invalid `color_mode` // will give a result of `mojom::ColorModel::kUnknownColorModel`. -PRINTING_EXPORT mojom::ColorModel ColorModeToColorModel(int color_mode); +COMPONENT_EXPORT(PRINTING) +mojom::ColorModel ColorModeToColorModel(int color_mode); // Returns true if `color_model` is color and false if it is B&W. Callers // are not supposed to pass in `mojom::ColorModel::kUnknownColorModel`, but // if they do then the result will be base::nullopt. -PRINTING_EXPORT base::Optional<bool> IsColorModelSelected( - mojom::ColorModel color_model); +COMPONENT_EXPORT(PRINTING) +base::Optional<bool> IsColorModelSelected(mojom::ColorModel color_model); #if defined(USE_CUPS) // Get the color model setting name and value for the `color_model`. -PRINTING_EXPORT void GetColorModelForModel(mojom::ColorModel color_model, - std::string* color_setting_name, - std::string* color_value); +COMPONENT_EXPORT(PRINTING) +void GetColorModelForModel(mojom::ColorModel color_model, + std::string* color_setting_name, + std::string* color_value); #if defined(OS_MAC) || BUILDFLAG(IS_CHROMEOS_ASH) // Convert from `color_model` to a print-color-mode value from PWG 5100.13. -PRINTING_EXPORT std::string GetIppColorModelForModel( - mojom::ColorModel color_model); +COMPONENT_EXPORT(PRINTING) +std::string GetIppColorModelForModel(mojom::ColorModel color_model); #endif #endif // defined(USE_CUPS) // Inform the printing system that it may embed this user-agent string // in its output's metadata. -PRINTING_EXPORT void SetAgent(const std::string& user_agent); -PRINTING_EXPORT const std::string& GetAgent(); +COMPONENT_EXPORT(PRINTING) void SetAgent(const std::string& user_agent); +COMPONENT_EXPORT(PRINTING) const std::string& GetAgent(); -class PRINTING_EXPORT PrintSettings { +class COMPONENT_EXPORT(PRINTING) PrintSettings { public: #if defined(OS_WIN) enum PrinterType {
diff --git a/printing/print_settings_conversion.h b/printing/print_settings_conversion.h index 2a4fe23..4541f03 100644 --- a/printing/print_settings_conversion.h +++ b/printing/print_settings_conversion.h
@@ -7,8 +7,8 @@ #include <memory> +#include "base/component_export.h" #include "printing/page_range.h" -#include "printing/printing_export.h" namespace base { class DictionaryValue; @@ -19,11 +19,12 @@ class PrintSettings; -PRINTING_EXPORT PageRanges -GetPageRangesFromJobSettings(const base::Value& job_settings); +COMPONENT_EXPORT(PRINTING) +PageRanges GetPageRangesFromJobSettings(const base::Value& job_settings); // Returns nullptr on failure. -PRINTING_EXPORT std::unique_ptr<PrintSettings> PrintSettingsFromJobSettings( +COMPONENT_EXPORT(PRINTING) +std::unique_ptr<PrintSettings> PrintSettingsFromJobSettings( const base::Value& job_settings); // Use for debug only, because output is not completely consistent with format
diff --git a/printing/print_settings_initializer_mac.h b/printing/print_settings_initializer_mac.h index 9e73867..f7b33bff 100644 --- a/printing/print_settings_initializer_mac.h +++ b/printing/print_settings_initializer_mac.h
@@ -14,7 +14,7 @@ class PrintSettings; // Initializes a PrintSettings object from the provided device context. -class PRINTING_EXPORT PrintSettingsInitializerMac { +class COMPONENT_EXPORT(PRINTING) PrintSettingsInitializerMac { public: PrintSettingsInitializerMac() = delete; PrintSettingsInitializerMac(const PrintSettingsInitializerMac&) = delete;
diff --git a/printing/print_settings_initializer_win.h b/printing/print_settings_initializer_win.h index b92f3d33..de76e992 100644 --- a/printing/print_settings_initializer_win.h +++ b/printing/print_settings_initializer_win.h
@@ -17,7 +17,7 @@ class PrintSettings; // Initializes a PrintSettings object from the provided device context. -class PRINTING_EXPORT PrintSettingsInitializerWin { +class COMPONENT_EXPORT(PRINTING) PrintSettingsInitializerWin { public: PrintSettingsInitializerWin() = delete; PrintSettingsInitializerWin(const PrintSettingsInitializerWin&) = delete;
diff --git a/printing/printed_document.h b/printing/printed_document.h index ec217ed4..d48702c 100644 --- a/printing/printed_document.h +++ b/printing/printed_document.h
@@ -32,7 +32,7 @@ // will have write access. Sensible functions are protected by a lock. // Warning: Once a page is loaded, it cannot be replaced. Pages may be discarded // under low memory conditions. -class PRINTING_EXPORT PrintedDocument +class COMPONENT_EXPORT(PRINTING) PrintedDocument : public base::RefCountedThreadSafe<PrintedDocument> { public: // The cookie shall be unique and has a specific relationship with its
diff --git a/printing/printed_page_win.h b/printing/printed_page_win.h index 37d1dd75..3f701f1 100644 --- a/printing/printed_page_win.h +++ b/printing/printed_page_win.h
@@ -20,7 +20,7 @@ // Note: May be accessed from many threads at the same time. This is an non // issue since this object is immutable. The reason is that a page may be // printed and be displayed at the same time. -class PRINTING_EXPORT PrintedPage +class COMPONENT_EXPORT(PRINTING) PrintedPage : public base::RefCountedThreadSafe<PrintedPage> { public: PrintedPage(uint32_t page_number,
diff --git a/printing/printer_query_result.h b/printing/printer_query_result.h index 0913090..a5fe727 100644 --- a/printing/printer_query_result.h +++ b/printing/printer_query_result.h
@@ -5,7 +5,7 @@ #ifndef PRINTING_PRINTER_QUERY_RESULT_H_ #define PRINTING_PRINTER_QUERY_RESULT_H_ -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { @@ -13,7 +13,7 @@ // This enum is used to record UMA histogram values and should not be // reordered. Please keep in sync with PrinterStatusQueryResult in // src/tools/metrics/histograms/enums.xml. -enum class PRINTING_EXPORT PrinterQueryResult { +enum class COMPONENT_EXPORT(PRINTING) PrinterQueryResult { kUnknownFailure = 0, // catchall error kSuccess = 1, // successful kUnreachable = 2, // failed to reach the host
diff --git a/printing/printer_status.h b/printing/printer_status.h index c8765871..5269655 100644 --- a/printing/printer_status.h +++ b/printing/printer_status.h
@@ -10,13 +10,13 @@ #include <string> #include <vector> -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { // Represents the status of a printer containing the properties printer-state, // printer-state-reasons, and printer-state-message. -struct PRINTING_EXPORT PrinterStatus { +struct COMPONENT_EXPORT(PRINTING) PrinterStatus { struct PrinterReason { // This enum is used to record UMA histogram values and should not be // reordered. Please keep in sync with PrinterStatusReasons in
diff --git a/printing/printing_context.h b/printing/printing_context.h index c8d087c..a45e0a76 100644 --- a/printing/printing_context.h +++ b/printing/printing_context.h
@@ -23,7 +23,7 @@ // user selected printing context. This includes the OS-dependent UI to ask the // user about the print settings. Concrete implementations directly talk to the // printer and manage the document and page breaks. -class PRINTING_EXPORT PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContext { public: // Printing context delegate. class Delegate {
diff --git a/printing/printing_context_android.h b/printing/printing_context_android.h index a07377a..9fbeed6 100644 --- a/printing/printing_context_android.h +++ b/printing/printing_context_android.h
@@ -21,7 +21,8 @@ // Android subclass of PrintingContext. This class communicates with the // Java side through JNI. -class PRINTING_EXPORT PrintingContextAndroid : public PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContextAndroid + : public PrintingContext { public: explicit PrintingContextAndroid(Delegate* delegate); PrintingContextAndroid(const PrintingContextAndroid&) = delete;
diff --git a/printing/printing_context_chromeos.h b/printing/printing_context_chromeos.h index 04b9dd3..e0ccfdc5 100644 --- a/printing/printing_context_chromeos.h +++ b/printing/printing_context_chromeos.h
@@ -17,7 +17,8 @@ namespace printing { -class PRINTING_EXPORT PrintingContextChromeos : public PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContextChromeos + : public PrintingContext { public: static std::unique_ptr<PrintingContextChromeos> CreateForTesting( Delegate* delegate, @@ -65,7 +66,8 @@ // This has the side effect of recording UMA for advanced attributes usage, // so only call once per job. -PRINTING_EXPORT std::vector<ScopedCupsOption> SettingsToCupsOptions( +COMPONENT_EXPORT(PRINTING) +std::vector<ScopedCupsOption> SettingsToCupsOptions( const PrintSettings& settings); } // namespace printing
diff --git a/printing/printing_context_linux.h b/printing/printing_context_linux.h index bc96bed1..88c8c54 100644 --- a/printing/printing_context_linux.h +++ b/printing/printing_context_linux.h
@@ -16,7 +16,7 @@ class PrintDialogGtkInterface; // PrintingContext with optional native UI for print dialog and pdf_paper_size. -class PRINTING_EXPORT PrintingContextLinux : public PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContextLinux : public PrintingContext { public: explicit PrintingContextLinux(Delegate* delegate); PrintingContextLinux(const PrintingContextLinux&) = delete;
diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h index 6249cfe..07fcfad 100644 --- a/printing/printing_context_mac.h +++ b/printing/printing_context_mac.h
@@ -17,7 +17,7 @@ namespace printing { -class PRINTING_EXPORT PrintingContextMac : public PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContextMac : public PrintingContext { public: explicit PrintingContextMac(Delegate* delegate); PrintingContextMac(const PrintingContextMac&) = delete;
diff --git a/printing/printing_context_no_system_dialog.h b/printing/printing_context_no_system_dialog.h index 6c61339..d68a4969 100644 --- a/printing/printing_context_no_system_dialog.h +++ b/printing/printing_context_no_system_dialog.h
@@ -7,11 +7,13 @@ #include <string> +#include "base/component_export.h" #include "printing/printing_context.h" namespace printing { -class PRINTING_EXPORT PrintingContextNoSystemDialog : public PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContextNoSystemDialog + : public PrintingContext { public: explicit PrintingContextNoSystemDialog(Delegate* delegate); PrintingContextNoSystemDialog(const PrintingContextNoSystemDialog&) = delete;
diff --git a/printing/printing_context_system_dialog_win.h b/printing/printing_context_system_dialog_win.h index f905e6d..73397eb2 100644 --- a/printing/printing_context_system_dialog_win.h +++ b/printing/printing_context_system_dialog_win.h
@@ -16,7 +16,7 @@ namespace printing { -class PRINTING_EXPORT PrintingContextSystemDialogWin +class COMPONENT_EXPORT(PRINTING) PrintingContextSystemDialogWin : public PrintingContextWin { public: explicit PrintingContextSystemDialogWin(Delegate* delegate);
diff --git a/printing/printing_context_win.h b/printing/printing_context_win.h index f76c051..cc28fb3 100644 --- a/printing/printing_context_win.h +++ b/printing/printing_context_win.h
@@ -16,7 +16,7 @@ class MetafileSkia; class PrintSettings; -class PRINTING_EXPORT PrintingContextWin : public PrintingContext { +class COMPONENT_EXPORT(PRINTING) PrintingContextWin : public PrintingContext { public: explicit PrintingContextWin(Delegate* delegate); PrintingContextWin(const PrintingContextWin&) = delete;
diff --git a/printing/printing_export.h b/printing/printing_export.h deleted file mode 100644 index a8371910..0000000 --- a/printing/printing_export.h +++ /dev/null
@@ -1,29 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PRINTING_PRINTING_EXPORT_H_ -#define PRINTING_PRINTING_EXPORT_H_ - -#if defined(COMPONENT_BUILD) -#if defined(WIN32) - -#if defined(PRINTING_IMPLEMENTATION) -#define PRINTING_EXPORT __declspec(dllexport) -#else -#define PRINTING_EXPORT __declspec(dllimport) -#endif // defined(PRINTING_IMPLEMENTATION) - -#else // defined(WIN32) -#if defined(PRINTING_IMPLEMENTATION) -#define PRINTING_EXPORT __attribute__((visibility("default"))) -#else -#define PRINTING_EXPORT -#endif -#endif - -#else // defined(COMPONENT_BUILD) -#define PRINTING_EXPORT -#endif - -#endif // PRINTING_PRINTING_EXPORT_H_
diff --git a/printing/printing_features.h b/printing/printing_features.h index 72b155a..9dc84aa 100644 --- a/printing/printing_features.h +++ b/printing/printing_features.h
@@ -5,10 +5,10 @@ #ifndef PRINTING_PRINTING_FEATURES_H_ #define PRINTING_PRINTING_FEATURES_H_ +#include "base/component_export.h" #include "base/feature_list.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" -#include "printing/printing_export.h" namespace printing { namespace features { @@ -17,26 +17,27 @@ // documented with descriptions of their behaviors in the .cc file. #if defined(OS_MAC) -PRINTING_EXPORT extern const base::Feature kCupsIppPrintingBackend; +COMPONENT_EXPORT(PRINTING) extern const base::Feature kCupsIppPrintingBackend; #endif // defined(OS_MAC) #if defined(OS_WIN) -PRINTING_EXPORT extern const base::Feature kPrintWithReducedRasterization; -PRINTING_EXPORT extern const base::Feature kUseXpsForPrinting; -PRINTING_EXPORT extern const base::Feature kUseXpsForPrintingFromPdf; +COMPONENT_EXPORT(PRINTING) +extern const base::Feature kPrintWithReducedRasterization; +COMPONENT_EXPORT(PRINTING) extern const base::Feature kUseXpsForPrinting; +COMPONENT_EXPORT(PRINTING) extern const base::Feature kUseXpsForPrintingFromPdf; // Helper function to determine if there is any print path which could require // the use of XPS print capabilities. -PRINTING_EXPORT bool IsXpsPrintCapabilityRequired(); +COMPONENT_EXPORT(PRINTING) bool IsXpsPrintCapabilityRequired(); // Helper function to determine if printing of a document from a particular // source should be done using XPS printing API instead of with GDI. -PRINTING_EXPORT bool ShouldPrintUsingXps(bool source_is_pdf); +COMPONENT_EXPORT(PRINTING) bool ShouldPrintUsingXps(bool source_is_pdf); #endif // defined(OS_WIN) #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \ defined(OS_CHROMEOS) -PRINTING_EXPORT extern const base::Feature kEnableOopPrintDrivers; +COMPONENT_EXPORT(PRINTING) extern const base::Feature kEnableOopPrintDrivers; #endif // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || // defined(OS_CHROMEOS)
diff --git a/printing/printing_utils.h b/printing/printing_utils.h index 5b623a1c..9000dde 100644 --- a/printing/printing_utils.h +++ b/printing/printing_utils.h
@@ -9,8 +9,8 @@ #include <string> +#include "base/component_export.h" #include "base/strings/string_piece.h" -#include "printing/printing_export.h" namespace gfx { class Size; @@ -19,32 +19,34 @@ namespace printing { // Simplify title to resolve issue with some drivers. -PRINTING_EXPORT std::u16string SimplifyDocumentTitle( - const std::u16string& title); +COMPONENT_EXPORT(PRINTING) +std::u16string SimplifyDocumentTitle(const std::u16string& title); -PRINTING_EXPORT std::u16string SimplifyDocumentTitleWithLength( - const std::u16string& title, - size_t length); +COMPONENT_EXPORT(PRINTING) +std::u16string SimplifyDocumentTitleWithLength(const std::u16string& title, + size_t length); -PRINTING_EXPORT std::u16string FormatDocumentTitleWithOwner( - const std::u16string& owner, - const std::u16string& title); +COMPONENT_EXPORT(PRINTING) +std::u16string FormatDocumentTitleWithOwner(const std::u16string& owner, + const std::u16string& title); -PRINTING_EXPORT std::u16string FormatDocumentTitleWithOwnerAndLength( +COMPONENT_EXPORT(PRINTING) +std::u16string FormatDocumentTitleWithOwnerAndLength( const std::u16string& owner, const std::u16string& title, size_t length); // Returns the paper size (microns) most common in the locale to the nearest // millimeter. Defaults to ISO A4 for an empty or invalid locale. -PRINTING_EXPORT gfx::Size GetDefaultPaperSizeFromLocaleMicrons( - base::StringPiece locale); +COMPONENT_EXPORT(PRINTING) +gfx::Size GetDefaultPaperSizeFromLocaleMicrons(base::StringPiece locale); // Returns true if both dimensions of the sizes have a delta less than or equal // to the epsilon value. -PRINTING_EXPORT bool SizesEqualWithinEpsilon(const gfx::Size& lhs, - const gfx::Size& rhs, - int epsilon); +COMPONENT_EXPORT(PRINTING) +bool SizesEqualWithinEpsilon(const gfx::Size& lhs, + const gfx::Size& rhs, + int epsilon); } // namespace printing
diff --git a/printing/sandbox/print_backend_sandbox_hook_linux.h b/printing/sandbox/print_backend_sandbox_hook_linux.h index 03668589..160934e 100644 --- a/printing/sandbox/print_backend_sandbox_hook_linux.h +++ b/printing/sandbox/print_backend_sandbox_hook_linux.h
@@ -5,15 +5,15 @@ #ifndef PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_ #define PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_ -#include "printing/printing_export.h" +#include "base/component_export.h" #include "sandbox/policy/linux/sandbox_linux.h" namespace printing { // Setup allowed commands and filesystem permissions for print backend service // sandboxed process. -PRINTING_EXPORT bool PrintBackendPreSandboxHook( - sandbox::policy::SandboxLinux::Options options); +COMPONENT_EXPORT(PRINTING) +bool PrintBackendPreSandboxHook(sandbox::policy::SandboxLinux::Options options); } // namespace printing
diff --git a/printing/units.h b/printing/units.h index 6dcc206..fc78236 100644 --- a/printing/units.h +++ b/printing/units.h
@@ -5,7 +5,7 @@ #ifndef PRINTING_UNITS_H_ #define PRINTING_UNITS_H_ -#include "printing/printing_export.h" +#include "base/component_export.h" namespace printing { @@ -44,21 +44,21 @@ constexpr float kA3HeightInch = 16.54f; // Converts from one unit system to another using integer arithmetics. -PRINTING_EXPORT int ConvertUnit(double value, int old_unit, int new_unit); +COMPONENT_EXPORT(PRINTING) +int ConvertUnit(double value, int old_unit, int new_unit); // Converts from one unit system to another using doubles. -PRINTING_EXPORT double ConvertUnitDouble(double value, - double old_unit, - double new_unit); +COMPONENT_EXPORT(PRINTING) +double ConvertUnitDouble(double value, double old_unit, double new_unit); // Converts from 1 pixel to 1 point using integers. -PRINTING_EXPORT int ConvertPixelsToPoint(int pixels); +COMPONENT_EXPORT(PRINTING) int ConvertPixelsToPoint(int pixels); // Converts from 1 pixel to 1 point using doubles. -PRINTING_EXPORT double ConvertPixelsToPointDouble(double pixels); +COMPONENT_EXPORT(PRINTING) double ConvertPixelsToPointDouble(double pixels); // Converts from 1 point to 1 pixel using doubles. -PRINTING_EXPORT double ConvertPointsToPixelDouble(double points); +COMPONENT_EXPORT(PRINTING) double ConvertPointsToPixelDouble(double points); } // namespace printing
diff --git a/remoting/android/java/src/org/chromium/chromoting/ThirdPartyTokenFetcher.java b/remoting/android/java/src/org/chromium/chromoting/ThirdPartyTokenFetcher.java index e61d1c9..19cfac8 100644 --- a/remoting/android/java/src/org/chromium/chromoting/ThirdPartyTokenFetcher.java +++ b/remoting/android/java/src/org/chromium/chromoting/ThirdPartyTokenFetcher.java
@@ -4,7 +4,6 @@ package org.chromium.chromoting; -import android.annotation.SuppressLint; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.ComponentName; @@ -16,9 +15,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.Log; -import org.chromium.base.SecureRandomInitializer; -import java.io.IOException; import java.security.SecureRandom; import java.util.ArrayList; @@ -46,18 +43,12 @@ private static final String RESPONSE_TYPE = "code token"; /** This is used to securely generate an opaque 128 bit for the |mState| variable. */ - @SuppressLint("TrulyRandom") private static SecureRandom sSecureRandom; // TODO(lambroslambrou): Refactor this class to only initialize a PRNG when ThirdPartyAuth is // actually used. static { sSecureRandom = new SecureRandom(); - try { - SecureRandomInitializer.initialize(sSecureRandom); - } catch (IOException e) { - throw new RuntimeException("Failed to initialize PRNG: " + e); - } } /** This is used to launch the third party login page in the browser. */
diff --git a/remoting/protocol/webrtc_frame_scheduler.h b/remoting/protocol/webrtc_frame_scheduler.h index 4cd9fa00..72eb25b 100644 --- a/remoting/protocol/webrtc_frame_scheduler.h +++ b/remoting/protocol/webrtc_frame_scheduler.h
@@ -41,8 +41,15 @@ // |encoded_frame| may be nullptr. If |frame_stats| is not null then sets // send_pending_delay, rtt_estimate and bandwidth_estimate_kbps fields. virtual void OnFrameEncoded( - const WebrtcVideoEncoder::EncodedFrame* encoded_frame, - HostFrameStats* frame_stats) = 0; + const WebrtcVideoEncoder::EncodedFrame* encoded_frame) = 0; + + // Writes the following bandwidth-related statistics to |frame_stats_out|: + // * bandwidth_estimate_kbps + // * rtt_estimate + // * send_pending_delay - an estimate of the delay (due to WebRTC's pacing + // buffer) before the recently-encoded frame will be sent. + // This should be called just after OnFrameEncoded(). + virtual void GetSchedulerStats(HostFrameStats& frame_stats_out) const = 0; }; } // namespace protocol
diff --git a/remoting/protocol/webrtc_frame_scheduler_simple.cc b/remoting/protocol/webrtc_frame_scheduler_simple.cc index e951c8a..7653497 100644 --- a/remoting/protocol/webrtc_frame_scheduler_simple.cc +++ b/remoting/protocol/webrtc_frame_scheduler_simple.cc
@@ -211,19 +211,16 @@ } void WebrtcFrameSchedulerSimple::OnFrameEncoded( - const WebrtcVideoEncoder::EncodedFrame* encoded_frame, - HostFrameStats* frame_stats) { + const WebrtcVideoEncoder::EncodedFrame* encoded_frame) { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(frame_pending_); frame_pending_ = false; base::TimeTicks now = tick_clock_->NowTicks(); - if (frame_stats) { - // Calculate |send_pending_delay| before refilling |pacing_bucket_|. - frame_stats->send_pending_delay = - std::max(base::TimeDelta(), pacing_bucket_.GetEmptyTime() - now); - } + // Calculate |send_pending_delay_| before refilling |pacing_bucket_|. + send_pending_delay_ = + std::max(base::TimeDelta(), pacing_bucket_.GetEmptyTime() - now); // TODO(zijiehe): |encoded_frame|->data.empty() is unreasonable, we should try // to get rid of it in WebrtcVideoEncoder layer. @@ -240,15 +237,17 @@ ScheduleNextFrame(); - if (frame_stats) { - frame_stats->rtt_estimate = rtt_estimate_; - frame_stats->bandwidth_estimate_kbps = - bandwidth_estimator_->GetBitrateKbps(); - } - bandwidth_estimator_->OnSendingFrame(*encoded_frame); } +void WebrtcFrameSchedulerSimple::GetSchedulerStats( + HostFrameStats& frame_stats_out) const { + frame_stats_out.send_pending_delay = send_pending_delay_; + frame_stats_out.rtt_estimate = rtt_estimate_; + frame_stats_out.bandwidth_estimate_kbps = + bandwidth_estimator_->GetBitrateKbps(); +} + void WebrtcFrameSchedulerSimple::SetTickClockForTest( const base::TickClock* tick_clock) { tick_clock_ = tick_clock;
diff --git a/remoting/protocol/webrtc_frame_scheduler_simple.h b/remoting/protocol/webrtc_frame_scheduler_simple.h index 8cddc48c..5c7debf 100644 --- a/remoting/protocol/webrtc_frame_scheduler_simple.h +++ b/remoting/protocol/webrtc_frame_scheduler_simple.h
@@ -43,8 +43,9 @@ void Pause(bool pause) override; bool OnFrameCaptured(const webrtc::DesktopFrame* frame, WebrtcVideoEncoder::FrameParams* params_out) override; - void OnFrameEncoded(const WebrtcVideoEncoder::EncodedFrame* encoded_frame, - HostFrameStats* frame_stats) override; + void OnFrameEncoded( + const WebrtcVideoEncoder::EncodedFrame* encoded_frame) override; + void GetSchedulerStats(HostFrameStats& frame_stats_out) const override; // Allows unit-tests to provide a mock clock. void SetTickClockForTest(const base::TickClock* tick_clock); @@ -78,7 +79,11 @@ // Set to true when a frame is being captured or encoded. bool frame_pending_ = false; - base::TimeDelta rtt_estimate_; + base::TimeDelta rtt_estimate_{base::TimeDelta::Max()}; + + // An estimate, set by OnFrameEncoded(), of the delay before WebRTC will send + // the encoded frame. + base::TimeDelta send_pending_delay_{base::TimeDelta::Max()}; // Set to true when encoding unchanged frames for top-off. bool top_off_is_active_ = false;
diff --git a/remoting/protocol/webrtc_frame_scheduler_unittest.cc b/remoting/protocol/webrtc_frame_scheduler_unittest.cc index 1736a51..bcd972c6 100644 --- a/remoting/protocol/webrtc_frame_scheduler_unittest.cc +++ b/remoting/protocol/webrtc_frame_scheduler_unittest.cc
@@ -52,7 +52,8 @@ WebrtcVideoEncoder::EncodedFrame encoded; encoded.key_frame = out_params.key_frame; encoded.data = 'X'; - scheduler_->OnFrameEncoded(&encoded, &frame_stats_); + scheduler_->OnFrameEncoded(&encoded); + scheduler_->GetSchedulerStats(frame_stats_); } }
diff --git a/remoting/protocol/webrtc_video_stream.cc b/remoting/protocol/webrtc_video_stream.cc index 8143703..b8bb292 100644 --- a/remoting/protocol/webrtc_video_stream.cc +++ b/remoting/protocol/webrtc_video_stream.cc
@@ -294,8 +294,7 @@ current_frame_stats_->frame_quality = (63 - frame->quantizer) * 100 / 63; } - HostFrameStats stats; - scheduler_->OnFrameEncoded(frame.get(), &stats); + scheduler_->OnFrameEncoded(frame.get()); if (encode_result != WebrtcVideoEncoder::EncodeResult::SUCCEEDED) { LOG(ERROR) << "Video encoder returns error " @@ -328,6 +327,11 @@ // Send FrameStats message. if (video_stats_dispatcher_.is_connected()) { + HostFrameStats stats; + + // Get bandwidth, RTT and send_pending_delay into |stats|. + scheduler_->GetSchedulerStats(stats); + stats.frame_size = frame ? frame->data.size() : 0; if (!current_frame_stats_->input_event_timestamps.is_null()) {
diff --git a/services/device/geolocation/network_location_request.cc b/services/device/geolocation/network_location_request.cc index dab92db7..454abdc 100644 --- a/services/device/geolocation/network_location_request.cc +++ b/services/device/geolocation/network_location_request.cc
@@ -67,6 +67,11 @@ code); } +void RecordUmaNetError(int net_error) { + base::UmaHistogramSparse("Geolocation.NetworkLocationRequest.NetError", + -net_error); +} + void RecordUmaAccessPoints(int count) { const int min = 1; const int max = 20; @@ -310,6 +315,7 @@ FormatPositionError(server_url, net::ErrorToShortString(net_error), position); RecordUmaEvent(NETWORK_LOCATION_REQUEST_EVENT_RESPONSE_EMPTY); + RecordUmaNetError(net_error); return; }
diff --git a/services/device/public/cpp/device_feature_list.cc b/services/device/public/cpp/device_feature_list.cc index 28284fc..05d1ca3 100644 --- a/services/device/public/cpp/device_feature_list.cc +++ b/services/device/public/cpp/device_feature_list.cc
@@ -5,7 +5,6 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" #include "base/notreached.h" -#include "base/stl_util.h" #include "services/device/device_service_jni_headers/DeviceFeatureList_jni.h" #include "services/device/public/cpp/device_features.h" @@ -19,15 +18,15 @@ // Array of features exposed through the Java ContentFeatureList API. Entries in // this array may either refer to features defined in the header of this file or // in other locations in the code base (e.g. content_features.h). -const base::Feature* kFeaturesExposedToJava[] = { +const base::Feature* const kFeaturesExposedToJava[] = { &kGenericSensorExtraClasses, }; // TODO(crbug.com/1060097): Removethis once a generalized FeatureList exists. const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) { - for (size_t i = 0; i < base::size(kFeaturesExposedToJava); ++i) { - if (kFeaturesExposedToJava[i]->name == feature_name) - return kFeaturesExposedToJava[i]; + for (const base::Feature* feature : kFeaturesExposedToJava) { + if (feature->name == feature_name) + return feature; } NOTREACHED() << "Queried feature cannot be found in DeviceFeatureList: " << feature_name;
diff --git a/services/device/serial/BUILD.gn b/services/device/serial/BUILD.gn index 2b093df..1a98d092 100644 --- a/services/device/serial/BUILD.gn +++ b/services/device/serial/BUILD.gn
@@ -26,8 +26,6 @@ "bluetooth_serial_device_enumerator.h", "bluetooth_serial_port_impl.cc", "bluetooth_serial_port_impl.h", - "buffer.cc", - "buffer.h", "serial_device_enumerator.cc", "serial_device_enumerator.h", "serial_io_handler.cc",
diff --git a/services/device/serial/bluetooth_serial_port_impl.cc b/services/device/serial/bluetooth_serial_port_impl.cc index 1617b7b..5cdb3fc 100644 --- a/services/device/serial/bluetooth_serial_port_impl.cc +++ b/services/device/serial/bluetooth_serial_port_impl.cc
@@ -9,7 +9,6 @@ #include "net/base/io_buffer.h" #include "services/device/public/cpp/bluetooth/bluetooth_utils.h" #include "services/device/public/cpp/serial/serial_switches.h" -#include "services/device/serial/buffer.h" namespace device {
diff --git a/services/device/serial/bluetooth_serial_port_impl_unittest.cc b/services/device/serial/bluetooth_serial_port_impl_unittest.cc index fe9fc110..5d474083 100644 --- a/services/device/serial/bluetooth_serial_port_impl_unittest.cc +++ b/services/device/serial/bluetooth_serial_port_impl_unittest.cc
@@ -23,7 +23,6 @@ #include "services/device/public/cpp/serial/serial_switches.h" #include "services/device/public/cpp/test/fake_serial_port_client.h" #include "services/device/public/mojom/serial.mojom.h" -#include "services/device/serial/buffer.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/services/device/serial/buffer.cc b/services/device/serial/buffer.cc deleted file mode 100644 index 5413ac7d..0000000 --- a/services/device/serial/buffer.cc +++ /dev/null
@@ -1,67 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "services/device/serial/buffer.h" - -#include <utility> - -#include "base/numerics/safe_conversions.h" -#include "net/base/io_buffer.h" - -namespace device { - -ReadOnlyBuffer::~ReadOnlyBuffer() = default; - -WritableBuffer::~WritableBuffer() = default; - -SendBuffer::SendBuffer(const uint8_t* buffer, - uint32_t size, - SendCompleteCallback callback) - : data_(buffer), size_(size), callback_(std::move(callback)) {} - -SendBuffer::~SendBuffer() = default; - -const uint8_t* SendBuffer::GetData() { - return data_; -} - -uint32_t SendBuffer::GetSize() { - return size_; -} - -void SendBuffer::Done(uint32_t bytes_read) { - std::move(callback_).Run(bytes_read, device::mojom::SerialSendError::NONE); -} - -void SendBuffer::DoneWithError(uint32_t bytes_read, int32_t error) { - std::move(callback_).Run(bytes_read, - static_cast<device::mojom::SerialSendError>(error)); -} - -ReceiveBuffer::ReceiveBuffer(char* buffer, - uint32_t size, - ReceiveCompleteCallback callback) - : buffer_(buffer), size_(size), callback_(std::move(callback)) {} - -ReceiveBuffer::~ReceiveBuffer() = default; - -char* ReceiveBuffer::GetData() { - return buffer_; -} - -uint32_t ReceiveBuffer::GetSize() { - return size_; -} - -void ReceiveBuffer::Done(uint32_t bytes_written) { - std::move(callback_).Run(bytes_written, - device::mojom::SerialReceiveError::NONE); -} - -void ReceiveBuffer::DoneWithError(uint32_t bytes_written, int32_t error) { - std::move(callback_).Run( - bytes_written, static_cast<device::mojom::SerialReceiveError>(error)); -} - -} // namespace device
diff --git a/services/device/serial/buffer.h b/services/device/serial/buffer.h deleted file mode 100644 index 3360529..0000000 --- a/services/device/serial/buffer.h +++ /dev/null
@@ -1,88 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SERVICES_DEVICE_SERIAL_BUFFER_H_ -#define SERVICES_DEVICE_SERIAL_BUFFER_H_ - -#include <stdint.h> - -#include <vector> - -#include "base/callback.h" -#include "net/base/io_buffer.h" -#include "services/device/public/mojom/serial.mojom.h" - -namespace device { - -// A fixed-size read-only buffer. The data-reader should call Done() when it is -// finished reading bytes from the buffer. Alternatively, the reader can report -// an error by calling DoneWithError() with the number of bytes read and the -// error it wishes to report. -class ReadOnlyBuffer { - public: - virtual ~ReadOnlyBuffer(); - virtual const uint8_t* GetData() = 0; - virtual uint32_t GetSize() = 0; - virtual void Done(uint32_t bytes_read) = 0; - virtual void DoneWithError(uint32_t bytes_read, int32_t error) = 0; -}; - -// A fixed-size writable buffer. The data-writer should call Done() when it is -// finished writing bytes to the buffer. Alternatively, the writer can report -// an error by calling DoneWithError() with the number of bytes written and the -// error it wishes to report. -class WritableBuffer { - public: - virtual ~WritableBuffer(); - virtual char* GetData() = 0; - virtual uint32_t GetSize() = 0; - virtual void Done(uint32_t bytes_written) = 0; - virtual void DoneWithError(uint32_t bytes_written, int32_t error) = 0; -}; - -// A useful basic implementation of a ReadOnlyBuffer in which the data is -// initialized via a character vector. -class SendBuffer : public device::ReadOnlyBuffer { - public: - using SendCompleteCallback = - base::OnceCallback<void(uint32_t, device::mojom::SerialSendError)>; - SendBuffer(const uint8_t* buffer, - uint32_t size, - SendCompleteCallback callback); - ~SendBuffer() override; - - const uint8_t* GetData() override; - uint32_t GetSize() override; - void Done(uint32_t bytes_read) override; - void DoneWithError(uint32_t bytes_read, int32_t error) override; - - private: - const uint8_t* data_; - uint32_t size_; - SendCompleteCallback callback_; -}; - -// A useful basic implementation of a WritableBuffer in which the data is -// stored in a net::IOBuffer. -class ReceiveBuffer : public device::WritableBuffer { - public: - using ReceiveCompleteCallback = - base::OnceCallback<void(uint32_t, device::mojom::SerialReceiveError)>; - ReceiveBuffer(char* buffer, uint32_t size, ReceiveCompleteCallback callback); - ~ReceiveBuffer() override; - - char* GetData() override; - uint32_t GetSize() override; - void Done(uint32_t bytes_written) override; - void DoneWithError(uint32_t bytes_written, int32_t error) override; - - private: - char* buffer_; - const uint32_t size_; - ReceiveCompleteCallback callback_; -}; - -} // namespace device - -#endif // SERVICES_DEVICE_SERIAL_BUFFER_H_
diff --git a/services/device/serial/serial_io_handler.cc b/services/device/serial/serial_io_handler.cc index ae4cb095..b26b3d9 100644 --- a/services/device/serial/serial_io_handler.cc +++ b/services/device/serial/serial_io_handler.cc
@@ -186,19 +186,23 @@ // port closed by destructor. } -void SerialIoHandler::Read(std::unique_ptr<WritableBuffer> buffer) { +void SerialIoHandler::Read(base::span<uint8_t> buffer, + ReadCompleteCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!IsReadPending()); - pending_read_buffer_ = std::move(buffer); + pending_read_buffer_ = buffer; + pending_read_callback_ = std::move(callback); read_canceled_ = false; AddRef(); ReadImpl(); } -void SerialIoHandler::Write(std::unique_ptr<ReadOnlyBuffer> buffer) { +void SerialIoHandler::Write(base::span<const uint8_t> buffer, + WriteCompleteCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!IsWritePending()); - pending_write_buffer_ = std::move(buffer); + pending_write_buffer_ = buffer; + pending_write_callback_ = std::move(callback); write_canceled_ = false; AddRef(); WriteImpl(); @@ -208,13 +212,8 @@ mojom::SerialReceiveError error) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(IsReadPending()); - std::unique_ptr<WritableBuffer> pending_read_buffer = - std::move(pending_read_buffer_); - if (error == mojom::SerialReceiveError::NONE) { - pending_read_buffer->Done(bytes_read); - } else { - pending_read_buffer->DoneWithError(bytes_read, static_cast<int32_t>(error)); - } + pending_read_buffer_ = base::span<uint8_t>(); + std::move(pending_read_callback_).Run(bytes_read, error); Release(); } @@ -222,25 +221,19 @@ mojom::SerialSendError error) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(IsWritePending()); - std::unique_ptr<ReadOnlyBuffer> pending_write_buffer = - std::move(pending_write_buffer_); - if (error == mojom::SerialSendError::NONE) { - pending_write_buffer->Done(bytes_written); - } else { - pending_write_buffer->DoneWithError(bytes_written, - static_cast<int32_t>(error)); - } + pending_write_buffer_ = base::span<const uint8_t>(); + std::move(pending_write_callback_).Run(bytes_written, error); Release(); } bool SerialIoHandler::IsReadPending() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return pending_read_buffer_ != NULL; + return !pending_read_callback_.is_null(); } bool SerialIoHandler::IsWritePending() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return pending_write_buffer_ != NULL; + return !pending_write_callback_.is_null(); } void SerialIoHandler::CancelRead(mojom::SerialReceiveError reason) {
diff --git a/services/device/serial/serial_io_handler.h b/services/device/serial/serial_io_handler.h index 8eefe2b..bbc0426a 100644 --- a/services/device/serial/serial_io_handler.h +++ b/services/device/serial/serial_io_handler.h
@@ -20,7 +20,6 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "services/device/public/mojom/serial.mojom.h" -#include "services/device/serial/buffer.h" namespace device { @@ -35,7 +34,11 @@ const base::FilePath& port, scoped_refptr<base::SingleThreadTaskRunner> ui_thread_task_runner); - typedef base::OnceCallback<void(bool success)> OpenCompleteCallback; + using OpenCompleteCallback = base::OnceCallback<void(bool success)>; + using ReadCompleteCallback = + base::OnceCallback<void(uint32_t bytes_read, mojom::SerialReceiveError)>; + using WriteCompleteCallback = + base::OnceCallback<void(uint32_t bytes_written, mojom::SerialSendError)>; // Initiates an asynchronous Open of the device. virtual void Open(const mojom::SerialConnectionOptions& options, @@ -58,15 +61,15 @@ const std::string& error_message); #endif // BUILDFLAG(IS_CHROMEOS_ASH) - // Performs an async Read operation. Behavior is undefined if this is called - // while a Read is already pending. Otherwise, the Done or DoneWithError - // method on |buffer| will eventually be called with a result. - void Read(std::unique_ptr<WritableBuffer> buffer); + // Performs an async read operation. Behavior is undefined if this is called + // while a read is already pending. Otherwise, |callback| will eventually be + // called with a result. |buffer| must remain valid until |callback| is run. + void Read(base::span<uint8_t> buffer, ReadCompleteCallback callback); - // Performs an async Write operation. Behavior is undefined if this is called - // while a Write is already pending. Otherwise, the Done or DoneWithError - // method on |buffer| will eventually be called with a result. - void Write(std::unique_ptr<ReadOnlyBuffer> buffer); + // Performs an async write operation. Behavior is undefined if this is called + // while a write is already pending. Otherwise, |callback| will eventually be + // called with a result. |buffer| must remain valid until |callback| is run. + void Write(base::span<const uint8_t> buffer, WriteCompleteCallback callback); // Indicates whether or not a read is currently pending. bool IsReadPending() const; @@ -165,12 +168,8 @@ const base::File& file() const { return file_; } - char* pending_read_buffer() const { - return pending_read_buffer_ ? pending_read_buffer_->GetData() : NULL; - } - - uint32_t pending_read_buffer_len() const { - return pending_read_buffer_ ? pending_read_buffer_->GetSize() : 0; + base::span<uint8_t> pending_read_buffer() const { + return pending_read_buffer_; } mojom::SerialReceiveError read_cancel_reason() const { @@ -179,12 +178,8 @@ bool read_canceled() const { return read_canceled_; } - const uint8_t* pending_write_buffer() const { - return pending_write_buffer_ ? pending_write_buffer_->GetData() : NULL; - } - - uint32_t pending_write_buffer_len() const { - return pending_write_buffer_ ? pending_write_buffer_->GetSize() : 0; + base::span<const uint8_t> pending_write_buffer() const { + return pending_write_buffer_; } mojom::SerialSendError write_cancel_reason() const { @@ -224,11 +219,13 @@ // Currently applied connection options. mojom::SerialConnectionOptions options_; - std::unique_ptr<WritableBuffer> pending_read_buffer_; + base::span<uint8_t> pending_read_buffer_; + ReadCompleteCallback pending_read_callback_; mojom::SerialReceiveError read_cancel_reason_; bool read_canceled_; - std::unique_ptr<ReadOnlyBuffer> pending_write_buffer_; + base::span<const uint8_t> pending_write_buffer_; + WriteCompleteCallback pending_write_callback_; mojom::SerialSendError write_cancel_reason_; bool write_canceled_;
diff --git a/services/device/serial/serial_io_handler_posix.cc b/services/device/serial/serial_io_handler_posix.cc index 61c5222a..8236b026 100644 --- a/services/device/serial/serial_io_handler_posix.cc +++ b/services/device/serial/serial_io_handler_posix.cc
@@ -127,7 +127,7 @@ void SerialIoHandlerPosix::ReadImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(pending_read_buffer()); + DCHECK(IsReadPending()); if (!file().IsValid()) { QueueReadCompleted(0, mojom::SerialReceiveError::DISCONNECTED); @@ -143,7 +143,7 @@ void SerialIoHandlerPosix::WriteImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(pending_write_buffer()); + DCHECK(IsWritePending()); if (!file().IsValid()) { QueueWriteCompleted(0, mojom::SerialSendError::DISCONNECTED); @@ -319,10 +319,10 @@ void SerialIoHandlerPosix::AttemptRead(bool within_read) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (pending_read_buffer()) { - int bytes_read = - HANDLE_EINTR(read(file().GetPlatformFile(), pending_read_buffer(), - pending_read_buffer_len())); + if (IsReadPending()) { + int bytes_read = HANDLE_EINTR(read(file().GetPlatformFile(), + pending_read_buffer().data(), + pending_read_buffer().size())); if (bytes_read < 0) { if (errno == EAGAIN) { // The fd does not have data to read yet so continue waiting. @@ -343,8 +343,8 @@ bool break_detected = false; bool parity_error_detected = false; int new_bytes_read = - CheckReceiveError(pending_read_buffer(), pending_read_buffer_len(), - bytes_read, break_detected, parity_error_detected); + CheckReceiveError(pending_read_buffer(), bytes_read, break_detected, + parity_error_detected); if (break_detected) { RunReadCompleted(within_read, new_bytes_read, @@ -380,10 +380,10 @@ void SerialIoHandlerPosix::OnFileCanWriteWithoutBlocking() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (pending_write_buffer()) { - int bytes_written = - HANDLE_EINTR(write(file().GetPlatformFile(), pending_write_buffer(), - pending_write_buffer_len())); + if (IsWritePending()) { + int bytes_written = HANDLE_EINTR(write(file().GetPlatformFile(), + pending_write_buffer().data(), + pending_write_buffer().size())); if (bytes_written < 0) { if (errno == ENXIO) { WriteCompleted(0, mojom::SerialSendError::DISCONNECTED); @@ -593,8 +593,7 @@ // // break/parity error sequences are removed from the byte stream // '\377' '\377' sequence is replaced with '\377' -int SerialIoHandlerPosix::CheckReceiveError(char* buffer, - int buffer_len, +int SerialIoHandlerPosix::CheckReceiveError(base::span<uint8_t> buffer, int bytes_read, bool& break_detected, bool& parity_error_detected) { @@ -602,7 +601,7 @@ DCHECK_LE(new_bytes_read, 2); for (int i = 0; i < bytes_read; ++i) { - char ch = buffer[i]; + uint8_t ch = buffer[i]; if (new_bytes_read == 0) { chars_stashed_[0] = ch; } else if (new_bytes_read == 1) { @@ -613,16 +612,16 @@ ++new_bytes_read; switch (error_detect_state_) { case ErrorDetectState::NO_ERROR: - if (ch == '\377') { + if (ch == 0377) { error_detect_state_ = ErrorDetectState::MARK_377_SEEN; } break; case ErrorDetectState::MARK_377_SEEN: DCHECK_GE(new_bytes_read, 2); - if (ch == '\0') { + if (ch == 0) { error_detect_state_ = ErrorDetectState::MARK_0_SEEN; } else { - if (ch == '\377') { + if (ch == 0377) { // receive two bytes '\377' '\377', since ISTRIP is not set and // PARMRK is set, a valid byte '\377' is passed to the program as // two bytes, '\377' '\377'. Replace these two bytes with one byte @@ -635,7 +634,7 @@ break; case ErrorDetectState::MARK_0_SEEN: DCHECK_GE(new_bytes_read, 3); - if (ch == '\0') { + if (ch == 0) { break_detected = true; new_bytes_read -= 3; error_detect_state_ = ErrorDetectState::NO_ERROR; @@ -644,7 +643,7 @@ parity_error_detected = true; new_bytes_read -= 3; error_detect_state_ = ErrorDetectState::NO_ERROR; - } else if (ch == '\377') { + } else if (ch == 0377) { error_detect_state_ = ErrorDetectState::MARK_377_SEEN; } else { error_detect_state_ = ErrorDetectState::NO_ERROR; @@ -660,10 +659,10 @@ // Stash up to 2 characters that are potentially part of a break/parity error // sequence. The buffer may also not be large enough to store all the bytes. // tmp[] stores the characters that need to be stashed for this read. - char tmp[2]; + uint8_t tmp[2]; num_chars_stashed_ = 0; if (error_detect_state_ == ErrorDetectState::MARK_0_SEEN || - new_bytes_read - buffer_len == 2) { + new_bytes_read - buffer.size() == 2) { // need to stash the last two characters if (new_bytes_read == 2) { memcpy(tmp, chars_stashed_, new_bytes_read); @@ -677,7 +676,7 @@ } num_chars_stashed_ = 2; } else if (error_detect_state_ == ErrorDetectState::MARK_377_SEEN || - new_bytes_read - buffer_len == 1) { + new_bytes_read - buffer.size() == 1) { // need to stash the last character if (new_bytes_read <= 2) { tmp[0] = chars_stashed_[new_bytes_read - 1]; @@ -690,9 +689,9 @@ new_bytes_read -= num_chars_stashed_; if (new_bytes_read > 2) { // right shift two bytes to store bytes from chars_stashed_[] - memmove(buffer + 2, buffer, new_bytes_read - 2); + memmove(&buffer[2], &buffer[0], new_bytes_read - 2); } - memcpy(buffer, chars_stashed_, std::min(new_bytes_read, 2)); + memcpy(&buffer[0], chars_stashed_, std::min(new_bytes_read, 2)); memcpy(chars_stashed_, tmp, num_chars_stashed_); return new_bytes_read; }
diff --git a/services/device/serial/serial_io_handler_posix.h b/services/device/serial/serial_io_handler_posix.h index 51311d6..cbf39314 100644 --- a/services/device/serial/serial_io_handler_posix.h +++ b/services/device/serial/serial_io_handler_posix.h
@@ -37,8 +37,7 @@ bool SetControlSignals( const mojom::SerialHostControlSignals& control_signals) override; mojom::SerialConnectionInfoPtr GetPortInfo() const override; - int CheckReceiveError(char* buffer, - int buffer_len, + int CheckReceiveError(base::span<uint8_t> buffer, int bytes_read, bool& break_detected, bool& parity_error_detected); @@ -71,7 +70,7 @@ ErrorDetectState error_detect_state_; bool parity_check_enabled_; - char chars_stashed_[2]; + uint8_t chars_stashed_[2]; int num_chars_stashed_; DISALLOW_COPY_AND_ASSIGN(SerialIoHandlerPosix);
diff --git a/services/device/serial/serial_io_handler_posix_unittest.cc b/services/device/serial/serial_io_handler_posix_unittest.cc index dba5ebd..94f111d 100644 --- a/services/device/serial/serial_io_handler_posix_unittest.cc +++ b/services/device/serial/serial_io_handler_posix_unittest.cc
@@ -42,7 +42,8 @@ bool break_detected = false; bool parity_error_detected = false; int new_bytes_read = serial_io_handler_posix_->CheckReceiveError( - buffer, buffer_len, bytes_read, break_detected, parity_error_detected); + base::make_span(reinterpret_cast<uint8_t*>(buffer), buffer_len), + bytes_read, break_detected, parity_error_detected); EXPECT_EQ(error_detect_state_expected, serial_io_handler_posix_->error_detect_state_); @@ -50,7 +51,7 @@ serial_io_handler_posix_->num_chars_stashed_); for (int i = 0; i < num_chars_stashed_expected; ++i) { EXPECT_EQ(chars_stashed_expected[i], - serial_io_handler_posix_->chars_stashed_[i]); + static_cast<char>(serial_io_handler_posix_->chars_stashed_[i])); } EXPECT_EQ(new_bytes_read_expected, new_bytes_read); for (int i = 0; i < new_bytes_read_expected; ++i) {
diff --git a/services/device/serial/serial_io_handler_win.cc b/services/device/serial/serial_io_handler_win.cc index 65e9047..4e22f82 100644 --- a/services/device/serial/serial_io_handler_win.cc +++ b/services/device/serial/serial_io_handler_win.cc
@@ -183,7 +183,7 @@ void SerialIoHandlerWin::ReadImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(pending_read_buffer()); + DCHECK(IsReadPending()); if (!file().IsValid()) { QueueReadCompleted(0, mojom::SerialReceiveError::DISCONNECTED); @@ -194,8 +194,8 @@ if (!IsReadPending()) return; - if (!ReadFile(file().GetPlatformFile(), pending_read_buffer(), - pending_read_buffer_len(), nullptr, + if (!ReadFile(file().GetPlatformFile(), pending_read_buffer().data(), + pending_read_buffer().size(), nullptr, &read_context_->overlapped) && GetLastError() != ERROR_IO_PENDING) { OnIOCompleted(read_context_.get(), 0, GetLastError()); @@ -204,15 +204,15 @@ void SerialIoHandlerWin::WriteImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(pending_write_buffer()); + DCHECK(IsWritePending()); if (!file().IsValid()) { QueueWriteCompleted(0, mojom::SerialSendError::DISCONNECTED); return; } - if (!WriteFile(file().GetPlatformFile(), pending_write_buffer(), - pending_write_buffer_len(), nullptr, + if (!WriteFile(file().GetPlatformFile(), pending_write_buffer().data(), + pending_write_buffer().size(), nullptr, &write_context_->overlapped) && GetLastError() != ERROR_IO_PENDING) { OnIOCompleted(write_context_.get(), 0, GetLastError()); @@ -307,7 +307,7 @@ ReadCompleted(0, mojom::SerialReceiveError::SYSTEM_ERROR); } } else if (context == write_context_.get()) { - DCHECK(pending_write_buffer()); + DCHECK(IsWritePending()); if (write_canceled()) { WriteCompleted(0, write_cancel_reason()); } else if (error == ERROR_SUCCESS || error == ERROR_OPERATION_ABORTED) {
diff --git a/services/device/serial/serial_port_impl.cc b/services/device/serial/serial_port_impl.cc index 89c9b3d..5522186a 100644 --- a/services/device/serial/serial_port_impl.cc +++ b/services/device/serial/serial_port_impl.cc
@@ -10,7 +10,6 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/single_thread_task_runner.h" -#include "services/device/serial/buffer.h" #include "services/device/serial/serial_io_handler.h" namespace device { @@ -217,10 +216,10 @@ MOJO_WRITE_DATA_FLAG_NONE); } if (result == MOJO_RESULT_OK) { - io_handler_->Write(std::make_unique<SendBuffer>( - static_cast<const uint8_t*>(buffer), num_bytes, + io_handler_->Write( + base::make_span(reinterpret_cast<const uint8_t*>(buffer), num_bytes), base::BindOnce(&SerialPortImpl::OnWriteToPortCompleted, - weak_factory_.GetWeakPtr(), num_bytes))); + weak_factory_.GetWeakPtr(), num_bytes)); return; } if (result == MOJO_RESULT_SHOULD_WAIT) { @@ -273,10 +272,10 @@ MOJO_WRITE_DATA_FLAG_NONE); } if (result == MOJO_RESULT_OK) { - io_handler_->Read(std::make_unique<ReceiveBuffer>( - static_cast<char*>(buffer), num_bytes, + io_handler_->Read( + base::make_span(reinterpret_cast<uint8_t*>(buffer), num_bytes), base::BindOnce(&SerialPortImpl::WriteToOutStream, - weak_factory_.GetWeakPtr()))); + weak_factory_.GetWeakPtr())); return; } if (result == MOJO_RESULT_SHOULD_WAIT) {
diff --git a/services/network/public/cpp/server/http_server_unittest.cc b/services/network/public/cpp/server/http_server_unittest.cc index 96b04b7..080f32f 100644 --- a/services/network/public/cpp/server/http_server_unittest.cc +++ b/services/network/public/cpp/server/http_server_unittest.cc
@@ -11,6 +11,7 @@ #include "base/auto_reset.h" #include "base/bind.h" +#include "base/format_macros.h" #include "base/location.h" #include "base/run_loop.h" #include "base/stl_util.h"
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json index 05687c3..95e19f3 100644 --- a/testing/buildbot/chromium.linux.json +++ b/testing/buildbot/chromium.linux.json
@@ -22416,5 +22416,2031 @@ "swarming": {} } ] + }, + "linux-xenial-rel": { + "gtest_tests": [ + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "absl_hardening_tests", + "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "accessibility_unittests", + "test_id_prefix": "ninja://ui/accessibility:accessibility_unittests/" + }, + { + "args": [ + "angle_unittests" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "angle_unittests", + "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/", + "use_isolated_scripts_api": true + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "app_shell_unittests", + "test_id_prefix": "ninja://extensions/shell:app_shell_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "aura_unittests", + "test_id_prefix": "ninja://ui/aura:aura_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_id_prefix": "ninja://base:base_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_util_unittests", + "test_id_prefix": "ninja://base/util:base_util_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "blink_common_unittests", + "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "blink_fuzzer_unittests", + "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_fuzzer_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "blink_heap_unittests", + "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "blink_platform_unittests", + "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "webkit_unit_tests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "blink_unittests", + "test_id_prefix": "ninja://third_party/blink/renderer/controller:blink_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "boringssl_crypto_tests", + "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "boringssl_ssl_tests", + "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 10 + }, + "test": "browser_tests", + "test_id_prefix": "ninja://chrome/test:browser_tests/" + }, + { + "args": [ + "--gtest_filter=-*UsingRealWebcam*" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "capture_unittests", + "test_id_prefix": "ninja://media/capture:capture_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "cast_unittests", + "test_id_prefix": "ninja://media/cast:cast_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "cc_unittests", + "test_id_prefix": "ninja://cc:cc_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "chrome_app_unittests", + "test_id_prefix": "ninja://chrome/test:chrome_app_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "chromedriver_unittests", + "test_id_prefix": "ninja://chrome/test/chromedriver:chromedriver_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "color_unittests", + "test_id_prefix": "ninja://ui/color:color_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_browsertests", + "test_id_prefix": "ninja://components:components_browsertests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_id_prefix": "ninja://components:components_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "compositor_unittests", + "test_id_prefix": "ninja://ui/compositor:compositor_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 6 + }, + "test": "content_browsertests", + "test_id_prefix": "ninja://content/test:content_browsertests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "content_unittests", + "test_id_prefix": "ninja://content/test:content_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "crashpad_tests", + "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "cronet_tests", + "test_id_prefix": "ninja://components/cronet:cronet_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "cronet_unittests", + "test_id_prefix": "ninja://components/cronet:cronet_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "crypto_unittests", + "test_id_prefix": "ninja://crypto:crypto_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "dbus_unittests", + "test_id_prefix": "ninja://dbus:dbus_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "device_unittests", + "test_id_prefix": "ninja://device:device_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "display_unittests", + "test_id_prefix": "ninja://ui/display:display_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "events_unittests", + "test_id_prefix": "ninja://ui/events:events_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "extensions_browsertests", + "test_id_prefix": "ninja://extensions:extensions_browsertests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "extensions_unittests", + "test_id_prefix": "ninja://extensions:extensions_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "filesystem_service_unittests", + "test_id_prefix": "ninja://components/services/filesystem:filesystem_service_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gcm_unit_tests", + "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_id_prefix": "ninja://ui/gfx:gfx_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gin_unittests", + "test_id_prefix": "ninja://gin:gin_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "google_apis_unittests", + "test_id_prefix": "ninja://google_apis:google_apis_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gpu_unittests", + "test_id_prefix": "ninja://gpu:gpu_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gtk_unittests", + "test_id_prefix": "ninja://ui/gtk:gtk_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gwp_asan_unittests", + "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "headless_browsertests", + "test_id_prefix": "ninja://headless:headless_browsertests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "headless_unittests", + "test_id_prefix": "ninja://headless:headless_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "interactive_ui_tests", + "test_id_prefix": "ninja://chrome/test:interactive_ui_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ipc_tests", + "test_id_prefix": "ninja://ipc:ipc_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "jingle_unittests", + "test_id_prefix": "ninja://jingle:jingle_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "latency_unittests", + "test_id_prefix": "ninja://ui/latency:latency_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "libjingle_xmpp_unittests", + "test_id_prefix": "ninja://third_party/libjingle_xmpp:libjingle_xmpp_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "liburlpattern_unittests", + "test_id_prefix": "ninja://third_party/liburlpattern:liburlpattern_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "media_blink_unittests", + "test_id_prefix": "ninja://media/blink:media_blink_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "media_unittests", + "test_id_prefix": "ninja://media:media_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "message_center_unittests", + "test_id_prefix": "ninja://ui/message_center:message_center_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "midi_unittests", + "test_id_prefix": "ninja://media/midi:midi_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "mojo_core_unittests", + "test_id_prefix": "ninja://mojo/core:mojo_core_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "mojo_unittests", + "test_id_prefix": "ninja://mojo:mojo_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "nacl_helper_nonsfi_unittests", + "test_id_prefix": "ninja://components/nacl/loader:nacl_helper_nonsfi_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "nacl_loader_unittests", + "test_id_prefix": "ninja://components/nacl/loader:nacl_loader_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "native_theme_unittests", + "test_id_prefix": "ninja://ui/native_theme:native_theme_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "net_unittests", + "test_id_prefix": "ninja://net:net_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "openscreen_unittests", + "test_id_prefix": "ninja://chrome/browser/media/router:openscreen_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "pdf_unittests", + "test_id_prefix": "ninja://pdf:pdf_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "perfetto_unittests", + "test_id_prefix": "ninja://third_party/perfetto:perfetto_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ppapi_unittests", + "test_id_prefix": "ninja://ppapi:ppapi_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "printing_unittests", + "test_id_prefix": "ninja://printing:printing_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "remoting_unittests", + "test_id_prefix": "ninja://remoting:remoting_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "sandbox_linux_unittests", + "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "service_manager_unittests", + "test_id_prefix": "ninja://services/service_manager/tests:service_manager_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "services_unittests", + "test_id_prefix": "ninja://services:services_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "shell_dialogs_unittests", + "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_id_prefix": "ninja://skia:skia_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "snapshot_unittests", + "test_id_prefix": "ninja://ui/snapshot:snapshot_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "sql_unittests", + "test_id_prefix": "ninja://sql:sql_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "storage_unittests", + "test_id_prefix": "ninja://storage:storage_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "sync_integration_tests", + "test_id_prefix": "ninja://chrome/test:sync_integration_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "traffic_annotation_auditor_unittests", + "test_id_prefix": "ninja://tools/traffic_annotation/auditor:traffic_annotation_auditor_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_id_prefix": "ninja://ui/base:ui_base_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_touch_selection_unittests", + "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "unit_tests", + "test_id_prefix": "ninja://chrome/test:unit_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "url_unittests", + "test_id_prefix": "ninja://url:url_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "views_unittests", + "test_id_prefix": "ninja://ui/views:views_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "viz_unittests", + "test_id_prefix": "ninja://components/viz:viz_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "vr_common_unittests", + "test_id_prefix": "ninja://chrome/browser/vr:vr_common_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "vr_pixeltests", + "test_id_prefix": "ninja://chrome/browser/vr:vr_pixeltests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "weblayer_browsertests", + "test_id_prefix": "ninja://weblayer/test:weblayer_browsertests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "weblayer_unittests", + "test_id_prefix": "ninja://weblayer/test:weblayer_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "wm_unittests", + "test_id_prefix": "ninja://ui/wm:wm_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "wtf_unittests", + "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "x11_unittests", + "test_id_prefix": "ninja://ui/platform_window/x11:x11_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "xr_browser_tests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "xr_browser_tests", + "test_id_prefix": "ninja://chrome/test:xr_browser_tests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "zlib_unittests", + "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/" + } + ], + "isolated_scripts": [ + { + "isolate_name": "blink_python_tests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "blink_python_tests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://:blink_python_tests/" + }, + { + "args": [ + "--num-retries=3", + "--additional-env-var=LLVM_PROFILE_FILE=${ISOLATED_OUTDIR}/profraw/default-%2m.profraw" + ], + "isolate_name": "blink_web_tests", + "merge": { + "args": [ + "--verbose" + ], + "script": "//third_party/blink/tools/merge_web_test_results.py" + }, + "name": "blink_web_tests", + "resultdb": { + "enable": true + }, + "results_handler": "layout tests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 12 + }, + "test_id_prefix": "ninja://:blink_web_tests/" + }, + { + "args": [ + "--test-type=integration" + ], + "isolate_name": "chromedriver_py_tests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "chromedriver_py_tests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test/chromedriver:chromedriver_py_tests/" + }, + { + "isolate_name": "chromedriver_replay_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "chromedriver_replay_unittests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test/chromedriver:chromedriver_replay_unittests/" + }, + { + "isolate_name": "content_shell_crash_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "content_shell_crash_test", + "resultdb": { + "enable": true, + "result_format": "single" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://content/shell:content_shell_crash_test/" + }, + { + "isolate_name": "flatbuffers_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "flatbuffers_unittests", + "resultdb": { + "enable": true, + "result_format": "single" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://third_party/flatbuffers:flatbuffers_unittests/" + }, + { + "isolate_name": "grit_python_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "grit_python_unittests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://tools/grit:grit_python_unittests/" + }, + { + "isolate_name": "metrics_python_tests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "metrics_python_tests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://tools/metrics:metrics_python_tests/" + }, + { + "isolate_name": "mojo_python_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "mojo_python_unittests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://mojo/public/tools:mojo_python_unittests/" + }, + { + "args": [ + "--num-retries=3", + "--additional-driver-flag=--disable-features=UseSkiaRenderer", + "--skipped=always", + "--fuzzy-diff", + "--test-list=../../testing/buildbot/filters/gpu.skiarenderer_vulkan_blink_web_tests.filter" + ], + "isolate_name": "blink_web_tests", + "merge": { + "args": [ + "--verbose" + ], + "script": "//third_party/blink/tools/merge_web_test_results.py" + }, + "name": "non_skia_renderer_swiftshader_blink_web_tests", + "resultdb": { + "enable": true + }, + "results_handler": "layout tests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://:blink_web_tests/" + }, + { + "args": [ + "--additional-driver-flag", + "--disable-site-isolation-trials", + "--additional-expectations=../../third_party/blink/web_tests/FlagExpectations/disable-site-isolation-trials", + "--num-retries=3", + "--additional-env-var=LLVM_PROFILE_FILE=${ISOLATED_OUTDIR}/profraw/default-%2m.profraw" + ], + "isolate_name": "blink_web_tests", + "merge": { + "args": [ + "--verbose" + ], + "script": "//third_party/blink/tools/merge_web_test_results.py" + }, + "name": "not_site_per_process_blink_web_tests", + "resultdb": { + "enable": true + }, + "results_handler": "layout tests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 10 + }, + "test_id_prefix": "ninja://:blink_web_tests/" + }, + { + "isolate_name": "telemetry_gpu_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "telemetry_gpu_unittests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_unittests/" + }, + { + "args": [ + "--extra-browser-args=--enable-crashpad", + "--xvfb", + "--jobs=1" + ], + "isolate_name": "telemetry_perf_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "telemetry_perf_unittests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 12 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_perf_unittests/" + }, + { + "args": [ + "--jobs=1", + "--extra-browser-args=--disable-gpu" + ], + "isolate_name": "telemetry_unittests", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "telemetry_unittests", + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 8 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_unittests/" + }, + { + "args": [ + "--gtest-benchmark-name=views_perftests" + ], + "isolate_name": "views_perftests", + "merge": { + "args": [ + "--smoke-test-mode" + ], + "script": "//tools/perf/process_perf_results.py" + }, + "name": "views_perftests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://ui/views:views_perftests/" + }, + { + "args": [ + "--num-retries=3", + "--additional-driver-flag=--enable-gpu-rasterization", + "--additional-driver-flag=--enable-features=UseSkiaRenderer,Vulkan", + "--additional-driver-flag=--enable-oop-rasterization", + "--additional-driver-flag=--use-vulkan=swiftshader", + "--additional-driver-flag=--disable-vulkan-fallback-to-gl-for-testing", + "--fuzzy-diff", + "--skipped=always", + "--test-list=../../testing/buildbot/filters/gpu.skiarenderer_vulkan_blink_web_tests.filter", + "--additional-expectations=../../third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer", + "--additional-expectations=../../third_party/blink/web_tests/FlagExpectations/enable-gpu-rasterization", + "--additional-expectations=../../third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader" + ], + "isolate_name": "blink_web_tests", + "merge": { + "args": [ + "--verbose" + ], + "script": "//third_party/blink/tools/merge_web_test_results.py" + }, + "name": "vulkan_swiftshader_blink_web_tests", + "resultdb": { + "enable": true + }, + "results_handler": "layout tests", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://:blink_web_tests/" + } + ], + "scripts": [ + { + "name": "check_static_initializers", + "script": "check_static_initializers.py", + "swarming": {} + }, + { + "name": "checkdeps", + "script": "checkdeps.py", + "swarming": {} + }, + { + "name": "checkperms", + "script": "checkperms.py", + "swarming": {} + }, + { + "name": "headless_python_unittests", + "script": "headless_python_unittests.py", + "swarming": {} + }, + { + "name": "webkit_lint", + "script": "blink_lint_expectations.py", + "swarming": {} + } + ] } }
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 9e303ad..b2491c7e 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -467,6 +467,11 @@ '--additional-driver-flag=--enable-blink-features=EditingNG', ], }, + 'linux-xenial-rel': { + "args": [ + "--additional-env-var=LLVM_PROFILE_FILE=${ISOLATED_OUTDIR}/profraw/default-%2m.profraw", + ], + }, 'mac10.12-blink-rel-dummy': { 'swarming': { 'shards': 20, @@ -2203,6 +2208,11 @@ 'shards': 20, }, }, + 'linux-xenial-rel': { + "args": [ + "--additional-env-var=LLVM_PROFILE_FILE=${ISOLATED_OUTDIR}/profraw/default-%2m.profraw", + ], + }, }, }, 'notification_helper_unittests': { @@ -2709,6 +2719,12 @@ '--jobs=1', ], }, + 'linux-xenial-rel': { + 'args': [ + '--xvfb', + '--jobs=1', + ], + }, }, 'remove_from': [ 'android-marshmallow-x86-rel-non-cq', # crbug.com/1084352 @@ -2947,6 +2963,7 @@ 'webdriver_tests_suite': { 'remove_from': [ 'Linux Tests', # https://crbug.com/929689, https://crbug.com/936557 + 'linux-xenial-rel', ], }, 'webgl2_conformance_gl_passthrough_tests': {
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 03c84b1..5496b9f 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -5074,6 +5074,16 @@ 'scripts': 'chromium_linux_scripts', }, }, + 'linux-xenial-rel': { + 'mixins': [ + 'linux-xenial', + ], + 'test_suites': { + 'gtest_tests': 'chromium_linux_gtests', + 'isolated_scripts': 'chromium_linux_rel_isolated_scripts', + 'scripts': 'chromium_linux_scripts', + }, + }, }, }, {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 928169c..c9f788f 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -4422,6 +4422,21 @@ ] } ], + "NotificationsViaHelperApp": [ + { + "platforms": [ + "mac" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "NotificationsViaHelperApp" + ] + } + ] + } + ], "NtpRepeatableQueriesDesktop": [ { "platforms": [ @@ -4636,7 +4651,6 @@ "OmniboxShortBookmarkSuggestionsByTotalInputLength", "OmniboxTrendingZeroPrefixSuggestionsOnNTP", "OmniboxUIExperimentMaxAutocompleteMatches", - "QueryInOmnibox", "SearchSuggestChips" ] }
diff --git a/third_party/blink/public/mojom/conversions/conversions.mojom b/third_party/blink/public/mojom/conversions/conversions.mojom index 4a9864e..989454f1 100644 --- a/third_party/blink/public/mojom/conversions/conversions.mojom +++ b/third_party/blink/public/mojom/conversions/conversions.mojom
@@ -14,6 +14,10 @@ // Conversion data specified in conversion redirect. 0 is used as a // default if none is provided. uint64 conversion_data = 0; + + // Event source trigger data specified in conversion redirect. 0 is used as a + // default if none is provided. + uint64 event_source_trigger_data = 0; }; // Mojo struct to represent blink::Impression native struct.
diff --git a/third_party/blink/renderer/core/animation/animation.h b/third_party/blink/renderer/core/animation/animation.h index 234ddbf..28279f1 100644 --- a/third_party/blink/renderer/core/animation/animation.h +++ b/third_party/blink/renderer/core/animation/animation.h
@@ -282,7 +282,7 @@ void Trace(Visitor*) const override; - bool CompositorPendingForTesting() const { return compositor_pending_; } + bool CompositorPending() const { return compositor_pending_; } // Methods for handling removal and persistence of animations. bool IsReplaceable();
diff --git a/third_party/blink/renderer/core/animation/animation_test.cc b/third_party/blink/renderer/core/animation/animation_test.cc index cc3046b..df9ab24 100644 --- a/third_party/blink/renderer/core/animation/animation_test.cc +++ b/third_party/blink/renderer/core/animation/animation_test.cc
@@ -1308,7 +1308,7 @@ // At this point, the animation exists on both the compositor and blink side, // but no start time has arrived on either side. The compositor is currently // synced, no update is pending. - EXPECT_FALSE(animation->CompositorPendingForTesting()); + EXPECT_FALSE(animation->CompositorPending()); // However, if we pause the animation then the compositor should still be // marked pending. This is required because otherwise the compositor will go @@ -1316,7 +1316,7 @@ // on the next compositor frame). animation->pause(); - EXPECT_TRUE(animation->CompositorPendingForTesting()); + EXPECT_TRUE(animation->CompositorPending()); } TEST_F(AnimationAnimationTestCompositing, PreCommitWithUnresolvedStartTimes) { @@ -1325,7 +1325,7 @@ // At this point, the animation exists on both the compositor and blink side, // but no start time has arrived on either side. The compositor is currently // synced, no update is pending. - EXPECT_FALSE(animation->CompositorPendingForTesting()); + EXPECT_FALSE(animation->CompositorPending()); // At this point, a call to PreCommit should bail out and tell us to wait for // next commit because there are no resolved start times. @@ -1432,7 +1432,7 @@ // At this point, the animation exists on both the compositor and blink side, // but no start time has arrived on either side. The compositor is currently // synced, no update is pending. - EXPECT_FALSE(animation->CompositorPendingForTesting()); + EXPECT_FALSE(animation->CompositorPending()); // Now change the keyframes; this should mark the animation as compositor // pending as we need to sync the compositor side. @@ -1453,7 +1453,7 @@ To<KeyframeEffect>(animation->effect())->SetKeyframes(keyframes); - EXPECT_TRUE(animation->CompositorPendingForTesting()); + EXPECT_TRUE(animation->CompositorPending()); } // crbug.com/1057076
diff --git a/third_party/blink/renderer/core/animation/element_animations.cc b/third_party/blink/renderer/core/animation/element_animations.cc index 7c0619a6..450887c3 100644 --- a/third_party/blink/renderer/core/animation/element_animations.cc +++ b/third_party/blink/renderer/core/animation/element_animations.cc
@@ -71,6 +71,15 @@ if (!effect.IsCurrent()) continue; UpdateAnimationFlagsForEffect(effect, style); + + // This animation animates background-color and some input of the animation + // is changed compared with the previous frame, so trigger a repaint. + if (RuntimeEnabledFeatures::CompositeBGColorAnimationEnabled() && + animation.CalculateAnimationPlayState() != Animation::kIdle && + effect.Affects(PropertyHandle(GetCSSPropertyBackgroundColor())) && + animation.CompositorPending()) { + style.SetCompositablePaintAnimationChanged(true); + } } for (const auto& entry : worklet_animations_) {
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc index b856cc6..540b32130 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -382,12 +382,6 @@ } WebMediaPlayer::SurfaceLayerMode GetVideoSurfaceLayerMode() { -#if defined(OS_ANDROID) - if (base::FeatureList::IsEnabled(media::kDisableSurfaceLayerForVideo) && - !::features::IsUsingVizForWebView()) - return WebMediaPlayer::SurfaceLayerMode::kNever; -#endif // OS_ANDROID - return WebMediaPlayer::SurfaceLayerMode::kAlways; }
diff --git a/third_party/blink/renderer/core/input/gesture_manager.cc b/third_party/blink/renderer/core/input/gesture_manager.cc index ba6175ac..c964647 100644 --- a/third_party/blink/renderer/core/input/gesture_manager.cc +++ b/third_party/blink/renderer/core/input/gesture_manager.cc
@@ -4,7 +4,6 @@ #include "third_party/blink/renderer/core/input/gesture_manager.h" -#include "build/build_config.h" #include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/public/public_buildflags.h" #include "third_party/blink/renderer/core/dom/document.h" @@ -22,6 +21,7 @@ #include "third_party/blink/renderer/core/input/input_device_capabilities.h" #include "third_party/blink/renderer/core/page/chrome_client.h" #include "third_party/blink/renderer/core/page/page.h" +#include "third_party/blink/renderer/core/page/scrolling/text_fragment_handler.h" #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" #include "third_party/blink/renderer/core/scroll/scroll_animator_base.h" @@ -334,6 +334,13 @@ ShowUnhandledTapUIIfNeeded(dom_tree_changed, style_changed, tapped_node, tapped_element, tapped_position_in_viewport); } + if (RuntimeEnabledFeatures::TextFragmentTapOpensContextMenuEnabled() && + TextFragmentHandler::IsOverTextFragment(current_hit_test)) { + if (event_result == WebInputEventResult::kNotHandled) { + return SendContextMenuEventForGesture(targeted_event); + } + } + return event_result; }
diff --git a/third_party/blink/renderer/core/layout/layout_box_model_object.h b/third_party/blink/renderer/core/layout/layout_box_model_object.h index 7859c18..efabb1f 100644 --- a/third_party/blink/renderer/core/layout/layout_box_model_object.h +++ b/third_party/blink/renderer/core/layout/layout_box_model_object.h
@@ -451,13 +451,13 @@ NOT_DESTROYED(); return PhysicalMarginToLogical(other_style).End(); } - LayoutUnit MarginLineLeft() const { + LayoutUnit MarginLineLeft(const ComputedStyle* other_style = nullptr) const { NOT_DESTROYED(); - return PhysicalMarginToLogical(nullptr).LineLeft(); + return PhysicalMarginToLogical(other_style).LineLeft(); } - LayoutUnit MarginLineRight() const { + LayoutUnit MarginLineRight(const ComputedStyle* other_style = nullptr) const { NOT_DESTROYED(); - return PhysicalMarginToLogical(nullptr).LineRight(); + return PhysicalMarginToLogical(other_style).LineRight(); } LayoutUnit MarginOver() const { NOT_DESTROYED();
diff --git a/third_party/blink/renderer/core/layout/layout_grid.cc b/third_party/blink/renderer/core/layout/layout_grid.cc index eccf1f3..ead4acb4 100644 --- a/third_party/blink/renderer/core/layout/layout_grid.cc +++ b/third_party/blink/renderer/core/layout/layout_grid.cc
@@ -2237,7 +2237,7 @@ is_flowaware_row_axis ? child.LogicalLeft() : child.LogicalTop(); LayoutUnit grid_border = is_row_axis ? BorderLogicalLeft() : BorderBefore(); LayoutUnit child_margin = - is_flowaware_row_axis ? child.MarginLineLeft() : child.MarginBefore(); + is_row_axis ? child.MarginLineLeft(Style()) : child.MarginBefore(Style()); LayoutUnit offset = child_position - grid_border - child_margin; if (!is_row_axis || StyleRef().IsLeftToRightDirection()) return offset;
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc index 0de5bfe..a2fa221 100644 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
@@ -860,6 +860,7 @@ mojom::blink::ConversionPtr conversion = mojom::blink::Conversion::New(); conversion->reporting_origin = SecurityOrigin::Create(url); conversion->conversion_data = 0UL; + conversion->event_source_trigger_data = 0UL; const char kConversionDataParam[] = "conversion-data"; URLSearchParams* search_params = URLSearchParams::Create(url.Query()); @@ -871,6 +872,17 @@ // Default invalid params to 0. conversion->conversion_data = is_valid_integer ? data : 0UL; } + // Defaulting to 0 means that it is not possible to selectively convert only + // event sources or navigation sources. + const char kEventSourceTriggerDataParam[] = "event-source-trigger-data"; + if (search_params->has(kEventSourceTriggerDataParam)) { + bool is_valid_integer = false; + uint64_t data = search_params->get(kEventSourceTriggerDataParam) + .ToUInt64Strict(&is_valid_integer); + + // Default invalid params to 0. + conversion->event_source_trigger_data = is_valid_integer ? data : 0UL; + } mojo::AssociatedRemote<mojom::blink::ConversionHost> conversion_host; GetFrame()->GetRemoteNavigationAssociatedInterfaces()->GetInterface(
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc index 7fa13fc..4cc6423 100644 --- a/third_party/blink/renderer/core/page/context_menu_controller.cc +++ b/third_party/blink/renderer/core/page/context_menu_controller.cc
@@ -403,7 +403,8 @@ !data.link_url.is_empty() || data.media_type == mojom::blink::ContextMenuDataMediaType::kImage || data.media_type == mojom::blink::ContextMenuDataMediaType::kVideo || - data.is_editable || !data.selected_text.empty(); + data.is_editable || data.opened_from_highlight || + !data.selected_text.empty(); } bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc index 186e55bc..7587b04 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc
@@ -8,8 +8,12 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/common/input/web_menu_source_type.h" #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h" +#include "third_party/blink/renderer/bindings/core/v8/string_or_array_buffer_or_array_buffer_view.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_font_face_descriptors.h" #include "third_party/blink/renderer/bindings/core/v8/v8_mouse_event_init.h" +#include "third_party/blink/renderer/core/css/font_face_set_document.h" #include "third_party/blink/renderer/core/dom/element.h" +#include "third_party/blink/renderer/core/dom/range.h" #include "third_party/blink/renderer/core/editing/ephemeral_range.h" #include "third_party/blink/renderer/core/editing/frame_selection.h" #include "third_party/blink/renderer/core/editing/markers/document_marker_controller.h" @@ -94,6 +98,23 @@ event.SetFrameScale(1); GetDocument().GetFrame()->GetEventHandler().HandleGestureEvent(event); } + + void LoadAhem() { + scoped_refptr<SharedBuffer> shared_buffer = + test::ReadFromFile(test::CoreTestDataPath("Ahem.ttf")); + StringOrArrayBufferOrArrayBufferView buffer = + StringOrArrayBufferOrArrayBufferView::FromArrayBuffer( + DOMArrayBuffer::Create(shared_buffer)); + FontFace* ahem = + FontFace::Create(GetDocument().GetFrame()->DomWindow(), "Ahem", buffer, + FontFaceDescriptors::Create()); + + ScriptState* script_state = + ToScriptStateForMainWorld(GetDocument().GetFrame()); + DummyExceptionStateForTesting exception_state; + FontFaceSetDocument::From(GetDocument()) + ->addForBinding(script_state, ahem, exception_state); + } }; // Basic test case, ensure we scroll the matching text into view. @@ -2360,6 +2381,76 @@ EXPECT_FALSE(selection.SelectedText().IsEmpty()); } +// Test that on Android, a user can display a context menu by tapping on +// a text fragment, when the TextFragmentTapOpensContextMenu +// RuntimeEnabledFeature is enabled. +TEST_F(TextFragmentAnchorTest, ShouldOpenContextMenuOnTap) { + base::test::ScopedFeatureList feature_list_; + feature_list_.InitAndEnableFeature( + shared_highlighting::kSharedHighlightingV2); + LoadAhem(); + SimRequest request( + "https://example.com/" + "test.html#:~:text=this%20is%20a%20test%20page", + "text/html"); + LoadURL( + "https://example.com/" + "test.html#:~:text=this%20is%20a%20test%20page"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style>p { font: 10px/1 Ahem; }</style> + <p id="first">This is a test page</p> + <p id="two">Second test page two</p> + )HTML"); + RunAsyncMatchingTasks(); + ContextMenuAllowedScope context_menu_allowed_scope; + + Compositor().BeginFrame(); + + EXPECT_FALSE(GetDocument() + .GetPage() + ->GetContextMenuController() + .ContextMenuNodeForFrame(GetDocument().GetFrame())); + + Range* range = Range::Create(GetDocument()); + range->setStart(GetDocument().getElementById("first"), 0, + IGNORE_EXCEPTION_FOR_TESTING); + range->setEnd(GetDocument().getElementById("first"), 1, + IGNORE_EXCEPTION_FOR_TESTING); + ASSERT_EQ("This is a test page", range->GetText()); + + IntPoint tap_point = range->BoundingBox().Center(); + SimulateTap(tap_point.X(), tap_point.Y()); + + if (RuntimeEnabledFeatures::TextFragmentTapOpensContextMenuEnabled()) { + EXPECT_TRUE(GetDocument() + .GetPage() + ->GetContextMenuController() + .ContextMenuNodeForFrame(GetDocument().GetFrame())); + } else { + EXPECT_FALSE(GetDocument() + .GetPage() + ->GetContextMenuController() + .ContextMenuNodeForFrame(GetDocument().GetFrame())); + } + + GetDocument().GetPage()->GetContextMenuController().ClearContextMenu(); + + range->setStart(GetDocument().getElementById("two"), 0, + IGNORE_EXCEPTION_FOR_TESTING); + range->setEndAfter(GetDocument().getElementById("two"), + IGNORE_EXCEPTION_FOR_TESTING); + ASSERT_EQ("Second test page two", range->GetText()); + + tap_point = range->BoundingBox().Center(); + SimulateTap(tap_point.X(), tap_point.Y()); + + EXPECT_FALSE(GetDocument() + .GetPage() + ->GetContextMenuController() + .ContextMenuNodeForFrame(GetDocument().GetFrame())); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_handler.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_handler.cc index 4d7f900..4bfbeb5 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_handler.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_handler.cc
@@ -52,6 +52,10 @@ // static bool TextFragmentHandler::IsOverTextFragment(HitTestResult result) { + if (!result.InnerNode()) { + return false; + } + DocumentMarkerController& marker_controller = result.InnerNodeFrame()->GetDocument()->Markers(); PositionWithAffinity pos_with_affinity = result.GetPosition();
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc index 5f105993..294fd1d 100644 --- a/third_party/blink/renderer/core/style/computed_style.cc +++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -955,8 +955,10 @@ diff.SetCompositingReasonsChanged(); } - if (HasCurrentBackgroundColorAnimation() != - other.HasCurrentBackgroundColorAnimation()) { + if (RuntimeEnabledFeatures::CompositeBGColorAnimationEnabled() && + (HasCurrentBackgroundColorAnimation() != + other.HasCurrentBackgroundColorAnimation() || + CompositablePaintAnimationChanged())) { diff.SetCompositablePaintEffectChanged(); } }
diff --git a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 index 00c5ece..f87b481 100644 --- a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 +++ b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
@@ -645,6 +645,13 @@ default_value: "false", }, { + name: "CompositablePaintAnimationChanged", + field_template: "primitive", + type_name: "bool", + field_group: "*", + default_value: "false", + }, + { name: "IsRunningOpacityAnimationOnCompositor", field_template: "primitive", type_name: "bool",
diff --git a/third_party/blink/renderer/modules/csspaint/background_color_paint_worklet_test.cc b/third_party/blink/renderer/modules/csspaint/background_color_paint_worklet_test.cc index 42e54cc..5091d6e5 100644 --- a/third_party/blink/renderer/modules/csspaint/background_color_paint_worklet_test.cc +++ b/third_party/blink/renderer/modules/csspaint/background_color_paint_worklet_test.cc
@@ -12,8 +12,10 @@ #include "third_party/blink/renderer/core/animation/keyframe_effect_model.h" #include "third_party/blink/renderer/core/animation/string_keyframe.h" #include "third_party/blink/renderer/core/animation/timing.h" +#include "third_party/blink/renderer/core/css/resolver/style_resolver.h" #include "third_party/blink/renderer/core/dom/element.h" #include "third_party/blink/renderer/core/frame/local_frame_view.h" +#include "third_party/blink/renderer/core/style/computed_style.h" #include "third_party/blink/renderer/core/testing/page_test_base.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/graphics/color.h" @@ -243,6 +245,146 @@ element, &animated_colors, &offsets, &progress)); } +// Test that style->CompositablePaintAnimationChanged() should be true in the +// case where we initially have one background-color animation, and then changed +// to have two background-color animation on the element. +TEST_F(BackgroundColorPaintWorkletTest, + TriggerRepaintCompositedToNonComposited) { + ScopedCompositeBGColorAnimationForTest composite_bgcolor_animation(true); + SetBodyInnerHTML(R"HTML( + <div id ="target" style="width: 100px; height: 100px"> + </div> + )HTML"); + + Timing timing; + timing.iteration_duration = AnimationTimeDelta::FromSecondsD(30); + + CSSPropertyID property_id = CSSPropertyID::kBackgroundColor; + Persistent<StringKeyframe> start_keyframe = + MakeGarbageCollected<StringKeyframe>(); + start_keyframe->SetCSSPropertyValue( + property_id, "red", SecureContextMode::kInsecureContext, nullptr); + Persistent<StringKeyframe> end_keyframe = + MakeGarbageCollected<StringKeyframe>(); + end_keyframe->SetCSSPropertyValue( + property_id, "green", SecureContextMode::kInsecureContext, nullptr); + + StringKeyframeVector keyframes; + keyframes.push_back(start_keyframe); + keyframes.push_back(end_keyframe); + auto* model1 = MakeGarbageCollected<StringKeyframeEffectModel>(keyframes); + + Element* element = GetElementById("target"); + ComputedStyle* style = GetDocument().GetStyleResolver().ResolveStyle( + element, StyleRecalcContext()); + EXPECT_FALSE(style->HasCurrentBackgroundColorAnimation()); + + NonThrowableExceptionState exception_state; + DocumentTimeline* timeline = + MakeGarbageCollected<DocumentTimeline>(&GetDocument()); + Animation* animation1 = Animation::Create( + MakeGarbageCollected<KeyframeEffect>(element, model1, timing), timeline, + exception_state); + animation1->play(); + ASSERT_TRUE(element->GetElementAnimations()); + EXPECT_EQ(element->GetElementAnimations()->Animations().size(), 1u); + element->GetElementAnimations()->UpdateAnimationFlags(*style); + // Previously no background-color animation, now it has. This should trigger + // a repaint, see ComputedStyle::UpdatePropertySpecificDifferences(). + EXPECT_TRUE(style->HasCurrentBackgroundColorAnimation()); + style->ResetHasCurrentBackgroundColorAnimation(); + style->ResetCompositablePaintAnimationChanged(); + + start_keyframe->SetCSSPropertyValue( + property_id, "blue", SecureContextMode::kInsecureContext, nullptr); + end_keyframe->SetCSSPropertyValue( + property_id, "yellow", SecureContextMode::kInsecureContext, nullptr); + keyframes.clear(); + keyframes.push_back(start_keyframe); + keyframes.push_back(end_keyframe); + auto* model2 = MakeGarbageCollected<StringKeyframeEffectModel>(keyframes); + Animation* animation2 = Animation::Create( + MakeGarbageCollected<KeyframeEffect>(element, model2, timing), timeline, + exception_state); + animation1->play(); + animation2->play(); + + ASSERT_TRUE(element->GetElementAnimations()); + EXPECT_EQ(element->GetElementAnimations()->Animations().size(), 2u); + element->GetElementAnimations()->UpdateAnimationFlags(*style); + EXPECT_TRUE(style->HasCurrentBackgroundColorAnimation()); + // CompositablePaintAnimationChanged() being true will trigger a repaint. See + // ComputedStyle::UpdatePropertySpecificDifferences(). + EXPECT_TRUE(style->CompositablePaintAnimationChanged()); +} + +// Test that style->CompositablePaintAnimationChanged() should be true in the +// case where we initially have one background-color animation, and then we +// changed one of the animation's keyframes. +TEST_F(BackgroundColorPaintWorkletTest, TriggerRepaintChangedKeyframe) { + ScopedCompositeBGColorAnimationForTest composite_bgcolor_animation(true); + SetBodyInnerHTML(R"HTML( + <div id ="target" style="width: 100px; height: 100px"> + </div> + )HTML"); + + Timing timing; + timing.iteration_duration = AnimationTimeDelta::FromSecondsD(30); + + CSSPropertyID property_id = CSSPropertyID::kBackgroundColor; + Persistent<StringKeyframe> start_keyframe = + MakeGarbageCollected<StringKeyframe>(); + start_keyframe->SetCSSPropertyValue( + property_id, "red", SecureContextMode::kInsecureContext, nullptr); + Persistent<StringKeyframe> end_keyframe = + MakeGarbageCollected<StringKeyframe>(); + end_keyframe->SetCSSPropertyValue( + property_id, "green", SecureContextMode::kInsecureContext, nullptr); + + StringKeyframeVector keyframes; + keyframes.push_back(start_keyframe); + keyframes.push_back(end_keyframe); + auto* model = MakeGarbageCollected<StringKeyframeEffectModel>(keyframes); + + Element* element = GetElementById("target"); + ComputedStyle* style = GetDocument().GetStyleResolver().ResolveStyle( + element, StyleRecalcContext()); + EXPECT_FALSE(style->HasCurrentBackgroundColorAnimation()); + + NonThrowableExceptionState exception_state; + DocumentTimeline* timeline = + MakeGarbageCollected<DocumentTimeline>(&GetDocument()); + Animation* animation = Animation::Create( + MakeGarbageCollected<KeyframeEffect>(element, model, timing), timeline, + exception_state); + animation->play(); + ASSERT_TRUE(element->GetElementAnimations()); + EXPECT_EQ(element->GetElementAnimations()->Animations().size(), 1u); + element->GetElementAnimations()->UpdateAnimationFlags(*style); + // Previously no background-color animation, now it has. This should trigger + // a repaint, see ComputedStyle::UpdatePropertySpecificDifferences(). + EXPECT_TRUE(style->HasCurrentBackgroundColorAnimation()); + style->ResetHasCurrentBackgroundColorAnimation(); + style->ResetCompositablePaintAnimationChanged(); + + start_keyframe->SetCSSPropertyValue( + property_id, "red", SecureContextMode::kInsecureContext, nullptr); + end_keyframe->SetCSSPropertyValue( + property_id, "yellow", SecureContextMode::kInsecureContext, nullptr); + keyframes.clear(); + keyframes.push_back(start_keyframe); + keyframes.push_back(end_keyframe); + animation->play(); + + ASSERT_TRUE(element->GetElementAnimations()); + EXPECT_EQ(element->GetElementAnimations()->Animations().size(), 1u); + element->GetElementAnimations()->UpdateAnimationFlags(*style); + EXPECT_TRUE(style->HasCurrentBackgroundColorAnimation()); + // CompositablePaintAnimationChanged() being true will trigger a repaint. See + // ComputedStyle::UpdatePropertySpecificDifferences(). + EXPECT_TRUE(style->CompositablePaintAnimationChanged()); +} + // Test that calling BackgroundColorPaintWorkletProxyClient::Paint won't crash // when the animated property value is empty. TEST_F(BackgroundColorPaintWorkletTest, ProxyClientPaintWithNoPropertyValue) {
diff --git a/third_party/blink/renderer/platform/disk_data_allocator.cc b/third_party/blink/renderer/platform/disk_data_allocator.cc index ae2a1da0..abcd7fa6 100644 --- a/third_party/blink/renderer/platform/disk_data_allocator.cc +++ b/third_party/blink/renderer/platform/disk_data_allocator.cc
@@ -200,7 +200,7 @@ // static DiskDataAllocator& DiskDataAllocator::Instance() { - DEFINE_STATIC_LOCAL(DiskDataAllocator, instance, ()); + DEFINE_THREAD_SAFE_STATIC_LOCAL(DiskDataAllocator, instance, ()); return instance; }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 4949d9c7..ce2e1d37 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2015,6 +2015,10 @@ status: "stable", }, { + name: "TextFragmentTapOpensContextMenu", + status: {"Android": "stable"}, + }, + { name: "ThirdPartyOriginTrials", status: "stable", },
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests index 0228aee..b03835a 100644 --- a/third_party/blink/web_tests/SlowTests +++ b/third_party/blink/web_tests/SlowTests
@@ -164,6 +164,7 @@ crbug.com/1074122 http/tests/serviceworker/webexposed/global-interface-listing-service-worker.html [ Slow ] # SwiftShader slow tests +crbug.com/726075 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow.html [ Slow ] crbug.com/726075 [ Win ] css3/filters/effect-reference-zoom-hw.html [ Slow ] crbug.com/726075 [ Linux ] css3/filters/effect-reference-zoom-hw.html [ Slow ] crbug.com/726075 [ Mac ] css3/filters/effect-reference-zoom-hw.html [ Slow ] @@ -752,15 +753,20 @@ crbug.com/1195814 [ Mac11.0 ] external/wpt/file-system-access/local_FileSystemBaseHandle-IndexedDB-manual.https.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/fire-error-event-exception.html [ Slow ] +crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/get-databases.any.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/get-databases.any.worker.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idb-explicit-commit.any.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idb-explicit-commit.any.worker.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbindex_getAll.html [ Slow ] +crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbindex_getAllKeys.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbindex-query-exception-order.html [ Slow ] +crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbindex-rename-errors.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbindex_tombstones.any.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbindex_tombstones.any.worker.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbobjectstore_putall.tentative.any.html [ Slow ] +crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbobjectstore_putall.tentative.any.worker.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/idbtransaction_objectStoreNames.html [ Slow ] +crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/keygenerator-explicit.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes.any.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes.any.serviceworker.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes.any.sharedworker.html [ Slow ] @@ -770,3 +776,4 @@ crbug.com/1195814 [ Mac11.0 ] external/wpt/IndexedDB/keypath-special-identifiers.htm [ Slow ] crbug.com/1195814 [ Mac11.0 ] storage/indexeddb/dispatch-events.html [ Slow ] crbug.com/1195814 [ Mac11.0 ] storage/indexeddb/key-generator.html [ Slow ] +crbug.com/1195814 [ Mac11.0 ] storage/indexeddb/odd-strings.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 5aeaf49..429303e 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -2522,17 +2522,11 @@ crbug.com/958381 [ Mac ] external/wpt/css/CSS2/tables/table-anonymous-objects-206.xht [ Failure ] # ====== New tests from wpt-importer added here ====== -crbug.com/626703 [ Linux ] external/wpt/uievents/idlharness.window.html [ Crash Failure ] -crbug.com/626703 [ Mac10.14 ] external/wpt/html/dom/idlharness.https.html?exclude=(Document|Window|HTML.\*) [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/content-security-policy/securitypolicyviolation/source-file-data-scheme.html [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/idlharness.https.window.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/Create-blocked-port.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.html?wss [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/basic-auth.any.worker.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/stream/tentative/backpressure-send.any.serviceworker.html?wpt_flags=h2 [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/shared_array_buffer_on_desktop/external/wpt/xhr/idlharness.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-sizing/aspect-ratio/grid-aspect-ratio-020.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/service-workers/service-worker/fetch-event.https.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Close-2999-reason.any.worker.html?wpt_flags=h2 [ Failure Timeout ] @@ -2541,9 +2535,7 @@ crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-binary-65K-arraybuffer.any.worker.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-binary-arraybufferview-uint8-offset.any.worker.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/worklets/paint-worklet-credentials.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] external/wpt/xhr/idlharness.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] inspector-protocol/debugger/wasm-streaming-url.js [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/shared_array_buffer_on_desktop/external/wpt/xhr/idlharness.any.sharedworker.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/css/css-images/image-set/image-set-parsing.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/dom/xslt/transformToFragment.tentative.window.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/editing/other/editing-around-select-element.tentative.html?insertText [ Failure Timeout ] @@ -2556,25 +2548,18 @@ crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/script-write-twice-transform.https.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/sframe-transform-buffer-source.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/basic-auth.any.sharedworker.html?wpt_flags=h2 [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] external/wpt/webusb/idlharness.https.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/webvtt/api/VTTCue/constructor.html [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/plz-dedicated-worker/external/wpt/xhr/idlharness.any.sharedworker.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] virtual/synchronous_html_parser/external/wpt/dom/xslt/transformToFragment.tentative.window.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-paint-api/idlharness.html [ Failure ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-1000-reason.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-1000-verify-code.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-1005-verify-code.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-1005.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-Reason-124Bytes.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Send-data.any.worker.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.14 ] external/wpt/html/dom/idlharness.https.html?include=(Document|Window) [ Failure ] -crbug.com/626703 [ Mac10.14 ] external/wpt/mst-content-hint/idlharness.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-binary-arraybufferview-float32.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-binary-arraybufferview-uint16-offset-length.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-binary-arraybufferview-uint8-offset.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/binaryType-wrong-value.any.worker.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/Close-Reason-124Bytes.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/stream/tentative/backpressure-send.any.worker.html?wpt_flags=h2 [ Failure Crash ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/Close-1005.any.worker.html?wpt_flags=h2 [ Timeout ] @@ -2587,10 +2572,6 @@ crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/Close-undefined.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/stream/tentative/backpressure-send.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/stream/tentative/backpressure-receive.any.html?wpt_flags=h2 [ Pass Failure ] -crbug.com/626703 [ Mac10.14 ] external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] external/wpt/badging/idlharness.https.any.worker.html [ Timeout Failure ] -crbug.com/626703 [ Mac10.14 ] external/wpt/dom/idlharness.window.html?exclude=Node [ Timeout Failure ] -crbug.com/626703 [ Mac10.14 ] external/wpt/media-source/idlharness.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Close-1005-verify-code.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Close-2999-reason.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-0byte-data.any.worker.html?wpt_flags=h2 [ Timeout ] @@ -2602,49 +2583,23 @@ crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/Create-valid-url-protocol.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/worklets/audio-worklet-credentials.https.html [ Failure Crash ] crbug.com/626703 [ Win10 ] external/wpt/worklets/audio-worklet-credentials.https.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.sharedworker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.sharedworker.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Win ] external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html [ Failure Timeout ] crbug.com/626703 [ Win10 ] external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/badging/idlharness.https.any.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/badging/idlharness.https.any.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Win ] external/wpt/websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/media-source/idlharness.window.html [ Failure Timeout ] -crbug.com/626703 [ Win ] external/wpt/media-source/idlharness.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/Create-url-with-space.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Win10 ] external/wpt/websockets/Create-url-with-space.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Win ] external/wpt/websockets/stream/tentative/backpressure-send.any.html?wpt_flags=h2 [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/storage/idlharness.https.any.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/storage/idlharness.https.any.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/svg/idlharness.window.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/svg/idlharness.window.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html?wss [ Failure Timeout ] crbug.com/626703 [ Win10 ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html?wss [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/basic-auth.any.sharedworker.html?wpt_flags=h2 [ Failure Crash Timeout ] crbug.com/626703 [ Win10 ] external/wpt/websockets/basic-auth.any.sharedworker.html?wpt_flags=h2 [ Failure Crash Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/touch-events/idlharness.window.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/touch-events/idlharness.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/stream/tentative/abort.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Win10 ] external/wpt/websockets/stream/tentative/abort.any.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/webrtc-encoded-transform/script-metadata-transform.https.html [ Failure Timeout ] crbug.com/626703 [ Win10 ] external/wpt/webrtc-encoded-transform/script-metadata-transform.https.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/fetch/api/basic/request-upload.any.serviceworker.html [ Failure Crash Timeout ] crbug.com/626703 [ Win10 ] external/wpt/fetch/api/basic/request-upload.any.serviceworker.html [ Failure Crash Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/editing/other/editing-around-select-element.tentative.html?insertText [ Failure Crash Timeout ] crbug.com/626703 [ Win10 ] external/wpt/editing/other/editing-around-select-element.tentative.html?insertText [ Failure Crash Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/fetch/api/basic/request-upload.any.html [ Failure Crash ] @@ -2655,41 +2610,16 @@ crbug.com/626703 [ Win ] external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/html/browsers/sandboxing/window-open-blank-from-different-initiator.html [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/html/browsers/sandboxing/window-open-blank-from-different-initiator.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/origin-policy/idlharness.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/origin-policy/idlharness.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/storage/idlharness.https.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/storage/idlharness.https.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-reason-unpaired-surrogates.any.worker.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.html [ Failure Crash ] -crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Send-binary-blob.any.worker.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/ua-client-hints/idlharness.https.any.html [ Failure Crash Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/ua-client-hints/idlharness.https.any.html [ Failure Crash Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/fetch/api/basic/request-upload.any.sharedworker.html [ Failure Timeout ] crbug.com/626703 [ Win10 ] external/wpt/fetch/api/basic/request-upload.any.sharedworker.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.serviceworker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.serviceworker.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/input-device-capabilities/idlharness.window.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/input-device-capabilities/idlharness.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Create-valid-url-protocol.any.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.serviceworker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.serviceworker.html [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/mediacapture-image/MediaStreamTrack-getConstraints.https.html [ Failure Crash Timeout ] crbug.com/626703 [ Win10 ] external/wpt/mediacapture-image/MediaStreamTrack-getConstraints.https.html [ Failure Crash Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/webrtc-identity/idlharness.https.window.html [ Failure Crash Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/webrtc-identity/idlharness.https.window.html [ Failure Crash Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/fetch/api/idlharness.any.worker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/fetch/api/idlharness.any.worker.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/periodic-background-sync/idlharness.https.any.html [ Failure Crash ] -crbug.com/626703 [ Win ] external/wpt/periodic-background-sync/idlharness.https.any.html [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/webvtt/api/VTTCue/constructor.html [ Failure Crash ] crbug.com/626703 [ Win10 ] external/wpt/webvtt/api/VTTCue/constructor.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] virtual/plz-dedicated-worker/external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/plz-dedicated-worker/external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/worklets/layout-worklet-credentials.https.html [ Failure Crash Timeout ] crbug.com/626703 [ Win10 ] external/wpt/worklets/layout-worklet-credentials.https.html [ Failure Crash Timeout ] -crbug.com/626703 [ Mac ] virtual/threaded-prefer-compositing/external/wpt/css/cssom-view/idlharness.html [ Pass Failure Crash ] -crbug.com/626703 [ Win10 ] virtual/threaded-prefer-compositing/external/wpt/css/cssom-view/idlharness.html [ Failure Crash ] crbug.com/626703 [ Mac ] external/wpt/websockets/Close-4999-reason.any.html?wpt_flags=h2 [ Pass Timeout ] crbug.com/626703 [ Mac ] external/wpt/websockets/Send-binary-arraybufferview-float64.any.worker.html?wpt_flags=h2 [ Pass Timeout ] crbug.com/626703 [ Win ] external/wpt/websockets/Send-binary-arraybufferview-float64.any.worker.html?wpt_flags=h2 [ Timeout ] @@ -2697,13 +2627,9 @@ crbug.com/626703 [ Win ] external/wpt/websockets/Send-binary-arraybufferview-int8.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/dom/xslt/transformToFragment.tentative.window.html [ Failure Crash ] crbug.com/626703 [ Win10 ] external/wpt/dom/xslt/transformToFragment.tentative.window.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/badging/idlharness.https.any.worker.html [ Failure Crash ] -crbug.com/626703 [ Win10 ] external/wpt/badging/idlharness.https.any.worker.html [ Failure Crash ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Close-1000-verify-code.any.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/restrict-gamepad/external/wpt/gamepad/idlharness.https.window.html [ Failure Crash ] crbug.com/626703 external/wpt/webrtc-encoded-transform/script-transform.https.html [ Pass Failure Crash Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/shadow-dom/accesskey.tentative.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/synchronous_html_parser/external/wpt/dom/idlharness.any.serviceworker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Create-valid-url-binaryType-blob.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/websockets/stream/tentative/backpressure-send.any.sharedworker.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Close-readyState-Closing.any.worker.html?wpt_flags=h2 [ Timeout ] @@ -2715,9 +2641,7 @@ crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/html/cross-origin-embedder-policy/shared-workers.html [ Failure Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Send-binary-arraybufferview-int16-offset.any.worker.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/dom/idlharness.window.html?exclude=Node [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/url/url-constructor.any.worker.html [ Failure Crash ] -crbug.com/626703 [ Mac10.15 ] external/wpt/webxr/idlharness.https.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Create-valid-url-array-protocols.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/webrtc-encoded-transform/sframe-keys.https.html [ Failure Timeout ] crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Send-0byte-data.any.html?wpt_flags=h2 [ Timeout ] @@ -2728,15 +2652,12 @@ crbug.com/626703 [ Mac10.13 ] external/wpt/websockets/Close-1000.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-binary-blob.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/uievents/idlharness.window.html [ Failure Crash ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-unpaired-surrogates.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Create-valid-url-protocol-string.any.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.12 ] external/wpt/websockets/Send-unicode-data.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Mac10.15 ] virtual/plz-dedicated-worker/external/wpt/service-workers/service-worker/xhr-content-length.https.window.html [ Failure Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/Create-url-with-space.any.worker.html?wpt_flags=h2 [ Failure Crash ] crbug.com/626703 [ Mac10.12 ] external/wpt/websockets/Send-unpaired-surrogates.any.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/dom/idlharness.any.worker.html [ Failure Crash ] crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-sizing/aspect-ratio/grid-aspect-ratio-018.html [ Failure ] crbug.com/626703 [ Mac10.15 ] virtual/plz-dedicated-worker/external/wpt/service-workers/service-worker/no-dynamic-import-in-module.any.serviceworker-module.html [ Failure Crash ] crbug.com/626703 [ Mac10.14 ] external/wpt/websockets/Send-data.any.html?wpt_flags=h2 [ Timeout ] @@ -3348,7 +3269,6 @@ crbug.com/626703 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-abspos-staticpos-align-self-safe-001.html [ Failure ] crbug.com/626703 external/wpt/editing/other/typing-around-link-element-at-non-collapsed-selection.tentative.html?target=ContentEditable [ Failure Timeout ] crbug.com/626703 external/wpt/editing/other/typing-around-link-element-at-collapsed-selection.tentative.html?target=ContentEditable&parent=b&child=i [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/FileAPI/idlharness.worker.html [ Timeout ] crbug.com/626703 external/wpt/html/interaction/focus/document-level-focus-apis/document-has-system-focus.html [ Timeout ] crbug.com/626703 [ Mac11.0 ] virtual/threaded/external/wpt/animation-worklet/worklet-animation-set-keyframes.https.html [ Failure ] crbug.com/626703 external/wpt/mediacapture-record/MediaRecorder-peerconnection-no-sink.https.html [ Timeout ] @@ -3654,36 +3574,16 @@ crbug.com/626703 [ Linux ] external/wpt/css/css-color/color-function-parsing.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/css/css-fonts/animations/font-stretch-interpolation.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/css/css-text/text-justify/distribute-alias.tentative.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/css-typed-om/idlharness.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/cssom-view/idlharness.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/cssom/idlharness.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/dom/idlharness.any.serviceworker.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/dom/idlharness.window.html?exclude=Node [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/gamepad/idlharness.https.window.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/html/dom/idlharness.https.html?exclude=(Document|Window|HTML.\*) [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/html/dom/idlharness.https.html?include=(Document|Window) [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/html/dom/idlharness.https.html?include=HTML.* [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/html/dom/idlharness.worker.html [ Failure ] crbug.com/1167095 [ Linux ] external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/html/semantics/forms/form-submission-0/text-plain.window.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/input-device-capabilities/idlharness.window.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/media-source/idlharness.window.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/mst-content-hint/idlharness.window.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/periodic-background-sync/idlharness.https.any.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/periodic-background-sync/idlharness.https.any.worker.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/service-workers/service-worker/fetch-event.https.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/svg/idlharness.window.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/touch-events/idlharness.window.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/url/a-element-xhtml.xhtml [ Failure ] crbug.com/626703 [ Linux ] external/wpt/url/a-element.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/url/url-constructor.any.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/url/url-constructor.any.worker.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/wasm/jsapi/idlharness.any.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/wasm/jsapi/idlharness.any.worker.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html?wpt_flags=h2 [ Failure ] crbug.com/626703 [ Linux ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/websockets/stream/tentative/abort.any.sharedworker.html?wpt_flags=h2 [ Failure ] @@ -3691,35 +3591,138 @@ crbug.com/626703 [ Linux ] external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html?wpt_flags=h2 [ Failure ] crbug.com/626703 [ Linux ] external/wpt/websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [ Failure ] crbug.com/626703 [ Linux ] external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/webxr/idlharness.https.window.html [ Failure ] crbug.com/626703 [ Linux ] virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/parsing/background-image-computed.sub.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure ] crbug.com/626703 [ Linux ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ] crbug.com/626703 [ Linux ] virtual/plz-dedicated-worker/external/wpt/service-workers/service-worker/fetch-event.https.html [ Failure ] crbug.com/626703 [ Linux ] virtual/plz-service-worker/external/wpt/service-workers/service-worker/fetch-event.https.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/restrict-gamepad/external/wpt/gamepad/idlharness.https.window.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.window.html?exclude=Node [ Failure ] -crbug.com/626703 [ Linux ] virtual/synchronous_html_parser/external/wpt/dom/idlharness.window.html?exclude=Node [ Failure ] crbug.com/626703 [ Linux ] virtual/system-color-compute/external/wpt/css/css-color/color-function-parsing.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/threaded-prefer-compositing/external/wpt/css/cssom-view/idlharness.html [ Failure ] crbug.com/626703 [ Mac ] external/wpt/css/css-color/color-function-parsing.html [ Failure ] -crbug.com/626703 [ Mac ] external/wpt/css/cssom/idlharness.html [ Failure ] -crbug.com/626703 [ Mac ] external/wpt/periodic-background-sync/idlharness.https.any.worker.html [ Failure ] crbug.com/626703 [ Mac ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ] crbug.com/626703 [ Mac ] external/wpt/websockets/Create-blocked-port.any.worker.html?wpt_flags=h2 [ Failure ] crbug.com/626703 [ Mac ] virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html [ Pass Failure ] crbug.com/626703 [ Win ] virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html [ Pass Failure ] crbug.com/626703 [ Win ] external/wpt/css/css-fonts/animations/font-stretch-interpolation.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/dom/idlharness.any.serviceworker.html [ Failure ] crbug.com/1167095 [ Win ] external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.html [ Failure ] crbug.com/626703 [ Win ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/wasm/jsapi/idlharness.any.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/wasm/jsapi/idlharness.any.worker.html [ Failure ] crbug.com/626703 [ Win ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html?wpt_flags=h2 [ Failure ] crbug.com/626703 [ Win ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ] crbug.com/626703 [ Win ] external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html?wpt_flags=h2 [ Failure ] crbug.com/626703 [ Win ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ] +# crbug.com/1203344 idlharness failures: +crbug.com/1203344 [ Mac10.15 ] external/wpt/dom/idlharness.window.html?exclude=Node [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/webxr/idlharness.https.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/uievents/idlharness.window.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/dom/idlharness.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.13 ] external/wpt/FileAPI/idlharness.worker.html [ Timeout ] +crbug.com/1203344 [ Mac11.0 ] external/wpt/webusb/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/xhr/idlharness.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Linux ] external/wpt/uievents/idlharness.window.html [ Crash Failure ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/html/dom/idlharness.https.html?exclude=(Document|Window|HTML.\*) [ Failure Timeout ] +crbug.com/1203344 [ Mac11.0 ] external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/idlharness.https.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac11.0 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac11.0 ] virtual/shared_array_buffer_on_desktop/external/wpt/xhr/idlharness.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.14 ] virtual/shared_array_buffer_on_desktop/external/wpt/xhr/idlharness.any.sharedworker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac11.0 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac11.0 ] virtual/plz-dedicated-worker/external/wpt/xhr/idlharness.any.sharedworker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.13 ] external/wpt/css/css-paint-api/idlharness.html [ Failure ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/html/dom/idlharness.https.html?include=(Document|Window) [ Failure ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/mst-content-hint/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.14 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/badging/idlharness.https.any.worker.html [ Timeout Failure ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/dom/idlharness.window.html?exclude=Node [ Timeout Failure ] +crbug.com/1203344 [ Mac10.14 ] external/wpt/media-source/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.sharedworker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.sharedworker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Win ] external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure Timeout ] +crbug.com/1203344 [ Win10 ] virtual/plz-dedicated-worker/external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/badging/idlharness.https.any.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/badging/idlharness.https.any.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Win10 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/media-source/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Win ] external/wpt/media-source/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/storage/idlharness.https.any.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/storage/idlharness.https.any.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/svg/idlharness.window.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/svg/idlharness.window.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/touch-events/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Win10 ] external/wpt/touch-events/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/origin-policy/idlharness.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Win10 ] external/wpt/origin-policy/idlharness.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/storage/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Win10 ] external/wpt/storage/idlharness.https.any.worker.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/threaded/external/wpt/animation-worklet/idlharness.any.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.13 ] external/wpt/websockets/Send-binary-blob.any.worker.html?wpt_flags=h2 [ Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/ua-client-hints/idlharness.https.any.html [ Failure Crash Timeout ] +crbug.com/1203344 [ Win10 ] external/wpt/ua-client-hints/idlharness.https.any.html [ Failure Crash Timeout ] +crbug.com/1203344 [ Mac10.15 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/plz-service-worker/external/wpt/service-workers/idlharness.https.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/input-device-capabilities/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Win10 ] external/wpt/input-device-capabilities/idlharness.window.html [ Failure Timeout ] +crbug.com/1203344 [ Mac10.15 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/webrtc-identity/idlharness.https.window.html [ Failure Crash Timeout ] +crbug.com/1203344 [ Win10 ] external/wpt/webrtc-identity/idlharness.https.window.html [ Failure Crash Timeout ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/fetch/api/idlharness.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/fetch/api/idlharness.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/periodic-background-sync/idlharness.https.any.html [ Failure Crash ] +crbug.com/1203344 [ Win ] external/wpt/periodic-background-sync/idlharness.https.any.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/plz-dedicated-worker/external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/plz-dedicated-worker/external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Crash ] +crbug.com/1203344 [ Mac ] virtual/threaded-prefer-compositing/external/wpt/css/cssom-view/idlharness.html [ Pass Failure Crash ] +crbug.com/1203344 [ Win10 ] virtual/threaded-prefer-compositing/external/wpt/css/cssom-view/idlharness.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] external/wpt/badging/idlharness.https.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Win10 ] external/wpt/badging/idlharness.https.any.worker.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/restrict-gamepad/external/wpt/gamepad/idlharness.https.window.html [ Failure Crash ] +crbug.com/1203344 [ Mac10.15 ] virtual/synchronous_html_parser/external/wpt/dom/idlharness.any.serviceworker.html [ Failure Timeout ] +crbug.com/1203344 [ Linux ] external/wpt/css/css-typed-om/idlharness.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/css/cssom-view/idlharness.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/css/cssom/idlharness.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/dom/idlharness.any.serviceworker.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/dom/idlharness.window.html?exclude=Node [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/gamepad/idlharness.https.window.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/html/dom/idlharness.https.html?exclude=(Document|Window|HTML.\*) [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/html/dom/idlharness.https.html?include=(Document|Window) [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/html/dom/idlharness.https.html?include=HTML.* [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/html/dom/idlharness.worker.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/input-device-capabilities/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/media-source/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/mst-content-hint/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/periodic-background-sync/idlharness.https.any.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/periodic-background-sync/idlharness.https.any.worker.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/svg/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/touch-events/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/wasm/jsapi/idlharness.any.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/wasm/jsapi/idlharness.any.worker.html [ Failure ] +crbug.com/1203344 [ Linux ] external/wpt/webxr/idlharness.https.window.html [ Failure ] +crbug.com/1203344 [ Linux ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure ] +crbug.com/1203344 [ Linux ] virtual/restrict-gamepad/external/wpt/gamepad/idlharness.https.window.html [ Failure ] +crbug.com/1203344 [ Linux ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/idlharness.window.html?exclude=Node [ Failure ] +crbug.com/1203344 [ Linux ] virtual/synchronous_html_parser/external/wpt/dom/idlharness.window.html?exclude=Node [ Failure ] +crbug.com/1203344 [ Linux ] virtual/threaded-prefer-compositing/external/wpt/css/cssom-view/idlharness.html [ Failure ] +crbug.com/1203344 [ Mac ] external/wpt/css/cssom/idlharness.html [ Failure ] +crbug.com/1203344 [ Mac ] external/wpt/periodic-background-sync/idlharness.https.any.worker.html [ Failure ] +crbug.com/1203344 [ Win ] external/wpt/dom/idlharness.any.serviceworker.html [ Failure ] +crbug.com/1203344 [ Win ] external/wpt/wasm/jsapi/idlharness.any.html [ Failure ] +crbug.com/1203344 [ Win ] external/wpt/wasm/jsapi/idlharness.any.worker.html [ Failure ] + + ### See crbug.com/891427 comment near the top of this file: crbug.com/626703 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-block-margins-2.html [ Failure ] crbug.com/767352 external/wpt/css/css-backgrounds/border-image-width-008.html [ Failure ] @@ -6897,7 +6900,6 @@ crbug.com/1149734 http/tests/devtools/sources/debugger-ui/inline-scope-variables.js [ Pass Failure Timeout ] #Sheriff 2020-11-24 -crbug.com/1152496 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-shadow.html [ Pass Timeout ] crbug.com/1087242 http/tests/inspector-protocol/service-worker/network-extrainfo-main-request.js [ Pass Failure Timeout Crash ] crbug.com/1149771 [ Linux ] virtual/android/fullscreen/video-scrolled-iframe.html [ Pass Timeout ] crbug.com/1152532 http/tests/devtools/service-workers/user-agent-override.js [ Pass Timeout ] @@ -7314,3 +7316,6 @@ # Sheriff 2021-04-26 crbug.com/1202722 [ Linux ] virtual/scroll-unification/fast/events/mouseenter-mouseleave-on-drag.html [ Pass Timeout ] + +# Sheriff 2021-04-27 +crbug.com/1203309 [ Linux ] http/tests/devtools/tracing/trace-event-self-time.js [ Pass Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html index 6edecba..653dee6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html
@@ -69,16 +69,16 @@ <body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })"> <div class="grid"> <div data-offset-x="25" data-offset-y="5" data-expected-width="10" data-expected-height="60" class="firstRowFirstColumn verticalLR">X XX X</div> - <div data-offset-x="210" data-offset-y="65" data-expected-width="30" data-expected-height="70" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div> + <div data-offset-x="200" data-offset-y="65" data-expected-width="30" data-expected-height="70" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div> <div data-offset-x="20" data-offset-y="165" data-expected-width="60" data-expected-height="10" class="secondRowFirstColumn RTL">X XX X</div> <div data-offset-x="125" data-offset-y="165" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div> </div> <div class="grid RTL"> <div data-offset-x="175" data-offset-y="5" data-expected-width="10" data-expected-height="60" class="firstRowFirstColumn verticalLR">X XX X</div> - <div data-offset-x="110" data-offset-y="65" data-expected-width="30" data-expected-height="70" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div> + <div data-offset-x="100" data-offset-y="65" data-expected-width="30" data-expected-height="70" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div> <div data-offset-x="180" data-offset-y="165" data-expected-width="60" data-expected-height="10" class="secondRowFirstColumn LTR">X XX X</div> - <div data-offset-x="35" data-offset-y="165" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div> + <div data-offset-x="25" data-offset-y="165" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div> </div> <br><br> @@ -91,9 +91,9 @@ </div> <div class="grid verticalRL"> - <div data-offset-x="135" data-offset-y="75" data-expected-width="60" data-expected-height="10" class="firstRowFirstColumn horizontal">X XX X</div> - <div data-offset-x="170" data-offset-y="155" data-expected-width="70" data-expected-height="30" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div> + <div data-offset-x="125" data-offset-y="75" data-expected-width="60" data-expected-height="10" class="firstRowFirstColumn horizontal">X XX X</div> + <div data-offset-x="160" data-offset-y="155" data-expected-width="70" data-expected-height="30" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div> <div data-offset-x="25" data-offset-y="15" data-expected-width="60" data-expected-height="10" class="secondRowFirstColumn horizontal RTL">X XX X</div> - <div data-offset-x="35" data-offset-y="115" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div> + <div data-offset-x="25" data-offset-y="115" data-expected-width="40" data-expected-height="60" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div> </div> </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt deleted file mode 100644 index edc37248..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt +++ /dev/null
@@ -1,28 +0,0 @@ -This is a testharness.js-based test. -FAIL .grid 1 assert_equals: -<div class="grid"> - <div data-offset-x="13" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div> - <div data-offset-x="190" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div> - <div data-offset-x="8" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div> - <div data-offset-x="113" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div> -</div> -offsetLeft expected 190 but got 194 -FAIL .grid 2 assert_equals: -<div class="grid RTL"> - <div data-offset-x="163" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div> - <div data-offset-x="90" data-offset-y="64" data-expected-width="46" data-expected-height="80" class="firstRowSecondColumn verticalRL">XX X<br>X XXX X<br>XX XXX</div> - <div data-offset-x="170" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div> - <div data-offset-x="13" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div> -</div> -offsetLeft expected 90 but got 94 -PASS .grid 3 -FAIL .grid 4 assert_equals: -<div class="grid verticalRL"> - <div data-offset-x="113" data-offset-y="74" data-expected-width="76" data-expected-height="20" class="firstRowFirstColumn horizontal">X XX X</div> - <div data-offset-x="150" data-offset-y="153" data-expected-width="86" data-expected-height="40" class="firstRowSecondColumn horizontal">XX X<br>X XXX X<br>XX XXX</div> - <div data-offset-x="14" data-offset-y="12" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div> - <div data-offset-x="13" data-offset-y="112" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div> -</div> -offsetLeft expected 113 but got 117 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt index 34a027a..962bbca 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt
@@ -6,7 +6,7 @@ <div data-offset-x="8" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn RTL">X XX X</div> <div data-offset-x="113" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR RTL">XX X<br>X XXX<br>X<br>XX XXX</div> </div> -offsetLeft expected 190 but got 210 +offsetLeft expected 190 but got 206 FAIL .grid 2 assert_equals: <div class="grid RTL"> <div data-offset-x="163" data-offset-y="2" data-expected-width="26" data-expected-height="70" class="firstRowFirstColumn verticalLR">X XX X</div> @@ -14,7 +14,7 @@ <div data-offset-x="170" data-offset-y="162" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn LTR">X XX X</div> <div data-offset-x="13" data-offset-y="162" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalRL RTL">XX X<br>X XXX<br>X<br>XX XXX</div> </div> -offsetLeft expected 90 but got 110 +offsetLeft expected 90 but got 106 PASS .grid 3 FAIL .grid 4 assert_equals: <div class="grid verticalRL"> @@ -23,6 +23,6 @@ <div data-offset-x="14" data-offset-y="12" data-expected-width="76" data-expected-height="20" class="secondRowFirstColumn horizontal RTL">X XX X</div> <div data-offset-x="13" data-offset-y="112" data-expected-width="56" data-expected-height="70" class="secondRowSecondColumn verticalLR">XX X<br>X XXX<br>X<br>XX XXX</div> </div> -offsetLeft expected 113 but got 101 +offsetLeft expected 113 but got 97 Harness: the test ran to completion.
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 96adfd2..9b17f1c 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -522,6 +522,7 @@ 'linux-gcc-rel': 'release_bot_x86_minimal_symbols_no_clang_cxx11', 'linux-ozone-rel': 'ozone_linux_release_bot', 'linux-trusty-rel': 'gpu_tests_release_bot', + 'linux-xenial-rel': 'gpu_tests_release_bot', }, 'chromium.mac': { @@ -1019,6 +1020,7 @@ 'linux-perfetto-rel': 'perfetto_release_trybot', 'linux-rel': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange_code_coverage', 'linux-rel-dual-coverage': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange_code_coverage', + 'linux-rel-orchestrator': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange', 'linux-rel-reclient': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange_code_coverage_reclient', 'linux-rel-rts': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange_code_coverage', 'linux-trusty-rel': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange', @@ -1027,6 +1029,7 @@ 'linux-wpt-identity-fyi-rel': 'release_trybot', 'linux-wpt-input-fyi-rel': 'release_trybot', 'linux-webkit-msan-rel': 'msan_release_bot', + 'linux-xenial-rel': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange_code_coverage', 'linux_chromium_archive_rel_ng': 'release_bot', 'linux_chromium_asan_rel_ng': 'asan_lsan_release_trybot', # TODO(crbug.com/1200574): Remove after migration. @@ -2799,7 +2802,7 @@ }, 'amd64-lacros': { - 'gn_args': 'use_ozone=true ozone_platform_wayland=true ozone_platform_x11=false target_os="chromeos" use_evdev_gestures=false use_vaapi=true use_gtk=false use_glib=false enable_linux_installer=false rtc_use_pipewire=false use_gio=false use_v8_context_snapshot=false use_custom_libcxx=false use_pulseaudio=false use_pangocairo=false chromeos_is_browser_only=true use_system_libsync=false cros_host_sysroot="//build/linux/debian_sid_amd64-sysroot" cros_v8_snapshot_sysroot="//build/linux/debian_sid_amd64-sysroot" use_custom_libcxx_for_host=true' + 'gn_args': 'use_ozone=true ozone_platform_wayland=true ozone_platform_x11=false target_os="chromeos" use_evdev_gestures=false use_vaapi=false use_gtk=false use_glib=false enable_linux_installer=false rtc_use_pipewire=false use_gio=false use_v8_context_snapshot=false use_custom_libcxx=false use_pulseaudio=false use_pangocairo=false chromeos_is_browser_only=true use_system_libsync=false cros_host_sysroot="//build/linux/debian_sid_amd64-sysroot" cros_v8_snapshot_sysroot="//build/linux/debian_sid_amd64-sysroot" use_custom_libcxx_for_host=true' }, # We build Android with codecs on most bots to ensure maximum test
diff --git a/tools/mb/mb_config_expectations/chrome.json b/tools/mb/mb_config_expectations/chrome.json index 3735f39..fc45870 100644 --- a/tools/mb/mb_config_expectations/chrome.json +++ b/tools/mb/mb_config_expectations/chrome.json
@@ -227,7 +227,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-chrome": {
diff --git a/tools/mb/mb_config_expectations/chromium.chromiumos.json b/tools/mb/mb_config_expectations/chromium.chromiumos.json index 12b5a65b..5d034864 100644 --- a/tools/mb/mb_config_expectations/chromium.chromiumos.json +++ b/tools/mb/mb_config_expectations/chromium.chromiumos.json
@@ -64,7 +64,7 @@ "use_pulseaudio": false, "use_system_libsync": false, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "chromeos-amd64-generic-rel": { @@ -126,7 +126,7 @@ "use_pulseaudio": false, "use_system_libsync": false, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "lacros-amd64-generic-rel": { @@ -154,7 +154,7 @@ "use_pulseaudio": false, "use_system_libsync": false, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-ash-chromium-generator-rel": {
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json index a6b66814..4442eb0c 100644 --- a/tools/mb/mb_config_expectations/chromium.fyi.json +++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -632,7 +632,7 @@ "use_pulseaudio": false, "use_system_libsync": false, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-annotator-rel": {
diff --git a/tools/mb/mb_config_expectations/chromium.linux.json b/tools/mb/mb_config_expectations/chromium.linux.json index a76d72c4..e6ab3100 100644 --- a/tools/mb/mb_config_expectations/chromium.linux.json +++ b/tools/mb/mb_config_expectations/chromium.linux.json
@@ -194,5 +194,14 @@ "proprietary_codecs": true, "use_goma": true } + }, + "linux-xenial-rel": { + "gn_args": { + "ffmpeg_branding": "Chrome", + "is_component_build": false, + "is_debug": false, + "proprietary_codecs": true, + "use_goma": true + } } } \ No newline at end of file
diff --git a/tools/mb/mb_config_expectations/chromium.perf.json b/tools/mb/mb_config_expectations/chromium.perf.json index cb886a6..9edfe140 100644 --- a/tools/mb/mb_config_expectations/chromium.perf.json +++ b/tools/mb/mb_config_expectations/chromium.perf.json
@@ -96,7 +96,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-builder-perf": {
diff --git a/tools/mb/mb_config_expectations/internal.chrome.fyi.json b/tools/mb/mb_config_expectations/internal.chrome.fyi.json index dbceb49..fc5a748 100644 --- a/tools/mb/mb_config_expectations/internal.chrome.fyi.json +++ b/tools/mb/mb_config_expectations/internal.chrome.fyi.json
@@ -24,7 +24,7 @@ "use_pulseaudio": false, "use_system_libsync": false, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-autofill-captured-sites-rel": {
diff --git a/tools/mb/mb_config_expectations/internal.chromeos.fyi.json b/tools/mb/mb_config_expectations/internal.chromeos.fyi.json index 85727d0..44dcb30e 100644 --- a/tools/mb/mb_config_expectations/internal.chromeos.fyi.json +++ b/tools/mb/mb_config_expectations/internal.chromeos.fyi.json
@@ -65,7 +65,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } } } \ No newline at end of file
diff --git a/tools/mb/mb_config_expectations/official.chrome.continuous.json b/tools/mb/mb_config_expectations/official.chrome.continuous.json index 42baadc..5e9ade0 100644 --- a/tools/mb/mb_config_expectations/official.chrome.continuous.json +++ b/tools/mb/mb_config_expectations/official.chrome.continuous.json
@@ -29,7 +29,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } } } \ No newline at end of file
diff --git a/tools/mb/mb_config_expectations/official.chrome.json b/tools/mb/mb_config_expectations/official.chrome.json index d3c3c651..460d39f7 100644 --- a/tools/mb/mb_config_expectations/official.chrome.json +++ b/tools/mb/mb_config_expectations/official.chrome.json
@@ -47,7 +47,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } } } \ No newline at end of file
diff --git a/tools/mb/mb_config_expectations/tryserver.chrome.json b/tools/mb/mb_config_expectations/tryserver.chrome.json index b120099..13701124 100644 --- a/tools/mb/mb_config_expectations/tryserver.chrome.json +++ b/tools/mb/mb_config_expectations/tryserver.chrome.json
@@ -149,7 +149,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-chrome": {
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json b/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json index 14f2061..b159d13 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json
@@ -125,7 +125,7 @@ "use_pulseaudio": false, "use_system_libsync": false, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "linux-cfm-rel": {
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json index 0ddde32..249205c3 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
@@ -651,6 +651,18 @@ "use_goma": true } }, + "linux-rel-orchestrator": { + "gn_args": { + "dcheck_always_on": true, + "ffmpeg_branding": "Chrome", + "is_component_build": false, + "is_debug": false, + "proprietary_codecs": true, + "symbol_level": 0, + "use_dummy_lastchange": true, + "use_goma": true + } + }, "linux-rel-reclient": { "gn_args": { "coverage_instrumentation_input_file": "//.code-coverage/files_to_instrument.txt", @@ -736,6 +748,20 @@ "use_goma": true } }, + "linux-xenial-rel": { + "gn_args": { + "coverage_instrumentation_input_file": "//.code-coverage/files_to_instrument.txt", + "dcheck_always_on": true, + "ffmpeg_branding": "Chrome", + "is_component_build": false, + "is_debug": false, + "proprietary_codecs": true, + "symbol_level": 0, + "use_clang_coverage": true, + "use_dummy_lastchange": true, + "use_goma": true + } + }, "linux_chromium_archive_rel_ng": { "gn_args": { "is_component_build": false,
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.perf.json b/tools/mb/mb_config_expectations/tryserver.chromium.perf.json index e0438090..3afb836 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.perf.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.perf.json
@@ -58,7 +58,7 @@ "use_system_libsync": false, "use_thin_lto": true, "use_v8_context_snapshot": false, - "use_vaapi": true + "use_vaapi": false } }, "Fuchsia Builder Perf": {
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index d73c92c..bd1746a7 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -38665,6 +38665,7 @@ <int value="2" label="kDownload"/> <int value="3" label="kNearbyShare"/> <int value="4" label="kScreenRecording"/> + <int value="5" label="kArcDownload"/> </enum> <enum name="HoldingSpacePodAction">
diff --git a/tools/metrics/histograms/histograms_xml/android/histograms.xml b/tools/metrics/histograms/histograms_xml/android/histograms.xml index 2490d8b..abebca8 100644 --- a/tools/metrics/histograms/histograms_xml/android/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/android/histograms.xml
@@ -1704,9 +1704,13 @@ <owner>jdonnelly@chromium.org</owner> <summary> Recorded every time AutocompleteController.java interacts with - autocomplete_controller_android.cc via an index reference to an item. - Indicates how often the match referenced by Java is different from the match - referenced by C++ at that position. + autocomplete_controller_android.cc. Indicates how often matches referenced + by Java are different from the matches referenced by C++ at any position. + + Note: Chrome M91 and before only increased this histogram for specific Match + objects that the user interacted with. As of M92, this histogram is + increased for every case where at least one Match referenced by Java was + different from its corresponding C++ match at the same exact position. </summary> </histogram> @@ -3376,7 +3380,7 @@ </histogram> <histogram name="AndroidSearchEngineLogo.Events" - enum="AndroidSearchEngineLogoEvents" expires_after="2021-06-01"> + enum="AndroidSearchEngineLogoEvents" expires_after="2022-06-01"> <owner>wylieb@chromium.org</owner> <owner>fgorski@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/chrome/histograms.xml b/tools/metrics/histograms/histograms_xml/chrome/histograms.xml index b4cbc38..bd90406 100644 --- a/tools/metrics/histograms/histograms_xml/chrome/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/chrome/histograms.xml
@@ -126,7 +126,7 @@ </histogram> <histogram name="Chrome.Tabs.AnimationSmoothness.HoverCard.FadeIn" units="%" - expires_after="2021-08-29"> + expires_after="2022-08-29"> <owner>yichenz@chromium.org</owner> <owner>chromeos-wmp@google.com</owner> <summary> @@ -135,7 +135,7 @@ </histogram> <histogram name="Chrome.Tabs.AnimationSmoothness.HoverCard.FadeOut" units="%" - expires_after="2021-06-04"> + expires_after="2022-06-04"> <owner>yichenz@chromium.org</owner> <owner>chromeos-wmp@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/geolocation/histograms.xml b/tools/metrics/histograms/histograms_xml/geolocation/histograms.xml index c1b90dd..d63afe3 100644 --- a/tools/metrics/histograms/histograms_xml/geolocation/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/geolocation/histograms.xml
@@ -113,6 +113,13 @@ </summary> </histogram> +<histogram name="Geolocation.NetworkLocationRequest.NetError" + enum="NetErrorCodes" expires_after="2022-04-22"> + <owner>JamesHollyer@chromium.org</owner> + <owner>device-dev@chromium.org</owner> + <summary>Network errors in NetworkLocationRequest.</summary> +</histogram> + <histogram name="Geolocation.NetworkLocationRequest.ResponseCode" units="HTTP response code" expires_after="M85"> <owner>mattreynolds@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/holding_space/histograms.xml b/tools/metrics/histograms/histograms_xml/holding_space/histograms.xml index 32c468f4..52817ff 100644 --- a/tools/metrics/histograms/histograms_xml/holding_space/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/holding_space/histograms.xml
@@ -34,6 +34,7 @@ <variants name="HoldingSpaceItemType"> <variant name="All" summary="Includes all item types."/> + <variant name="ArcDownload" summary="Items backed by an ARC download file."/> <variant name="Download" summary="Items backed by a download file."/> <variant name="NearbyShare" summary="Items backed by a nearby shared file."/> <variant name="PinnedFile" summary="Items pinned explicitly by the user."/>
diff --git a/tools/metrics/histograms/histograms_xml/image/histograms.xml b/tools/metrics/histograms/histograms_xml/image/histograms.xml index 933b7e7..d0148ff5 100644 --- a/tools/metrics/histograms/histograms_xml/image/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/image/histograms.xml
@@ -235,7 +235,7 @@ </histogram> <histogram base="true" name="ImageFetcher.CacheSize" units="KB" - expires_after="2022-05-01"> + expires_after="2022-06-01"> <!-- Name completed by histogram_suffixes name="ImageFetcherCacheStrategy" --> <owner>fgorski@chromium.org</owner> @@ -248,7 +248,7 @@ </histogram> <histogram name="ImageFetcher.Events" enum="ImageFetcherEvent" - expires_after="2021-10-04"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -259,7 +259,7 @@ </histogram> <histogram name="ImageFetcher.ImageLoadFromCacheTime" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -269,7 +269,7 @@ </histogram> <histogram name="ImageFetcher.ImageLoadFromCacheTimeJava" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -279,7 +279,7 @@ </histogram> <histogram name="ImageFetcher.ImageLoadFromNativeTimeJava" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -289,7 +289,7 @@ </histogram> <histogram name="ImageFetcher.ImageLoadFromNetworkAfterCacheHit" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -299,7 +299,7 @@ </histogram> <histogram name="ImageFetcher.ImageLoadFromNetworkTime" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -309,7 +309,7 @@ </histogram> <histogram name="ImageFetcher.LoadImageMetadata" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -318,7 +318,7 @@ </histogram> <histogram name="ImageFetcher.RequestStatusCode" - enum="CombinedHttpResponseAndNetErrorCode" expires_after="2021-06-01"> + enum="CombinedHttpResponseAndNetErrorCode" expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary> @@ -329,7 +329,7 @@ </histogram> <histogram name="ImageFetcher.TimeSinceLastCacheLRUEviction" units="ms" - expires_after="2021-06-01"> + expires_after="2022-06-01"> <owner>fgorski@chromium.org</owner> <owner>wylieb@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/oobe/histograms.xml b/tools/metrics/histograms/histograms_xml/oobe/histograms.xml index 567f1d03..9009047e 100644 --- a/tools/metrics/histograms/histograms_xml/oobe/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/oobe/histograms.xml
@@ -111,6 +111,16 @@ </summary> </histogram> +<histogram name="OOBE.GaiaLoginTime" units="ms" expires_after="2021-10-01"> + <owner>dkuzmin@google.com</owner> + <owner>cros-oac@google.com</owner> + <summary> + Records the amount of time spent by user to complete GAIA login during + first-run OOBE. Recorded after receiving authentication success signal. Not + recorded for SAML flow. + </summary> +</histogram> + <histogram name="OOBE.GaiaPasswordChangedScreen.UserActions" enum="GaiaPasswordChangedScreenUserAction" expires_after="2021-10-01"> <owner>raleksandrov@google.com</owner>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml index 93aea0a..9fa7ac0 100644 --- a/tools/metrics/histograms/histograms_xml/others/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -12564,7 +12564,7 @@ </histogram> <histogram name="ReadingList.BookmarkBarState.On{Frequency}AddToReadingList" - enum="BookmarkBarState" expires_after="M92"> + enum="BookmarkBarState" expires_after="M96"> <owner>corising@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> <summary> @@ -12712,7 +12712,7 @@ </histogram> <histogram name="ReadingList.{ReadStatus}.Count.{Variation}" units="count" - expires_after="M92"> + expires_after="M96"> <owner>corising@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/password/histograms.xml b/tools/metrics/histograms/histograms_xml/password/histograms.xml index 5f4a258..bb0c65a 100644 --- a/tools/metrics/histograms/histograms_xml/password/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/password/histograms.xml
@@ -1403,7 +1403,7 @@ <histogram name="PasswordManager.LeakDetection.AccessTokenFetchStatus" enum="GoogleServiceAuthError" expires_after="2021-08-09"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Status of an attempted fetch of an access token. Recorded when a token fetch @@ -1413,7 +1413,7 @@ <histogram name="PasswordManager.LeakDetection.AccessTokenNetErrorCode" enum="NetErrorCodes" expires_after="2021-08-09"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Net Error Code of a failed attempt to fetch an access token. Recorded when a @@ -1423,14 +1423,14 @@ <histogram name="PasswordManager.LeakDetection.AnalyzeSingleLeakResponseResult" enum="PasswordAnalyzeLeakResponseResult" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary>Result of analyzing a single leak response.</summary> </histogram> <histogram name="PasswordManager.LeakDetection.AnalyzeSingleLeakResponseTime" units="ms" expires_after="2021-08-09"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary>The time it took to analyze a single leak lookup response.</summary> </histogram> @@ -1438,7 +1438,7 @@ <histogram name="PasswordManager.LeakDetection.DialogDismissalReason" enum="PasswordLeakDetectionDialogDismissalReason" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Reason of the dismissal of the leak detection dialog. Recorded when a leaked @@ -1448,7 +1448,10 @@ <histogram name="PasswordManager.LeakDetection.Enabled" enum="BooleanEnabled" expires_after="M92"> - <owner>jdoerrie@chromium.org</owner> + <obsolete> + Removed in M92. + </obsolete> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Indicates whether the password manager leak detection feature is enabled. @@ -1457,8 +1460,8 @@ </histogram> <histogram name="PasswordManager.LeakDetection.Error" - enum="PasswordLeakDetectionError" expires_after="M92"> - <owner>jdoerrie@chromium.org</owner> + enum="PasswordLeakDetectionError" expires_after="M96"> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Shows the error that happened in password leak detection on sign-in. @@ -1467,7 +1470,7 @@ <histogram name="PasswordManager.LeakDetection.HttpResponseCode" enum="HttpResponseCode" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> HTTP response code of a leak lookup request. Only recoded for each network @@ -1478,7 +1481,7 @@ <histogram name="PasswordManager.LeakDetection.IsPasswordReused" enum="Boolean" expires_after="2021-10-10"> <owner>vasilii@chromium.org</owner> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <summary> When a password is determined as leaked, records if it's saved for other sites. @@ -1488,7 +1491,7 @@ <histogram name="PasswordManager.LeakDetection.IsPasswordSaved" enum="Boolean" expires_after="2021-10-10"> <owner>vasilii@chromium.org</owner> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <summary> When a password is determined as leaked, records if it's saved in Chrome. </summary> @@ -1496,8 +1499,11 @@ <histogram name="PasswordManager.LeakDetection.IsSyncing" enum="Boolean" expires_after="M92"> + <obsolete> + Removed in M92. + </obsolete> <owner>vasilii@chromium.org</owner> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <summary> When a password is determined as leaked, records if the user is syncing passwords without passphrase. @@ -1506,7 +1512,7 @@ <histogram name="PasswordManager.LeakDetection.LookupSingleLeakResponseResult" enum="PasswordLeakLookupResponseResult" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Whether the network fetch succeeded, failed due to network/server errors, or @@ -1516,7 +1522,10 @@ <histogram name="PasswordManager.LeakDetection.NetErrorCode" enum="NetErrorCodes" expires_after="M92"> - <owner>jdoerrie@chromium.org</owner> + <obsolete> + Removed in M92. + </obsolete> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> Network error code of a leak lookup request. Only recoded for each network @@ -1526,7 +1535,7 @@ <histogram name="PasswordManager.LeakDetection.NotifyIsLeakedTime" units="ms" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> The time it took from starting a leak check to notifying the user about a @@ -1536,7 +1545,7 @@ <histogram name="PasswordManager.LeakDetection.ObtainAccessTokenTime" units="ms" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> The time it took to obtain an access token for an authenticated leak lookup @@ -1546,7 +1555,7 @@ <histogram name="PasswordManager.LeakDetection.PrepareSingleLeakRequestTime" units="ms" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> The time it took to prepare the payload for a single leak lookup request. @@ -1555,7 +1564,7 @@ <histogram name="PasswordManager.LeakDetection.ReceiveSingleLeakResponseTime" units="ms" expires_after="2021-08-09"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> The time it took to receive a server response after issuing a request for a @@ -1565,7 +1574,7 @@ <histogram name="PasswordManager.LeakDetection.SingleLeakResponsePrefixes" units="prefixes" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> The number of matched prefixes in a single leak lookup response. Only @@ -1575,7 +1584,7 @@ <histogram name="PasswordManager.LeakDetection.SingleLeakResponseSize" units="bytes" expires_after="2021-10-10"> - <owner>jdoerrie@chromium.org</owner> + <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> The size of a single leak lookup response in bytes. Only recorded if there
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 6e6f291..ad29a0ba 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -9,8 +9,8 @@ "remote_path": "perfetto_binaries/trace_processor_shell/mac/7dadfe6bd3985045d21280ebbc9ba336df6dedd9/trace_processor_shell" }, "linux": { - "hash": "9451a663ea7eae44eee1db6d62745f05f1069833", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/7dadfe6bd3985045d21280ebbc9ba336df6dedd9/trace_processor_shell" + "hash": "c73fdfb21f453613380b6fba9dc8611529df11ea", + "remote_path": "perfetto_binaries/trace_processor_shell/linux/dd6f2bc226b22086345c7da0ae62bbc3c3ff850a/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/base/ime/win/tsf_text_store.cc b/ui/base/ime/win/tsf_text_store.cc index 62bc297..0ef319d 100644 --- a/ui/base/ime/win/tsf_text_store.cc +++ b/ui/base/ime/win/tsf_text_store.cc
@@ -1111,33 +1111,34 @@ return true; } -bool TSFTextStore::TerminateComposition() { - TRACE_EVENT0("ime", "TSFTextStore::TerminateComposition"); - bool terminate_composition_called = false; - if (context_ && has_composition_range_) { - Microsoft::WRL::ComPtr<ITfContextOwnerCompositionServices> service; - - if (SUCCEEDED(context_->QueryInterface(IID_PPV_ARGS(&service)))) { - service->TerminateComposition(nullptr); - terminate_composition_called = true; - } - } - +void TSFTextStore::ResetCompositionState() { previous_composition_string_.clear(); previous_composition_start_ = 0; previous_composition_selection_range_ = gfx::Range::InvalidRange(); previous_text_spans_.clear(); string_pending_insertion_.clear(); - has_composition_range_ = false; composition_range_.set_start(0); composition_range_.set_end(0); selection_ = gfx::Range(composition_from_client_.end(), composition_from_client_.end()); composition_start_ = selection_.end(); +} - return terminate_composition_called; +bool TSFTextStore::TerminateComposition() { + TRACE_EVENT0("ime", "TSFTextStore::TerminateComposition"); + if (context_ && has_composition_range_) { + Microsoft::WRL::ComPtr<ITfContextOwnerCompositionServices> service; + + if (SUCCEEDED(context_->QueryInterface(IID_PPV_ARGS(&service)))) { + service->TerminateComposition(nullptr); + has_composition_range_ = false; + return true; + } + } + + return false; } void TSFTextStore::CalculateTextandSelectionDiffAndNotifyIfNeeded() { @@ -1317,6 +1318,8 @@ TRACE_EVENT0("ime", "TSFTextStore::CancelComposition"); + ResetCompositionState(); + return TerminateComposition(); } @@ -1331,6 +1334,8 @@ if (!text_input_client_) return false; + ResetCompositionState(); + return TerminateComposition(); }
diff --git a/ui/base/ime/win/tsf_text_store.h b/ui/base/ime/win/tsf_text_store.h index 9e8b9850..7a70069 100644 --- a/ui/base/ime/win/tsf_text_store.h +++ b/ui/base/ime/win/tsf_text_store.h
@@ -260,6 +260,9 @@ friend class TSFTextStoreTest; friend class TSFTextStoreTestCallback; + // Reset states tracking the composition in the text store. + void ResetCompositionState(); + // Terminate an active composition for this text store. bool TerminateComposition();
diff --git a/ui/base/ime/win/tsf_text_store_unittest.cc b/ui/base/ime/win/tsf_text_store_unittest.cc index e282507..5b7d7530 100644 --- a/ui/base/ime/win/tsf_text_store_unittest.cc +++ b/ui/base/ime/win/tsf_text_store_unittest.cc
@@ -375,7 +375,6 @@ EXPECT_TRUE(text_store_->previous_text_spans_.empty()); EXPECT_TRUE(text_store_->string_pending_insertion_.empty()); - EXPECT_FALSE(text_store_->has_composition_range_); EXPECT_TRUE(text_store_->composition_range_.is_empty()); EXPECT_EQ(text_store_->composition_from_client_.end(), text_store_->selection_.start());
diff --git a/ui/base/prediction/prediction_metrics_handler.cc b/ui/base/prediction/prediction_metrics_handler.cc index f018624..efd2fbf 100644 --- a/ui/base/prediction/prediction_metrics_handler.cc +++ b/ui/base/prediction/prediction_metrics_handler.cc
@@ -11,7 +11,7 @@ namespace ui { -PredictionMetricsHandler::PredictionMetricsHandler(const char* histogram_name) +PredictionMetricsHandler::PredictionMetricsHandler(std::string histogram_name) : histogram_name_(std::move(histogram_name)) {} PredictionMetricsHandler::~PredictionMetricsHandler() = default;
diff --git a/ui/base/prediction/prediction_metrics_handler.h b/ui/base/prediction/prediction_metrics_handler.h index 24167f5..49c8f2a 100644 --- a/ui/base/prediction/prediction_metrics_handler.h +++ b/ui/base/prediction/prediction_metrics_handler.h
@@ -6,6 +6,7 @@ #define UI_BASE_PREDICTION_PREDICTION_METRICS_HANDLER_H_ #include <deque> +#include <string> #include <unordered_map> #include "base/component_export.h" @@ -25,7 +26,7 @@ // few metrics. class COMPONENT_EXPORT(UI_BASE_PREDICTION) PredictionMetricsHandler { public: - explicit PredictionMetricsHandler(const char* histogram_name); + explicit PredictionMetricsHandler(std::string histogram_name); ~PredictionMetricsHandler(); // Struct used to store predicted and real event information. @@ -108,7 +109,7 @@ // names (.OverPrediction, .UnderPrediction, .WrongDirection, // .PredictionJitter, .VisualJitter) appended to it when counting the metric // in a histogram. - const char* const histogram_name_; + const std::string histogram_name_; }; } // namespace ui
diff --git a/ui/gfx/android/android_surface_control_compat.cc b/ui/gfx/android/android_surface_control_compat.cc index d691294..2f0533d4 100644 --- a/ui/gfx/android/android_surface_control_compat.cc +++ b/ui/gfx/android/android_surface_control_compat.cc
@@ -24,6 +24,8 @@ typedef struct ASurfaceTransactionStats ASurfaceTransactionStats; typedef void (*ASurfaceTransaction_OnComplete)(void* context, ASurfaceTransactionStats* stats); +typedef void (*ASurfaceTransaction_OnCommit)(void* context, + ASurfaceTransactionStats* stats); // ASurface using pASurfaceControl_createFromWindow = @@ -51,6 +53,9 @@ using pASurfaceTransaction_apply = int64_t (*)(ASurfaceTransaction*); using pASurfaceTransaction_setOnComplete = void (*)(ASurfaceTransaction*, void* ctx, ASurfaceTransaction_OnComplete); +using pASurfaceTransaction_setOnCommit = void (*)(ASurfaceTransaction*, + void* ctx, + ASurfaceTransaction_OnCommit); using pASurfaceTransaction_setVisibility = void (*)(ASurfaceTransaction*, ASurfaceControl*, int8_t visibility); @@ -147,6 +152,7 @@ LOAD_FUNCTION(main_dl_handle, ASurfaceTransaction_delete); LOAD_FUNCTION(main_dl_handle, ASurfaceTransaction_apply); LOAD_FUNCTION(main_dl_handle, ASurfaceTransaction_setOnComplete); + LOAD_FUNCTION_MAYBE(main_dl_handle, ASurfaceTransaction_setOnCommit); LOAD_FUNCTION(main_dl_handle, ASurfaceTransaction_reparent); LOAD_FUNCTION(main_dl_handle, ASurfaceTransaction_setVisibility); LOAD_FUNCTION(main_dl_handle, ASurfaceTransaction_setZOrder); @@ -179,6 +185,7 @@ pASurfaceTransaction_delete ASurfaceTransaction_deleteFn; pASurfaceTransaction_apply ASurfaceTransaction_applyFn; pASurfaceTransaction_setOnComplete ASurfaceTransaction_setOnCompleteFn; + pASurfaceTransaction_setOnCommit ASurfaceTransaction_setOnCommitFn; pASurfaceTransaction_reparent ASurfaceTransaction_reparentFn; pASurfaceTransaction_setVisibility ASurfaceTransaction_setVisibilityFn; pASurfaceTransaction_setZOrder ASurfaceTransaction_setZOrderFn; @@ -285,6 +292,7 @@ int id = 0; scoped_refptr<base::SingleThreadTaskRunner> task_runner; SurfaceControl::Transaction::OnCompleteCb callback; + SurfaceControl::Transaction::OnCommitCb latch_callback; }; uint64_t GetTraceIdForTransaction(int transaction_id) { @@ -294,7 +302,7 @@ } // Note that the framework API states that this callback can be dispatched on -// any thread (in practice it should be the binder thread). +// any thread (in practice it should be a binder thread). void OnTransactionCompletedOnAnyThread(void* context, ASurfaceTransactionStats* stats) { auto* ack_ctx = static_cast<TransactionAckCtx*>(context); @@ -316,6 +324,24 @@ delete ack_ctx; } +// Note that the framework API states that this callback can be dispatched on +// any thread (in practice it should be a binder thread). +void OnTransactiOnCommittedOnAnyThread(void* context, + ASurfaceTransactionStats* stats) { + auto* ack_ctx = static_cast<TransactionAckCtx*>(context); + TRACE_EVENT_INSTANT0("gpu,benchmark", "SurfaceControlTransaction committed", + TRACE_EVENT_SCOPE_THREAD); + + if (ack_ctx->task_runner) { + ack_ctx->task_runner->PostTask( + FROM_HERE, base::BindOnce(std::move(ack_ctx->latch_callback))); + } else { + std::move(ack_ctx->latch_callback).Run(); + } + + delete ack_ctx; +} + } // namespace // static @@ -355,6 +381,12 @@ nullptr; } +bool SurfaceControl::SupportsOnCommit() { + return IsSupported() && + SurfaceControlMethods::Get().ASurfaceTransaction_setOnCommitFn != + nullptr; +} + void SurfaceControl::ApplyTransaction(ASurfaceTransaction* transaction) { SurfaceControlMethods::Get().ASurfaceTransaction_applyFn(transaction); } @@ -528,6 +560,18 @@ transaction_, ack_ctx, &OnTransactionCompletedOnAnyThread); } +void SurfaceControl::Transaction::SetOnCommitCb( + OnCommitCb cb, + scoped_refptr<base::SingleThreadTaskRunner> task_runner) { + TransactionAckCtx* ack_ctx = new TransactionAckCtx; + ack_ctx->latch_callback = std::move(cb); + ack_ctx->task_runner = std::move(task_runner); + ack_ctx->id = id_; + + SurfaceControlMethods::Get().ASurfaceTransaction_setOnCommitFn( + transaction_, ack_ctx, &OnTransactiOnCommittedOnAnyThread); +} + void SurfaceControl::Transaction::Apply() { TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("gpu,benchmark", "SurfaceControlTransaction", id_);
diff --git a/ui/gfx/android/android_surface_control_compat.h b/ui/gfx/android/android_surface_control_compat.h index 8786720..762c125 100644 --- a/ui/gfx/android/android_surface_control_compat.h +++ b/ui/gfx/android/android_surface_control_compat.h
@@ -47,6 +47,9 @@ // Returns true if tagging a surface with a frame rate value is supported. static bool SupportsSetFrameRate(); + // Returns true if OnCommit callback is supported. + static bool SupportsOnCommit(); + // Applies transaction. Used to emulate webview functor interface, where we // pass raw ASurfaceTransaction object. For use inside Chromium use // Transaction class below instead. @@ -139,6 +142,10 @@ OnCompleteCb cb, scoped_refptr<base::SingleThreadTaskRunner> task_runner); + using OnCommitCb = base::OnceClosure; + void SetOnCommitCb(OnCommitCb cb, + scoped_refptr<base::SingleThreadTaskRunner> task_runner); + void Apply(); ASurfaceTransaction* transaction() { return transaction_; }
diff --git a/ui/gl/gl_surface_egl_surface_control.cc b/ui/gl/gl_surface_egl_surface_control.cc index 66a7c37..9116d5a9 100644 --- a/ui/gl/gl_surface_egl_surface_control.cc +++ b/ui/gl/gl_surface_egl_surface_control.cc
@@ -66,7 +66,8 @@ root_surface_( new gfx::SurfaceControl::Surface(window, root_surface_name_.c_str())), transaction_ack_timeout_manager_(task_runner), - gpu_task_runner_(std::move(task_runner)) {} + gpu_task_runner_(std::move(task_runner)), + using_on_commit_callback_(gfx::SurfaceControl::SupportsOnCommit()) {} GLSurfaceEGLSurfaceControl::~GLSurfaceEGLSurfaceControl() { Destroy(); @@ -269,6 +270,14 @@ std::move(primary_plane_fences_)); primary_plane_fences_.reset(); pending_transaction_->SetOnCompleteCb(std::move(callback), gpu_task_runner_); + + if (using_on_commit_callback_) { + gfx::SurfaceControl::Transaction::OnCommitCb callback = base::BindOnce( + &GLSurfaceEGLSurfaceControl::OnTransactionCommittedOnGpuThread, + weak_factory_.GetWeakPtr()); + pending_transaction_->SetOnCommitCb(std::move(callback), gpu_task_runner_); + } + pending_surfaces_count_ = 0u; frame_rate_update_pending_ = false; @@ -452,10 +461,7 @@ "GLSurfaceEGLSurfaceControl::OnTransactionAckOnGpuThread"); DCHECK(gpu_task_runner_->BelongsToCurrentThread()); - DCHECK(transaction_ack_pending_); - transaction_ack_timeout_manager_.OnTransactionAck(); - transaction_ack_pending_ = false; const bool has_context = context_->MakeCurrent(this); for (auto& surface_stat : transaction_stats.surface_stats) { @@ -501,6 +507,23 @@ CheckPendingPresentationCallbacks(); + // If we don't use OnCommit, we advance transaction queue after we received + // OnComplete. + if (!using_on_commit_callback_) + AdvanceTransactionQueue(); +} + +void GLSurfaceEGLSurfaceControl::OnTransactionCommittedOnGpuThread() { + TRACE_EVENT0("gpu", + "GLSurfaceEGLSurfaceControl::OnTransactionCommittedOnGpuThread"); + DCHECK(using_on_commit_callback_); + AdvanceTransactionQueue(); +} + +void GLSurfaceEGLSurfaceControl::AdvanceTransactionQueue() { + DCHECK(transaction_ack_pending_); + transaction_ack_pending_ = false; + if (!pending_transaction_queue_.empty()) { transaction_ack_pending_ = true; pending_transaction_queue_.front().Apply();
diff --git a/ui/gl/gl_surface_egl_surface_control.h b/ui/gl/gl_surface_egl_surface_control.h index ba24b4c..eb358e93 100644 --- a/ui/gl/gl_surface_egl_surface_control.h +++ b/ui/gl/gl_surface_egl_surface_control.h
@@ -188,6 +188,11 @@ base::Optional<PrimaryPlaneFences> primary_plane_fences, gfx::SurfaceControl::TransactionStats transaction_stats); + // Called on the |gpu_task_runner_| when a transaction is committed by the + // framework. + void OnTransactionCommittedOnGpuThread(); + + void AdvanceTransactionQueue(); void CheckPendingPresentationCallbacks(); gfx::Rect ApplyDisplayInverse(const gfx::Rect& input) const; @@ -255,6 +260,9 @@ bool preserve_children_ = false; scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner_; + + const bool using_on_commit_callback_; + base::WeakPtrFactory<GLSurfaceEGLSurfaceControl> weak_factory_{this}; };
diff --git a/ui/views/controls/textarea/textarea_unittest.cc b/ui/views/controls/textarea/textarea_unittest.cc index c5b43a4..b8857f5 100644 --- a/ui/views/controls/textarea/textarea_unittest.cc +++ b/ui/views/controls/textarea/textarea_unittest.cc
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/format_macros.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h"
diff --git a/ui/views/examples/tabbed_pane_example.cc b/ui/views/examples/tabbed_pane_example.cc index a4b81e0..573b8d3c 100644 --- a/ui/views/examples/tabbed_pane_example.cc +++ b/ui/views/examples/tabbed_pane_example.cc
@@ -7,6 +7,7 @@ #include <memory> #include <utility> +#include "base/format_macros.h" #include "base/strings/utf_string_conversions.h" #include "ui/base/l10n/l10n_util.h" #include "ui/views/controls/button/label_button.h"
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index 8a8e584..8bb2131 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc
@@ -1113,6 +1113,7 @@ native_theme_observation_.Reset(); if (native_theme) native_theme_observation_.Observe(native_theme); + PropagateNativeThemeChanged(); } int Widget::GetX() const {
diff --git a/ui/webui/resources/cr_elements/mouse_hoverable_mixin.js b/ui/webui/resources/cr_elements/mouse_hoverable_mixin.js index 06ddb2c1..e503dd0 100644 --- a/ui/webui/resources/cr_elements/mouse_hoverable_mixin.js +++ b/ui/webui/resources/cr_elements/mouse_hoverable_mixin.js
@@ -3,52 +3,48 @@ // found in the LICENSE file. /** - * @fileoverview This file provides a mixin and a class to manage a `hovered` - * style on mouse events. Relies on listening for pointer events as touch - * devices may fire mouse events too. + * @fileoverview This file provides a mixin to manage a `hovered` style on mouse + * events. Relies on listening for pointer events as touch devices may fire + * mouse events too. */ -import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {dedupingMixin} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @type {string} */ const HOVERED_STYLE = 'hovered'; /** @interface */ -class AttachableInterface { - attach() {} -} - -export const MouseHoverableElementMixin = (superClass) => - class extends superClass { - attach() { - this.addEventListener('pointerenter', (e) => { - const hostElement = /** @type {!Element} */ (e.currentTarget); - hostElement.classList.toggle(HOVERED_STYLE, e.pointerType === 'mouse'); - }); - - this.addEventListener('pointerleave', (e) => { - if (e.pointerType !== 'mouse') { - return; - } - - const hostElement = /** @type {!Element} */ (e.currentTarget); - hostElement.classList.remove(HOVERED_STYLE); - }); - } -}; +export class MouseHoverableMixinInterface {} /** - * @constructor - * @extends {PolymerElement} - * @implements {AttachableInterface} + * @polymer + * @mixinFunction */ -const MouseHoverablePolymerElement = MouseHoverableElementMixin(PolymerElement); +export const MouseHoverableMixin = dedupingMixin(superClass => { + /** + * @polymer + * @mixinClass + * @implements {MouseHoverableMixinInterface} + */ + class MouseHoverableMixin extends superClass { + ready() { + super.ready(); -/** @polymer */ -export class MouseHoverableElement extends MouseHoverablePolymerElement { - /** @override */ - ready() { - super.ready(); - this.attach(); + this.addEventListener('pointerenter', (e) => { + const hostElement = /** @type {!Element} */ (e.currentTarget); + hostElement.classList.toggle(HOVERED_STYLE, e.pointerType === 'mouse'); + }); + + this.addEventListener('pointerleave', (e) => { + if (e.pointerType !== 'mouse') { + return; + } + + const hostElement = /** @type {!Element} */ (e.currentTarget); + hostElement.classList.remove(HOVERED_STYLE); + }); + } } -} + + return MouseHoverableMixin; +});
diff --git a/weblayer/app/jni_onload.cc b/weblayer/app/jni_onload.cc index feb5c96..dbc319d 100644 --- a/weblayer/app/jni_onload.cc +++ b/weblayer/app/jni_onload.cc
@@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/android/library_loader/library_loader_hooks.h" -#include "components/version_info/version_info.h" -#include "components/version_info/version_info_values.h" #include "content/public/app/content_jni_onload.h" #include "content/public/app/content_main.h" #include "weblayer/app/content_main_delegate_impl.h" @@ -23,8 +20,6 @@ if (!content::android::OnJNIOnLoadInit()) return false; - base::android::SetVersionNumber(version_info::GetVersionNumber().c_str()); - weblayer::MainParams params; params.delegate = new weblayer::MainDelegateImpl;
diff --git a/weblayer/browser/content_browser_client_impl.cc b/weblayer/browser/content_browser_client_impl.cc index 2e9274a8..ef51e002 100644 --- a/weblayer/browser/content_browser_client_impl.cc +++ b/weblayer/browser/content_browser_client_impl.cc
@@ -335,7 +335,7 @@ const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, content::BrowserContext* context, int render_process_id, int render_frame_id) {
diff --git a/weblayer/browser/content_browser_client_impl.h b/weblayer/browser/content_browser_client_impl.h index 90f47f56..d0b6a97 100644 --- a/weblayer/browser/content_browser_client_impl.h +++ b/weblayer/browser/content_browser_client_impl.h
@@ -18,6 +18,10 @@ class PrefService; +namespace storage { +class StorageKey; +} // namespace storage + namespace weblayer { class FeatureListCreator; @@ -48,7 +52,7 @@ const GURL& site_for_cookies, const base::Optional<url::Origin>& top_frame_origin, const std::string& name, - const url::Origin& constructor_origin, + const storage::StorageKey& storage_key, content::BrowserContext* context, int render_process_id, int render_frame_id) override;
diff --git a/weblayer/shell/android/BUILD.gn b/weblayer/shell/android/BUILD.gn index 53eeeccb..7954399 100644 --- a/weblayer/shell/android/BUILD.gn +++ b/weblayer/shell/android/BUILD.gn
@@ -263,11 +263,6 @@ product_config_java_packages = [ weblayer_product_config_java_package ] - native_lib_version_rule = "//build/util:chrome_version_json" - _native_lib_file = - rebase_path("$root_gen_dir/CHROME_VERSION.json", root_build_dir) - native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)" - shared_libraries = [ "//weblayer:libweblayer_test" ] }