diff --git a/DEPS b/DEPS index 278e159..7f40e44 100644 --- a/DEPS +++ b/DEPS
@@ -194,7 +194,7 @@ 'checkout_reclient': False, # reclient CIPD package version - 'reclient_version': 're_client_version:0.24.0.c22ef22', + 'reclient_version': 're_client_version:0.25.0.5f9900f', 'android_git': 'https://android.googlesource.com', 'aomedia_git': 'https://aomedia.googlesource.com', @@ -209,11 +209,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '2e04df9a06411b8c67047418d84144592766ef64', + 'skia_revision': '497bdf9599081c33bedea94f90a8be9b4bde84f5', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '442eb43d992f607b483f21c1a3d6065a2099d1ce', + 'v8_revision': 'ff6dfae2642d1e8d7ca616058d3d16561078bc06', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -225,11 +225,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': '8969f861fc24e2e630df46e2e9a625abfbe00e57', + 'swiftshader_revision': 'fb53aa2bb7dad9de683d963b5e5d30c40bbf16e1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '6fc2c31115fcb9cf8a2c25d228c03fcd0ef16a2f', + 'pdfium_revision': '21c8586341999205105ec9a89680d8622fbabb81', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -328,7 +328,7 @@ # 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': '37ad44eef201503fea5cb85b96e97dc61fd3d433', + 'dawn_revision': '1257152485449816850604207ce189de6aa84db0', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -368,7 +368,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'tint_revision': '5c9906e3079f81dde27dffb05109279afedc11dc', + 'tint_revision': 'cea744d55887d4e47ae663d9fb70a417b348499e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -376,7 +376,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'libcxxabi_revision': 'f50df92a297982cc7468fb614b284bb31aa08e60', + 'libcxxabi_revision': '9bb07683fbffe86edb42c5c519b7a4bc4e893deb', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -701,7 +701,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'NhuEArC6HyJ9d2G43Q3NyC1NYK5ZwpqdU7Eob3x4EocC', + 'version': 'HAFunKKkVFyBzh9p8f9RSwgNiB0ISkdp2WIbBR71FeMC', }, ], 'condition': 'checkout_android', @@ -934,7 +934,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '392c407b551a98190b2431947469bca505e5bc50', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'e0de6a88e5385ee9cd38d5e87f97456bbad8e7d2', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1005,7 +1005,7 @@ Var('chromium_git') + '/external/github.com/khaledhosny/ots.git' + '@' + Var('ots_revision'), 'src/third_party/libgav1/src': - Var('chromium_git') + '/codecs/libgav1.git' + '@' + 'e58166ec6163f51e48382bec17d109b742d0c5f6', + Var('chromium_git') + '/codecs/libgav1.git' + '@' + '1c4e344cb1c15aff1c94cb542b98260244a3da4b', 'src/third_party/google_toolbox_for_mac/src': { 'url': Var('chromium_git') + '/external/github.com/google/google-toolbox-for-mac.git' + '@' + Var('google_toolbox_for_mac_revision'), @@ -1384,7 +1384,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': 'YPJlUd3Zs4_ILtYWK6Nl_fXxu9dlEi-67lPCAVLnWbMC' + 'version': 'Q7BOLoBEKjKHVG4WYSf3qNuhySZ9nyW9T5qODWXbwLEC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia', @@ -1425,7 +1425,7 @@ }, 'src/third_party/re2/src': - Var('chromium_git') + '/external/github.com/google/re2.git' + '@' + 'f8e389f3acdc2517562924239e2a188037393683', + Var('chromium_git') + '/external/github.com/google/re2.git' + '@' + '13ebb377c6ad763ca61d12dd6f88b1126bd0b911', 'src/third_party/r8': { 'packages': [ @@ -1614,7 +1614,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@88aa98bf3ab602c9e478ee69986ff31798f5cbc6', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@b821403a2ecfaf00d272d09aaf18905eebbc2e9d', 'condition': 'checkout_src_internal', },
diff --git a/ash/OWNERS b/ash/OWNERS index 8ee27f9..4eb7905 100644 --- a/ash/OWNERS +++ b/ash/OWNERS
@@ -1,10 +1,14 @@ set noparent afakhry@chromium.org jamescook@chromium.org +mukai@chromium.org oshima@chromium.org sky@chromium.org xiyuan@chromium.org +# For WindowManager related. +xdai@chromium.org + # These are for the common case of adding or renaming a few items. If you're # doing structural changes, please get a review from a reviewer above. per-file ash_strings.grd=*
diff --git a/ash/wm/OWNERS b/ash/wm/OWNERS index 6b66b25..1d109f8 100644 --- a/ash/wm/OWNERS +++ b/ash/wm/OWNERS
@@ -1,3 +1,2 @@ -flackr@chromium.org mukai@chromium.org xdai@chromium.org
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForR.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForR.java index e685773..2f89e1a2 100644 --- a/base/android/java/src/org/chromium/base/compat/ApiHelperForR.java +++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForR.java
@@ -16,7 +16,7 @@ import java.io.File; /** - * Utility class to use new APIs that were added in Q (API level 29). These need to exist in a + * Utility class to use new APIs that were added in R (API level 30). These need to exist in a * separate class so that Android framework can successfully verify classes without * encountering the new APIs. */
diff --git a/base/files/file_proxy.h b/base/files/file_proxy.h index fbe71d6..119453c 100644 --- a/base/files/file_proxy.h +++ b/base/files/file_proxy.h
@@ -48,7 +48,6 @@ OnceCallback<void(File::Error, const char* data, int bytes_read)>; using WriteCallback = OnceCallback<void(File::Error, int bytes_written)>; - FileProxy(); explicit FileProxy(TaskRunner* task_runner); FileProxy(const FileProxy&) = delete; FileProxy& operator=(const FileProxy&) = delete;
diff --git a/base/metrics/histogram_samples.cc b/base/metrics/histogram_samples.cc index 4e6b3c0..324f3fb4 100644 --- a/base/metrics/histogram_samples.cc +++ b/base/metrics/histogram_samples.cc
@@ -267,6 +267,7 @@ base::DictionaryValue HistogramSamples::ToGraphDict(StringPiece histogram_name, int32_t flags) const { base::DictionaryValue dict; + dict.SetString("name", histogram_name); dict.SetString("header", GetAsciiHeader(histogram_name, flags)); dict.SetString("body", GetAsciiBody()); return dict;
diff --git a/base/metrics/histogram_samples.h b/base/metrics/histogram_samples.h index 3e08bf6..2ba2401 100644 --- a/base/metrics/histogram_samples.h +++ b/base/metrics/histogram_samples.h
@@ -149,7 +149,7 @@ // Returns ASCII representation of histograms data for histogram samples. // The dictionary returned will be of the form - // {"header":<string>, "body": <string>} + // {"name":<string>, "header":<string>, "body": <string>} base::DictionaryValue ToGraphDict(StringPiece histogram_name, int32_t flags) const;
diff --git a/build/config/fuchsia/test/README.md b/build/config/fuchsia/test/README.md new file mode 100644 index 0000000..e800a10 --- /dev/null +++ b/build/config/fuchsia/test/README.md
@@ -0,0 +1,53 @@ +## CMX Fragments + +This directory contains the cmx fragments that are required for running +Fuchsia tests hermetically. Tests start from `minimum_capabilities.test-cmx` +and add additional capabilities as necessary by providing the +additional_manifests argument. Some fragments are explained in detail below: + +### General Purpose Fragments + +#### font_capabilities.test-cmx +For tests that test fonts by providing `fuchsia.fonts.Provider`. + +#### jit_capabilities.test-cmx +Required by tests that execute JavaScript. Should only be required in a small +number of tests. + +#### minimum_capabilites.test-cmx +Capabilities required by anything that uses `//base/test`, used as the base +fragment for all test suites. + +#### read_debug_data.test-cmx +Required by tests that need access to its debug directory. Should only be +required in a small number of tests. + +#### test_logger_capabilities.test-cmx +For tests that test logging functionality by providing `fuchsia.logger.Log`. + +### WebEngine Fragments +The following fragments are specific to WebEngine functionality as documented +documentation at +https://fuchsia.dev/reference/fidl/fuchsia.web#CreateContextParams and +https://fuchsia.dev/reference/fidl/fuchsia.web#ContextFeatureFlags. +Any test-specific exceptions are documented for each file. + +#### network_capabilities.test-cmx +Corresponds to the `NETWORK` flag. Required for enabling network access. Note +that access to the root SSL certificates is not needed if ContextProvider is +used to launch the `Context`. + +#### present_view_capabilities.test-cmx +Services that are needed to render web content in a Scenic view and present it. +Most services are required per the FIDL documentation. +`fuchsia.ui.policy.Presenter` is additionally required by tests that create +views. + +#### vulkan_capabilities.test-cmx +Corresponds to the `VULKAN` flag. Required for enabling GPU-accelerated +rendering of the web content. + +#### web_engine_required_capabilities.test-cmx +Contains services that need to be present when creating a +`fuchsia.web.Context`. Note that the `fuchsia.scheduler.ProfileProvider` service +is only used in tests that encounter memory pressure code.
diff --git a/build/config/fuchsia/test/access_test_data_dir.test-cmx b/build/config/fuchsia/test/access_test_data_dir.test-cmx new file mode 100644 index 0000000..5757778 --- /dev/null +++ b/build/config/fuchsia/test/access_test_data_dir.test-cmx
@@ -0,0 +1,7 @@ +{ + "sandbox": { + "features": [ + "isolated-cache-storage" + ] + } +} \ No newline at end of file
diff --git a/build/config/fuchsia/test/minimum_capabilities.test-cmx b/build/config/fuchsia/test/minimum_capabilities.test-cmx index 20e66bb..a1d469d 100644 --- a/build/config/fuchsia/test/minimum_capabilities.test-cmx +++ b/build/config/fuchsia/test/minimum_capabilities.test-cmx
@@ -22,6 +22,7 @@ "fuchsia.intl.PropertyProvider", "fuchsia.logger.LogSink", "fuchsia.process.Launcher", + "fuchsia.sys.Launcher", "fuchsia.sys.Loader" ] }
diff --git a/build/config/fuchsia/test/network_capabilities.test-cmx b/build/config/fuchsia/test/network_capabilities.test-cmx new file mode 100644 index 0000000..cafa4ae8 --- /dev/null +++ b/build/config/fuchsia/test/network_capabilities.test-cmx
@@ -0,0 +1,21 @@ +{ + "facets": { + "fuchsia.test": { + "injected-services": { + "fuchsia.net.NameLookup": "fuchsia-pkg://fuchsia.com/dns-resolver#meta/dns-resolver.cmx", + "fuchsia.net.interfaces.State": "fuchsia-pkg://fuchsia.com/netstack#meta/netstack.cmx", + "fuchsia.posix.socket.Provider": "fuchsia-pkg://fuchsia.com/netstack#meta/netstack.cmx" + } + } + }, + "sandbox": { + "features": [ + "root-ssl-certificates" + ], + "services": [ + "fuchsia.net.NameLookup", + "fuchsia.net.interfaces.State", + "fuchsia.posix.socket.Provider" + ] + } +} \ No newline at end of file
diff --git a/build/config/fuchsia/test/present_capabilities.test-cmx b/build/config/fuchsia/test/present_capabilities.test-cmx deleted file mode 100644 index 0600aca..0000000 --- a/build/config/fuchsia/test/present_capabilities.test-cmx +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "facets": { - "fuchsia.test": { - "system-services": [ - "fuchsia.ui.policy.Presenter" - ] - } - }, - "sandbox": { - "services": [ - "fuchsia.ui.policy.Presenter" - ] - } -} \ No newline at end of file
diff --git a/build/config/fuchsia/test/view_creation_capabilities.test-cmx b/build/config/fuchsia/test/present_view_capabilities.test-cmx similarity index 91% rename from build/config/fuchsia/test/view_creation_capabilities.test-cmx rename to build/config/fuchsia/test/present_view_capabilities.test-cmx index ba49aaa..7b788ca 100644 --- a/build/config/fuchsia/test/view_creation_capabilities.test-cmx +++ b/build/config/fuchsia/test/present_view_capabilities.test-cmx
@@ -8,6 +8,7 @@ }, "system-services": [ "fuchsia.sysmem.Allocator", + "fuchsia.ui.policy.Presenter", "fuchsia.ui.scenic.Scenic" ] } @@ -18,6 +19,7 @@ "fuchsia.sysmem.Allocator", "fuchsia.ui.input.ImeService", "fuchsia.ui.input.ImeVisibilityService", + "fuchsia.ui.policy.Presenter", "fuchsia.ui.scenic.Scenic" ] }
diff --git a/build/config/fuchsia/test/read_debug_data.test-cmx b/build/config/fuchsia/test/read_debug_data.test-cmx new file mode 100644 index 0000000..b0c95b0 --- /dev/null +++ b/build/config/fuchsia/test/read_debug_data.test-cmx
@@ -0,0 +1,7 @@ +{ + "sandbox": { + "features": [ + "hub" + ] + } +} \ No newline at end of file
diff --git a/build/config/fuchsia/test/sys_launcher_capabilities.test-cmx b/build/config/fuchsia/test/sys_launcher_capabilities.test-cmx deleted file mode 100644 index 7eb44d2..0000000 --- a/build/config/fuchsia/test/sys_launcher_capabilities.test-cmx +++ /dev/null
@@ -1,7 +0,0 @@ -{ - "sandbox": { - "services": [ - "fuchsia.sys.Launcher" - ] - } -} \ No newline at end of file
diff --git a/build/config/fuchsia/test/web_engine_required_capabilities.test-cmx b/build/config/fuchsia/test/web_engine_required_capabilities.test-cmx new file mode 100644 index 0000000..5354183 --- /dev/null +++ b/build/config/fuchsia/test/web_engine_required_capabilities.test-cmx
@@ -0,0 +1,24 @@ +{ + "facets": { + "fuchsia.test": { + "injected-services": { + "fuchsia.fonts.Provider": "fuchsia-pkg://fuchsia.com/fonts#meta/fonts.cmx", + "fuchsia.memorypressure.Provider": "fuchsia-pkg://fuchsia.com/memory_monitor#meta/memory_monitor.cmx", + "fuchsia.web.ContextProvider": "fuchsia-pkg://fuchsia.com/web_engine#meta/context_provider.cmx", + }, + "system-services": [ + "fuchsia.scheduler.ProfileProvider", + "fuchsia.sysmem.Allocator" + ] + } + }, + "sandbox": { + "services": [ + "fuchsia.device.NameProvider", + "fuchsia.fonts.Provider", + "fuchsia.memorypressure.Provider", + "fuchsia.sysmem.Allocator", + "fuchsia.web.ContextProvider" + ] + } +} \ No newline at end of file
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 2e7f43e..b33a5e0b 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -3.20210325.2.1 +3.20210326.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 2e7f43e..b33a5e0b 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -3.20210325.2.1 +3.20210326.1.1
diff --git a/chrome/VERSION b/chrome/VERSION index 264ec1a..83f70ced 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=91 MINOR=0 -BUILD=4459 +BUILD=4460 PATCH=0
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 287f7b9..a4a8de1 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -72,6 +72,7 @@ "java/src/org/chromium/chrome/browser/app/appmenu/IncognitoMenuItemViewBinder.java", "java/src/org/chromium/chrome/browser/app/appmenu/ManagedByMenuItemViewBinder.java", "java/src/org/chromium/chrome/browser/app/appmenu/UpdateMenuItemViewBinder.java", + "java/src/org/chromium/chrome/browser/app/feedmanagement/FeedManagementActivity.java", "java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java", "java/src/org/chromium/chrome/browser/app/metrics/LaunchCauseMetrics.java", "java/src/org/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetrics.java",
diff --git a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected index 74e4a22..3fdefdc 100644 --- a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected +++ b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
@@ -189,6 +189,13 @@ android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: 76686af9 + <activity # DIFF-ANCHOR: 9af505d2 + 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: 50c7105b android:excludeFromRecents="true" android:exported="false"
diff --git a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected index d2da745..72011e28 100644 --- a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected +++ b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
@@ -162,6 +162,13 @@ android:taskAffinity="" android:theme="@android:style/Theme.NoDisplay"> </activity> # DIFF-ANCHOR: 76686af9 + <activity # DIFF-ANCHOR: 9af505d2 + 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: 50c7105b android:excludeFromRecents="true" android:exported="false"
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml index 70de9b7..46b2406 100644 --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml
@@ -621,6 +621,14 @@ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> </activity> + <!-- Activities for feed. --> + <activity android:name="org.chromium.chrome.browser.app.feedmanagement.FeedManagementActivity" + android:theme="@style/Theme.Chromium.Activity.Fullscreen" + android:windowSoftInputMode="stateAlwaysHidden|adjustResize" + android:exported="false" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> + </activity> + <!-- Activities for video tutorials. --> <activity android:name="org.chromium.chrome.browser.app.video_tutorials.VideoPlayerActivity" android:theme="@style/Theme.Chromium.Activity.Fullscreen"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/feedmanagement/FeedManagementActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/feedmanagement/FeedManagementActivity.java new file mode 100644 index 0000000..e3aa348 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/feedmanagement/FeedManagementActivity.java
@@ -0,0 +1,25 @@ +// 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.app.feedmanagement; + +import android.os.Bundle; + +import org.chromium.chrome.browser.SnackbarActivity; +import org.chromium.chrome.browser.feed.feedmanagement.FeedManagementCoordinator; + +/** + * Activity for managing feed and webfeed settings on the new tab page. + */ +public class FeedManagementActivity extends SnackbarActivity { + private static final String TAG = "FeedManagementActivity"; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + FeedManagementCoordinator coordinator = new FeedManagementCoordinator(this); + setContentView(coordinator.getView()); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java index e10655c..4e4d3f6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java
@@ -47,12 +47,12 @@ @Nullable private ModalDialogManager mModalDialogManager; + // TODO(crbug.com/1192907): Remove logic that suspends message queue on entering fullscreen + // mode. private FullscreenManager.Observer mFullScreenObserver = new Observer() { private int mToken = TokenHolder.INVALID_TOKEN; @Override public void onEnterFullscreen(Tab tab, FullscreenOptions options) { - // TODO(crbug.com/1123947): may not suspend when displaying a permission request - // message. mToken = suspendQueue(); }
diff --git a/chrome/app/bookmarks_strings.grdp b/chrome/app/bookmarks_strings.grdp index 612f2a73f3..5903db6 100644 --- a/chrome/app/bookmarks_strings.grdp +++ b/chrome/app/bookmarks_strings.grdp
@@ -27,6 +27,9 @@ <message name="IDS_BOOKMARK_BAR_SHOW_APPS_SHORTCUT" desc="Name shown in the context menu to hide/show the apps shortcut in the bookmark bar"> Show apps shortcut </message> + <message name="IDS_BOOKMARK_BAR_SHOW_READING_LIST" desc="Name shown in the context menu to hide/show the reading list in the bookmark bar"> + Show reading list + </message> <message name="IDS_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS_DEFAULT_NAME" desc="Name shown in the context menu to hide/show the managed bookmarks in the bookmark bar"> Show managed bookmarks </message> @@ -38,6 +41,9 @@ <message name="IDS_BOOKMARK_BAR_SHOW_APPS_SHORTCUT" desc="In Title Case: Name shown in the context menu to hide/show the apps shortcut in the bookmark bar"> Show Apps Shortcut </message> + <message name="IDS_BOOKMARK_BAR_SHOW_READING_LIST" desc="In Title Case: Name shown in the context menu to hide/show the reading list in the bookmark bar"> + Show Reading List + </message> <message name="IDS_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS_DEFAULT_NAME" desc="In Title Case: Name shown in the context menu to hide/show the managed bookmarks in the bookmark bar"> Show Managed Bookmarks </message>
diff --git a/chrome/app/bookmarks_strings_grdp/IDS_BOOKMARK_BAR_SHOW_READING_LIST.png.sha1 b/chrome/app/bookmarks_strings_grdp/IDS_BOOKMARK_BAR_SHOW_READING_LIST.png.sha1 new file mode 100644 index 0000000..b05ad4d9 --- /dev/null +++ b/chrome/app/bookmarks_strings_grdp/IDS_BOOKMARK_BAR_SHOW_READING_LIST.png.sha1
@@ -0,0 +1 @@ +cf1194d115e7bfe1f5e37703780b156f3ddcbf84 \ No newline at end of file
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h index d6ae657..33902728c 100644 --- a/chrome/app/chrome_command_ids.h +++ b/chrome/app/chrome_command_ids.h
@@ -373,14 +373,15 @@ #define IDC_BOOKMARK_BAR_RENAME_FOLDER 51004 #define IDC_BOOKMARK_BAR_EDIT 51005 #define IDC_BOOKMARK_BAR_REMOVE 51006 -#define IDC_BOOKMARK_BAR_ADD_NEW_BOOKMARK 51007 -#define IDC_BOOKMARK_BAR_NEW_FOLDER 51008 -#define IDC_BOOKMARK_MANAGER 51009 -#define IDC_BOOKMARK_BAR_ALWAYS_SHOW 51010 -#define IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT 51011 -#define IDC_BOOKMARK_BAR_UNDO 51012 -#define IDC_BOOKMARK_BAR_REDO 51013 -#define IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS 51014 +#define IDC_BOOKMARK_BAR_UNDO 51007 +#define IDC_BOOKMARK_BAR_REDO 51008 +#define IDC_BOOKMARK_BAR_ADD_NEW_BOOKMARK 51009 +#define IDC_BOOKMARK_BAR_NEW_FOLDER 51010 +#define IDC_BOOKMARK_MANAGER 51011 +#define IDC_BOOKMARK_BAR_ALWAYS_SHOW 51012 +#define IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT 51013 +#define IDC_BOOKMARK_BAR_SHOW_READING_LIST 51014 +#define IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS 51015 // Context menu items for Sharing #define IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE 51030 #define IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES 51031
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp index df4c37b..834b089 100644 --- a/chrome/app/os_settings_strings.grdp +++ b/chrome/app/os_settings_strings.grdp
@@ -819,6 +819,9 @@ <message name="IDS_SETTINGS_SCREEN_MAGNIFIER_LABEL" desc="Label for checkbox which enables the fullscreen magnifier"> Enable fullscreen magnifier </message> + <message name="IDS_SETTINGS_SCREEN_MAGNIFIER_HINT_LABEL" desc="Label for keyboard shortcut hint which tells how to enable and disable the fullscreen magnifier."> + Use Ctrl+<ph name="SEARCH_KEY_NAME">$1<ex>Search</ex></ph>+M to toggle the fullscreen magnifier. Use Ctrl+Alt+Arrow keys to move around the screen when zoomed in. + </message> <message name="IDS_SETTINGS_SCREEN_MANIFIER_MOUSE_FOLLOWING_MODE_CONTINUOUS" desc="Label for the radio button that allows the user to choose the 'continuous' mouse following mode for the full screen magnifier, which moves the zoomed-in screen continuously (underneath the cursor in the opposite direction) as the mouse moves towards the edges of the screen. This feature allows the user of full screen magnifier to choose how the zoomed-in screen moves as their mouse moves within the screen. The options are 'Move screen continuously as mouse moves', 'Move screen keeping mouse at center of screen', and 'Move screen when mouse touches edges of screen'."> Move screen continuously as mouse moves </message> @@ -832,7 +835,11 @@ Zoomed in screen follows keyboard focus </message> <message name="IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_LABEL" desc="Label for dropdown menu which contains zoom levels for the fullscreen magnifier"> - Fullscreen zoom level: + Fullscreen zoom level + </message> + <message name="IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_HINT_LABEL" desc="Label for keyboard shortcut for adjusting the zoom levels for the fullscreen magnifier"> + Use Ctrl+Alt+Brightness Up to zoom in. +Use Ctrl+Alt+Brightness Down to zoom out. </message> <message name="IDS_SETTINGS_DOCKED_MAGNIFIER_LABEL" desc="Label for checkbox which enables the docked magnifier"> Enable docked magnifier
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_HINT_LABEL.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_HINT_LABEL.png.sha1 new file mode 100644 index 0000000..3b16ef17 --- /dev/null +++ b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_HINT_LABEL.png.sha1
@@ -0,0 +1 @@ +15f7a1af974be657f5d4dadad8ef4df0870a7f0d \ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_HINT_LABEL.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_HINT_LABEL.png.sha1 new file mode 100644 index 0000000..327e9df1 --- /dev/null +++ b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_HINT_LABEL.png.sha1
@@ -0,0 +1 @@ +19757f98afdf8d843298bdbe9d7e8800244cc555 \ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_LABEL.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_LABEL.png.sha1 new file mode 100644 index 0000000..8f3384f --- /dev/null +++ b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_LABEL.png.sha1
@@ -0,0 +1 @@ +cb44e6c7a4082d36b7bc310db9823bdb2338d7dc \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index c951cb3..b6ba304 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -11,6 +11,7 @@ import("//build/config/crypto.gni") import("//build/config/features.gni") import("//build/config/linux/gtk/gtk.gni") +import("//build/config/python.gni") import("//build/config/ui.gni") import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") @@ -6659,7 +6660,8 @@ } } -action("expired_flags_list_gen") { +# TODO(crbug.com/1112471): Get this to run cleanly under Python 3. +python2_action("expired_flags_list_gen") { script = "//tools/flags/generate_expired_list.py" sources = [ "flag-metadata.json" ] inputs = [ "//chrome/VERSION" ]
diff --git a/chrome/browser/apps/platform_apps/app_browsertest.cc b/chrome/browser/apps/platform_apps/app_browsertest.cc index 914a296..d9e08f45 100644 --- a/chrome/browser/apps/platform_apps/app_browsertest.cc +++ b/chrome/browser/apps/platform_apps/app_browsertest.cc
@@ -1316,7 +1316,7 @@ void SetUpOnMainThread() override { PlatformAppBrowserTest::SetUpOnMainThread(); - mock_user_manager_ = new chromeos::MockUserManager; + mock_user_manager_ = new ash::MockUserManager; user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(mock_user_manager_)); @@ -1326,7 +1326,7 @@ .WillRepeatedly(testing::Return(true)); EXPECT_CALL(*mock_user_manager_, GetLoggedInUsers()) .WillRepeatedly(testing::Invoke(mock_user_manager_, - &chromeos::MockUserManager::GetUsers)); + &ash::MockUserManager::GetUsers)); } void TearDownOnMainThread() override { @@ -1343,7 +1343,7 @@ } private: - chromeos::MockUserManager* mock_user_manager_ = nullptr; + ash::MockUserManager* mock_user_manager_ = nullptr; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; };
diff --git a/chrome/browser/ash/account_manager/account_manager_policy_controller_browsertest.cc b/chrome/browser/ash/account_manager/account_manager_policy_controller_browsertest.cc index 9a53a99..d481c084 100644 --- a/chrome/browser/ash/account_manager/account_manager_policy_controller_browsertest.cc +++ b/chrome/browser/ash/account_manager/account_manager_policy_controller_browsertest.cc
@@ -58,7 +58,7 @@ const AccountInfo primary_account_info = identity_test_env->MakeUnconsentedPrimaryAccountAvailable( kFakePrimaryUsername); - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<FakeChromeUserManager>(); primary_account_id_ = AccountId::FromUserEmailGaiaId( primary_account_info.email, primary_account_info.gaia); const user_manager::User* user = user_manager->AddUser(primary_account_id_);
diff --git a/chrome/browser/ash/app_mode/app_launch_utils_unittest.cc b/chrome/browser/ash/app_mode/app_launch_utils_unittest.cc index 149263d..481be11e 100644 --- a/chrome/browser/ash/app_mode/app_launch_utils_unittest.cc +++ b/chrome/browser/ash/app_mode/app_launch_utils_unittest.cc
@@ -47,11 +47,10 @@ testing::Test::SetUp(); const AccountId account_id = AccountId::FromUserEmail("lala@example.com"); - auto fake_user_manager = - std::make_unique<chromeos::FakeChromeUserManager>(); + auto fake_user_manager = std::make_unique<FakeChromeUserManager>(); // Stealing the pointer from unique ptr before it goes to the scoped user // manager. - chromeos::FakeChromeUserManager* user_manager = fake_user_manager.get(); + FakeChromeUserManager* user_manager = fake_user_manager.get(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( std::move(fake_user_manager)); user_manager->AddWebKioskAppUser(account_id);
diff --git a/chrome/browser/ash/app_mode/startup_app_launcher_unittest.cc b/chrome/browser/ash/app_mode/startup_app_launcher_unittest.cc index 46a56cb..4b74824 100644 --- a/chrome/browser/ash/app_mode/startup_app_launcher_unittest.cc +++ b/chrome/browser/ash/app_mode/startup_app_launcher_unittest.cc
@@ -560,8 +560,7 @@ void InitializeKioskAppUser() { const AccountId kiosk_account_id( AccountId::FromUserEmail(kTestUserAccount)); - auto fake_user_manager_ = - std::make_unique<chromeos::FakeChromeUserManager>(); + auto fake_user_manager_ = std::make_unique<FakeChromeUserManager>(); fake_user_manager_->AddKioskAppUser(kiosk_account_id); fake_user_manager_->LoginUser(kiosk_account_id);
diff --git a/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc b/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc index e27a403..5cf5f2b 100644 --- a/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc +++ b/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc
@@ -20,8 +20,7 @@ class ArcDemoModeDelegateImplTest : public testing::Test { public: ArcDemoModeDelegateImplTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} ~ArcDemoModeDelegateImplTest() override = default; ArcDemoModeDelegateImplTest(const ArcDemoModeDelegateImplTest&) = delete; ArcDemoModeDelegateImplTest& operator=(const ArcDemoModeDelegateImplTest&) =
diff --git a/chrome/browser/ash/arc/arc_support_host_unittest.cc b/chrome/browser/ash/arc/arc_support_host_unittest.cc index b85904af..7674dfc2 100644 --- a/chrome/browser/ash/arc/arc_support_host_unittest.cc +++ b/chrome/browser/ash/arc/arc_support_host_unittest.cc
@@ -74,7 +74,7 @@ void SetUp() override { BrowserWithTestWindowTest::SetUp(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); identity_test_env_adaptor_ = std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile()); // The code under test should not be tied to browser sync consent.
diff --git a/chrome/browser/ash/arc/arc_util_unittest.cc b/chrome/browser/ash/arc/arc_util_unittest.cc index 561ddb4..3bd5918c 100644 --- a/chrome/browser/ash/arc/arc_util_unittest.cc +++ b/chrome/browser/ash/arc/arc_util_unittest.cc
@@ -70,7 +70,7 @@ command_line->AppendSwitch(switches::kTestType); } -class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { +class FakeUserManagerWithLocalState : public ash::FakeChromeUserManager { public: explicit FakeUserManagerWithLocalState( TestingProfileManager* testing_profile_manager)
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc index 0ac7059a..c027b6b2 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc
@@ -209,7 +209,7 @@ ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); // Init ArcSessionManager for testing. ArcServiceLauncher::Get()->ResetForTesting(); ArcSessionManager::SetUiEnabledForTesting(false); @@ -229,7 +229,7 @@ // Explicitly removing the user is required; otherwise ProfileHelper keeps // a dangling pointer to the User. // TODO(nya): Consider removing all users from ProfileHelper in the - // destructor of FakeChromeUserManager. + // destructor of ash::FakeChromeUserManager. GetFakeUserManager()->RemoveUserFromList( GetFakeUserManager()->GetActiveUser()->GetAccountId()); // Since ArcServiceLauncher is (re-)set up with profile() in @@ -245,8 +245,8 @@ chromeos::ProfileHelper::SetAlwaysReturnPrimaryUserForTesting(false); } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc b/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc index c224839..a0d57a0 100644 --- a/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc +++ b/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc
@@ -84,7 +84,7 @@ void SetUpOnMainThread() override { user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); const AccountId account_id(AccountId::FromUserEmail(kFakeUserName)); GetFakeUserManager()->AddArcKioskAppUser(account_id); @@ -111,8 +111,8 @@ void TearDownOnMainThread() override { user_manager_enabler_.reset(); } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc b/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc index f4f862af..c1e827cf 100644 --- a/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc +++ b/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc
@@ -32,8 +32,7 @@ class ArcBootPhaseMonitorBridgeTest : public testing::Test { public: ArcBootPhaseMonitorBridgeTest() - : scoped_user_manager_( - std::make_unique<chromeos::FakeChromeUserManager>()), + : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()), record_uma_counter_(0) { // Need to initialize DBusThreadManager before ArcSessionManager's // constructor calls DBusThreadManager::Get(). @@ -102,8 +101,8 @@ DISALLOW_COPY_AND_ASSIGN(TestDelegateImpl); }; - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/enterprise/arc_data_snapshotd_delegate_unittest.cc b/chrome/browser/ash/arc/enterprise/arc_data_snapshotd_delegate_unittest.cc index a876399..a909b62 100644 --- a/chrome/browser/ash/arc/enterprise/arc_data_snapshotd_delegate_unittest.cc +++ b/chrome/browser/ash/arc/enterprise/arc_data_snapshotd_delegate_unittest.cc
@@ -62,8 +62,7 @@ class ArcDataSnapshotdDelegateTest : public testing::Test { public: ArcDataSnapshotdDelegateTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) { + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) { SetArcAvailableCommandLineForTesting( base::CommandLine::ForCurrentProcess()); ArcSessionManager::EnableCheckAndroidManagementForTesting(false); @@ -135,8 +134,8 @@ ArcDataSnapshotdDelegate* delegate() { return delegate_.get(); } private: - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc b/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc index f01926f1..4468901e 100644 --- a/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc +++ b/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc
@@ -25,11 +25,11 @@ #include "testing/gtest/include/gtest/gtest.h" namespace arc { + class ArcBootPhaseThrottleObserverTest : public testing::Test { public: ArcBootPhaseThrottleObserverTest() - : scoped_user_manager_( - std::make_unique<chromeos::FakeChromeUserManager>()) { + : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { // Need to initialize DBusThreadManager before ArcSessionManager's // constructor calls DBusThreadManager::Get(). chromeos::DBusThreadManager::Initialize(); @@ -43,7 +43,7 @@ base::CommandLine::ForCurrentProcess()); const AccountId account_id(AccountId::FromUserEmailGaiaId( testing_profile_->GetProfileUserName(), "")); - auto* user_manager = static_cast<chromeos::FakeChromeUserManager*>( + auto* user_manager = static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); user_manager->AddUser(account_id); user_manager->LoginUser(account_id);
diff --git a/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc b/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc index 3179d4e..71e9829 100644 --- a/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc +++ b/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc
@@ -45,8 +45,7 @@ class ArcSettingsServiceTest : public BrowserWithTestWindowTest { public: ArcSettingsServiceTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} ArcSettingsServiceTest(const ArcSettingsServiceTest&) = delete; ArcSettingsServiceTest& operator=(const ArcSettingsServiceTest&) = delete; ~ArcSettingsServiceTest() override = default; @@ -121,8 +120,8 @@ WaitForInstanceReady(arc_bridge_service()->intent_helper()); } - chromeos::FakeChromeUserManager* user_manager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* user_manager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); } ArcBridgeService* arc_bridge_service() {
diff --git a/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc b/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc index efea3ba6a..1183dc9 100644 --- a/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc +++ b/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc
@@ -41,8 +41,7 @@ class ArcProvisionNotificationServiceTest : public BrowserWithTestWindowTest { protected: ArcProvisionNotificationServiceTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} void SetUp() override { SetUpInternal(/*should_create_session_manager=*/true); @@ -93,8 +92,8 @@ chromeos::DBusThreadManager::Shutdown(); } - chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc index 40dd9ba..2e8ee185 100644 --- a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc +++ b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc
@@ -63,7 +63,7 @@ void SetUp() override { BrowserWithTestWindowTest::SetUp(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); signin::MakePrimaryAccountAvailable( IdentityManagerFactory::GetForProfile(profile()), "testing@account.com");
diff --git a/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc b/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc index 23cb21d1..163a562 100644 --- a/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc +++ b/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc
@@ -224,8 +224,7 @@ .Times(1); // Setting up user profile for ReportCompliance() tests. - chromeos::FakeChromeUserManager* const fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* const fake_user_manager = new ash::FakeChromeUserManager(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager)); const AccountId account_id(
diff --git a/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc b/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc index 998604de..0a7c7e1 100644 --- a/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc +++ b/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc
@@ -51,8 +51,7 @@ class ArcPlayStoreEnabledPreferenceHandlerTest : public testing::Test { public: ArcPlayStoreEnabledPreferenceHandlerTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} void SetUp() override { // Need to initialize DBusThreadManager before ArcSessionManager's @@ -109,8 +108,8 @@ ArcPlayStoreEnabledPreferenceHandler* preference_handler() const { return preference_handler_.get(); } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc b/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc index 2472b198..7b0b7d78 100644 --- a/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc +++ b/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc
@@ -122,7 +122,7 @@ void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); // Init ArcSessionManager for testing. ArcServiceLauncher::Get()->ResetForTesting(); ArcSessionManager::SetUiEnabledForTesting(false); @@ -178,7 +178,7 @@ // Explicitly removing the user is required; otherwise ProfileHelper keeps // a dangling pointer to the User. // TODO(nya): Consider removing all users from ProfileHelper in the - // destructor of FakeChromeUserManager. + // destructor of ash::FakeChromeUserManager. const AccountId account_id( AccountId::FromUserEmailGaiaId(kFakeUserName, kFakeGaiaId)); GetFakeUserManager()->RemoveUserFromList(account_id); @@ -197,8 +197,8 @@ MixinBasedInProcessBrowserTest::TearDownOnMainThread(); } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc b/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc index 5714331..60a5e0c17 100644 --- a/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc +++ b/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc
@@ -152,8 +152,7 @@ class ArcSessionManagerInLoginScreenTest : public testing::Test { public: ArcSessionManagerInLoginScreenTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) { + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) { // Need to initialize DBusThreadManager before ArcSessionManager's // constructor calls DBusThreadManager::Get(). chromeos::DBusThreadManager::Initialize(); @@ -238,8 +237,7 @@ public: ArcSessionManagerTestBase() : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP), - user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()), + user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()), test_local_state_(std::make_unique<TestingPrefServiceSimple>()) { arc::prefs::RegisterLocalStatePrefs(test_local_state_->registry()); } @@ -283,8 +281,8 @@ chromeos::DBusThreadManager::Shutdown(); } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc b/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc index ad1306cb..6f7ee8f8 100644 --- a/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc +++ b/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc
@@ -62,7 +62,7 @@ public: ArcWallpaperServiceTest() : task_environment_(std::make_unique<content::BrowserTaskEnvironment>()), - user_manager_(new chromeos::FakeChromeUserManager()), + user_manager_(new ash::FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)) {} ~ArcWallpaperServiceTest() override = default; @@ -120,7 +120,7 @@ private: std::unique_ptr<content::BrowserTaskEnvironment> task_environment_; - chromeos::FakeChromeUserManager* const user_manager_ = nullptr; + ash::FakeChromeUserManager* const user_manager_ = nullptr; user_manager::ScopedUserManager user_manager_enabler_; arc::ArcServiceManager arc_service_manager_; // testing_profile_ needs to be deleted before arc_service_manager_.
diff --git a/chrome/browser/ash/assistant/assistant_util_unittest.cc b/chrome/browser/ash/assistant/assistant_util_unittest.cc index 3681109..42f3e19 100644 --- a/chrome/browser/ash/assistant/assistant_util_unittest.cc +++ b/chrome/browser/ash/assistant/assistant_util_unittest.cc
@@ -41,7 +41,7 @@ ~ScopedSpoofGoogleBrandedDevice() { OverrideIsGoogleDeviceForTesting(false); } }; -class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { +class FakeUserManagerWithLocalState : public ash::FakeChromeUserManager { public: explicit FakeUserManagerWithLocalState( TestingProfileManager* testing_profile_manager)
diff --git a/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc b/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc index 2f70329..baf59ae 100644 --- a/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc +++ b/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc
@@ -213,7 +213,7 @@ std::unique_ptr<TpmChallengeKeySubtle> challenge_key_subtle_; TestingProfileManager testing_profile_manager_; - chromeos::FakeChromeUserManager fake_user_manager_; + FakeChromeUserManager fake_user_manager_; // A sign-in Profile is always created in SetUp(). TestingProfile* signin_profile_ = nullptr; // The profile that will be passed to TpmChallengeKeySubtle - can be nullptr.
diff --git a/chrome/browser/ash/crosapi/browser_util_unittest.cc b/chrome/browser/ash/crosapi/browser_util_unittest.cc index 3d41f1f..70336e2 100644 --- a/chrome/browser/ash/crosapi/browser_util_unittest.cc +++ b/chrome/browser/ash/crosapi/browser_util_unittest.cc
@@ -33,7 +33,7 @@ ~BrowserUtilTest() override = default; void SetUp() override { - fake_user_manager_ = new chromeos::FakeChromeUserManager; + fake_user_manager_ = new ash::FakeChromeUserManager; scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager_)); } @@ -52,7 +52,7 @@ // destruction timing. content::BrowserTaskEnvironment task_environment_; TestingProfile testing_profile_; - chromeos::FakeChromeUserManager* fake_user_manager_ = nullptr; + ash::FakeChromeUserManager* fake_user_manager_ = nullptr; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; ScopedTestingLocalState local_state_;
diff --git a/chrome/browser/ash/lock_screen_apps/app_manager_impl_unittest.cc b/chrome/browser/ash/lock_screen_apps/app_manager_impl_unittest.cc index 78a3285..0d4f4b5 100644 --- a/chrome/browser/ash/lock_screen_apps/app_manager_impl_unittest.cc +++ b/chrome/browser/ash/lock_screen_apps/app_manager_impl_unittest.cc
@@ -451,7 +451,7 @@ content::BrowserTaskEnvironment task_environment_; ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager user_manager_; + ash::ScopedTestUserManager user_manager_; TestingProfileManager profile_manager_; TestingProfile* profile_ = nullptr;
diff --git a/chrome/browser/ash/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc b/chrome/browser/ash/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc index aedddc3..34d4700 100644 --- a/chrome/browser/ash/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc +++ b/chrome/browser/ash/lock_screen_apps/lock_screen_profile_creator_impl_unittest.cc
@@ -359,7 +359,7 @@ content::BrowserTaskEnvironment task_environment_; ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; UnittestProfileManager* profile_manager_;
diff --git a/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc b/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc index 002b1bc..b41e93a 100644 --- a/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc +++ b/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc
@@ -377,7 +377,7 @@ class LockScreenAppStateTest : public BrowserWithTestWindowTest { public: LockScreenAppStateTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new ash::FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} ~LockScreenAppStateTest() override = default; @@ -620,9 +620,7 @@ lock_screen_profile_creator_->CreateProfile(); } - chromeos::FakeChromeUserManager* fake_user_manager() { - return fake_user_manager_; - } + ash::FakeChromeUserManager* fake_user_manager() { return fake_user_manager_; } Profile* LockScreenProfile() { return lock_screen_profile_creator_->lock_screen_profile(); @@ -664,7 +662,7 @@ std::unique_ptr<base::test::ScopedCommandLine> command_line_; - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager user_manager_enabler_; // Run loop used to throttle test until async state controller initialization
diff --git a/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc b/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc index 6c5bf5e..3f353d1 100644 --- a/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc +++ b/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc
@@ -258,7 +258,7 @@ CryptohomeAuthenticatorTest() : user_context_(user_manager::USER_TYPE_REGULAR, AccountId::FromUserEmail("me@nowhere.org")), - user_manager_(new chromeos::FakeChromeUserManager()), + user_manager_(new FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)), consumer_(run_loop_.QuitClosure()), owner_key_util_(new ownership::MockOwnerKeyUtil()) {
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_service_regular_unittest.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_service_regular_unittest.cc index 65ded6b..37732f63 100644 --- a/chrome/browser/ash/login/easy_unlock/easy_unlock_service_regular_unittest.cc +++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_service_regular_unittest.cc
@@ -148,8 +148,7 @@ account_id_ = AccountId::FromUserEmail(profile_->GetProfileUserName()); - auto fake_chrome_user_manager = - std::make_unique<chromeos::FakeChromeUserManager>(); + auto fake_chrome_user_manager = std::make_unique<FakeChromeUserManager>(); fake_chrome_user_manager_ = fake_chrome_user_manager.get(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( std::move(fake_chrome_user_manager)); @@ -249,7 +248,7 @@ std::unique_ptr<TestingProfile> profile_; AccountId account_id_; - chromeos::FakeChromeUserManager* fake_chrome_user_manager_; + FakeChromeUserManager* fake_chrome_user_manager_; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; const multidevice::RemoteDeviceRef test_local_device_;
diff --git a/chrome/browser/ash/login/enterprise_user_session_metrics.h b/chrome/browser/ash/login/enterprise_user_session_metrics.h index 7c807092..ce43b14 100644 --- a/chrome/browser/ash/login/enterprise_user_session_metrics.h +++ b/chrome/browser/ash/login/enterprise_user_session_metrics.h
@@ -57,4 +57,10 @@ } // namespace enterprise_user_session_metrics } // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace ash { +namespace enterprise_user_session_metrics = + ::chromeos::enterprise_user_session_metrics; +} + #endif // CHROME_BROWSER_ASH_LOGIN_ENTERPRISE_USER_SESSION_METRICS_H_
diff --git a/chrome/browser/ash/login/existing_user_controller_base_test.h b/chrome/browser/ash/login/existing_user_controller_base_test.h index d429c136..02bc5dd 100644 --- a/chrome/browser/ash/login/existing_user_controller_base_test.h +++ b/chrome/browser/ash/login/existing_user_controller_base_test.h
@@ -5,6 +5,9 @@ #ifndef CHROME_BROWSER_ASH_LOGIN_EXISTING_USER_CONTROLLER_BASE_TEST_H_ #define CHROME_BROWSER_ASH_LOGIN_EXISTING_USER_CONTROLLER_BASE_TEST_H_ +// TODO(https://crbug.com/1164001): move to forward declaration when migrated +// to ash namespace +#include "chrome/browser/ash/login/users/mock_user_manager.h" #include "components/account_id/account_id.h" #include "content/public/test/browser_task_environment.h" #include "testing/gmock/include/gmock/gmock.h" @@ -17,9 +20,6 @@ } namespace chromeos { - -class MockUserManager; - namespace { const char kFirstSAMLUserId[] = "12345";
diff --git a/chrome/browser/ash/login/helper.h b/chrome/browser/ash/login/helper.h index 9862dfec..2ad2cd8 100644 --- a/chrome/browser/ash/login/helper.h +++ b/chrome/browser/ash/login/helper.h
@@ -119,4 +119,10 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace ash { +namespace login = ::chromeos::login; +using ::chromeos::GetCurrentUserImageSize; +} // namespace ash + #endif // CHROME_BROWSER_ASH_LOGIN_HELPER_H_
diff --git a/chrome/browser/ash/login/login_manager_test.h b/chrome/browser/ash/login/login_manager_test.h index 4d1b4d9..54a8e9e 100644 --- a/chrome/browser/ash/login/login_manager_test.h +++ b/chrome/browser/ash/login/login_manager_test.h
@@ -70,4 +70,9 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace ash { +using ::chromeos::LoginManagerTest; +} + #endif // CHROME_BROWSER_ASH_LOGIN_LOGIN_MANAGER_TEST_H_
diff --git a/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc b/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc index 8abf719d..15f5e04 100644 --- a/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc +++ b/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc
@@ -34,7 +34,7 @@ constexpr base::TimeDelta kSamlOnlineShortDelay = base::TimeDelta::FromSeconds(10); -class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { +class FakeUserManagerWithLocalState : public FakeChromeUserManager { public: FakeUserManagerWithLocalState() : test_local_state_(std::make_unique<TestingPrefServiceSimple>()) {
diff --git a/chrome/browser/ash/login/saml/password_sync_token_login_checker_unittest.cc b/chrome/browser/ash/login/saml/password_sync_token_login_checker_unittest.cc index e6edf41..532639da 100644 --- a/chrome/browser/ash/login/saml/password_sync_token_login_checker_unittest.cc +++ b/chrome/browser/ash/login/saml/password_sync_token_login_checker_unittest.cc
@@ -25,7 +25,7 @@ constexpr base::TimeDelta kSamlTokenDelay = base::TimeDelta::FromSeconds(60); -class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { +class FakeUserManagerWithLocalState : public FakeChromeUserManager { public: FakeUserManagerWithLocalState() : test_local_state_(std::make_unique<TestingPrefServiceSimple>()) {
diff --git a/chrome/browser/ash/login/saml/password_sync_token_verifier_unittest.cc b/chrome/browser/ash/login/saml/password_sync_token_verifier_unittest.cc index 38ba604e..1b90690 100644 --- a/chrome/browser/ash/login/saml/password_sync_token_verifier_unittest.cc +++ b/chrome/browser/ash/login/saml/password_sync_token_verifier_unittest.cc
@@ -34,7 +34,7 @@ constexpr base::TimeDelta kSyncTokenCheckBelowInterval = base::TimeDelta::FromMinutes(4); -class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { +class FakeUserManagerWithLocalState : public FakeChromeUserManager { public: FakeUserManagerWithLocalState() : test_local_state_(std::make_unique<TestingPrefServiceSimple>()) {
diff --git a/chrome/browser/ash/login/saml/saml_browsertest.cc b/chrome/browser/ash/login/saml/saml_browsertest.cc index 48526dff..7589c148 100644 --- a/chrome/browser/ash/login/saml/saml_browsertest.cc +++ b/chrome/browser/ash/login/saml/saml_browsertest.cc
@@ -977,20 +977,20 @@ // Give affiliated users appropriate affiliation IDs. std::set<std::string> user_affiliation_ids; user_affiliation_ids.insert(kAffiliationID); - chromeos::ChromeUserManager::Get()->SetUserAffiliation( + ChromeUserManager::Get()->SetUserAffiliation( AccountId::FromUserEmailGaiaId( saml_test_users::kFirstUserCorpExampleComEmail, kFirstSAMLUserGaiaId), user_affiliation_ids); - chromeos::ChromeUserManager::Get()->SetUserAffiliation( + ChromeUserManager::Get()->SetUserAffiliation( AccountId::FromUserEmailGaiaId( saml_test_users::kSecondUserCorpExampleComEmail, kSecondSAMLUserGaiaId), user_affiliation_ids); - chromeos::ChromeUserManager::Get()->SetUserAffiliation( + ChromeUserManager::Get()->SetUserAffiliation( AccountId::FromUserEmailGaiaId( saml_test_users::kThirdUserCorpExampleComEmail, kThirdSAMLUserGaiaId), user_affiliation_ids); - chromeos::ChromeUserManager::Get()->SetUserAffiliation( + ChromeUserManager::Get()->SetUserAffiliation( AccountId::FromUserEmailGaiaId(kNonSAMLUserEmail, kNonSAMLUserGaiaId), user_affiliation_ids);
diff --git a/chrome/browser/ash/login/screens/user_selection_screen.cc b/chrome/browser/ash/login/screens/user_selection_screen.cc index ab886d8..8f01cf9 100644 --- a/chrome/browser/ash/login/screens/user_selection_screen.cc +++ b/chrome/browser/ash/login/screens/user_selection_screen.cc
@@ -556,8 +556,8 @@ user.image_bytes()->front(), user.image_bytes()->front() + user.image_bytes()->size()); } else if (user.HasDefaultImage()) { - int resource_id = chromeos::default_user_image::kDefaultImageResourceIDs - [user.image_index()]; + int resource_id = + default_user_image::kDefaultImageResourceIDs[user.image_index()]; load_image_from_resource(resource_id); } else if (user.image_is_stub()) { load_image_from_resource(IDR_LOGIN_DEFAULT_USER);
diff --git a/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc b/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc index 26f4019..9d5f785 100644 --- a/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc +++ b/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc
@@ -47,7 +47,7 @@ void SetUp() override { BrowserWithTestWindowTest::SetUp(); - mock_user_manager_ = new chromeos::MockUserManager(); + mock_user_manager_ = new ash::MockUserManager(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(mock_user_manager_)); @@ -84,7 +84,7 @@ protected: std::unique_ptr<NotificationDisplayServiceTester> display_service_; - chromeos::MockUserManager* mock_user_manager_; // Not owned. + ash::MockUserManager* mock_user_manager_; // Not owned. std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; std::unique_ptr<IdentityTestEnvironmentProfileAdaptor> identity_test_env_profile_adaptor_;
diff --git a/chrome/browser/ash/login/test/fake_gaia_mixin.h b/chrome/browser/ash/login/test/fake_gaia_mixin.h index 33dac049..1a309d0 100644 --- a/chrome/browser/ash/login/test/fake_gaia_mixin.h +++ b/chrome/browser/ash/login/test/fake_gaia_mixin.h
@@ -116,4 +116,9 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace ash { +using ::chromeos::FakeGaiaMixin; +} + #endif // CHROME_BROWSER_ASH_LOGIN_TEST_FAKE_GAIA_MIXIN_H_
diff --git a/chrome/browser/ash/login/user_flow.h b/chrome/browser/ash/login/user_flow.h index e0c6ba83..31c4550 100644 --- a/chrome/browser/ash/login/user_flow.h +++ b/chrome/browser/ash/login/user_flow.h
@@ -52,4 +52,10 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace ash { +using ::chromeos::DefaultUserFlow; +using ::chromeos::UserFlow; +} // namespace ash + #endif // CHROME_BROWSER_ASH_LOGIN_USER_FLOW_H_
diff --git a/chrome/browser/ash/login/users/affiliation.cc b/chrome/browser/ash/login/users/affiliation.cc index 33ede92..0c9556b 100644 --- a/chrome/browser/ash/login/users/affiliation.cc +++ b/chrome/browser/ash/login/users/affiliation.cc
@@ -17,8 +17,7 @@ #include "components/policy/proto/device_management_backend.pb.h" #include "google_apis/gaia/gaia_auth_util.h" -namespace chromeos { - +namespace ash { namespace { std::string GetDeviceDMTokenIfAffiliated( @@ -94,4 +93,4 @@ return base::BindRepeating(&GetDeviceDMTokenIfAffiliated, account_id); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/affiliation.h b/chrome/browser/ash/login/users/affiliation.h index ef1432f5..eebffb2 100644 --- a/chrome/browser/ash/login/users/affiliation.h +++ b/chrome/browser/ash/login/users/affiliation.h
@@ -13,7 +13,7 @@ class AccountId; -namespace chromeos { +namespace ash { typedef std::set<std::string> AffiliationIDSet; @@ -37,6 +37,6 @@ base::RepeatingCallback<std::string(const std::vector<std::string>&)> GetDeviceDMTokenForUserPolicyGetter(const AccountId& account_id); -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AFFILIATION_H_
diff --git a/chrome/browser/ash/login/users/affiliation_unittest.cc b/chrome/browser/ash/login/users/affiliation_unittest.cc index 019f656e..1dbd482 100644 --- a/chrome/browser/ash/login/users/affiliation_unittest.cc +++ b/chrome/browser/ash/login/users/affiliation_unittest.cc
@@ -9,7 +9,7 @@ #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { +namespace ash { TEST(AffiliationTest, HaveCommonElementEmptySet) { // Empty sets don't have common elements. @@ -96,4 +96,4 @@ EXPECT_FALSE(IsUserAffiliated(user_ids, device_ids, "user")); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/mock_user_image_manager.cc b/chrome/browser/ash/login/users/avatar/mock_user_image_manager.cc index c17ee2d..29694d30 100644 --- a/chrome/browser/ash/login/users/avatar/mock_user_image_manager.cc +++ b/chrome/browser/ash/login/users/avatar/mock_user_image_manager.cc
@@ -4,11 +4,11 @@ #include "chrome/browser/ash/login/users/avatar/mock_user_image_manager.h" -namespace chromeos { +namespace ash { MockUserImageManager::MockUserImageManager(const std::string& user_id) : UserImageManager(user_id) {} MockUserImageManager::~MockUserImageManager() {} -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/mock_user_image_manager.h b/chrome/browser/ash/login/users/avatar/mock_user_image_manager.h index 2e20f5c..34929f306 100644 --- a/chrome/browser/ash/login/users/avatar/mock_user_image_manager.h +++ b/chrome/browser/ash/login/users/avatar/mock_user_image_manager.h
@@ -12,7 +12,7 @@ #include "components/user_manager/user_image/user_image.h" #include "testing/gmock/include/gmock/gmock.h" -namespace chromeos { +namespace ash { class MockUserImageManager : public UserImageManager { public: @@ -27,6 +27,6 @@ MOCK_CONST_METHOD0(DownloadedProfileImage, const gfx::ImageSkia&(void)); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AVATAR_MOCK_USER_IMAGE_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/avatar/user_image_loader.cc b/chrome/browser/ash/login/users/avatar/user_image_loader.cc index eba5723..1c8a7c3 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_loader.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_loader.cc
@@ -23,7 +23,7 @@ #include "ui/gfx/codec/png_codec.h" #include "ui/gfx/skbitmap_operations.h" -namespace chromeos { +namespace ash { namespace user_image_loader { namespace { @@ -262,4 +262,4 @@ } } // namespace user_image_loader -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/user_image_loader.h b/chrome/browser/ash/login/users/avatar/user_image_loader.h index e1f80cd..a351765 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_loader.h +++ b/chrome/browser/ash/login/users/avatar/user_image_loader.h
@@ -22,7 +22,7 @@ // Helper functions that read, decode and optionally resize an image on a // background thread. The image is returned in the form of a UserImage. -namespace chromeos { +namespace ash { namespace user_image_loader { using LoadedCallback = @@ -50,6 +50,11 @@ LoadedCallback loaded_cb); } // namespace user_image_loader -} // namespace chromeos +} // namespace ash + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos { +namespace user_image_loader = ::ash::user_image_loader; +} #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AVATAR_USER_IMAGE_LOADER_H_
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager.cc b/chrome/browser/ash/login/users/avatar/user_image_manager.cc index ba5b28c..2a1ec1b 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_manager.cc
@@ -4,11 +4,11 @@ #include "chrome/browser/ash/login/users/avatar/user_image_manager.h" -namespace chromeos { +namespace ash { UserImageManager::UserImageManager(const std::string& user_id) : user_id_(user_id) {} UserImageManager::~UserImageManager() {} -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager.h b/chrome/browser/ash/login/users/avatar/user_image_manager.h index 5f13ec2..9f384a09 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager.h +++ b/chrome/browser/ash/login/users/avatar/user_image_manager.h
@@ -23,7 +23,7 @@ class UserImage; } -namespace chromeos { +namespace ash { class UserImageSyncObserver; @@ -108,6 +108,6 @@ const std::string user_id_; }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AVATAR_USER_IMAGE_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc b/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc index 746209ea..97cdc72 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc
@@ -82,8 +82,7 @@ #include "ui/gfx/image/image_skia.h" #include "url/gurl.h" -namespace chromeos { - +namespace ash { namespace { constexpr char kRandomTokenStrForTesting[] = "random-token-str-for-testing"; @@ -559,7 +558,7 @@ owner_key_util_->SetPublicKeyFromPrivateKey( *device_policy_.GetSigningKey()); // Override FakeSessionManagerClient. This will be shut down by the browser. - SessionManagerClient::InitializeFakeInMemory(); + chromeos::SessionManagerClient::InitializeFakeInMemory(); FakeSessionManagerClient::Get()->set_device_policy( device_policy_.GetBlob()); @@ -841,4 +840,4 @@ EXPECT_EQ(policy_image_.height(), saved_image.height()); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc index 70c2803..55a4f515 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc
@@ -46,7 +46,7 @@ #include "ui/chromeos/resources/grit/ui_chromeos_resources.h" #include "ui/gfx/image/image_skia.h" -namespace chromeos { +namespace ash { namespace { @@ -897,4 +897,4 @@ return user->is_logged_in() && user->HasGaiaAccount(); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.h b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.h index 9653040..8563626 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.h +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.h
@@ -34,7 +34,7 @@ class UserManager; } // namespace user_manager -namespace chromeos { +namespace ash { class UserImageSyncObserver; @@ -211,6 +211,6 @@ DISALLOW_COPY_AND_ASSIGN(UserImageManagerImpl); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AVATAR_USER_IMAGE_MANAGER_IMPL_H_
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.cc b/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.cc index 17cced44a..0cf99c4 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.cc
@@ -16,7 +16,7 @@ #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/image/image_skia_rep.h" -namespace chromeos { +namespace ash { namespace test { const char kUserAvatarImage1RelativePath[] = "chromeos/avatar1.jpg"; @@ -76,4 +76,4 @@ } } // namespace test -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.h b/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.h index 82e09ed..a550ad96 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.h +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_test_util.h
@@ -16,7 +16,7 @@ class FilePath; } -namespace chromeos { +namespace ash { namespace test { extern const char kUserAvatarImage1RelativePath[]; @@ -48,6 +48,6 @@ }; } // namespace test -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AVATAR_USER_IMAGE_MANAGER_TEST_UTIL_H_
diff --git a/chrome/browser/ash/login/users/avatar/user_image_sync_observer.cc b/chrome/browser/ash/login/users/avatar/user_image_sync_observer.cc index cd0b93d..c1e12f1a 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_sync_observer.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_sync_observer.cc
@@ -18,7 +18,7 @@ #include "components/user_manager/user.h" #include "components/user_manager/user_manager.h" -namespace chromeos { +namespace ash { namespace { // A dictionary containing info about user image. @@ -170,4 +170,4 @@ return dict && dict->GetInteger(kImageIndex, index); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/avatar/user_image_sync_observer.h b/chrome/browser/ash/login/users/avatar/user_image_sync_observer.h index bb46b01c..0a15f24 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_sync_observer.h +++ b/chrome/browser/ash/login/users/avatar/user_image_sync_observer.h
@@ -30,7 +30,7 @@ class User; } -namespace chromeos { +namespace ash { // This class is responsible for keeping local user image synced with // image saved in syncable preference. @@ -85,6 +85,6 @@ bool local_image_changed_; }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_AVATAR_USER_IMAGE_SYNC_OBSERVER_H_
diff --git a/chrome/browser/ash/login/users/chrome_user_manager.cc b/chrome/browser/ash/login/users/chrome_user_manager.cc index 30eeb53..14aec3d 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager.cc +++ b/chrome/browser/ash/login/users/chrome_user_manager.cc
@@ -17,7 +17,7 @@ #include "components/user_manager/user_names.h" #include "components/user_manager/user_type.h" -namespace chromeos { +namespace ash { ChromeUserManager::ChromeUserManager( scoped_refptr<base::SingleThreadTaskRunner> task_runner) @@ -123,4 +123,4 @@ return user_manager ? static_cast<ChromeUserManager*>(user_manager) : NULL; } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/chrome_user_manager.h b/chrome/browser/ash/login/users/chrome_user_manager.h index 4cbed40..ec5f159 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager.h +++ b/chrome/browser/ash/login/users/chrome_user_manager.h
@@ -16,7 +16,7 @@ #include "components/user_manager/user.h" #include "components/user_manager/user_manager_base.h" -namespace chromeos { +namespace ash { // Chrome specific interface of the UserManager. class ChromeUserManager : public user_manager::UserManagerBase, @@ -69,6 +69,11 @@ DISALLOW_COPY_AND_ASSIGN(ChromeUserManager); }; -} // namespace chromeos +} // namespace ash + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos { +using ::ash::ChromeUserManager; +} #endif // CHROME_BROWSER_ASH_LOGIN_USERS_CHROME_USER_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc index ea050a7..5819ecef 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc +++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
@@ -115,11 +115,16 @@ #include "ui/gfx/image/image_skia.h" #include "ui/wm/core/wm_core_switches.h" -using content::BrowserThread; - -namespace chromeos { +namespace ash { namespace { +// TODO(https://crbug.com/1164001): remove after the classes are migrated +using ::chromeos::AuthErrorObserver; +using ::chromeos::AuthErrorObserverFactory; +using ::chromeos::EasyUnlockService; +using ::chromeos::ProxyConfigServiceImpl; +using ::content::BrowserThread; + // A string pref that gets set when a device local account is removed but a // user is currently logged into that account, requiring the account's data to // be removed after logout. @@ -166,12 +171,11 @@ return false; PrefService* const prefs = profile->GetPrefs(); if (can_lock) { - *can_lock = - user->can_lock() && prefs->GetBoolean(ash::prefs::kAllowScreenLock); + *can_lock = user->can_lock() && prefs->GetBoolean(prefs::kAllowScreenLock); } if (multi_profile_behavior) { *multi_profile_behavior = - prefs->GetString(prefs::kMultiProfileUserBehavior); + prefs->GetString(::prefs::kMultiProfileUserBehavior); } return true; } @@ -290,7 +294,7 @@ registry->RegisterListPref(kDeviceLocalAccountsWithSavedData); registry->RegisterStringPref(kDeviceLocalAccountPendingDataRemoval, std::string()); - registry->RegisterListPref(prefs::kReportingUsers); + registry->RegisterListPref(::prefs::kReportingUsers); SupervisedUserManager::RegisterLocalStatePrefs(registry); SessionLengthLimiter::RegisterPrefs(registry); @@ -933,11 +937,10 @@ // `known_user::RemovePrefs`. See https://crbug.com/778077. for (auto& handler : cloud_external_data_policy_handlers_) handler->RemoveForAccountId(account_id); - // TODO(tbarzic): Forward data removal request to ash::HammerDeviceHandler, + // TODO(tbarzic): Forward data removal request to HammerDeviceHandler, // instead of removing the prefs value here. - if (GetLocalState()->FindPreference(ash::prefs::kDetachableBaseDevices)) { - DictionaryPrefUpdate update(GetLocalState(), - ash::prefs::kDetachableBaseDevices); + if (GetLocalState()->FindPreference(prefs::kDetachableBaseDevices)) { + DictionaryPrefUpdate update(GetLocalState(), prefs::kDetachableBaseDevices); update->RemoveKey(account_id.HasAccountIdKey() ? account_id.GetAccountIdKey() : account_id.GetUserEmail()); @@ -1166,7 +1169,7 @@ // `kLoginExtensionApiLaunchExtensionId` is set. if (user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT && !profile->GetPrefs() - ->GetString(prefs::kLoginExtensionApiLaunchExtensionId) + ->GetString(::prefs::kLoginExtensionApiLaunchExtensionId) .empty()) { user->set_can_lock(true); } @@ -1217,8 +1220,7 @@ void ChromeUserManagerImpl::OnUserNotAllowed(const std::string& user_email) { LOG(ERROR) << "Shutdown session because a user is not allowed to be in the " "current session"; - ash::SessionController::Get()->ShowMultiprofilesSessionAbortedDialog( - user_email); + SessionController::Get()->ShowMultiprofilesSessionAbortedDialog(user_email); chrome::RecordDialogCreation( chrome::DialogIdentifier::MULTIPROFILES_SESSION_ABORTED); } @@ -1269,7 +1271,7 @@ if (user) { policy::BrowserPolicyConnectorChromeOS const* const connector = g_browser_process->platform_part()->browser_policy_connector_chromeos(); - const bool is_affiliated = chromeos::IsUserAffiliated( + const bool is_affiliated = IsUserAffiliated( user_affiliation_ids, connector->GetDeviceAffiliationIDs(), account_id.GetUserEmail()); user->SetAffiliation(is_affiliated); @@ -1286,7 +1288,7 @@ bool ChromeUserManagerImpl::ShouldReportUser(const std::string& user_id) const { const base::ListValue& reporting_users = - *(GetLocalState()->GetList(prefs::kReportingUsers)); + *(GetLocalState()->GetList(::prefs::kReportingUsers)); base::Value user_id_value(FullyCanonicalize(user_id)); return !(reporting_users.Find(user_id_value) == reporting_users.end()); } @@ -1321,19 +1323,19 @@ return IsManagedSessionEnabled(broker) && (AreRiskyPoliciesUsed(broker) || g_browser_process->local_state()->GetBoolean( - prefs::kManagedSessionUseFullLoginWarning) || + ::prefs::kManagedSessionUseFullLoginWarning) || PolicyHasWebTrustedAuthorityCertificate(broker) || IsProxyUsed(GetLocalState())); } void ChromeUserManagerImpl::AddReportingUser(const AccountId& account_id) { - ListPrefUpdate users_update(GetLocalState(), prefs::kReportingUsers); + ListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers); users_update->AppendIfNotPresent( std::make_unique<base::Value>(account_id.GetUserEmail())); } void ChromeUserManagerImpl::RemoveReportingUser(const AccountId& account_id) { - ListPrefUpdate users_update(GetLocalState(), prefs::kReportingUsers); + ListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers); users_update->Remove( base::Value(FullyCanonicalize(account_id.GetUserEmail())), NULL); } @@ -1352,7 +1354,7 @@ cryptohome::AccountIdentifier account_id_proto; account_id_proto.set_account_id(cryptohome::Identification(account_id).id()); - CryptohomeClient::Get()->RemoveEx( + chromeos::CryptohomeClient::Get()->RemoveEx( account_id_proto, base::BindOnce(&OnRemoveUserComplete, account_id)); } @@ -1407,7 +1409,7 @@ } bool ChromeUserManagerImpl::IsValidDefaultUserImageId(int image_index) const { - return chromeos::default_user_image::IsValidIndex(image_index); + return default_user_image::IsValidIndex(image_index); } std::unique_ptr<user_manager::User> @@ -1440,4 +1442,4 @@ return user; } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_impl.h b/chrome/browser/ash/login/users/chrome_user_manager_impl.h index 018e7ea..56b2023 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager_impl.h +++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.h
@@ -28,6 +28,8 @@ #include "chrome/browser/chromeos/policy/device_local_account.h" #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" #include "chrome/browser/chromeos/policy/minimum_version_policy_handler.h" +// TODO(https://crbug.com/1164001): move to forward declaration when fixed. +#include "chrome/browser/chromeos/session_length_limiter.h" #include "chrome/browser/profiles/profile_manager_observer.h" #include "components/account_id/account_id.h" #include "components/session_manager/core/session_manager.h" @@ -49,11 +51,9 @@ class CloudExternalDataPolicyHandler; } // namespace policy -namespace chromeos { - +namespace ash { class MultiProfileUserController; class SupervisedUserManagerImpl; -class SessionLengthLimiter; // Chrome specific implementation of the UserManager. class ChromeUserManagerImpl @@ -281,6 +281,6 @@ DISALLOW_COPY_AND_ASSIGN(ChromeUserManagerImpl); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_CHROME_USER_MANAGER_IMPL_H_
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_util.cc b/chrome/browser/ash/login/users/chrome_user_manager_util.cc index d6ca13d..b2ab565 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager_util.cc +++ b/chrome/browser/ash/login/users/chrome_user_manager_util.cc
@@ -15,7 +15,7 @@ #include "components/user_manager/user_names.h" #include "components/user_manager/user_type.h" -namespace chromeos { +namespace ash { namespace chrome_user_manager_util { bool AreAllUsersAllowed(const user_manager::UserList& users, @@ -87,4 +87,4 @@ } } // namespace chrome_user_manager_util -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_util.h b/chrome/browser/ash/login/users/chrome_user_manager_util.h index ff598697..85ae259 100644 --- a/chrome/browser/ash/login/users/chrome_user_manager_util.h +++ b/chrome/browser/ash/login/users/chrome_user_manager_util.h
@@ -8,7 +8,7 @@ #include "components/policy/proto/chrome_device_policy.pb.h" #include "components/user_manager/user.h" -namespace chromeos { +namespace ash { namespace chrome_user_manager_util { // Returns true if all `users` are allowed depending on the provided device @@ -33,6 +33,11 @@ bool IsPublicSessionOrEphemeralLogin(); } // namespace chrome_user_manager_util -} // namespace chromeos +} // namespace ash + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos { +namespace chrome_user_manager_util = ::ash::chrome_user_manager_util; +} #endif // CHROME_BROWSER_ASH_LOGIN_USERS_CHROME_USER_MANAGER_UTIL_H_
diff --git a/chrome/browser/ash/login/users/default_user_image/default_user_images.cc b/chrome/browser/ash/login/users/default_user_image/default_user_images.cc index fec134a..3196a16 100644 --- a/chrome/browser/ash/login/users/default_user_image/default_user_images.cc +++ b/chrome/browser/ash/login/users/default_user_image/default_user_images.cc
@@ -20,7 +20,7 @@ #include "ui/chromeos/strings/grit/ui_chromeos_strings.h" #include "ui/gfx/image/image_skia.h" -namespace chromeos { +namespace ash { namespace default_user_image { // Resource IDs of default user images. @@ -430,4 +430,4 @@ } } // namespace default_user_image -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/default_user_image/default_user_images.h b/chrome/browser/ash/login/users/default_user_image/default_user_images.h index 77f046e6..a186a4f 100644 --- a/chrome/browser/ash/login/users/default_user_image/default_user_images.h +++ b/chrome/browser/ash/login/users/default_user_image/default_user_images.h
@@ -19,7 +19,7 @@ class ImageSkia; } -namespace chromeos { +namespace ash { namespace default_user_image { // Returns the URL to a default user image with the specified index. If the @@ -84,6 +84,11 @@ int GetFirstDefaultImage(); } // namespace default_user_image -} // namespace chromeos +} // namespace ash + +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace chromeos { +namespace default_user_image = ::ash::default_user_image; +} #endif // CHROME_BROWSER_ASH_LOGIN_USERS_DEFAULT_USER_IMAGE_DEFAULT_USER_IMAGES_H_
diff --git a/chrome/browser/ash/login/users/fake_chrome_user_manager.cc b/chrome/browser/ash/login/users/fake_chrome_user_manager.cc index 582d54c..754d005 100644 --- a/chrome/browser/ash/login/users/fake_chrome_user_manager.cc +++ b/chrome/browser/ash/login/users/fake_chrome_user_manager.cc
@@ -61,7 +61,7 @@ } // namespace -namespace chromeos { +namespace ash { class FakeSupervisedUserManager; @@ -728,4 +728,4 @@ return users_[0]; } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/fake_chrome_user_manager.h b/chrome/browser/ash/login/users/fake_chrome_user_manager.h index 6ef93426..62ce894 100644 --- a/chrome/browser/ash/login/users/fake_chrome_user_manager.h +++ b/chrome/browser/ash/login/users/fake_chrome_user_manager.h
@@ -19,8 +19,7 @@ #include "components/user_manager/user.h" #include "components/user_manager/user_image/user_image.h" -namespace chromeos { - +namespace ash { class FakeSupervisedUserManager; // Fake chrome user manager with a barebones implementation. Users can be added @@ -246,11 +245,11 @@ DISALLOW_COPY_AND_ASSIGN(FakeChromeUserManager); }; -} // namespace chromeos +} // namespace ash -// TODO(https://crbug.com/1164001): remove when moved to ash. -namespace ash { -using ::chromeos::FakeChromeUserManager; +// TODO(https://crbug.com/1164001): remove when then migration is finished. +namespace chromeos { +using ::ash::FakeChromeUserManager; } #endif // CHROME_BROWSER_ASH_LOGIN_USERS_FAKE_CHROME_USER_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/fake_supervised_user_manager.cc b/chrome/browser/ash/login/users/fake_supervised_user_manager.cc index a2dca05..6617d345 100644 --- a/chrome/browser/ash/login/users/fake_supervised_user_manager.cc +++ b/chrome/browser/ash/login/users/fake_supervised_user_manager.cc
@@ -6,7 +6,7 @@ #include <string> -namespace chromeos { +namespace ash { FakeSupervisedUserManager::FakeSupervisedUserManager() {} @@ -32,4 +32,4 @@ return std::string(); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/fake_supervised_user_manager.h b/chrome/browser/ash/login/users/fake_supervised_user_manager.h index 4f803ab2..fc3d2105 100644 --- a/chrome/browser/ash/login/users/fake_supervised_user_manager.h +++ b/chrome/browser/ash/login/users/fake_supervised_user_manager.h
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "chrome/browser/ash/login/users/supervised_user_manager.h" -namespace chromeos { +namespace ash { // Fake supervised user manager with a barebones implementation. class FakeSupervisedUserManager : public SupervisedUserManager { @@ -32,6 +32,6 @@ DISALLOW_COPY_AND_ASSIGN(FakeSupervisedUserManager); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_FAKE_SUPERVISED_USER_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/mock_user_manager.cc b/chrome/browser/ash/login/users/mock_user_manager.cc index 97ea8c86..1b5ffe3 100644 --- a/chrome/browser/ash/login/users/mock_user_manager.cc +++ b/chrome/browser/ash/login/users/mock_user_manager.cc
@@ -10,6 +10,7 @@ #include "chrome/browser/ash/login/users/fake_supervised_user_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" +namespace ash { namespace { class FakeTaskRunner : public base::SingleThreadTaskRunner { @@ -34,8 +35,6 @@ } // namespace -namespace chromeos { - MockUserManager::MockUserManager() : ChromeUserManager(new FakeTaskRunner()), user_flow_(new DefaultUserFlow()), @@ -169,4 +168,4 @@ return false; } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/mock_user_manager.h b/chrome/browser/ash/login/users/mock_user_manager.h index 2516e1c..592169e 100644 --- a/chrome/browser/ash/login/users/mock_user_manager.h +++ b/chrome/browser/ash/login/users/mock_user_manager.h
@@ -18,8 +18,7 @@ #include "components/user_manager/user_image/user_image.h" #include "testing/gmock/include/gmock/gmock.h" -namespace chromeos { - +namespace ash { class FakeSupervisedUserManager; class MockUserManager : public ChromeUserManager { @@ -137,7 +136,7 @@ UserFlow* GetUserFlow(const AccountId&) const override; MOCK_METHOD2(SetUserAffiliation, void(const AccountId& account_id, - const chromeos::AffiliationIDSet& user_affiliation_ids)); + const AffiliationIDSet& user_affiliation_ids)); bool ShouldReportUser(const std::string& user_id) const override; MOCK_CONST_METHOD1(IsManagedSessionEnabledForUser, @@ -188,11 +187,11 @@ user_manager::UserList user_list_; }; -} // namespace chromeos +} // namespace ash -// TODO(https://crbug.com/1164001): remove when moved to ash. -namespace ash { -using ::chromeos::MockUserManager; +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace chromeos { +using ::ash::MockUserManager; } #endif // CHROME_BROWSER_ASH_LOGIN_USERS_MOCK_USER_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/multi_profile_user_controller.cc b/chrome/browser/ash/login/users/multi_profile_user_controller.cc index 90bc655..b44344a9 100644 --- a/chrome/browser/ash/login/users/multi_profile_user_controller.cc +++ b/chrome/browser/ash/login/users/multi_profile_user_controller.cc
@@ -21,7 +21,7 @@ #include "components/user_manager/user_manager.h" #include "google_apis/gaia/gaia_auth_util.h" -namespace chromeos { +namespace ash { namespace { @@ -104,17 +104,16 @@ } // static -ash::MultiProfileUserBehavior -MultiProfileUserController::UserBehaviorStringToEnum( +MultiProfileUserBehavior MultiProfileUserController::UserBehaviorStringToEnum( const std::string& behavior) { if (behavior == kBehaviorPrimaryOnly) - return ash::MultiProfileUserBehavior::PRIMARY_ONLY; + return MultiProfileUserBehavior::PRIMARY_ONLY; if (behavior == kBehaviorNotAllowed) - return ash::MultiProfileUserBehavior::NOT_ALLOWED; + return MultiProfileUserBehavior::NOT_ALLOWED; if (behavior == kBehaviorOwnerPrimaryOnly) - return ash::MultiProfileUserBehavior::OWNER_PRIMARY_ONLY; + return MultiProfileUserBehavior::OWNER_PRIMARY_ONLY; - return ash::MultiProfileUserBehavior::UNRESTRICTED; + return MultiProfileUserBehavior::UNRESTRICTED; } bool MultiProfileUserController::IsUserAllowedInSession( @@ -219,4 +218,4 @@ CheckSessionUsers(); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/multi_profile_user_controller.h b/chrome/browser/ash/login/users/multi_profile_user_controller.h index 31e61464..76be1ed7 100644 --- a/chrome/browser/ash/login/users/multi_profile_user_controller.h +++ b/chrome/browser/ash/login/users/multi_profile_user_controller.h
@@ -16,17 +16,13 @@ class PrefService; class Profile; -namespace ash { -enum class MultiProfileUserBehavior; -} - namespace user_prefs { class PrefRegistrySyncable; } -namespace chromeos { - +namespace ash { class MultiProfileUserControllerDelegate; +enum class MultiProfileUserBehavior; // MultiProfileUserController decides whether a user is allowed to be in a // multi-profiles session. It caches the multi-profile user behavior pref backed @@ -67,7 +63,7 @@ static UserAllowedInSessionReason GetPrimaryUserPolicy(); // Returns the user behavior in MultiProfileUserBehavior enum. - static ash::MultiProfileUserBehavior UserBehaviorStringToEnum( + static MultiProfileUserBehavior UserBehaviorStringToEnum( const std::string& behavior); // Returns true if user allowed to be in the current session. If `reason` not @@ -107,6 +103,11 @@ DISALLOW_COPY_AND_ASSIGN(MultiProfileUserController); }; -} // namespace chromeos +} // namespace ash + +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace chromeos { +using ::ash::MultiProfileUserController; +} #endif // CHROME_BROWSER_ASH_LOGIN_USERS_MULTI_PROFILE_USER_CONTROLLER_H_
diff --git a/chrome/browser/ash/login/users/multi_profile_user_controller_delegate.h b/chrome/browser/ash/login/users/multi_profile_user_controller_delegate.h index 83696da..f06b8d4 100644 --- a/chrome/browser/ash/login/users/multi_profile_user_controller_delegate.h +++ b/chrome/browser/ash/login/users/multi_profile_user_controller_delegate.h
@@ -5,7 +5,7 @@ #ifndef CHROME_BROWSER_ASH_LOGIN_USERS_MULTI_PROFILE_USER_CONTROLLER_DELEGATE_H_ #define CHROME_BROWSER_ASH_LOGIN_USERS_MULTI_PROFILE_USER_CONTROLLER_DELEGATE_H_ -namespace chromeos { +namespace ash { class MultiProfileUserControllerDelegate { public: @@ -16,6 +16,6 @@ virtual ~MultiProfileUserControllerDelegate() {} }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_MULTI_PROFILE_USER_CONTROLLER_DELEGATE_H_
diff --git a/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc b/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc index 3f53a6d9..d3e0efa 100644 --- a/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc +++ b/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc
@@ -35,8 +35,7 @@ #include "net/test/test_data_directory.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { - +namespace ash { namespace { const char* const kUsers[] = {"a@gmail.com", "b@gmail.com"}; @@ -439,4 +438,4 @@ base::RunLoop().RunUntilIdle(); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/scoped_test_user_manager.cc b/chrome/browser/ash/login/users/scoped_test_user_manager.cc index 8241432..16dfe5b3 100644 --- a/chrome/browser/ash/login/users/scoped_test_user_manager.cc +++ b/chrome/browser/ash/login/users/scoped_test_user_manager.cc
@@ -7,7 +7,7 @@ #include "chrome/browser/ash/login/users/chrome_user_manager_impl.h" #include "chrome/browser/ash/profiles/profile_helper.h" -namespace chromeos { +namespace ash { ScopedTestUserManager::ScopedTestUserManager() { chrome_user_manager_ = ChromeUserManagerImpl::CreateChromeUserManager(); @@ -23,4 +23,4 @@ chrome_user_manager_.reset(); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/scoped_test_user_manager.h b/chrome/browser/ash/login/users/scoped_test_user_manager.h index 72604d8..d08e18c0 100644 --- a/chrome/browser/ash/login/users/scoped_test_user_manager.h +++ b/chrome/browser/ash/login/users/scoped_test_user_manager.h
@@ -9,8 +9,7 @@ #include "base/macros.h" -namespace chromeos { - +namespace ash { class ChromeUserManager; // Helper class for unit tests. Initializes the UserManager singleton on @@ -26,6 +25,6 @@ DISALLOW_COPY_AND_ASSIGN(ScopedTestUserManager); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_SCOPED_TEST_USER_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/supervised_user_manager.h b/chrome/browser/ash/login/users/supervised_user_manager.h index 7f9d158..d0a620a 100644 --- a/chrome/browser/ash/login/users/supervised_user_manager.h +++ b/chrome/browser/ash/login/users/supervised_user_manager.h
@@ -14,7 +14,7 @@ class PrefRegistrySimple; -namespace chromeos { +namespace ash { // Keys in dictionary with supervised password information. extern const char kSchemaVersion[]; @@ -71,6 +71,6 @@ DISALLOW_COPY_AND_ASSIGN(SupervisedUserManager); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_SUPERVISED_USER_MANAGER_H_
diff --git a/chrome/browser/ash/login/users/supervised_user_manager_impl.cc b/chrome/browser/ash/login/users/supervised_user_manager_impl.cc index 8959e59..4807f6dc 100644 --- a/chrome/browser/ash/login/users/supervised_user_manager_impl.cc +++ b/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
@@ -12,6 +12,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "chrome/browser/ash/login/users/chrome_user_manager_impl.h" +#include "chrome/browser/ash/settings/cros_settings.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/supervised_user/supervised_user_service.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" @@ -65,7 +66,7 @@ } // namespace -namespace chromeos { +namespace ash { const char kSchemaVersion[] = "SchemaVersion"; const char kPasswordRevision[] = "PasswordRevision"; @@ -259,4 +260,4 @@ return prefs_new_users_update->Remove(base::Value(user_id), NULL); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/supervised_user_manager_impl.h b/chrome/browser/ash/login/users/supervised_user_manager_impl.h index 3b7cfd19..6922d18 100644 --- a/chrome/browser/ash/login/users/supervised_user_manager_impl.h +++ b/chrome/browser/ash/login/users/supervised_user_manager_impl.h
@@ -10,13 +10,10 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "chrome/browser/ash/login/users/supervised_user_manager.h" -// TODO(https://crbug.com/1164001): forward declare CrosSettings when moved to -// ash. -#include "chrome/browser/ash/settings/cros_settings.h" -namespace chromeos { - +namespace ash { class ChromeUserManagerImpl; +class CrosSettings; class SupervisedUserTestBase; // TODO(crbug.com/1155729): Check this entire class is not used anymore for @@ -82,6 +79,6 @@ DISALLOW_COPY_AND_ASSIGN(SupervisedUserManagerImpl); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_
diff --git a/chrome/browser/ash/login/users/test_users.cc b/chrome/browser/ash/login/users/test_users.cc index f983bbe..a7dcd81 100644 --- a/chrome/browser/ash/login/users/test_users.cc +++ b/chrome/browser/ash/login/users/test_users.cc
@@ -4,8 +4,7 @@ #include "chrome/browser/ash/login/users/test_users.h" -namespace chromeos { - +namespace ash { namespace saml_test_users { const char kFirstUserCorpExampleComEmail[] = "alice@corp.example.com"; @@ -15,5 +14,4 @@ const char kFifthUserExampleTestEmail[] = "eve@example.test"; } // namespace saml_test_users - -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/test_users.h b/chrome/browser/ash/login/users/test_users.h index 036810e..81df3904 100644 --- a/chrome/browser/ash/login/users/test_users.h +++ b/chrome/browser/ash/login/users/test_users.h
@@ -7,8 +7,7 @@ #ifndef CHROME_BROWSER_ASH_LOGIN_USERS_TEST_USERS_H_ #define CHROME_BROWSER_ASH_LOGIN_USERS_TEST_USERS_H_ -namespace chromeos { - +namespace ash { namespace saml_test_users { // Note that the "corp.example.com" and the "example.test" domains are @@ -20,7 +19,11 @@ extern const char kFifthUserExampleTestEmail[]; } // namespace saml_test_users +} // namespace ash -} // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace chromeos { +namespace saml_test_users = ::ash::saml_test_users; +} #endif // CHROME_BROWSER_ASH_LOGIN_USERS_TEST_USERS_H_
diff --git a/chrome/browser/ash/login/users/user_manager_interface.h b/chrome/browser/ash/login/users/user_manager_interface.h index f4ff904..5739d93 100644 --- a/chrome/browser/ash/login/users/user_manager_interface.h +++ b/chrome/browser/ash/login/users/user_manager_interface.h
@@ -6,16 +6,16 @@ #define CHROME_BROWSER_ASH_LOGIN_USERS_USER_MANAGER_INTERFACE_H_ #include "base/macros.h" +// TODO(https://crbug.com/1164001): move to forward declaration when fixed. +#include "chrome/browser/ash/login/user_flow.h" #include "components/user_manager/user.h" #include "components/user_manager/user_type.h" class AccountId; -namespace chromeos { - +namespace ash { class MultiProfileUserController; class SupervisedUserManager; -class UserFlow; class UserImageManager; // ChromeOS specific add-ons interface for the UserManager. @@ -51,6 +51,6 @@ DISALLOW_COPY_AND_ASSIGN(UserManagerInterface); }; -} // namespace chromeos +} // namespace ash #endif // CHROME_BROWSER_ASH_LOGIN_USERS_USER_MANAGER_INTERFACE_H_
diff --git a/chrome/browser/ash/login/users/user_manager_unittest.cc b/chrome/browser/ash/login/users/user_manager_unittest.cc index 12401de..4bd8393 100644 --- a/chrome/browser/ash/login/users/user_manager_unittest.cc +++ b/chrome/browser/ash/login/users/user_manager_unittest.cc
@@ -38,7 +38,10 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { +namespace ash { + +// TODO(https://crbug.com/1164001): remove after the class is migrated +using ::chromeos::SystemSaltGetter; class UnittestProfileManager : public ::ProfileManagerWithoutInit { public: @@ -332,7 +335,7 @@ EXPECT_EQ(1U, user_manager::UserManager::Get()->GetUnlockUsers().size()); // The user is not allowed to lock the screen. - profile->GetPrefs()->SetBoolean(ash::prefs::kAllowScreenLock, false); + profile->GetPrefs()->SetBoolean(prefs::kAllowScreenLock, false); EXPECT_FALSE(user_manager::UserManager::Get()->CanCurrentUserLock()); EXPECT_EQ(0U, user_manager::UserManager::Get()->GetUnlockUsers().size()); @@ -349,4 +352,4 @@ ResetUserManager(); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc b/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc index 7c13bd22..23a00ac 100644 --- a/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc +++ b/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc
@@ -65,8 +65,7 @@ #include "ui/gfx/image/image_skia.h" #include "url/gurl.h" -namespace chromeos { - +namespace ash { namespace { const char kRedImageFileName[] = "chromeos/wallpapers/red.jpg"; @@ -131,7 +130,7 @@ } // namespace class WallpaperPolicyTest : public LoginManagerTest, - public ash::WallpaperControllerObserver { + public WallpaperControllerObserver { protected: WallpaperPolicyTest() : LoginManagerTest(), owner_key_util_(new ownership::MockOwnerKeyUtil()) { @@ -143,10 +142,10 @@ std::unique_ptr<policy::UserPolicyBuilder> user_policy_builder( new policy::UserPolicyBuilder()); base::FilePath user_keys_dir; - EXPECT_TRUE(base::PathService::Get(dbus_paths::DIR_USER_POLICY_KEYS, - &user_keys_dir)); + EXPECT_TRUE(base::PathService::Get( + chromeos::dbus_paths::DIR_USER_POLICY_KEYS, &user_keys_dir)); const std::string sanitized_user_id = - CryptohomeClient::GetStubSanitizedUsername( + chromeos::CryptohomeClient::GetStubSanitizedUsername( cryptohome::CreateAccountIdentifierFromAccountId(account_id)); const base::FilePath user_key_file = user_keys_dir.AppendASCII(sanitized_user_id).AppendASCII("policy.pub"); @@ -167,7 +166,7 @@ owner_key_util_); owner_key_util_->SetPublicKeyFromPrivateKey( *device_policy_.GetSigningKey()); - SessionManagerClient::InitializeFakeInMemory(); + chromeos::SessionManagerClient::InitializeFakeInMemory(); FakeSessionManagerClient::Get()->set_device_policy( device_policy_.GetBlob()); @@ -217,7 +216,7 @@ return average_color_.value(); } - // ash::WallpaperControllerObserver: + // WallpaperControllerObserver: void OnWallpaperChanged() override { ++wallpaper_change_count_; if (run_loop_) @@ -374,4 +373,4 @@ RunUntilWallpaperChangeToColor(kGreenImageColor); } -} // namespace chromeos +} // namespace ash
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc b/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc index c947010..142477b69 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_test_helper.cc
@@ -149,7 +149,7 @@ const AccountId account_id(AccountId::FromUserEmailGaiaId( testing_profile_->GetProfileUserName(), "id")); auto mock_user_manager = - std::make_unique<testing::NiceMock<chromeos::MockUserManager>>(); + std::make_unique<testing::NiceMock<ash::MockUserManager>>(); mock_user_manager->AddUserWithAffiliationAndType( account_id, true, user_manager::USER_TYPE_REGULAR); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>(
diff --git a/chrome/browser/ash/profiles/profile_helper.cc b/chrome/browser/ash/profiles/profile_helper.cc index 319de365..3ab9b08 100644 --- a/chrome/browser/ash/profiles/profile_helper.cc +++ b/chrome/browser/ash/profiles/profile_helper.cc
@@ -43,13 +43,11 @@ #include "extensions/browser/extension_system.h" namespace ash { - namespace { // TODO(https://crbug.com/1164001): remove after //chrome/browser/chromeos // source migration is finished. namespace login = ::chromeos::login; -using ::chromeos::ChromeUserManager; using ::chromeos::FileFlusher; using ::chromeos::OAuth2LoginManager;
diff --git a/chrome/browser/ash/profiles/profile_helper.h b/chrome/browser/ash/profiles/profile_helper.h index 515f891..e6fabed3 100644 --- a/chrome/browser/ash/profiles/profile_helper.h +++ b/chrome/browser/ash/profiles/profile_helper.h
@@ -184,8 +184,8 @@ protected: // TODO(nkostylev): Create a test API class that will be the only one allowed // to access private test methods. - friend class ::chromeos::FakeChromeUserManager; - friend class ::chromeos::MockUserManager; + friend class FakeChromeUserManager; + friend class MockUserManager; friend class ProfileHelperTest; friend class ::IndependentOTRProfileManagerTest;
diff --git a/chrome/browser/ash/settings/device_settings_service.h b/chrome/browser/ash/settings/device_settings_service.h index 05bd5c21..ffaa40e 100644 --- a/chrome/browser/ash/settings/device_settings_service.h +++ b/chrome/browser/ash/settings/device_settings_service.h
@@ -304,4 +304,9 @@ using ::ash::DeviceSettingsService; } // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migration is finished. +namespace ash { +using ::chromeos::DeviceSettingsService; +} + #endif // CHROME_BROWSER_ASH_SETTINGS_DEVICE_SETTINGS_SERVICE_H_
diff --git a/chrome/browser/ash/settings/session_manager_operation_unittest.cc b/chrome/browser/ash/settings/session_manager_operation_unittest.cc index 8addfd4..ceb89c0 100644 --- a/chrome/browser/ash/settings/session_manager_operation_unittest.cc +++ b/chrome/browser/ash/settings/session_manager_operation_unittest.cc
@@ -70,7 +70,7 @@ public: SessionManagerOperationTest() : owner_key_util_(new ownership::MockOwnerKeyUtil()), - user_manager_(new chromeos::FakeChromeUserManager()), + user_manager_(new FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)), validated_(false) { OwnerSettingsServiceAshFactory::GetInstance()->SetOwnerKeyUtilForTesting( @@ -114,7 +114,7 @@ ObservableFakeSessionManagerClient session_manager_client_; scoped_refptr<ownership::MockOwnerKeyUtil> owner_key_util_; - chromeos::FakeChromeUserManager* user_manager_; + FakeChromeUserManager* user_manager_; user_manager::ScopedUserManager user_manager_enabler_; std::unique_ptr<TestingProfile> profile_;
diff --git a/chrome/browser/ash/system/device_disabling_manager_unittest.cc b/chrome/browser/ash/system/device_disabling_manager_unittest.cc index 8e13592..686bc45 100644 --- a/chrome/browser/ash/system/device_disabling_manager_unittest.cc +++ b/chrome/browser/ash/system/device_disabling_manager_unittest.cc
@@ -76,7 +76,7 @@ private: content::BrowserTaskEnvironment task_environment_; ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::FakeChromeUserManager fake_user_manager_; + FakeChromeUserManager fake_user_manager_; std::unique_ptr<DeviceDisablingManager> device_disabling_manager_; chromeos::system::FakeStatisticsProvider statistics_provider_;
diff --git a/chrome/browser/background/background_mode_manager_unittest.cc b/chrome/browser/background/background_mode_manager_unittest.cc index 3196747..b202f65 100644 --- a/chrome/browser/background/background_mode_manager_unittest.cc +++ b/chrome/browser/background/background_mode_manager_unittest.cc
@@ -312,7 +312,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // ChromeOS needs extra services to run in the following order. ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif DISALLOW_COPY_AND_ASSIGN(BackgroundModeManagerWithExtensionsTest);
diff --git a/chrome/browser/browser_process_platform_part_chromeos.cc b/chrome/browser/browser_process_platform_part_chromeos.cc index 470a554..53e8fbe 100644 --- a/chrome/browser/browser_process_platform_part_chromeos.cc +++ b/chrome/browser/browser_process_platform_part_chromeos.cc
@@ -92,8 +92,7 @@ void BrowserProcessPlatformPart::InitializeChromeUserManager() { DCHECK(!chrome_user_manager_); - chrome_user_manager_ = - chromeos::ChromeUserManagerImpl::CreateChromeUserManager(); + chrome_user_manager_ = ash::ChromeUserManagerImpl::CreateChromeUserManager(); chrome_user_manager_->Initialize(); }
diff --git a/chrome/browser/browser_process_platform_part_chromeos.h b/chrome/browser/browser_process_platform_part_chromeos.h index 20f3be1..21dd344c 100644 --- a/chrome/browser/browser_process_platform_part_chromeos.h +++ b/chrome/browser/browser_process_platform_part_chromeos.h
@@ -20,6 +20,7 @@ namespace ash { class AccountManagerFactory; +class ChromeUserManager; class ProfileHelper; namespace system { @@ -33,7 +34,6 @@ namespace chromeos { class ChromeSessionManager; -class ChromeUserManager; class InSessionPasswordChangeManager; class SchedulerConfigurationManager; class TimeZoneResolver; @@ -97,9 +97,7 @@ return session_manager_.get(); } - chromeos::ChromeUserManager* user_manager() { - return chrome_user_manager_.get(); - } + ash::ChromeUserManager* user_manager() { return chrome_user_manager_.get(); } chromeos::SchedulerConfigurationManager* scheduler_configuration_manager() { return scheduler_configuration_manager_.get(); @@ -146,7 +144,7 @@ std::unique_ptr<ash::system::AutomaticRebootManager> automatic_reboot_manager_; - std::unique_ptr<chromeos::ChromeUserManager> chrome_user_manager_; + std::unique_ptr<ash::ChromeUserManager> chrome_user_manager_; std::unique_ptr<ash::system::DeviceDisablingManagerDefaultDelegate> device_disabling_manager_delegate_;
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc index 09cbb25..a2bf8df 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -1741,8 +1741,8 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) TEST_F(ChromeBrowsingDataRemoverDelegateTest, ContentProtectionPlatformKeysRemoval) { - chromeos::MockUserManager* mock_user_manager = - new testing::NiceMock<chromeos::MockUserManager>(); + ash::MockUserManager* mock_user_manager = + new testing::NiceMock<ash::MockUserManager>(); mock_user_manager->SetActiveUser( AccountId::FromUserEmail("test@example.com")); user_manager::ScopedUserManager user_manager_enabler(
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc index 0e43c38..e1087c20 100644 --- a/chrome/browser/chrome_browser_interface_binders.cc +++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -609,11 +609,6 @@ base::BindRepeating(&BindCaptionContextHandler)); #endif -#if defined(OS_MAC) && defined(ARCH_CPU_ARM_FAMILY) - map->Add<media::mojom::CdmInfobarService>( - base::BindRepeating(&BindCdmInfobarServiceReceiver)); -#endif - #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) if (base::FeatureList::IsEnabled(features::kWebAppWindowControlsOverlay) && !render_frame_host->GetParent()) {
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc index 0ba5f8f8..b03e13b 100644 --- a/chrome/browser/chrome_content_browser_client_unittest.cc +++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -579,8 +579,7 @@ void SetUp() override { // Add a profile - auto fake_user_manager = - std::make_unique<chromeos::FakeChromeUserManager>(); + auto fake_user_manager = std::make_unique<ash::FakeChromeUserManager>(); AccountId account_id = AccountId::FromUserEmailGaiaId(kEmail, "gaia_id"); user_manager::User* user = fake_user_manager->AddUserWithAffiliationAndTypeAndProfile(
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 71bc1c5a..d04bb1b 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -64,7 +64,6 @@ ":backdrop_wallpaper_proto", ":device_configuration_proto", ":device_policy_remover_generated", - ":dlp_policy_event_proto", ":key_permissions_proto", ":print_job_info_proto", ":screen_brightness_event_proto", @@ -2508,8 +2507,6 @@ "policy/dlp/dlp_notification_helper.cc", "policy/dlp/dlp_notification_helper.h", "policy/dlp/dlp_policy_constants.h", - "policy/dlp/dlp_reporting_manager.cc", - "policy/dlp/dlp_reporting_manager.h", "policy/dlp/dlp_rules_manager.h", "policy/dlp/dlp_rules_manager_factory.cc", "policy/dlp/dlp_rules_manager_factory.h", @@ -4005,7 +4002,6 @@ "policy/dlp/dlp_content_tab_helper_unittest.cc", "policy/dlp/dlp_data_transfer_notifier_unittest.cc", "policy/dlp/dlp_drag_drop_notifier_unittest.cc", - "policy/dlp/dlp_reporting_manager_unittest.cc", "policy/dlp/dlp_rules_manager_impl_unittest.cc", "policy/dlp/dlp_rules_manager_test_utils.cc", "policy/dlp/dlp_rules_manager_test_utils.h", @@ -4412,10 +4408,6 @@ generate_python = false } -proto_library("dlp_policy_event_proto") { - sources = [ "policy/dlp/dlp_policy_event.proto" ] -} - proto_library("key_permissions_proto") { sources = [ "//third_party/cros_system_api/dbus/chaps/key_permissions.proto" ] generate_python = false
diff --git a/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager_unittest.cc b/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager_unittest.cc index eee2771..639f74c 100644 --- a/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager_unittest.cc +++ b/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager_unittest.cc
@@ -122,7 +122,7 @@ VmCameraMicManagerTest() { // Make the profile the primary one. auto mock_user_manager = - std::make_unique<testing::NiceMock<chromeos::MockUserManager>>(); + std::make_unique<testing::NiceMock<MockUserManager>>(); mock_user_manager->AddUser(AccountId::FromUserEmailGaiaId( testing_profile_.GetProfileUserName(), "id")); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>(
diff --git a/chrome/browser/chromeos/crostini/crostini_features_unittest.cc b/chrome/browser/chromeos/crostini/crostini_features_unittest.cc index 8a2f6a5..242c10f3 100644 --- a/chrome/browser/chromeos/crostini/crostini_features_unittest.cc +++ b/chrome/browser/chromeos/crostini/crostini_features_unittest.cc
@@ -91,7 +91,7 @@ class CrostiniFeaturesAllowedTest : public testing::Test { protected: CrostiniFeaturesAllowedTest() - : user_manager_(new chromeos::FakeChromeUserManager()), + : user_manager_(new ash::FakeChromeUserManager()), scoped_user_manager_(base::WrapUnique(user_manager_)) {} void SetUp() override { @@ -111,7 +111,7 @@ FakeCrostiniFeatures crostini_features_; base::test::ScopedFeatureList scoped_feature_list_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; user_manager::ScopedUserManager scoped_user_manager_; }; @@ -150,7 +150,7 @@ class CrostiniFeaturesAdbSideloadingTest : public testing::Test { protected: CrostiniFeaturesAdbSideloadingTest() - : user_manager_(new chromeos::FakeChromeUserManager()), + : user_manager_(new ash::FakeChromeUserManager()), scoped_user_manager_(base::WrapUnique(user_manager_)) {} void SetFeatureFlag(bool is_enabled) { @@ -251,7 +251,7 @@ ash::ScopedCrosSettingsTestHelper scoped_settings_helper_{ /* create_settings_service=*/false}; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; user_manager::ScopedUserManager scoped_user_manager_; };
diff --git a/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc b/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc index 5c1a01d..bd5766c 100644 --- a/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc +++ b/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc
@@ -217,7 +217,7 @@ crostini_manager_ = CrostiniManager::GetForProfile(profile_.get()); // Login user for crostini, link gaia for DriveFS. - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); AccountId account_id = AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), "12345"); user_manager->AddUser(account_id); @@ -255,8 +255,8 @@ CrostiniManager* crostini_manager() { return crostini_manager_; } const ContainerId& container_id() { return container_id_; } - chromeos::FakeChromeUserManager* fake_user_manager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* fake_user_manager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/chromeos/crostini/crostini_test_helper.cc b/chrome/browser/chromeos/crostini/crostini_test_helper.cc index 3de8759..241b794 100644 --- a/chrome/browser/chromeos/crostini/crostini_test_helper.cc +++ b/chrome/browser/chromeos/crostini/crostini_test_helper.cc
@@ -33,8 +33,8 @@ chromeos::ProfileHelper::SetAlwaysReturnPrimaryUserForTesting(true); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); - auto* fake_user_manager = static_cast<chromeos::FakeChromeUserManager*>( + std::make_unique<ash::FakeChromeUserManager>()); + auto* fake_user_manager = static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); auto account = AccountId::FromUserEmailGaiaId("test@example.com", "12345"); fake_user_manager->AddUserWithAffiliationAndTypeAndProfile(
diff --git a/chrome/browser/chromeos/events/event_rewriter_unittest.cc b/chrome/browser/chromeos/events/event_rewriter_unittest.cc index b263b39..e33175a 100644 --- a/chrome/browser/chromeos/events/event_rewriter_unittest.cc +++ b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
@@ -171,7 +171,7 @@ class EventRewriterTest : public ChromeAshTestBase { public: EventRewriterTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} ~EventRewriterTest() override {} @@ -3540,7 +3540,7 @@ public: EventRewriterAshTest() : source_(&buffer_), - fake_user_manager_(new chromeos::FakeChromeUserManager), + fake_user_manager_(new FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} ~EventRewriterAshTest() override {} @@ -3613,7 +3613,7 @@ EventBuffer buffer_; TestEventSource source_; - chromeos::FakeChromeUserManager* fake_user_manager_; // Not owned. + FakeChromeUserManager* fake_user_manager_; // Not owned. user_manager::ScopedUserManager user_manager_enabler_; sync_preferences::TestingPrefServiceSyncable prefs_;
diff --git a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc index 484d7d8..1761004 100644 --- a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc +++ b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc
@@ -146,7 +146,7 @@ std::unique_ptr<NotificationDisplayServiceTester> display_service_; private: - chromeos::FakeChromeUserManager user_manager_; + ash::FakeChromeUserManager user_manager_; DISALLOW_COPY_AND_ASSIGN(FileSystemProviderApiTest); };
diff --git a/chrome/browser/chromeos/extensions/install_limiter_unittest.cc b/chrome/browser/chromeos/extensions/install_limiter_unittest.cc index d3ac6ba6..195c80d 100644 --- a/chrome/browser/chromeos/extensions/install_limiter_unittest.cc +++ b/chrome/browser/chromeos/extensions/install_limiter_unittest.cc
@@ -28,8 +28,7 @@ : public testing::TestWithParam<chromeos::DemoSession::DemoModeConfig> { public: InstallLimiterTest() - : scoped_user_manager_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ~InstallLimiterTest() override = default; private:
diff --git a/chrome/browser/chromeos/extensions/login_screen/login/login_api_unittest.cc b/chrome/browser/chromeos/extensions/login_screen/login/login_api_unittest.cc index 32b63722..116003e6 100644 --- a/chrome/browser/chromeos/extensions/login_screen/login/login_api_unittest.cc +++ b/chrome/browser/chromeos/extensions/login_screen/login/login_api_unittest.cc
@@ -141,10 +141,9 @@ void SetUp() override { ExtensionApiUnittest::SetUp(); - fake_chrome_user_manager_ = new chromeos::FakeChromeUserManager(); + fake_chrome_user_manager_ = new ash::FakeChromeUserManager(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( - std::unique_ptr<chromeos::FakeChromeUserManager>( - fake_chrome_user_manager_)); + std::unique_ptr<ash::FakeChromeUserManager>(fake_chrome_user_manager_)); mock_login_display_host_ = std::make_unique<chromeos::MockLoginDisplayHost>(); mock_existing_user_controller_ = @@ -189,7 +188,7 @@ return std::make_unique<ScopedTestingProfile>(profile, profile_manager()); } - chromeos::FakeChromeUserManager* fake_chrome_user_manager_; + ash::FakeChromeUserManager* fake_chrome_user_manager_; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; std::unique_ptr<chromeos::MockLoginDisplayHost> mock_login_display_host_; std::unique_ptr<MockExistingUserController> mock_existing_user_controller_;
diff --git a/chrome/browser/chromeos/extensions/wallpaper_private_api_unittest.cc b/chrome/browser/chromeos/extensions/wallpaper_private_api_unittest.cc index 5d6442d..f6724ce5 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_private_api_unittest.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_private_api_unittest.cc
@@ -31,7 +31,7 @@ public: WallpaperPrivateApiUnittest() : task_environment_(std::make_unique<content::BrowserTaskEnvironment>()), - fake_user_manager_(new chromeos::FakeChromeUserManager()), + fake_user_manager_(new ash::FakeChromeUserManager()), scoped_user_manager_(base::WrapUnique(fake_user_manager_)) {} ~WallpaperPrivateApiUnittest() override = default; @@ -46,16 +46,14 @@ } protected: - chromeos::FakeChromeUserManager* fake_user_manager() { - return fake_user_manager_; - } + ash::FakeChromeUserManager* fake_user_manager() { return fake_user_manager_; } private: std::unique_ptr<content::BrowserTaskEnvironment> task_environment_; ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager scoped_user_manager_;
diff --git a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc index bfa4beb..a9927e4 100644 --- a/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc +++ b/chrome/browser/chromeos/file_manager/file_tasks_unittest.cc
@@ -622,7 +622,7 @@ content::BrowserTaskEnvironment task_environment_; ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; TestingProfile test_profile_; base::CommandLine command_line_; extensions::ExtensionService* extension_service_; // Owned by test_profile_;
diff --git a/chrome/browser/chromeos/file_manager/path_util_unittest.cc b/chrome/browser/chromeos/file_manager/path_util_unittest.cc index e70707c..65aa9fd 100644 --- a/chrome/browser/chromeos/file_manager/path_util_unittest.cc +++ b/chrome/browser/chromeos/file_manager/path_util_unittest.cc
@@ -148,7 +148,7 @@ chromeos::disks::DiskMountManager::InitializeForTesting( new FakeDiskMountManager); TestingProfile profile2(base::FilePath("/home/chronos/u-0123456789abcdef")); - chromeos::FakeChromeUserManager user_manager; + ash::FakeChromeUserManager user_manager; user_manager.AddUser( AccountId::FromUserEmailGaiaId(profile2.GetProfileUserName(), "12345")); PrefService* prefs = profile2.GetPrefs(); @@ -289,7 +289,7 @@ // Migrate paths under old drive mount. TestingProfile profile2(base::FilePath("/home/chronos/u-0123456789abcdef")); - chromeos::FakeChromeUserManager user_manager; + ash::FakeChromeUserManager user_manager; user_manager.AddUser( AccountId::FromUserEmailGaiaId(profile2.GetProfileUserName(), "12345")); PrefService* prefs = profile2.GetPrefs(); @@ -314,7 +314,7 @@ storage::ExternalMountPoints* mount_points = storage::ExternalMountPoints::GetSystemInstance(); // Setup for DriveFS. - chromeos::FakeChromeUserManager user_manager; + ash::FakeChromeUserManager user_manager; user_manager.AddUser( AccountId::FromUserEmailGaiaId(profile_->GetProfileUserName(), "12345")); profile_->GetPrefs()->SetString(drive::prefs::kDriveFsProfileSalt, "a"); @@ -583,8 +583,7 @@ ASSERT_TRUE(profile_manager_->SetUp()); // Set up fake user manager. - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); const AccountId account_id( AccountId::FromUserEmailGaiaId("user@gmail.com", "1111111111")); const AccountId account_id_2(
diff --git a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc index 1a0af3e..c71dadb 100644 --- a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc +++ b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc
@@ -54,7 +54,7 @@ ASSERT_TRUE(profile_manager_->SetUp()); Profile* const profile = profile_manager_->CreateTestingProfile("test-user"); - user_manager_ = std::make_unique<chromeos::FakeChromeUserManager>(); + user_manager_ = std::make_unique<FakeChromeUserManager>(); user_manager_->AddUser( AccountId::FromUserEmailGaiaId(profile->GetProfileUserName(), "12345")); render_process_host_ = @@ -109,7 +109,7 @@ mojo::Remote<network::mojom::URLLoaderFactory> url_loader_factory_; std::unique_ptr<TestingProfileManager> profile_manager_; - std::unique_ptr<chromeos::FakeChromeUserManager> user_manager_; + std::unique_ptr<FakeChromeUserManager> user_manager_; // Used to register the profile with the ChildProcessSecurityPolicyImpl. std::unique_ptr<content::MockRenderProcessHost> render_process_host_; };
diff --git a/chrome/browser/chromeos/fileapi/file_change_service_unittest.cc b/chrome/browser/chromeos/fileapi/file_change_service_unittest.cc index e3c5d7c..4bf13c3 100644 --- a/chrome/browser/chromeos/fileapi/file_change_service_unittest.cc +++ b/chrome/browser/chromeos/fileapi/file_change_service_unittest.cc
@@ -229,7 +229,7 @@ class FileChangeServiceTest : public BrowserWithTestWindowTest { public: FileChangeServiceTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} FileChangeServiceTest(const FileChangeServiceTest& other) = delete; @@ -251,7 +251,7 @@ return CreateProfileWithName(kPrimaryProfileName); } - chromeos::FakeChromeUserManager* fake_user_manager_; + FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager user_manager_enabler_; };
diff --git a/chrome/browser/chromeos/full_restore/full_restore_prefs_unittest.cc b/chrome/browser/chromeos/full_restore/full_restore_prefs_unittest.cc index a19fbdf..7ab32b9 100644 --- a/chrome/browser/chromeos/full_restore/full_restore_prefs_unittest.cc +++ b/chrome/browser/chromeos/full_restore/full_restore_prefs_unittest.cc
@@ -21,8 +21,7 @@ class FullRestorePrefsTest : public testing::Test { public: FullRestorePrefsTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_enabler_(std::make_unique<FakeChromeUserManager>()) {} void SetUp() override { scoped_feature_list_.InitAndEnableFeature(ash::features::kFullRestore); @@ -34,7 +33,7 @@ } FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + return static_cast<FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc b/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc index ac178e0..b050bf15 100644 --- a/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc +++ b/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc
@@ -63,8 +63,7 @@ class FullRestoreServiceTest : public testing::Test { protected: FullRestoreServiceTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_enabler_(std::make_unique<FakeChromeUserManager>()) {} ~FullRestoreServiceTest() override = default; @@ -97,7 +96,7 @@ void TearDown() override { profile_.reset(); } FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + return static_cast<FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/chromeos/guest_os/guest_os_share_path_unittest.cc b/chrome/browser/chromeos/guest_os/guest_os_share_path_unittest.cc index 2277542..ee2a66d 100644 --- a/chrome/browser/chromeos/guest_os/guest_os_share_path_unittest.cc +++ b/chrome/browser/chromeos/guest_os/guest_os_share_path_unittest.cc
@@ -266,7 +266,7 @@ // Setup for DriveFS. scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); account_id_ = AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), "12345"); GetFakeUserManager()->AddUser(account_id_); @@ -302,8 +302,8 @@ component_manager_.reset(); } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/chromeos/input_method/input_method_persistence_unittest.cc b/chrome/browser/chromeos/input_method/input_method_persistence_unittest.cc index 29d1e5d3..43ee4c4 100644 --- a/chrome/browser/chromeos/input_method/input_method_persistence_unittest.cc +++ b/chrome/browser/chromeos/input_method/input_method_persistence_unittest.cc
@@ -34,7 +34,7 @@ protected: InputMethodPersistenceTest() : mock_profile_manager_(TestingBrowserProcess::GetGlobal()), - fake_user_manager_(new chromeos::FakeChromeUserManager()), + fake_user_manager_(new FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} void SetUp() override { @@ -71,7 +71,7 @@ sync_preferences::TestingPrefServiceSyncable* mock_user_prefs_; MockInputMethodManagerImpl mock_manager_; TestingProfileManager mock_profile_manager_; - chromeos::FakeChromeUserManager* fake_user_manager_; + FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager user_manager_enabler_; };
diff --git a/chrome/browser/chromeos/policy/active_directory_policy_manager.cc b/chrome/browser/chromeos/policy/active_directory_policy_manager.cc index ae25ace3..6038575 100644 --- a/chrome/browser/chromeos/policy/active_directory_policy_manager.cc +++ b/chrome/browser/chromeos/policy/active_directory_policy_manager.cc
@@ -333,11 +333,11 @@ return; // Update user affiliation IDs. - chromeos::AffiliationIDSet set_of_user_affiliation_ids( + ash::AffiliationIDSet set_of_user_affiliation_ids( policy_data->user_affiliation_ids().begin(), policy_data->user_affiliation_ids().end()); - chromeos::ChromeUserManager::Get()->SetUserAffiliation( + ash::ChromeUserManager::Get()->SetUserAffiliation( account_id_, set_of_user_affiliation_ids); }
diff --git a/chrome/browser/chromeos/policy/active_directory_policy_manager_unittest.cc b/chrome/browser/chromeos/policy/active_directory_policy_manager_unittest.cc index 4dce80a..beab1c1b 100644 --- a/chrome/browser/chromeos/policy/active_directory_policy_manager_unittest.cc +++ b/chrome/browser/chromeos/policy/active_directory_policy_manager_unittest.cc
@@ -34,8 +34,7 @@ class ActiveDirectoryPolicyManagerTest : public testing::Test { public: ActiveDirectoryPolicyManagerTest() - : user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()), + : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()), install_attributes_( chromeos::StubInstallAttributes::CreateActiveDirectoryManaged( "realm.com",
diff --git a/chrome/browser/chromeos/policy/adb_sideloading_allowance_mode_policy_handler_unittest.cc b/chrome/browser/chromeos/policy/adb_sideloading_allowance_mode_policy_handler_unittest.cc index 84e3710a..9cecd84 100644 --- a/chrome/browser/chromeos/policy/adb_sideloading_allowance_mode_policy_handler_unittest.cc +++ b/chrome/browser/chromeos/policy/adb_sideloading_allowance_mode_policy_handler_unittest.cc
@@ -23,8 +23,10 @@ #include "testing/gtest/include/gtest/gtest.h" namespace { + constexpr char kFakeUserName[] = "test@example.com"; constexpr char kFakeGaiaId[] = "1234567890"; + } // namespace namespace policy { @@ -36,7 +38,7 @@ AdbSideloadingAllowanceModePolicyHandlerTest() : local_state_(TestingBrowserProcess::GetGlobal()), - user_manager_(new chromeos::FakeChromeUserManager()), + user_manager_(new ash::FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)), mock_notification_( new chromeos::MockAdbSideloadingPolicyChangeNotification()) { @@ -110,7 +112,7 @@ content::BrowserTaskEnvironment task_environment_; ScopedTestingLocalState local_state_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; user_manager::ScopedUserManager user_manager_enabler_; ash::ScopedTestingCrosSettings scoped_testing_cros_settings_;
diff --git a/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc b/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc index c75870e..cd67d82 100644 --- a/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc +++ b/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_impl_unittest.cc
@@ -149,7 +149,7 @@ private: content::BrowserTaskEnvironment task_environment_; data_decoder::test::InProcessDataDecoder in_process_data_decoder_; - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager user_manager_enabler_; ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; network::TestURLLoaderFactory test_url_loader_factory_; @@ -208,7 +208,7 @@ AffiliatedInvalidationServiceProviderImplTest() : device_invalidation_service_(nullptr), profile_invalidation_service_(nullptr), - fake_user_manager_(new chromeos::FakeChromeUserManager), + fake_user_manager_(new ash::FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)), profile_manager_(TestingBrowserProcess::GetGlobal()) { cros_settings_test_helper_.InstallAttributes()->SetCloudManaged("example.com",
diff --git a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc index cb1e81b9..dc9597f3 100644 --- a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc +++ b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
@@ -580,7 +580,7 @@ return {}; } -chromeos::AffiliationIDSet +ash::AffiliationIDSet BrowserPolicyConnectorChromeOS::GetDeviceAffiliationIDs() const { base::flat_set<std::string> affiliation_ids = device_affiliation_ids(); return {affiliation_ids.begin(), affiliation_ids.end()};
diff --git a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h index 38a775e1..d39abe7f 100644 --- a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h +++ b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h
@@ -239,7 +239,7 @@ // TODO(crbug.com/1187628): Combine the following two functions into one to // simplify the API. base::flat_set<std::string> device_affiliation_ids() const override; - chromeos::AffiliationIDSet GetDeviceAffiliationIDs() const; + ash::AffiliationIDSet GetDeviceAffiliationIDs() const; // BrowserPolicyConnector: // Always returns true as command line flag can be set under dev mode only.
diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc index cbc26f8..1bac6d6 100644 --- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
@@ -1348,8 +1348,7 @@ // verify that the underlying policy subsystem will start a fetch // without this request as well, the user_manager::UserManager must be // prevented from seeing the policy change. - static_cast<chromeos::ChromeUserManagerImpl*>( - user_manager::UserManager::Get()) + static_cast<ash::ChromeUserManagerImpl*>(user_manager::UserManager::Get()) ->StopPolicyObserverForTesting(); UploadDeviceLocalAccountPolicy(); @@ -1461,7 +1460,7 @@ { base::ScopedAllowBlockingForTesting allow_blocking; ASSERT_TRUE(base::ReadFileToString( - test_dir.Append(chromeos::test::kUserAvatarImage1RelativePath), + test_dir.Append(ash::test::kUserAvatarImage1RelativePath), &image_data)); } @@ -1470,7 +1469,7 @@ *test::ConstructExternalDataReference( embedded_test_server() ->GetURL(std::string("/") + - chromeos::test::kUserAvatarImage1RelativePath) + ash::test::kUserAvatarImage1RelativePath) .spec(), image_data), &policy); @@ -1488,8 +1487,8 @@ WaitUntilLocalStateChanged(); gfx::ImageSkia policy_image = - chromeos::test::ImageLoader( - test_dir.Append(chromeos::test::kUserAvatarImage1RelativePath)) + ash::test::ImageLoader( + test_dir.Append(ash::test::kUserAvatarImage1RelativePath)) .Load(); ASSERT_FALSE(policy_image.isNull()); @@ -1504,7 +1503,7 @@ EXPECT_FALSE(user->HasDefaultImage()); EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); - EXPECT_TRUE(chromeos::test::AreImagesEqual(policy_image, user->GetImage())); + EXPECT_TRUE(ash::test::AreImagesEqual(policy_image, user->GetImage())); const base::DictionaryValue* images_pref = g_browser_process->local_state()->GetDictionary("user_image_info"); ASSERT_TRUE(images_pref); @@ -1518,8 +1517,7 @@ EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, image_index); EXPECT_EQ(saved_image_path.value(), image_path); - gfx::ImageSkia saved_image = - chromeos::test::ImageLoader(saved_image_path).Load(); + gfx::ImageSkia saved_image = ash::test::ImageLoader(saved_image_path).Load(); ASSERT_FALSE(saved_image.isNull()); // Check image dimensions. Images can't be compared since JPEG is lossy. @@ -2390,14 +2388,12 @@ // Check that managed sessions mode is disabled. EXPECT_FALSE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Check that disabled managed sessions mode hides full management disclosure // warning. EXPECT_FALSE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } IN_PROC_BROWSER_TEST_F(ManagedSessionsTest, ManagedSessionsEnabledNonRisky) { @@ -2417,14 +2413,12 @@ // Check that managed sessions mode is enabled. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Management disclosure warning is shown in the beginning, because // kManagedSessionUseFullLoginWarning pref is set to true in the beginning. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); ASSERT_NO_FATAL_FAILURE(StartLogin(std::string(), std::string())); WaitForSessionStart(); @@ -2433,8 +2427,7 @@ // Check that management disclosure warning is not shown when managed sessions // are enabled, but policy settings are not risky. ASSERT_FALSE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } IN_PROC_BROWSER_TEST_F(ManagedSessionsTest, ForceInstalledSafeExtension) { @@ -2457,14 +2450,12 @@ // Check that 'DeviceLocalAccountManagedSessionEnabled' policy was applied // correctly. EXPECT_TRUE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Management disclosure warning is shown in the beginning, because // kManagedSessionUseFullLoginWarning pref is set to true in the beginning. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); ExtensionInstallObserver install_observer(kHostedAppID); @@ -2477,8 +2468,7 @@ // Check that force-installed extension activates managed session mode for // device-local users. EXPECT_FALSE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } IN_PROC_BROWSER_TEST_F(ManagedSessionsTest, ForceInstalledUnsafeExtension) { @@ -2501,14 +2491,12 @@ // Check that 'DeviceLocalAccountManagedSessionEnabled' policy was applied // correctly. EXPECT_TRUE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Management disclosure warning is shown in the beginning, because // kManagedSessionUseFullLoginWarning pref is set to true in the beginning. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); ExtensionInstallObserver install_observer(kGoodExtensionID); @@ -2521,8 +2509,7 @@ // Check that force-installed extension activates managed session mode for // device-local users. EXPECT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } IN_PROC_BROWSER_TEST_F(ManagedSessionsTest, WhitelistedExtension) { @@ -2545,14 +2532,12 @@ // Check that 'DeviceLocalAccountManagedSessionEnabled' policy was applied // correctly. EXPECT_TRUE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Management disclosure warning is shown in the beginning, because // kManagedSessionUseFullLoginWarning pref is set to true in the beginning. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); ExtensionInstallObserver install_observer(kShowManagedStorageID); @@ -2565,8 +2550,7 @@ // Check that white-listed extension is not considered risky and doesn't // activate managed session mode. EXPECT_FALSE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } IN_PROC_BROWSER_TEST_F(ManagedSessionsTest, NetworkCertificate) { @@ -2590,14 +2574,12 @@ // Check that 'DeviceLocalAccountManagedSessionEnabled' policy was applied // correctly. EXPECT_TRUE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Check that network certificate pushed via policy activates managed sessions // mode. EXPECT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } IN_PROC_BROWSER_TEST_F(ManagedSessionsTest, AllowCrossOriginAuthPrompt) { @@ -2622,14 +2604,12 @@ // Check that 'DeviceLocalAccountManagedSessionEnabled' policy was applied // correctly. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsManagedSessionEnabledForUser( - *user)); + ash::ChromeUserManager::Get()->IsManagedSessionEnabledForUser(*user)); // Check that setting a value to 'AllowCrossOriginAuthPrompt' activates // managed sessions mode. ASSERT_TRUE( - chromeos::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded( - broker)); + ash::ChromeUserManager::Get()->IsFullManagementDisclosureNeeded(broker)); } class TermsOfServiceDownloadTest : public DeviceLocalAccountTest,
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc index 545d344..7a02cf14 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc
@@ -15,7 +15,6 @@ #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/chromeos/policy/dlp/dlp_histogram_helper.h" #include "chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h" #include "chrome/browser/ui/ash/chrome_capture_mode_delegate.h" @@ -85,7 +84,7 @@ bool DlpContentManager::IsPrintingRestricted( content::WebContents* web_contents) const { - // If we're viewing the PDF in a MimeHandlerViewGuest, use its embedded + // If we're viewing the PDF in a MimeHandlerViewGuest, use its embedder // WebContents. auto* guest_view = extensions::MimeHandlerViewGuest::FromWebContents(web_contents); @@ -94,13 +93,9 @@ const bool restricted = GetConfidentialRestrictions(web_contents) .HasRestriction(DlpContentRestriction::kPrint); - DlpBooleanHistogram(dlp::kPrintingBlockedUMA, restricted); - if (restricted) { + if (restricted) SYSLOG(INFO) << "DLP blocked printing"; - DlpReportingManager::Get()->ReportPrintingEvent( - web_contents, DlpRulesManager::Level::kBlock); - } - + DlpBooleanHistogram(dlp::kPrintingBlockedUMA, restricted); return restricted; }
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_manager_unittest.cc index ba5f4d6..da1f5c36 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_content_manager_unittest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager_unittest.cc
@@ -4,26 +4,18 @@ #include "chrome/browser/chromeos/policy/dlp/dlp_content_manager.h" -#include <memory> - #include "ash/public/cpp/privacy_screen_dlp_helper.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/task_environment.h" #include "chrome/browser/chromeos/policy/dlp/dlp_content_manager_test_helper.h" #include "chrome/browser/chromeos/policy/dlp/dlp_histogram_helper.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_policy_event.pb.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" #include "chrome/test/base/testing_profile.h" -#include "components/reporting/client/mock_report_queue.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_renderer_host.h" #include "content/public/test/web_contents_tester.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -using testing::_; - namespace policy { namespace { @@ -46,31 +38,13 @@ class DlpContentManagerTest : public testing::Test { protected: DlpContentManagerTest() { manager_ = DlpContentManager::Get(); } - DlpContentManagerTest(const DlpContentManagerTest&) = delete; - DlpContentManagerTest& operator=(const DlpContentManagerTest&) = delete; - ~DlpContentManagerTest() override {} void SetUp() override { testing::Test::SetUp(); - SetUpDlpReportingManager(); - } - void SetUpDlpReportingManager() { profile_ = std::make_unique<TestingProfile>(); - reporting_manager_ = new DlpReportingManager(); - - DlpReportingManager::SetDlpReportingManagerForTesting(reporting_manager_); - reporting_manager_->report_queue_ = - std::make_unique<reporting::MockReportQueue>(); } - reporting::MockReportQueue* mock_report_queue() const { - reporting::MockReportQueue* queue = - static_cast<reporting::MockReportQueue*>( - reporting_manager_->report_queue_.get()); - DCHECK(queue); - return queue; - } std::unique_ptr<content::WebContents> CreateWebContents() { return content::WebContentsTester::CreateTestWebContents(profile_.get(), nullptr); @@ -80,7 +54,6 @@ // This points to the DlpContentManager object which is created in the // constructor of |helper_|. DlpContentManager* manager_ = nullptr; - DlpReportingManager* reporting_manager_; content::BrowserTaskEnvironment task_environment_{ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; base::HistogramTester histogram_tester_; @@ -250,53 +223,10 @@ GetDlpHistogramPrefix() + dlp::kPrivacyScreenEnforcedUMA, false, 2); } -MATCHER_P(MatchEvents, expected, "DlpPolicyEvent equals") { - DCHECK(expected); - DlpPolicyEvent event; - std::string event_str = (std::string)arg; - event.ParseFromString(event_str); - bool result = true; - if (event.destination().url() != expected->destination().url()) { - *result_listener << "destination urls are not equal " - << event.destination().url() - << " != " << expected->destination().url(); - result = false; - } - if (event.destination().component() != expected->destination().component()) { - *result_listener << "destination component is not equal " - << event.destination().component() - << " != " << expected->destination().component(); - result = false; - } - if (event.source().url() != expected->source().url()) { - *result_listener << "source urls are not equal " << event.source().url() - << " != " << expected->source().url(); - result = false; - } - if (event.restriction() != expected->restriction()) { - *result_listener << "restrictions are not equal " << event.restriction() - << " != " << expected->restriction(); - result = false; - } - if (event.mode() != expected->mode()) { - *result_listener << "modes are not equal " << event.mode() - << " != " << expected->mode(); - result = false; - } - return result; -} - TEST_F(DlpContentManagerTest, PrintingRestricted) { std::unique_ptr<content::WebContents> web_contents = CreateWebContents(); EXPECT_EQ(manager_->GetConfidentialRestrictions(web_contents.get()), kEmptyRestrictionSet); - DlpPolicyEvent* event_expected = - CreateDlpPolicyEvent(web_contents.get(), DlpRulesManager::Level::kBlock, - DlpRulesManager::Restriction::kPrinting); - EXPECT_CALL(*mock_report_queue(), - AddRecord(MatchEvents(event_expected), _, _)) - .Times(1); - EXPECT_FALSE(manager_->IsPrintingRestricted(web_contents.get())); histogram_tester_.ExpectBucketCount( GetDlpHistogramPrefix() + dlp::kPrintingBlockedUMA, true, 0);
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_policy_event.proto b/chrome/browser/chromeos/policy/dlp/dlp_policy_event.proto deleted file mode 100644 index 3eeb6963..0000000 --- a/chrome/browser/chromeos/policy/dlp/dlp_policy_event.proto +++ /dev/null
@@ -1,52 +0,0 @@ -// 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. - -syntax = "proto2"; - -option optimize_for = LITE_RUNTIME; - -// The source of the data that triggered the DLP restriction. -message DlpPolicyEventSource { - optional string url = 1; -} - -// In case of a DLP event with transferring the data - where it was going to be -// transferred to. -message DlpPolicyEventDestination { - enum Component { - UNDEFINED_COMPONENT = 0; - ARC = 1; - CROSTINI = 2; - PLUGIN_VM = 3; - } - - // Either |url| or |component| should be set. - optional string url = 1; - optional Component component = 2; -} - -message DlpPolicyEvent { - // The restriction that was triggered. - enum Restriction { - UNDEFINED_RESTRICTION = 0; - CLIPBOARD = 1; - SCREENSHOT = 2; - SCREENCAST = 3; - PRINTING = 4; - EPRIVACY = 5; - } - // The mode of the applied restriction. - enum Mode { - UNDEFINED_MODE = 0; - BLOCK = 1; - } - - optional DlpPolicyEventSource source = 1; - optional DlpPolicyEventDestination destination = 2; - optional Restriction restriction = 3; - optional Mode mode = 4; - // Whether the restriction was enforced or not. Valuable for WARN. - optional bool restriction_enforced = 5; - optional int64 timestamp = 6; -}
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.cc b/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.cc deleted file mode 100644 index 551043f..0000000 --- a/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.cc +++ /dev/null
@@ -1,175 +0,0 @@ -// 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/chromeos/policy/dlp/dlp_reporting_manager.h" - -#include "base/bind.h" -#include "base/callback_helpers.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_policy_event.pb.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" -#include "chrome/browser/policy/dm_token_utils.h" -#include "chrome/browser/policy/messaging_layer/public/report_client.h" -#include "chrome/browser/policy/messaging_layer/public/report_queue_impl.h" -#include "chrome/browser/profiles/profile_manager.h" -#include "components/reporting/client/report_queue_provider.h" -#include "components/reporting/util/status.h" -#include "content/public/browser/web_contents.h" -#include "url/gurl.h" - -namespace policy { -// TODO(1187477, marcgrimme): revisit if this should be refactored. -DlpPolicyEvent_Mode DlpRulesManagerLevel2DlpEventMode( - DlpRulesManager::Level level) { - switch (level) { - case DlpRulesManager::Level::kBlock: - return DlpPolicyEvent_Mode_BLOCK; - case DlpRulesManager::Level::kWarn: - return DlpPolicyEvent_Mode_BLOCK; - case DlpRulesManager::Level::kNotSet: - return DlpPolicyEvent_Mode_UNDEFINED_MODE; - default: - return DlpPolicyEvent_Mode_UNDEFINED_MODE; - } -} - -// TODO(1187477, marcgrimme): revisit if this should be refactored. -DlpPolicyEvent_Restriction DlpRulesManagerRestriction2DlpEventRestriction( - DlpRulesManager::Restriction restriction) { - switch (restriction) { - case DlpRulesManager::Restriction::kPrinting: - return DlpPolicyEvent_Restriction_PRINTING; - case DlpRulesManager::Restriction::kScreenshot: - return DlpPolicyEvent_Restriction_SCREENSHOT; - case DlpRulesManager::Restriction::kScreenShare: - return DlpPolicyEvent_Restriction_SCREENCAST; - case DlpRulesManager::Restriction::kPrivacyScreen: - return DlpPolicyEvent_Restriction_EPRIVACY; - case DlpRulesManager::Restriction::kClipboard: - return DlpPolicyEvent_Restriction_CLIPBOARD; - default: - return DlpPolicyEvent_Restriction_UNDEFINED_RESTRICTION; - } -} - -DlpPolicyEvent* CreateDlpPolicyEvent(content::WebContents* source, - DlpRulesManager::Level level, - DlpRulesManager::Restriction restriction) { - DlpPolicyEvent* event = new DlpPolicyEvent(); - - DlpPolicyEventSource* event_source = new DlpPolicyEventSource(); - event_source->set_url(source->GetURL().spec()); - event->set_allocated_source(event_source); - - // TODO(1187479, marcgrimme): add proper destination as soon as available - // DlpPolicyEventDestination* event_destination = new - // DlpPolicyEventDestination(); - // event_destination->set_component(DlpPolicyEventDestination_Component_UNDEFINED_COMPONENT); - // event->set_allocated_destination(event_destination); - - event->set_restriction( - DlpRulesManagerRestriction2DlpEventRestriction(restriction)); - event->set_mode(DlpRulesManagerLevel2DlpEventMode(level)); - event->set_timestamp(base::Time::Now().ToTimeT()); - - return event; -} - -static DlpReportingManager* g_dlp_reporting_manager = nullptr; - -// static -void DlpReportingManager::Init() { - if (g_dlp_reporting_manager) - return; - - Profile* profile = ProfileManager::GetActiveUserProfile(); - if (!profile) - return; - auto dm_token = GetDMToken(profile, /*only_affiliated=*/false); - if (!dm_token.is_valid()) { - LOG(ERROR) << "DlpReporting has invalid DMToken. Reporting disabled."; - return; - } - - g_dlp_reporting_manager = new DlpReportingManager(); - g_dlp_reporting_manager->BuildReportQueueConfiguration( - dm_token, - base::BindRepeating([]() { return reporting::Status::StatusOK(); })); - g_dlp_reporting_manager->BuildReportQueue( - base::BindOnce(&DlpReportingManager::OnReportQueueResult, - base::Unretained(g_dlp_reporting_manager))); -} - -// static -DlpReportingManager* DlpReportingManager::Get() { - DlpReportingManager::Init(); - return g_dlp_reporting_manager; -} - -// static -void DlpReportingManager::SetDlpReportingManagerForTesting( - DlpReportingManager* manager) { - if (g_dlp_reporting_manager) { - delete g_dlp_reporting_manager; - } - g_dlp_reporting_manager = manager; -} - -DlpReportingManager::DlpReportingManager() = default; -DlpReportingManager::~DlpReportingManager() = default; - -void DlpReportingManager::BuildReportQueueConfiguration( - const policy::DMToken& dm_token, - reporting::ReportQueueConfiguration::PolicyCheckCallback callback) { - report_queue_config_ = reporting::ReportQueueConfiguration::Create( - dm_token.value(), reporting::Destination::DLP_EVENTS, callback); -} - -void DlpReportingManager::BuildReportQueue( - reporting::ReportingClient::CreateReportQueueCallback callback) { - if (report_queue_config_.ok()) { - ::reporting::ReportQueueProvider::CreateQueue( - std::move(report_queue_config_.ValueOrDie()), std::move(callback)); - } -} - -void DlpReportingManager::OnReportQueueResult( - reporting::StatusOr<std::unique_ptr<reporting::ReportQueue>> - report_queue_result) { - if (!report_queue_result.ok()) { - LOG(ERROR) << "Report queue could not be setup because of " - << report_queue_result.status(); - return; - } - report_queue_ = std::move(report_queue_result.ValueOrDie()); -} - -void DlpReportingManager::ReportPrintingEvent( - content::WebContents* web_contents, - DlpRulesManager::Level level) const { - // TODO(1187506, marcgrimme) Refactor to handle gracefully with user - // interaction when queue is not ready. - if (!report_queue_) { - LOG(ERROR) << "Report queue could not be initialized. DLP reporting " - "functionality will be disabled."; - return; - } - if (!ReportingEnabled()) { - LOG(ERROR) << "Reporting functionality for DLP is explicitly disabled."; - return; - } - reporting::ReportQueue::EnqueueCallback callback = base::BindOnce( - &DlpReportingManager::OnEventEnqueued, base::Unretained(this)); - report_queue_->Enqueue( - CreateDlpPolicyEvent(web_contents, level, - DlpRulesManager::Restriction::kPrinting), - reporting::Priority::IMMEDIATE, std::move(callback)); -} - -void DlpReportingManager::OnEventEnqueued(reporting::Status status) const { - if (!status.ok()) { - LOG(ERROR) << "Could not enqueue event to DLP reporting queue because of " - << status; - } -} -} // namespace policy
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h b/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h deleted file mode 100644 index d763771d..0000000 --- a/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h +++ /dev/null
@@ -1,76 +0,0 @@ -// 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 CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_REPORTING_MANAGER_H_ -#define CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_REPORTING_MANAGER_H_ - -#include "chrome/browser/chromeos/policy/dlp/dlp_content_manager.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" -#include "chrome/browser/policy/messaging_layer/public/report_client.h" -#include "components/policy/core/common/cloud/dm_token.h" -#include "components/reporting/client/report_queue_configuration.h" -#include "components/reporting/util/statusor.h" - -namespace content { -class WebContents; -} - -class DlpPolicyEvent; -namespace policy { -// helper function to create DlpPolicyEvents to be enqueued or used to test -// against. -DlpPolicyEvent* CreateDlpPolicyEvent(content::WebContents* source, - DlpRulesManager::Level level, - DlpRulesManager::Restriction restriction); - -// DlpReportingManger controls the coordination and setup towards the reporting -// pipeline so that other areas of the DLP functionality don't need to know -// about reporting but just trigger some functionality (e.g. -// ReportPrintingEvent) that will take over the work to queue extract relevant -// data, mask if necessary and much more. -class DlpReportingManager { - public: - static void Init(); - static DlpReportingManager* Get(); - static void SetDlpReportingManagerForTesting(DlpReportingManager* manager); - - // The different methods that cause report events from the specific - // restrictions. - void ReportPrintingEvent(content::WebContents* contents, - DlpRulesManager::Level level) const; - - private: - // Result of trying to build a |ReportQueueConfiguration|. - using ReportQueueConfigResult = ::reporting::StatusOr< - std::unique_ptr<::reporting::ReportQueueConfiguration>>; - - bool ReportingEnabled() const { return true; } - - // methods to setup the reporting environment - void BuildReportQueue( - reporting::ReportingClient::CreateReportQueueCallback callback); - void BuildReportQueueConfiguration( - const policy::DMToken& dm_token, - reporting::ReportQueueConfiguration::PolicyCheckCallback callback); - - void OnReportQueueResult( - reporting::StatusOr<std::unique_ptr<reporting::ReportQueue>> - report_queue_result); - - void OnEventEnqueued(reporting::Status status) const; - - ReportQueueConfigResult report_queue_config_; - std::unique_ptr<reporting::ReportQueue> report_queue_; - - friend class DlpReportingManagerTest; - friend class DlpContentManagerTest; - - DlpReportingManager(); - DlpReportingManager(const DlpReportingManager&) = delete; - ~DlpReportingManager(); - DlpReportingManager& operator=(const DlpReportingManager&) = delete; -}; -} // namespace policy - -#endif // CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_REPORTING_MANAGER_H_
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager_unittest.cc deleted file mode 100644 index d518b85..0000000 --- a/chrome/browser/chromeos/policy/dlp/dlp_reporting_manager_unittest.cc +++ /dev/null
@@ -1,133 +0,0 @@ -// 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/chromeos/policy/dlp/dlp_reporting_manager.h" - -#include "base/bind.h" -#include "base/test/scoped_feature_list.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_policy_event.pb.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" -#include "chrome/browser/policy/messaging_layer/public/report_queue_impl.h" -#include "chrome/test/base/testing_profile.h" -#include "chromeos/dbus/dlp/dlp_service.pb.h" -#include "components/policy/core/common/cloud/dm_token.h" -#include "components/policy/core/common/cloud/mock_cloud_policy_client.h" -#include "components/reporting/storage/storage_module_interface.h" -#include "components/reporting/storage/test_storage_module.h" -#include "content/public/browser/web_contents.h" -#include "content/public/test/browser_task_environment.h" -#include "content/public/test/web_contents_tester.h" -#include "testing/gtest/include/gtest/gtest.h" - -using ::policy::DMToken; -using ::reporting::test::TestStorageModule; -using ::testing::_; -using ::testing::Invoke; -using ::testing::Mock; -using ::testing::NiceMock; - -namespace policy { - -class DlpReportingManagerTest : public testing::Test { - protected: - DlpReportingManagerTest() - : storage_module_( - base::MakeRefCounted<reporting::test::TestStorageModule>()) {} - - void SetUpReporting() { - // Provide a mock cloud policy client. - client_ = std::make_unique<policy::MockCloudPolicyClient>(); - client_->SetDMToken(dm_token_.value()); - test_reporting_ = - std::make_unique<reporting::ReportingClient::TestEnvironment>( - client_.get()); - } - - void SetUpDlpReportingManager() { - manager_ = new DlpReportingManager(); - DlpReportingManager::SetDlpReportingManagerForTesting(manager_); - } - - void SetUpDlpReportingQueue() { - reporting::StatusOr<std::unique_ptr<reporting::ReportQueueConfiguration>> - config_result = reporting::ReportQueueConfiguration::Create( - dm_token_.value(), reporting::Destination::DLP_EVENTS, - base::BindRepeating( - []() { return reporting::Status::StatusOK(); })); - ASSERT_TRUE(config_result.ok()); - - reporting::StatusOr<std::unique_ptr<reporting::ReportQueue>> - report_queue_result = reporting::ReportQueueImpl::Create( - std::move(config_result.ValueOrDie()), storage_module_); - ASSERT_TRUE(report_queue_result.ok()); - - manager_->report_queue_ = std::move(report_queue_result.ValueOrDie()); - task_environment_.RunUntilIdle(); - } - - void SetUp() override { - testing::Test::SetUp(); - profile_ = std::make_unique<TestingProfile>(); - - scoped_feature_list_.InitAndEnableFeature( - reporting::ReportingClient::kEncryptedReportingPipeline); - SetUpReporting(); - SetUpDlpReportingManager(); - task_environment_.RunUntilIdle(); - } - - void TearDown() override { - storage_module_.get()->Release(); - testing::Test::TearDown(); - } - - reporting::test::TestStorageModule* test_storage_module() const { - reporting::test::TestStorageModule* test_storage_module = - google::protobuf::down_cast<reporting::test::TestStorageModule*>( - storage_module_.get()); - DCHECK(test_storage_module); - return test_storage_module; - } - - std::unique_ptr<content::WebContents> CreateWebContents() { - return content::WebContentsTester::CreateTestWebContents(profile_.get(), - nullptr); - } - - protected: - DlpReportingManager* manager_; - // BrowserTaskEnvironment needs to be destroyed before TestEnvironment - // and ScopedFeatureList, so that tasks on other threads don't run after - // they are destroyed. - content::BrowserTaskEnvironment task_environment_; - - private: - base::test::ScopedFeatureList scoped_feature_list_; - scoped_refptr<reporting::StorageModuleInterface> storage_module_; - std::unique_ptr<reporting::ReportingClient::TestEnvironment> test_reporting_; - const DMToken dm_token_ = DMToken::CreateValidTokenForTesting("TOKEN"); - std::unique_ptr<MockCloudPolicyClient> client_; - std::unique_ptr<TestingProfile> profile_; -}; - -TEST_F(DlpReportingManagerTest, IsPrintingRestricted) { - EXPECT_CALL(*test_storage_module(), AddRecord).Times(1); - SetUpDlpReportingQueue(); - std::unique_ptr<content::WebContents> web_contents = CreateWebContents(); - manager_->ReportPrintingEvent(web_contents.get(), - DlpRulesManager::Level::kBlock); - task_environment_.RunUntilIdle(); - - DlpPolicyEvent event_result; - EXPECT_TRUE( - event_result.ParseFromString(test_storage_module()->record().data())); - EXPECT_EQ(event_result.restriction(), DlpPolicyEvent_Restriction_PRINTING); - EXPECT_EQ(event_result.mode(), DlpPolicyEvent_Mode_BLOCK); - EXPECT_EQ(event_result.source().url(), web_contents.get()->GetURL().spec()); - EXPECT_EQ(event_result.destination().component(), - DlpPolicyEventDestination_Component_UNDEFINED_COMPONENT); - EXPECT_GT(event_result.timestamp(), 0); - EXPECT_FALSE(event_result.restriction_enforced()); -} -} // namespace policy
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc index ffbe7115..3b4adcc 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.cc
@@ -18,7 +18,6 @@ #include "chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller.h" #include "chrome/browser/chromeos/policy/dlp/dlp_histogram_helper.h" #include "chrome/browser/chromeos/policy/dlp/dlp_policy_constants.h" -#include "chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h" #include "chrome/common/chrome_features.h" #include "chromeos/dbus/dlp/dlp_client.h" #include "chromeos/dbus/dlp/dlp_service.pb.h" @@ -217,7 +216,6 @@ policy_prefs::kDlpRulesList, base::BindRepeating(&DlpRulesManagerImpl::OnPolicyUpdate, base::Unretained(this))); - DlpReportingManager::Init(); OnPolicyUpdate(); }
diff --git a/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc b/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc index aeb1444b..a2b4b065a 100644 --- a/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc +++ b/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc
@@ -247,8 +247,7 @@ } TEST_F(ExtensionInstallEventLogCollectorTest, LoginLogout) { - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); AccountId account_id = AccountId::FromUserEmailGaiaId(kEmailId, kGaiaId); @@ -279,8 +278,7 @@ } TEST_F(ExtensionInstallEventLogCollectorTest, LoginTypes) { - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); AccountId account_id = AccountId::FromUserEmailGaiaId(kEmailId, kGaiaId); @@ -364,8 +362,7 @@ // Then, pass the captive portal. Verify that a connectivity change is recorded. TEST_F(ExtensionInstallEventLogCollectorTest, ConnectivityChanges) { SetNetworkState(nullptr, kEthernetServicePath, shill::kStateOnline); - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); AccountId account_id = AccountId::FromUserEmailGaiaId(kEmailId, kGaiaId);
diff --git a/chrome/browser/chromeos/policy/extension_install_event_logger_unittest.cc b/chrome/browser/chromeos/policy/extension_install_event_logger_unittest.cc index 89ca78af..b0bc3e52 100644 --- a/chrome/browser/chromeos/policy/extension_install_event_logger_unittest.cc +++ b/chrome/browser/chromeos/policy/extension_install_event_logger_unittest.cc
@@ -326,8 +326,7 @@ } TEST_F(ExtensionInstallEventLoggerTest, UpdatePolicy) { - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); AccountId account_id = AccountId::FromUserEmailGaiaId(kEmailId, kGaiaId);
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/user_avatar_image_external_data_handler.cc b/chrome/browser/chromeos/policy/external_data_handlers/user_avatar_image_external_data_handler.cc index 53d3d51..d90ae8c 100644 --- a/chrome/browser/chromeos/policy/external_data_handlers/user_avatar_image_external_data_handler.cc +++ b/chrome/browser/chromeos/policy/external_data_handlers/user_avatar_image_external_data_handler.cc
@@ -15,8 +15,8 @@ namespace { -chromeos::UserImageManager* GetUserImageManager(const std::string& user_id) { - return chromeos::ChromeUserManager::Get()->GetUserImageManager( +ash::UserImageManager* GetUserImageManager(const std::string& user_id) { + return ash::ChromeUserManager::Get()->GetUserImageManager( CloudExternalDataPolicyHandler::GetAccountId(user_id)); } @@ -57,7 +57,7 @@ void UserAvatarImageExternalDataHandler::RemoveForAccountId( const AccountId& account_id) { - chromeos::ChromeUserManager::Get() + ash::ChromeUserManager::Get() ->GetUserImageManager(account_id) ->DeleteUserImage(); }
diff --git a/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc b/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc index f0709f64..8a03155f 100644 --- a/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc +++ b/chrome/browser/chromeos/policy/lock_to_single_user_manager_unittest.cc
@@ -134,8 +134,8 @@ private: ash::ScopedCrosSettingsTestHelper settings_helper_{ /* create_settings_service= */ false}; - chromeos::FakeChromeUserManager* fake_user_manager_{ - new chromeos::FakeChromeUserManager()}; + ash::FakeChromeUserManager* fake_user_manager_{ + new ash::FakeChromeUserManager()}; user_manager::ScopedUserManager scoped_user_manager_{ base::WrapUnique(fake_user_manager_)}; std::unique_ptr<arc::ArcServiceManager> arc_service_manager_;
diff --git a/chrome/browser/chromeos/policy/off_hours/device_off_hours_controller.cc b/chrome/browser/chromeos/policy/off_hours/device_off_hours_controller.cc index e11d6bb..b0dd3fd 100644 --- a/chrome/browser/chromeos/policy/off_hours/device_off_hours_controller.cc +++ b/chrome/browser/chromeos/policy/off_hours/device_off_hours_controller.cc
@@ -83,7 +83,7 @@ // If at least one logged in user won't be allowed after OffHours, // the session will be terminated. - return !chromeos::chrome_user_manager_util::AreAllUsersAllowed( + return !ash::chrome_user_manager_util::AreAllUsersAllowed( users_to_check, device_settings_proto_); }
diff --git a/chrome/browser/chromeos/policy/powerwash_requirements_checker_unittest.cc b/chrome/browser/chromeos/policy/powerwash_requirements_checker_unittest.cc index 1c629ea4..7c69e32 100644 --- a/chrome/browser/chromeos/policy/powerwash_requirements_checker_unittest.cc +++ b/chrome/browser/chromeos/policy/powerwash_requirements_checker_unittest.cc
@@ -23,7 +23,7 @@ class PowerwashRequirementsCheckerTest : public BrowserWithTestWindowTest { public: PowerwashRequirementsCheckerTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager()), + : fake_user_manager_(new ash::FakeChromeUserManager()), scoped_user_manager_(base::WrapUnique(fake_user_manager_)) {} void SetUp() override { @@ -69,7 +69,7 @@ private: ash::ScopedCrosSettingsTestHelper settings_helper_{ /* create_settings_service=*/false}; - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager scoped_user_manager_; };
diff --git a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc index e7cb6d1..9b80424d 100644 --- a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc +++ b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc
@@ -53,6 +53,9 @@ namespace chromeos { namespace { +// TODO(https://crbug.com/1164001): remove once this file is migrated. +using ::ash::ChromeUserManagerImpl; + struct Params { Params(std::string login_screen_isolate_origins, std::string user_policy_isolate_origins,
diff --git a/chrome/browser/chromeos/policy/status_collector/affiliated_session_service_unittest.cc b/chrome/browser/chromeos/policy/status_collector/affiliated_session_service_unittest.cc index 1426f087..cffd115 100644 --- a/chrome/browser/chromeos/policy/status_collector/affiliated_session_service_unittest.cc +++ b/chrome/browser/chromeos/policy/status_collector/affiliated_session_service_unittest.cc
@@ -25,7 +25,7 @@ void SetUp() override { chromeos::PowerManagerClient::InitializeFake(); - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); user_manager_ = user_manager.get(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( std::move(user_manager)); @@ -85,7 +85,7 @@ private: content::BrowserTaskEnvironment task_environment_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; session_manager::SessionManager session_manager_;
diff --git a/chrome/browser/chromeos/policy/status_collector/app_info_generator_unittest.cc b/chrome/browser/chromeos/policy/status_collector/app_info_generator_unittest.cc index 9712e1f..34d9a7b 100644 --- a/chrome/browser/chromeos/policy/status_collector/app_info_generator_unittest.cc +++ b/chrome/browser/chromeos/policy/status_collector/app_info_generator_unittest.cc
@@ -168,7 +168,7 @@ } void SetUp() override { - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( std::move(user_manager)); profile_ = std::make_unique<TestingProfile>();
diff --git a/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc index 2625126f..d8c21cc 100644 --- a/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc
@@ -175,7 +175,7 @@ class ChildStatusCollectorTest : public testing::Test { public: ChildStatusCollectorTest() - : user_manager_(new chromeos::MockUserManager()), + : user_manager_(new ash::MockUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)), user_data_dir_override_(chrome::DIR_USER_DATA), update_engine_client_(new chromeos::FakeUpdateEngineClient) { @@ -426,7 +426,7 @@ // local_state_ should be destructed after TestingProfile. TestingPrefServiceSimple local_state_; std::unique_ptr<TestingProfile> testing_profile_; - chromeos::MockUserManager* const user_manager_; + ash::MockUserManager* const user_manager_; user_manager::ScopedUserManager user_manager_enabler_; em::ChildStatusReportRequest child_status_; std::unique_ptr<TestingChildStatusCollector> status_collector_;
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 1aec9292..7fb30d0 100644 --- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc +++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
@@ -117,6 +117,7 @@ namespace em = enterprise_management; namespace { + // How many seconds of inactivity triggers the idle state. const int kIdleStateThresholdSeconds = 300; @@ -1966,8 +1967,7 @@ // Report only affiliated users for enterprise reporting. std::string primary_user_email = primary_user->GetAccountId().GetUserEmail(); - if (!chromeos::ChromeUserManager::Get()->ShouldReportUser( - primary_user_email)) { + if (!ash::ChromeUserManager::Get()->ShouldReportUser(primary_user_email)) { return std::string(); } return primary_user_email; @@ -2206,7 +2206,7 @@ bool DeviceStatusCollector::GetUsers(em::DeviceStatusReportRequest* status) { const user_manager::UserList& users = - chromeos::ChromeUserManager::Get()->GetUsers(); + ash::ChromeUserManager::Get()->GetUsers(); bool anything_reported = false; for (auto* user : users) { @@ -2215,7 +2215,7 @@ continue; em::DeviceUser* device_user = status->add_users(); - if (chromeos::ChromeUserManager::Get()->ShouldReportUser( + if (ash::ChromeUserManager::Get()->ShouldReportUser( user->GetAccountId().GetUserEmail())) { device_user->set_type(em::DeviceUser::USER_TYPE_MANAGED); device_user->set_email(user->GetAccountId().GetUserEmail());
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 74b4114..70cb384272 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
@@ -755,7 +755,7 @@ class DeviceStatusCollectorTest : public testing::Test { public: DeviceStatusCollectorTest() - : user_manager_(new chromeos::MockUserManager()), + : user_manager_(new ash::MockUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)), got_session_status_(false), fake_kiosk_device_local_account_( @@ -1096,7 +1096,7 @@ std::unique_ptr<chromeos::ArcKioskAppManager> arc_kiosk_app_manager_; // Only set after MockAutoLaunchWebKioskApp was called. std::unique_ptr<ash::WebKioskAppManager> web_kiosk_app_manager_; - chromeos::MockUserManager* const user_manager_; + ash::MockUserManager* const user_manager_; user_manager::ScopedUserManager user_manager_enabler_; em::DeviceStatusReportRequest device_status_; em::SessionStatusReportRequest session_status_;
diff --git a/chrome/browser/chromeos/policy/tpm_auto_update_mode_policy_handler_unittest.cc b/chrome/browser/chromeos/policy/tpm_auto_update_mode_policy_handler_unittest.cc index 1218d9d..483b1af7 100644 --- a/chrome/browser/chromeos/policy/tpm_auto_update_mode_policy_handler_unittest.cc +++ b/chrome/browser/chromeos/policy/tpm_auto_update_mode_policy_handler_unittest.cc
@@ -41,7 +41,7 @@ public: TPMAutoUpdateModePolicyHandlerTest() : local_state_(TestingBrowserProcess::GetGlobal()), - user_manager_(new chromeos::FakeChromeUserManager()), + user_manager_(new ash::FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)) { chromeos::SessionManagerClient::InitializeFakeInMemory(); } @@ -75,7 +75,7 @@ content::BrowserTaskEnvironment task_environment_; ScopedTestingLocalState local_state_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; user_manager::ScopedUserManager user_manager_enabler_; // Set up fake install attributes to pretend the machine is enrolled.
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc index b6f38b0..2eef6698 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc +++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc
@@ -227,7 +227,7 @@ std::unique_ptr<CloudPolicyClient> cloud_policy_client = std::make_unique<CloudPolicyClient>( device_management_service, system_url_loader_factory, - chromeos::GetDeviceDMTokenForUserPolicyGetter(account_id_)); + ash::GetDeviceDMTokenForUserPolicyGetter(account_id_)); CreateComponentCloudPolicyService( dm_protocol::kChromeExtensionPolicyType, component_policy_cache_path_, POLICY_SOURCE_CLOUD, cloud_policy_client.get(), schema_registry()); @@ -493,8 +493,7 @@ RegistrationResultUMA(RegistrationResult::kReregistrationUnsuccessful); LOG(ERROR) << "Re-registration failed, requiring the user to perform an " "online sign-in."; - chromeos::ChromeUserManager::Get()->SaveForceOnlineSignin(account_id_, - true); + ash::ChromeUserManager::Get()->SaveForceOnlineSignin(account_id_, true); } } @@ -535,18 +534,17 @@ enforcement_type_ = PolicyEnforcement::kPolicyOptional; DCHECK(policy_data->has_username()); - chromeos::AffiliationIDSet set_of_user_affiliation_ids( + ash::AffiliationIDSet set_of_user_affiliation_ids( policy_data->user_affiliation_ids().begin(), policy_data->user_affiliation_ids().end()); - chromeos::ChromeUserManager::Get()->SetUserAffiliation( + ash::ChromeUserManager::Get()->SetUserAffiliation( account_id_, set_of_user_affiliation_ids); } } void UserCloudPolicyManagerChromeOS::SetPolicyRequired(bool policy_required) { - chromeos::ChromeUserManager* user_manager = - chromeos::ChromeUserManager::Get(); + auto* user_manager = ash::ChromeUserManager::Get(); user_manager::known_user::SetProfileRequiresPolicy( account_id_, policy_required
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc index 26f7bdbd2..b546864 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc +++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc
@@ -136,7 +136,7 @@ task_runner_(base::MakeRefCounted<base::TestMockTimeTaskRunner>()), profile_(nullptr), signin_profile_(nullptr), - user_manager_(new chromeos::FakeChromeUserManager()), + user_manager_(new ash::FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(user_manager_)), test_signin_shared_loader_factory_( base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( @@ -378,7 +378,7 @@ identity_test_env_profile_adaptor_; user_manager::UserType user_type_ = user_manager::UserType::USER_TYPE_REGULAR; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; user_manager::ScopedUserManager user_manager_enabler_; // This is automatically checked in TearDown() to ensure that we get a // fatal error iff |fatal_error_expected_| is true.
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_unittest.cc b/chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_unittest.cc index dbd4914..f309c99e 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_unittest.cc +++ b/chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_unittest.cc
@@ -91,16 +91,15 @@ class UserCloudPolicyTokenForwarderTest : public testing::Test { protected: - static chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + static ash::FakeChromeUserManager* GetFakeUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); } UserCloudPolicyTokenForwarderTest() : mock_time_task_runner_( base::MakeRefCounted<base::TestMockTimeTaskRunner>()), - user_manager_enabler_( - std::make_unique<chromeos::FakeChromeUserManager>()), + user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()), profile_manager_(std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal())), store_(std::make_unique<MockCloudPolicyStore>()) {} @@ -140,7 +139,7 @@ identity_test_env_profile_adaptor_->identity_test_env() ->MakeUnconsentedPrimaryAccountAvailable(kEmail); - chromeos::FakeChromeUserManager* user_manager = GetFakeUserManager(); + auto* user_manager = GetFakeUserManager(); user_manager->AddUser(account_id); user_manager->AddUserWithAffiliationAndTypeAndProfile( account_id, false /* is_affiliated */, user_type, profile);
diff --git a/chrome/browser/chromeos/power/ml/user_activity_controller.cc b/chrome/browser/chromeos/power/ml/user_activity_controller.cc index 689115a..6395e472 100644 --- a/chrome/browser/chromeos/power/ml/user_activity_controller.cc +++ b/chrome/browser/chromeos/power/ml/user_activity_controller.cc
@@ -51,7 +51,7 @@ &user_activity_ukm_logger_, detector, power_manager_client, session_manager, video_observer_user_logger.InitWithNewPipeAndPassReceiver(), - chromeos::ChromeUserManager::Get()); + ChromeUserManager::Get()); aura::Env::GetInstance() ->context_factory() ->GetHostFrameSinkManager()
diff --git a/chrome/browser/chromeos/power/ml/user_activity_manager.cc b/chrome/browser/chromeos/power/ml/user_activity_manager.cc index 2c1d4490..9d85f1c 100644 --- a/chrome/browser/chromeos/power/ml/user_activity_manager.cc +++ b/chrome/browser/chromeos/power/ml/user_activity_manager.cc
@@ -105,7 +105,7 @@ chromeos::PowerManagerClient* power_manager_client, session_manager::SessionManager* session_manager, mojo::PendingReceiver<viz::mojom::VideoDetectorObserver> receiver, - const chromeos::ChromeUserManager* user_manager) + const ChromeUserManager* user_manager) : ukm_logger_(ukm_logger), user_activity_observer_(this), power_manager_client_observer_(this),
diff --git a/chrome/browser/chromeos/power/ml/user_activity_manager.h b/chrome/browser/chromeos/power/ml/user_activity_manager.h index f783878..522563e 100644 --- a/chrome/browser/chromeos/power/ml/user_activity_manager.h +++ b/chrome/browser/chromeos/power/ml/user_activity_manager.h
@@ -84,7 +84,7 @@ chromeos::PowerManagerClient* power_manager_client, session_manager::SessionManager* session_manager, mojo::PendingReceiver<viz::mojom::VideoDetectorObserver> receiver, - const chromeos::ChromeUserManager* user_manager); + const ChromeUserManager* user_manager); ~UserActivityManager() override; // ui::UserActivityObserver overrides. @@ -198,7 +198,7 @@ mojo::Receiver<viz::mojom::VideoDetectorObserver> receiver_; - const chromeos::ChromeUserManager* const user_manager_; + const ChromeUserManager* const user_manager_; chromeos::PowerManagerClient* const power_manager_client_;
diff --git a/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc b/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc index 7eac57e7..6a2230a 100644 --- a/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc +++ b/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc
@@ -260,7 +260,7 @@ } TestingUserActivityUkmLogger delegate_; - chromeos::FakeChromeUserManager fake_user_manager_; + FakeChromeUserManager fake_user_manager_; // Only used to get SourceIds for URLs. ukm::TestAutoSetUkmRecorder ukm_recorder_; TabActivitySimulator tab_activity_simulator_;
diff --git a/chrome/browser/chromeos/preferences_unittest.cc b/chrome/browser/chromeos/preferences_unittest.cc index daf3080..2a924e4f 100644 --- a/chrome/browser/chromeos/preferences_unittest.cc +++ b/chrome/browser/chromeos/preferences_unittest.cc
@@ -144,8 +144,7 @@ new TestingProfileManager(TestingBrowserProcess::GetGlobal())); ASSERT_TRUE(profile_manager_->SetUp()); - chromeos::FakeChromeUserManager* user_manager = - new chromeos::FakeChromeUserManager(); + auto* user_manager = new FakeChromeUserManager(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(user_manager));
diff --git a/chrome/browser/chromeos/release_notes/release_notes_storage_unittest.cc b/chrome/browser/chromeos/release_notes/release_notes_storage_unittest.cc index ab901343..e3d89a40 100644 --- a/chrome/browser/chromeos/release_notes/release_notes_storage_unittest.cc +++ b/chrome/browser/chromeos/release_notes/release_notes_storage_unittest.cc
@@ -29,7 +29,7 @@ ReleaseNotesStorageTest() : user_manager_(new FakeChromeUserManager()), scoped_user_manager_( - std::unique_ptr<chromeos::FakeChromeUserManager>(user_manager_)) {} + std::unique_ptr<FakeChromeUserManager>(user_manager_)) {} ~ReleaseNotesStorageTest() override {} std::unique_ptr<Profile> CreateProfile(std::string email) {
diff --git a/chrome/browser/chromeos/session_length_limiter.h b/chrome/browser/chromeos/session_length_limiter.h index 6a9e3cc..10fc45e 100644 --- a/chrome/browser/chromeos/session_length_limiter.h +++ b/chrome/browser/chromeos/session_length_limiter.h
@@ -77,4 +77,9 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove once the migratin is finished. +namespace ash { +using ::chromeos::SessionLengthLimiter; +} + #endif // CHROME_BROWSER_CHROMEOS_SESSION_LENGTH_LIMITER_H_
diff --git a/chrome/browser/chromeos/tether/tether_service_unittest.cc b/chrome/browser/chromeos/tether/tether_service_unittest.cc index 41466a8e..bae4dca5 100644 --- a/chrome/browser/chromeos/tether/tether_service_unittest.cc +++ b/chrome/browser/chromeos/tether/tether_service_unittest.cc
@@ -317,7 +317,7 @@ TestingProfile::Builder builder; profile_ = builder.Build(); - fake_chrome_user_manager_ = new chromeos::FakeChromeUserManager(); + fake_chrome_user_manager_ = new ash::FakeChromeUserManager(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_chrome_user_manager_)); @@ -540,7 +540,7 @@ const content::BrowserTaskEnvironment task_environment_; std::unique_ptr<TestingProfile> profile_; - chromeos::FakeChromeUserManager* fake_chrome_user_manager_; + ash::FakeChromeUserManager* fake_chrome_user_manager_; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> test_pref_service_;
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller_unittest.cc b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller_unittest.cc index 017b2eec..08dc829 100644 --- a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller_unittest.cc +++ b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller_unittest.cc
@@ -73,7 +73,7 @@ ProfileHelper::Get()->SetActiveUserIdForTesting(kProfileName); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<FakeChromeUserManager>()); auto account = AccountId::FromUserEmail(kProfileName); GetFakeUserManager()->AddUser(account); @@ -109,8 +109,8 @@ } private: - chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + FakeChromeUserManager* GetFakeUserManager() { + return static_cast<FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/component_updater/cros_component_installer_chromeos_unittest.cc b/chrome/browser/component_updater/cros_component_installer_chromeos_unittest.cc index fb7b379..e36da5e3 100644 --- a/chrome/browser/component_updater/cros_component_installer_chromeos_unittest.cc +++ b/chrome/browser/component_updater/cros_component_installer_chromeos_unittest.cc
@@ -183,7 +183,7 @@ class CrOSComponentInstallerTest : public testing::Test { public: CrOSComponentInstallerTest() - : user_manager_(std::make_unique<chromeos::FakeChromeUserManager>()) {} + : user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} void SetUp() override { ASSERT_TRUE(base_component_paths_.CreateUniqueTempDir());
diff --git a/chrome/browser/download/download_prefs_unittest.cc b/chrome/browser/download/download_prefs_unittest.cc index 6d40ad0..defbb36 100644 --- a/chrome/browser/download/download_prefs_unittest.cc +++ b/chrome/browser/download/download_prefs_unittest.cc
@@ -432,7 +432,7 @@ { // Create new profile for enabled feature to work. TestingProfile profile2(base::FilePath("/home/chronos/u-0123456789abcdef")); - chromeos::FakeChromeUserManager user_manager; + ash::FakeChromeUserManager user_manager; DownloadPrefs prefs2(&profile2); AccountId account_id = AccountId::FromUserEmailGaiaId(profile2.GetProfileUserName(), "12345");
diff --git a/chrome/browser/extensions/active_tab_unittest.cc b/chrome/browser/extensions/active_tab_unittest.cc index 8cd89ccf..4f6f0d8 100644 --- a/chrome/browser/extensions/active_tab_unittest.cc +++ b/chrome/browser/extensions/active_tab_unittest.cc
@@ -569,8 +569,8 @@ // ChromeRenderViewHostTestHarness::TearDown. wallpaper_controller_client_.reset(); - chromeos::ChromeUserManagerImpl::ResetPublicAccountDelegatesForTesting(); - chromeos::ChromeUserManager::Get()->Shutdown(); + ash::ChromeUserManagerImpl::ResetPublicAccountDelegatesForTesting(); + ash::ChromeUserManager::Get()->Shutdown(); ActiveTabTest::TearDown(); }
diff --git a/chrome/browser/extensions/activity_log/counting_policy_unittest.cc b/chrome/browser/extensions/activity_log/counting_policy_unittest.cc index 96bc6fe1..d1d18a89 100644 --- a/chrome/browser/extensions/activity_log/counting_policy_unittest.cc +++ b/chrome/browser/extensions/activity_log/counting_policy_unittest.cc
@@ -51,7 +51,7 @@ CountingPolicyTest() : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP) { #if BUILDFLAG(IS_CHROMEOS_ASH) - test_user_manager_.reset(new chromeos::ScopedTestUserManager()); + test_user_manager_ = std::make_unique<ash::ScopedTestUserManager>(); #endif profile_.reset(new TestingProfile()); base::CommandLine::ForCurrentProcess()-> @@ -389,7 +389,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; + std::unique_ptr<ash::ScopedTestUserManager> test_user_manager_; #endif };
diff --git a/chrome/browser/extensions/activity_log/fullstream_ui_policy_unittest.cc b/chrome/browser/extensions/activity_log/fullstream_ui_policy_unittest.cc index a7731361..4da781e 100644 --- a/chrome/browser/extensions/activity_log/fullstream_ui_policy_unittest.cc +++ b/chrome/browser/extensions/activity_log/fullstream_ui_policy_unittest.cc
@@ -48,7 +48,7 @@ FullStreamUIPolicyTest() : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP) { #if BUILDFLAG(IS_CHROMEOS_ASH) - test_user_manager_.reset(new chromeos::ScopedTestUserManager()); + test_user_manager_ = std::make_unique<ash::ScopedTestUserManager>(); #endif base::CommandLine no_program_command_line(base::CommandLine::NO_PROGRAM); profile_.reset(new TestingProfile()); @@ -334,7 +334,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; + std::unique_ptr<ash::ScopedTestUserManager> test_user_manager_; #endif };
diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest_chromeos.cc b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest_chromeos.cc index 5db79cc..7a4d3f5 100644 --- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest_chromeos.cc +++ b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest_chromeos.cc
@@ -48,7 +48,7 @@ protected: void EnterKioskSession() { - fake_user_manager_ = new chromeos::FakeChromeUserManager(); + fake_user_manager_ = new ash::FakeChromeUserManager(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager_)); @@ -66,7 +66,7 @@ ash::KioskAppManager* manager() const { return ash::KioskAppManager::Get(); } - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; ash::ScopedCrosSettingsTestHelper settings_helper_;
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_unittest.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_unittest.cc index 4ef75459..36cf4b4 100644 --- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_unittest.cc +++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_unittest.cc
@@ -50,7 +50,7 @@ protected: EPKChallengeKeyTestBase() : extension_(ExtensionBuilder("Test").Build()), - fake_user_manager_(new chromeos::FakeChromeUserManager), + fake_user_manager_(new ash::FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) { stub_install_attributes_.SetCloudManaged("google.com", "device_id"); } @@ -122,7 +122,7 @@ scoped_refptr<const extensions::Extension> extension_; chromeos::StubInstallAttributes stub_install_attributes_; // fake_user_manager_ is owned by user_manager_enabler_. - chromeos::FakeChromeUserManager* fake_user_manager_ = nullptr; + ash::FakeChromeUserManager* fake_user_manager_ = nullptr; user_manager::ScopedUserManager user_manager_enabler_; PrefService* prefs_ = nullptr; ash::attestation::MockTpmChallengeKey* mock_tpm_challenge_key_ = nullptr;
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys_private/enterprise_platform_keys_private_api_unittest.cc b/chrome/browser/extensions/api/enterprise_platform_keys_private/enterprise_platform_keys_private_api_unittest.cc index 68844606..454b87f 100644 --- a/chrome/browser/extensions/api/enterprise_platform_keys_private/enterprise_platform_keys_private_api_unittest.cc +++ b/chrome/browser/extensions/api/enterprise_platform_keys_private/enterprise_platform_keys_private_api_unittest.cc
@@ -34,7 +34,7 @@ class EPKPChallengeKeyTestBase : public BrowserWithTestWindowTest { protected: EPKPChallengeKeyTestBase() - : fake_user_manager_(new chromeos::FakeChromeUserManager()), + : fake_user_manager_(new ash::FakeChromeUserManager()), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) { extension_ = ExtensionBuilder("Test").Build(); } @@ -70,7 +70,7 @@ scoped_refptr<const Extension> extension_; // fake_user_manager_ is owned by user_manager_enabler_. - chromeos::FakeChromeUserManager* fake_user_manager_ = nullptr; + ash::FakeChromeUserManager* fake_user_manager_ = nullptr; user_manager::ScopedUserManager user_manager_enabler_; PrefService* prefs_ = nullptr; };
diff --git a/chrome/browser/extensions/api/file_system/consent_provider_unittest.cc b/chrome/browser/extensions/api/file_system/consent_provider_unittest.cc index 5d0b9cc..376d9debe 100644 --- a/chrome/browser/extensions/api/file_system/consent_provider_unittest.cc +++ b/chrome/browser/extensions/api/file_system/consent_provider_unittest.cc
@@ -116,7 +116,7 @@ testing_pref_service_.reset(new TestingPrefServiceSimple); TestingBrowserProcess::GetGlobal()->SetLocalState( testing_pref_service_.get()); - user_manager_ = new chromeos::FakeChromeUserManager; + user_manager_ = new ash::FakeChromeUserManager; scoped_user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(user_manager_)); @@ -134,8 +134,7 @@ protected: base::WeakPtr<Volume> volume_; std::unique_ptr<TestingPrefServiceSimple> testing_pref_service_; - chromeos::FakeChromeUserManager* - user_manager_; // Owned by the scope enabler. + ash::FakeChromeUserManager* user_manager_; // Owned by the scope enabler. std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_enabler_; content::BrowserTaskEnvironment task_environment_; base::ScopedTempDir temp_dir_;
diff --git a/chrome/browser/extensions/api/file_system/file_system_apitest_chromeos.cc b/chrome/browser/extensions/api/file_system/file_system_apitest_chromeos.cc index 99df108..642c7a1 100644 --- a/chrome/browser/extensions/api/file_system/file_system_apitest_chromeos.cc +++ b/chrome/browser/extensions/api/file_system/file_system_apitest_chromeos.cc
@@ -260,7 +260,7 @@ protected: base::ScopedTempDir temp_dir_; - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; // Creates a testing file system in a testing directory. @@ -286,7 +286,7 @@ // Simulates entering the kiosk session. void EnterKioskSession() { - fake_user_manager_ = new chromeos::FakeChromeUserManager(); + fake_user_manager_ = new ash::FakeChromeUserManager(); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager_));
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc index 503d6a1..879a15f3 100644 --- a/chrome/browser/extensions/api/identity/identity_apitest.cc +++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -2781,7 +2781,7 @@ class GetAuthTokenFunctionPublicSessionTest : public GetAuthTokenFunctionTest { public: GetAuthTokenFunctionPublicSessionTest() - : user_manager_(new chromeos::MockUserManager) {} + : user_manager_(new ash::MockUserManager) {} protected: void SetUpInProcessBrowserTestFixture() override { @@ -2793,8 +2793,8 @@ EXPECT_CALL(*user_manager_, IsLoggedInAsPublicAccount()) .WillRepeatedly(Return(true)); EXPECT_CALL(*user_manager_, GetLoggedInUsers()) - .WillRepeatedly(testing::Invoke(user_manager_, - &chromeos::MockUserManager::GetUsers)); + .WillRepeatedly( + testing::Invoke(user_manager_, &ash::MockUserManager::GetUsers)); } scoped_refptr<const Extension> CreateTestExtension(const std::string& id) { @@ -2815,7 +2815,7 @@ "fake-id")}; // Owned by |user_manager_enabler|. - chromeos::MockUserManager* user_manager_; + ash::MockUserManager* user_manager_; }; IN_PROC_BROWSER_TEST_F(GetAuthTokenFunctionPublicSessionTest, NonAllowlisted) {
diff --git a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc index 9a15ad3..9038ff25 100644 --- a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc +++ b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc
@@ -1098,7 +1098,7 @@ } #if BUILDFLAG(IS_CHROMEOS_ASH) - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); const AccountId account_id( AccountId::FromUserEmail(profile_->GetProfileUserName())); const user_manager::User* user = user_manager->AddUserWithAffiliation(
diff --git a/chrome/browser/extensions/crx_installer_browsertest.cc b/chrome/browser/extensions/crx_installer_browsertest.cc index 67cb6180..6345733 100644 --- a/chrome/browser/extensions/crx_installer_browsertest.cc +++ b/chrome/browser/extensions/crx_installer_browsertest.cc
@@ -1046,8 +1046,7 @@ EXPECT_FALSE(InstallExtension(crx_path, 0)); // Simulate ChromeOS kiosk mode. |scoped_user_manager| will take over // lifetime of |user_manager|. - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); const AccountId account_id(AccountId::FromUserEmail("example@example.com")); fake_user_manager->AddKioskAppUser(account_id); fake_user_manager->LoginUser(account_id);
diff --git a/chrome/browser/extensions/extension_action_icon_factory_unittest.cc b/chrome/browser/extensions/extension_action_icon_factory_unittest.cc index 10782eb..36128876 100644 --- a/chrome/browser/extensions/extension_action_icon_factory_unittest.cc +++ b/chrome/browser/extensions/extension_action_icon_factory_unittest.cc
@@ -170,7 +170,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif DISALLOW_COPY_AND_ASSIGN(ExtensionActionIconFactoryTest);
diff --git a/chrome/browser/extensions/extension_garbage_collector_chromeos_unittest.cc b/chrome/browser/extensions/extension_garbage_collector_chromeos_unittest.cc index 5a9ba408..6a072ab 100644 --- a/chrome/browser/extensions/extension_garbage_collector_chromeos_unittest.cc +++ b/chrome/browser/extensions/extension_garbage_collector_chromeos_unittest.cc
@@ -63,7 +63,7 @@ // Initialize the UserManager singleton to a fresh FakeChromeUserManager // instance. user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); GetFakeUserManager()->AddUser(user_manager::StubAccountId()); GetFakeUserManager()->LoginUser(user_manager::StubAccountId()); @@ -131,8 +131,8 @@ return ExtensionPrefs::Get(profile_.get()); } - chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc index c321ddc8..ce3293e 100644 --- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc +++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -262,7 +262,7 @@ // This is needed to create extension service under CrOS. #if BUILDFLAG(IS_CHROMEOS_ASH) - test_user_manager_.reset(new chromeos::ScopedTestUserManager()); + test_user_manager_ = std::make_unique<ash::ScopedTestUserManager>(); // Creating a DBus thread manager setter has the side effect of // creating a DBusThreadManager, which is needed for testing. // We don't actually need the setter so we ignore the return value. @@ -416,7 +416,7 @@ // This is needed to create extension service under CrOS. #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; + std::unique_ptr<ash::ScopedTestUserManager> test_user_manager_; #endif Waiter waiter_;
diff --git a/chrome/browser/extensions/extension_service_test_base.h b/chrome/browser/extensions/extension_service_test_base.h index 7a352c1f..f70e791 100644 --- a/chrome/browser/extensions/extension_service_test_base.h +++ b/chrome/browser/extensions/extension_service_test_base.h
@@ -212,7 +212,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif // An override that ignores CRX3 publisher signatures.
diff --git a/chrome/browser/extensions/extension_web_ui_unittest.cc b/chrome/browser/extensions/extension_web_ui_unittest.cc index e1fbcc7..ea6f087 100644 --- a/chrome/browser/extensions/extension_web_ui_unittest.cc +++ b/chrome/browser/extensions/extension_web_ui_unittest.cc
@@ -71,7 +71,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif };
diff --git a/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc b/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc index 63aa766f8f..f4efe8c 100644 --- a/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc +++ b/chrome/browser/extensions/external_provider_impl_chromeos_unittest.cc
@@ -53,7 +53,7 @@ class ExternalProviderImplChromeOSTest : public ExtensionServiceTestBase { public: ExternalProviderImplChromeOSTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager()), + : fake_user_manager_(new ash::FakeChromeUserManager()), scoped_user_manager_(base::WrapUnique(fake_user_manager_)) {} ~ExternalProviderImplChromeOSTest() override {} @@ -131,14 +131,14 @@ EXPECT_EQ(providers.size(), expected_count); } - chromeos::FakeChromeUserManager* fake_user_manager() const { + ash::FakeChromeUserManager* fake_user_manager() const { return fake_user_manager_; } private: std::unique_ptr<base::ScopedPathOverride> external_externsions_overrides_; chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_; - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager scoped_user_manager_; DISALLOW_COPY_AND_ASSIGN(ExternalProviderImplChromeOSTest);
diff --git a/chrome/browser/extensions/external_provider_impl_unittest.cc b/chrome/browser/extensions/external_provider_impl_unittest.cc index c59e41b..08b3235 100644 --- a/chrome/browser/extensions/external_provider_impl_unittest.cc +++ b/chrome/browser/extensions/external_provider_impl_unittest.cc
@@ -100,7 +100,7 @@ void InitService() { #if BUILDFLAG(IS_CHROMEOS_ASH) user_manager::ScopedUserManager scoped_user_manager( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); #endif InitializeExtensionServiceWithUpdaterAndPrefs();
diff --git a/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc b/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc index b0600d6..38a11fd 100644 --- a/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc +++ b/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc
@@ -892,8 +892,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) TEST_F(ForceInstalledMetricsTest, ReportManagedGuestSessionOnExtensionFailure) { - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); const AccountId account_id = @@ -920,8 +919,7 @@ } TEST_F(ForceInstalledMetricsTest, ReportGuestSessionOnExtensionFailure) { - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); const AccountId account_id = @@ -950,8 +948,7 @@ // extension stuck in NOTIFIED_FROM_MANAGEMENT_INITIAL_CREATION_FORCED stage. TEST_F(ForceInstalledMetricsTest, ReportGuestSessionForExtensionsStuckInCreatedStage) { - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager(); + auto* fake_user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager scoped_user_manager( base::WrapUnique(fake_user_manager)); const AccountId account_id =
diff --git a/chrome/browser/extensions/test_extension_environment.cc b/chrome/browser/extensions/test_extension_environment.cc index 60ffc59..d8a6a21 100644 --- a/chrome/browser/extensions/test_extension_environment.cc +++ b/chrome/browser/extensions/test_extension_environment.cc
@@ -80,7 +80,7 @@ private: ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; DISALLOW_COPY_AND_ASSIGN(ChromeOSEnv); };
diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc index f4275e3..a145547 100644 --- a/chrome/browser/extensions/test_extension_system.cc +++ b/chrome/browser/extensions/test_extension_system.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/extensions/test_extension_system.h" +#include <memory> #include <utility> #include "base/command_line.h" @@ -54,7 +55,7 @@ app_sorting_(new ChromeAppSorting(profile_)) { #if BUILDFLAG(IS_CHROMEOS_ASH) if (!user_manager::UserManager::IsInitialized()) - test_user_manager_.reset(new chromeos::ScopedTestUserManager); + test_user_manager_ = std::make_unique<ash::ScopedTestUserManager>(); #endif }
diff --git a/chrome/browser/extensions/test_extension_system.h b/chrome/browser/extensions/test_extension_system.h index 527a5b11..e14aa94 100644 --- a/chrome/browser/extensions/test_extension_system.h +++ b/chrome/browser/extensions/test_extension_system.h
@@ -117,7 +117,7 @@ in_process_data_decoder_; #if BUILDFLAG(IS_CHROMEOS_ASH) - std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; + std::unique_ptr<ash::ScopedTestUserManager> test_user_manager_; #endif };
diff --git a/chrome/browser/extensions/update_install_gate_unittest.cc b/chrome/browser/extensions/update_install_gate_unittest.cc index 99e2058..2e26fb5a 100644 --- a/chrome/browser/extensions/update_install_gate_unittest.cc +++ b/chrome/browser/extensions/update_install_gate_unittest.cc
@@ -116,7 +116,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) const AccountId account_id(AccountId::FromUserEmail(kUserProfile)); // Needed to allow ChromeProcessManagerDelegate to allow background pages. - fake_user_manager_ = new chromeos::FakeChromeUserManager(); + fake_user_manager_ = new ash::FakeChromeUserManager(); // Takes ownership of fake_user_manager_. scoped_user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( @@ -217,7 +217,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // Needed for creating ExtensionService. - chromeos::FakeChromeUserManager* fake_user_manager_ = nullptr; + ash::FakeChromeUserManager* fake_user_manager_ = nullptr; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_enabler_; #endif
diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc index 377f422a..d6bf88c 100644 --- a/chrome/browser/extensions/updater/extension_updater_unittest.cc +++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc
@@ -2423,7 +2423,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif };
diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc index 320f6f94..687d1d2 100644 --- a/chrome/browser/extensions/user_script_listener_unittest.cc +++ b/chrome/browser/extensions/user_script_listener_unittest.cc
@@ -83,7 +83,7 @@ void SetUp() override { #if BUILDFLAG(IS_CHROMEOS_ASH) user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); #endif ASSERT_TRUE(profile_manager_->SetUp()); profile_ = profile_manager_->CreateTestingProfile("test-profile");
diff --git a/chrome/browser/extensions/zipfile_installer_unittest.cc b/chrome/browser/extensions/zipfile_installer_unittest.cc index 69a81e9..c7352bae 100644 --- a/chrome/browser/extensions/zipfile_installer_unittest.cc +++ b/chrome/browser/extensions/zipfile_installer_unittest.cc
@@ -171,7 +171,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; // ChromeOS needs a user manager to instantiate an extension service. - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif private:
diff --git a/chrome/browser/feed/android/BUILD.gn b/chrome/browser/feed/android/BUILD.gn index ac618dd..bb76662 100644 --- a/chrome/browser/feed/android/BUILD.gn +++ b/chrome/browser/feed/android/BUILD.gn
@@ -9,6 +9,11 @@ android_library("java") { sources = [ + "java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java", + "java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemProperties.java", + "java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemView.java", + "java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemViewBinder.java", + "java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java", "java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedBridge.java", "java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedFollowIntroController.java", "java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedFollowIntroView.java", @@ -36,6 +41,8 @@ android_resources("web_feed_java_resources") { sources = [ + "java/res/layout/feed_management_activity.xml", + "java/res/layout/feed_management_list_item.xml", "java/res/layout/web_feed_main_menu_item.xml", "java/res/values/dimens.xml", "java/res/values/styles.xml",
diff --git a/chrome/browser/feed/android/java/res/layout/feed_management_activity.xml b/chrome/browser/feed/android/java/res/layout/feed_management_activity.xml new file mode 100644 index 0000000..132f3744 --- /dev/null +++ b/chrome/browser/feed/android/java/res/layout/feed_management_activity.xml
@@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:layoutDirection="locale"> + + <!-- Header: we want back_arrow.icon, "Manage", then info.icon (png?) --> + <!-- TODO(petewil): Add string resource for "manage". --> + <!-- TODO(petewil): Make the arrow into a clicable button. --> + <TextView + android:id="@+id/feed_management_page_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:drawableStartCompat="@drawable/ic_arrow_back_24dp" /> + + <ListView + android:id="@+id/feed_management_menu" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + +</LinearLayout>
diff --git a/chrome/browser/feed/android/java/res/layout/feed_management_list_item.xml b/chrome/browser/feed/android/java/res/layout/feed_management_list_item.xml new file mode 100644 index 0000000..c3d99ab --- /dev/null +++ b/chrome/browser/feed/android/java/res/layout/feed_management_list_item.xml
@@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +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. +--> + +<!-- Each list item has a name in bold, explanation text beneath in + smaller, grayer font, and a ">" at the right edge to bring up the + next level of menu. --> +<org.chromium.chrome.browser.feed.feedmanagement.FeedManagementItemView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" > + + <!-- TODO(petewil): We want ic_chevron_right, but it is not in chrome yet, using arrow for now. --> + <ImageView + android:id="@+id/ic_chevron_right" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/ic_arrow_forward_blue_24dp" + android:autoMirrored="true" + tools:ignore="ContentDescription" /> + + <RelativeLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" > + + <TextView + android:id="@+id/feed_management_menu_item_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.TextLarge.Primary" /> + + <TextView + android:id="@+id/feed_management_menu_item_description" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.TextSmall.Secondary" /> + + </RelativeLayout> + +</org.chromium.chrome.browser.feed.feedmanagement.FeedManagementItemView>
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java new file mode 100644 index 0000000..cfef6ba --- /dev/null +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java
@@ -0,0 +1,44 @@ +// 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.feed.feedmanagement; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ListView; + +import org.chromium.chrome.browser.feed.webfeed.R; // TODO(petewil): move to feed.feedmanagement? +import org.chromium.ui.modelutil.LayoutViewBuilder; +import org.chromium.ui.modelutil.MVCListAdapter.ModelList; +import org.chromium.ui.modelutil.ModelListAdapter; +/** + * Sets up the model, adapter, and mediator for FeedManagement surface. It is based on the doc at + * https://chromium.googlesource.com/chromium/src/+/HEAD/docs/ui/android/mvc_simple_list_tutorial.md + */ +public class FeedManagementCoordinator { + private FeedManagementMediator mMediator; + private final View mView; + + public FeedManagementCoordinator(Context context) { + ModelList listItems = new ModelList(); + + // Once this is attached to the ListView, there is no need to hold a reference to it. + ModelListAdapter adapter = new ModelListAdapter(listItems); + adapter.registerType(FeedManagementItemProperties.ListItemType.DEFAULT, + new LayoutViewBuilder<FeedManagementItemView>(R.layout.feed_management_list_item), + FeedManagementItemViewBinder::bind); + + // Inflate the XML. + mView = LayoutInflater.from(context).inflate(R.layout.feed_management_activity, null); + ListView listView = (ListView) mView.findViewById(R.id.feed_management_menu); + listView.setAdapter(adapter); + + mMediator = new FeedManagementMediator(context, listItems); + } + + public View getView() { + return mView; + } +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemProperties.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemProperties.java new file mode 100644 index 0000000..8dfc9a2 --- /dev/null +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemProperties.java
@@ -0,0 +1,34 @@ +// 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.feed.feedmanagement; + +import android.view.View.OnClickListener; + +import androidx.annotation.IntDef; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel.ReadableObjectPropertyKey; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Items for the list view in the feed management activity. + */ +public class FeedManagementItemProperties { + @IntDef({ListItemType.DEFAULT}) + @Retention(RetentionPolicy.SOURCE) + public @interface ListItemType { + int DEFAULT = 0; + } + public static final ReadableObjectPropertyKey<String> TITLE_KEY = + new ReadableObjectPropertyKey<>(); + public static final ReadableObjectPropertyKey<String> DESCRIPTION_KEY = + new ReadableObjectPropertyKey<>(); + public static final ReadableObjectPropertyKey<OnClickListener> ON_CLICK_KEY = + new ReadableObjectPropertyKey<>(); + + public static final PropertyKey[] ALL_KEYS = {TITLE_KEY, DESCRIPTION_KEY, ON_CLICK_KEY}; +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemView.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemView.java new file mode 100644 index 0000000..e8c92984 --- /dev/null +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemView.java
@@ -0,0 +1,36 @@ +// 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.feed.feedmanagement; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.LinearLayout; +import android.widget.TextView; + +import org.chromium.chrome.browser.feed.webfeed.R; + +/** + * View class for the individual line items in the feed management interstitial. + */ +public class FeedManagementItemView extends LinearLayout { + private TextView mTitle; + private TextView mDescription; + + public void setTitle(String title) { + mTitle.setText(title); + } + public void setDescription(String description) { + mDescription.setText(description); + } + public FeedManagementItemView(Context context, AttributeSet attrs) { + super(context, attrs); + } + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mTitle = (TextView) findViewById(R.id.feed_management_menu_item_text); + mDescription = (TextView) findViewById(R.id.feed_management_menu_item_description); + } +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemViewBinder.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemViewBinder.java new file mode 100644 index 0000000..ba0b1fe9 --- /dev/null +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementItemViewBinder.java
@@ -0,0 +1,21 @@ +// 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.feed.feedmanagement; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel; + +class FeedManagementItemViewBinder { + public static void bind( + PropertyModel model, FeedManagementItemView view, PropertyKey propertyKey) { + if (FeedManagementItemProperties.TITLE_KEY == propertyKey) { + view.setTitle(model.get(FeedManagementItemProperties.TITLE_KEY)); + } else if (FeedManagementItemProperties.DESCRIPTION_KEY == propertyKey) { + view.setDescription(model.get(FeedManagementItemProperties.DESCRIPTION_KEY)); + } else if (FeedManagementItemProperties.ON_CLICK_KEY == propertyKey) { + view.setOnClickListener(model.get(FeedManagementItemProperties.ON_CLICK_KEY)); + } + } +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java new file mode 100644 index 0000000..04d2854 --- /dev/null +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java
@@ -0,0 +1,40 @@ +// 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.feed.feedmanagement; + +import android.content.Context; +import android.view.View; + +import org.chromium.base.Log; +import org.chromium.ui.modelutil.MVCListAdapter.ModelList; +import org.chromium.ui.modelutil.ModelListAdapter; +import org.chromium.ui.modelutil.PropertyModel; + +// The Mediator is responsible for click handling. +class FeedManagementMediator { + private static final String TAG = "FeedMgmtMediator"; + private ModelList mModelList; + + FeedManagementMediator(Context context, ModelList modelList) { + mModelList = modelList; + // TODO(petewil): Generate all the list items. + PropertyModel itemModel = generateListItem("Title", "Subtitle"); + mModelList.add(new ModelListAdapter.ListItem( + FeedManagementItemProperties.ListItemType.DEFAULT, itemModel)); + } + + private PropertyModel generateListItem(String title, String subtitle) { + return new PropertyModel.Builder(FeedManagementItemProperties.ALL_KEYS) + .with(FeedManagementItemProperties.TITLE_KEY, title) + .with(FeedManagementItemProperties.DESCRIPTION_KEY, subtitle) + .with(FeedManagementItemProperties.ON_CLICK_KEY, (view) -> handleClick(view)) + .build(); + } + + private void handleClick(View view) { + // Do some click logic here. This would typically be done in the mediator. + Log.d(TAG, "Feed Management menu click caught."); + } +}
diff --git a/chrome/browser/lacros/clipboard_lacros_browsertest.cc b/chrome/browser/lacros/clipboard_lacros_browsertest.cc index 69e9526..11c418e8 100644 --- a/chrome/browser/lacros/clipboard_lacros_browsertest.cc +++ b/chrome/browser/lacros/clipboard_lacros_browsertest.cc
@@ -35,8 +35,8 @@ std::string read_text = ""; { mojo::ScopedAllowSyncCallForTesting allow_sync_call; - lacros_chrome_service->clipboard_remote()->GetCopyPasteText( - &read_text); + lacros_chrome_service->GetRemote<crosapi::mojom::Clipboard>() + ->GetCopyPasteText(&read_text); } if (read_text == text) run_loop->Quit(); @@ -58,7 +58,7 @@ auto* lacros_chrome_service = chromeos::LacrosChromeServiceImpl::Get(); ASSERT_TRUE(lacros_chrome_service); - if (!lacros_chrome_service->IsClipboardAvailable()) + if (!lacros_chrome_service->IsAvailable<crosapi::mojom::Clipboard>()) return; aura::Window* window = BrowserView::GetBrowserViewForBrowser(browser())
diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/android/BUILD.gn index d5770d09..f8fc10ea 100644 --- a/chrome/browser/language/android/BUILD.gn +++ b/chrome/browser/language/android/BUILD.gn
@@ -31,6 +31,7 @@ "java/src/org/chromium/chrome/browser/language/settings/LanguageListBaseAdapter.java", "java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java", "java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java", + "java/src/org/chromium/chrome/browser/language/settings/NeverTranslateListFragment.java", # Todo(https://crbug.com/1176981): Remove cyclical dependancy with Translate bridge. "java/src/org/chromium/chrome/browser/translate/TranslateBridge.java",
diff --git a/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml b/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml index 0c08075..1cdebe6 100644 --- a/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml +++ b/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml
@@ -62,6 +62,12 @@ app:allowDividerAbove="false" app:allowDividerBelow="false" /> + <org.chromium.chrome.browser.language.settings.LanguageItemListPreference + android:key="translate_settings_never_languages" + android:title="@string/languages_settings_dont_offer_langs" + app:allowDividerAbove="false" + app:allowDividerBelow="false" /> + </PreferenceCategory> </PreferenceCategory>
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/ContentLanguagesPreference.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/ContentLanguagesPreference.java index a10bf4e..796e9b6 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/ContentLanguagesPreference.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/ContentLanguagesPreference.java
@@ -18,6 +18,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.ViewHolder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.language.R; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.Profile; @@ -52,9 +53,11 @@ showDragIndicatorInRow((LanguageRowViewHolder) holder); ModelList menuItems = new ModelList(); - // Show "Offer to translate" option if "Chrome Translate" is enabled. + // Show "Offer to translate" option if "Chrome Translate" is enabled and + // the detailed languages settings page is not active. if (UserPrefs.get(Profile.getLastUsedRegularProfile()) - .getBoolean(Pref.OFFER_TRANSLATE_ENABLED)) { + .getBoolean(Pref.OFFER_TRANSLATE_ENABLED) + && !ChromeFeatureList.isEnabled(ChromeFeatureList.DETAILED_LANGUAGE_SETTINGS)) { // Set this row checked if the language is unblocked. int endIconResId = TranslateBridge.isBlockedLanguage(info.getCode()) ? 0
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java index 02f48de..f1f0098 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java
@@ -53,6 +53,7 @@ static final String TRANSLATION_ADVANCED_SECTION = "translation_advanced_settings_section"; static final String TARGET_LANGUAGE_KEY = "translate_settings_target_language"; static final String ALWAYS_LANGUAGES_KEY = "translate_settings_always_languages"; + static final String NEVER_LANGUAGES_KEY = "translate_settings_never_languages"; private static final String TAG = "LanguageSettings"; @@ -183,6 +184,14 @@ Pref.PREF_ALWAYS_TRANSLATE_LIST, alwaysTranslatePreference); setLanguageListPreferenceClickListener(alwaysTranslatePreference); + // Setup never translate preference. + LanguageItemListPreference neverTranslatePreference = + (LanguageItemListPreference) findPreference(NEVER_LANGUAGES_KEY); + neverTranslatePreference.setFragmentListDelegate( + new NeverTranslateListFragment.ListDelegate()); + mPrefChangeRegistrar.addObserver(Pref.FLUENT_LANGUAGES, neverTranslatePreference); + setLanguageListPreferenceClickListener(neverTranslatePreference); + // Setup translate switch to toggle advanced section on and off. ChromeSwitchPreference translateSwitch = (ChromeSwitchPreference) findPreference(TRANSLATE_SWITCH_KEY);
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java index 642d998..b77142bc 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java
@@ -168,11 +168,24 @@ * @return List of LanguageItems. */ public Collection<LanguageItem> getAlwaysTranslateLanguageItems() { - // Always read the latest always translate code list from native. This list has no - // guaranteed order. + // Get the latest always translate list from native. This list has no guaranteed order. List<String> codes = TranslateBridge.getAlwaysTranslateLanguages(); TreeSet<LanguageItem> results = new TreeSet(LanguageItem.COMPARE_BY_DISPLAY_NAME); - // Keep the same order as always translate list + for (String code : codes) { + if (mLanguagesMap.containsKey(code)) results.add(mLanguagesMap.get(code)); + } + return results; + } + + /** + * Get a list of LanguageItems that the user has set to never prompt for translation. The list + * is sorted alphabetically by display name. + * @return List of LanguageItems. + */ + public Collection<LanguageItem> getNeverTranslateLanguageItems() { + // Get the latest never translate list from native. This list has no guaranteed order. + List<String> codes = TranslateBridge.getNeverTranslateLanguages(); + TreeSet<LanguageItem> results = new TreeSet(LanguageItem.COMPARE_BY_DISPLAY_NAME); for (String code : codes) { if (mLanguagesMap.containsKey(code)) results.add(mLanguagesMap.get(code)); }
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/NeverTranslateListFragment.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/NeverTranslateListFragment.java new file mode 100644 index 0000000..d9af82d --- /dev/null +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/NeverTranslateListFragment.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.language.settings; + +import android.content.Context; + +import org.chromium.chrome.browser.language.R; +import org.chromium.chrome.browser.translate.TranslateBridge; + +import java.util.Collection; + +/** + * Chrome Preference for the never translate list that displays the first three never translate + * languages in the summary. Provides callbacks for adding and removing languages from the never + * translate list in LanguageItemListFragment. + */ +public class NeverTranslateListFragment extends LanguageItemListFragment { + @Override + protected LanguageItemListFragment.ListDelegate makeFragmentListDelegate() { + return new ListDelegate(); + } + + @Override + protected String getLanguageListTitle(Context context) { + return context.getResources().getString(R.string.languages_settings_never_langs_title); + } + + @Override + protected void onLanguageAdded(String code) { + TranslateBridge.setLanguageBlockedState(code, true); + } + + @Override + protected void onLanguageRemoved(String code) { + TranslateBridge.setLanguageBlockedState(code, false); + } + + /** + * Helper class to populate the LanguageItem list and used by {@link LanguageItemListPreference} + * to make the summary text and launch an Intent to this Fragment. + */ + public static class ListDelegate implements LanguageItemListFragment.ListDelegate { + @Override + public Collection<LanguageItem> getLanguageItems() { + return LanguagesManager.getInstance().getNeverTranslateLanguageItems(); + } + + @Override + public String getFragmentClassName() { + return NeverTranslateListFragment.class.getName(); + } + } +}
diff --git a/chrome/browser/media/webrtc/current_tab_desktop_media_list_unittest.cc b/chrome/browser/media/webrtc/current_tab_desktop_media_list_unittest.cc index 964b52dc..cf1b9db5 100644 --- a/chrome/browser/media/webrtc/current_tab_desktop_media_list_unittest.cc +++ b/chrome/browser/media/webrtc/current_tab_desktop_media_list_unittest.cc
@@ -187,7 +187,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif DISALLOW_COPY_AND_ASSIGN(CurrentTabDesktopMediaListTest);
diff --git a/chrome/browser/media/webrtc/tab_desktop_media_list_unittest.cc b/chrome/browser/media/webrtc/tab_desktop_media_list_unittest.cc index 85b01c7..d662bb4 100644 --- a/chrome/browser/media/webrtc/tab_desktop_media_list_unittest.cc +++ b/chrome/browser/media/webrtc/tab_desktop_media_list_unittest.cc
@@ -250,7 +250,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif DISALLOW_COPY_AND_ASSIGN(TabDesktopMediaListTest);
diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc index a2e33b3..5409366 100644 --- a/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc +++ b/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc
@@ -683,9 +683,9 @@ TestingProfile::Builder profile_builder; profile_builder.OverridePolicyConnectorIsManagedForTesting(true); std::unique_ptr<TestingProfile> testing_profile = profile_builder.Build(); - std::unique_ptr<testing::NiceMock<chromeos::FakeChromeUserManager>> - fake_user_manager_ = std::make_unique< - testing::NiceMock<chromeos::FakeChromeUserManager>>(); + std::unique_ptr<testing::NiceMock<ash::FakeChromeUserManager>> + fake_user_manager_ = + std::make_unique<testing::NiceMock<ash::FakeChromeUserManager>>(); // We use a standard Gaia account by default: AccountId account_id = AccountId::FromUserEmailGaiaId("name", "id");
diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc index 96cc0f3..67040b01 100644 --- a/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc +++ b/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc
@@ -4006,7 +4006,7 @@ user_manager::UserType user_type) { const AccountId kAccountId = AccountId::FromUserEmailGaiaId("name", "id"); auto mock_user_manager = - std::make_unique<testing::NiceMock<chromeos::FakeChromeUserManager>>(); + std::make_unique<testing::NiceMock<ash::FakeChromeUserManager>>(); // On Chrome OS, there are different user types, some of which can be // affiliated with the device if the device is enterprise-enrolled, i.e. the // logged in account belongs to the org that owns the device. For our
diff --git a/chrome/browser/media_galleries/gallery_watch_manager_unittest.cc b/chrome/browser/media_galleries/gallery_watch_manager_unittest.cc index 0c6e7ad..2691cb5 100644 --- a/chrome/browser/media_galleries/gallery_watch_manager_unittest.cc +++ b/chrome/browser/media_galleries/gallery_watch_manager_unittest.cc
@@ -59,7 +59,7 @@ GalleryWatchManagerTest() : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP), #if BUILDFLAG(IS_CHROMEOS_ASH) - test_user_manager_(std::make_unique<chromeos::ScopedTestUserManager>()), + test_user_manager_(std::make_unique<ash::ScopedTestUserManager>()), #endif profile_(new TestingProfile()), gallery_prefs_(nullptr), @@ -201,7 +201,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; + std::unique_ptr<ash::ScopedTestUserManager> test_user_manager_; #endif storage_monitor::TestStorageMonitor* monitor_;
diff --git a/chrome/browser/media_galleries/media_galleries_permission_controller_unittest.cc b/chrome/browser/media_galleries/media_galleries_permission_controller_unittest.cc index cacf075..acd2072 100644 --- a/chrome/browser/media_galleries/media_galleries_permission_controller_unittest.cc +++ b/chrome/browser/media_galleries/media_galleries_permission_controller_unittest.cc
@@ -153,7 +153,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif TestStorageMonitor monitor_;
diff --git a/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc b/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc index 52f6047..ae46b918 100644 --- a/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc +++ b/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc
@@ -362,7 +362,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif TestStorageMonitor monitor_;
diff --git a/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc b/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc index 96e98fb1e..cb2c64a2f 100644 --- a/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc +++ b/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc
@@ -143,8 +143,7 @@ TEST_F(ChromeOSMetricsProviderTest, MultiProfileUserCount) { // |scoped_enabler| takes over the lifetime of |user_manager|. - chromeos::FakeChromeUserManager* user_manager = - new chromeos::FakeChromeUserManager(); + auto* user_manager = new ash::FakeChromeUserManager(); // TODO(crbug/1154780): Overload operator-> in ScopedUserManager. user_manager::ScopedUserManager scoped_enabler( base::WrapUnique(user_manager)); @@ -164,8 +163,7 @@ TEST_F(ChromeOSMetricsProviderTest, MultiProfileCountInvalidated) { // |scoped_enabler| takes over the lifetime of |user_manager|. - chromeos::FakeChromeUserManager* user_manager = - new chromeos::FakeChromeUserManager(); + auto* user_manager = new ash::FakeChromeUserManager(); // TODO(crbug/1154780): Overload operator-> in ScopedUserManager. user_manager::ScopedUserManager scoped_enabler( base::WrapUnique(user_manager)); @@ -202,8 +200,7 @@ chromeos::multidevice_setup::mojom::FeatureState::kFurtherSetupRequired); // |scoped_enabler| takes over the lifetime of |user_manager|. - chromeos::FakeChromeUserManager* user_manager = - new chromeos::FakeChromeUserManager(); + auto* user_manager = new ash::FakeChromeUserManager(); // TODO(crbug/1154780): Overload operator-> in ScopedUserManager. user_manager::ScopedUserManager scoped_enabler( base::WrapUnique(user_manager));
diff --git a/chrome/browser/nearby_sharing/nearby_notification_manager_unittest.cc b/chrome/browser/nearby_sharing/nearby_notification_manager_unittest.cc index dcea401..25b1bfb 100644 --- a/chrome/browser/nearby_sharing/nearby_notification_manager_unittest.cc +++ b/chrome/browser/nearby_sharing/nearby_notification_manager_unittest.cc
@@ -1330,7 +1330,7 @@ public: NearbyFilesHoldingSpaceTest() : session_controller_(std::make_unique<TestSessionController>()), - user_manager_(new chromeos::FakeChromeUserManager) { + user_manager_(new ash::FakeChromeUserManager) { scoped_feature_list_.InitWithFeatures( {features::kNearbySharing, ash::features::kTemporaryHoldingSpace}, {}); @@ -1369,7 +1369,7 @@ std::unique_ptr<NearbyNotificationManager> manager_; std::unique_ptr<TestSessionController> session_controller_; std::unique_ptr<ash::HoldingSpaceController> holding_space_controller_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; }; TEST_F(NearbyFilesHoldingSpaceTest, ShowSuccess_Files) {
diff --git a/chrome/browser/notifications/chrome_ash_message_center_client_unittest.cc b/chrome/browser/notifications/chrome_ash_message_center_client_unittest.cc index aa1532d..7bc7ab36 100644 --- a/chrome/browser/notifications/chrome_ash_message_center_client_unittest.cc +++ b/chrome/browser/notifications/chrome_ash_message_center_client_unittest.cc
@@ -54,7 +54,7 @@ // Initialize the UserManager singleton to a fresh FakeUserManager instance. user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); message_center::MessageCenter::Initialize(); } @@ -104,8 +104,8 @@ std::vector<ash::NotifierMetadata> notifiers_; private: - chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc index 8df3e08..cc19844 100644 --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -1262,12 +1262,13 @@ // TODO(https://crbug.com/913422): This logic can be removed once all // clipboard APIs are async. auto* service = chromeos::LacrosChromeServiceImpl::Get(); - if (service->IsClipboardAvailable()) { + if (service->IsAvailable<crosapi::mojom::Clipboard>()) { used_crosapi_workaround = true; std::string text_utf8; { crosapi::ScopedAllowSyncCall allow_sync_call; - service->clipboard_remote()->GetCopyPasteText(&text_utf8); + service->GetRemote<crosapi::mojom::Clipboard>()->GetCopyPasteText( + &text_utf8); } text = base::UTF8ToUTF16(text_utf8); }
diff --git a/chrome/browser/permissions/chrome_permission_request_manager_unittest.cc b/chrome/browser/permissions/chrome_permission_request_manager_unittest.cc index b4486c5..a1cc6241 100644 --- a/chrome/browser/permissions/chrome_permission_request_manager_unittest.cc +++ b/chrome/browser/permissions/chrome_permission_request_manager_unittest.cc
@@ -122,11 +122,10 @@ const GURL& app_url) { const AccountId account_id = AccountId::FromUserEmail("lala@example.com"); - auto fake_user_manager = - std::make_unique<chromeos::FakeChromeUserManager>(); + auto fake_user_manager = std::make_unique<ash::FakeChromeUserManager>(); // Stealing the pointer from unique ptr before it goes to the scoped user // manager. - chromeos::FakeChromeUserManager* user_manager = fake_user_manager.get(); + ash::FakeChromeUserManager* user_manager = fake_user_manager.get(); auto scoped_user_manager = std::make_unique<user_manager::ScopedUserManager>( std::move(fake_user_manager));
diff --git a/chrome/browser/policy/messaging_layer/public/report_client_unittest.cc b/chrome/browser/policy/messaging_layer/public/report_client_unittest.cc index 966bbcf..d29d85a 100644 --- a/chrome/browser/policy/messaging_layer/public/report_client_unittest.cc +++ b/chrome/browser/policy/messaging_layer/public/report_client_unittest.cc
@@ -45,7 +45,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // Set up fake primary profile. auto mock_user_manager = - std::make_unique<testing::NiceMock<chromeos::FakeChromeUserManager>>(); + std::make_unique<testing::NiceMock<ash::FakeChromeUserManager>>(); profile_ = std::make_unique<TestingProfile>( base::FilePath(FILE_PATH_LITERAL("/home/chronos/u-0123456789abcdef"))); const AccountId account_id(AccountId::FromUserEmailGaiaId(
diff --git a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc index 5c8f992..332741b0 100644 --- a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc
@@ -121,7 +121,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // Set up fake primary profile. auto mock_user_manager = - std::make_unique<testing::NiceMock<chromeos::FakeChromeUserManager>>(); + std::make_unique<testing::NiceMock<ash::FakeChromeUserManager>>(); profile_ = std::make_unique<TestingProfile>( base::FilePath(FILE_PATH_LITERAL("/home/chronos/u-0123456789abcdef"))); const AccountId account_id(AccountId::FromUserEmailGaiaId(
diff --git a/chrome/browser/policy/profile_policy_connector_unittest.cc b/chrome/browser/policy/profile_policy_connector_unittest.cc index 67012a6..c7efc1cf 100644 --- a/chrome/browser/policy/profile_policy_connector_unittest.cc +++ b/chrome/browser/policy/profile_policy_connector_unittest.cc
@@ -146,7 +146,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) TEST_F(ProfilePolicyConnectorTest, IsManagedForActiveDirectoryUsers) { user_manager::ScopedUserManager scoped_user_manager_enabler( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); ProfilePolicyConnector connector; const AccountId account_id = AccountId::AdFromUserEmailObjGuid("user@realm.example", "obj-guid"); @@ -170,9 +170,8 @@ } TEST_F(ProfilePolicyConnectorTest, PrimaryUserPoliciesProxied) { - auto user_manager_unique_ptr = - std::make_unique<chromeos::FakeChromeUserManager>(); - chromeos::FakeChromeUserManager* user_manager = user_manager_unique_ptr.get(); + auto user_manager_unique_ptr = std::make_unique<ash::FakeChromeUserManager>(); + ash::FakeChromeUserManager* user_manager = user_manager_unique_ptr.get(); user_manager::ScopedUserManager scoped_user_manager_enabler( std::move(user_manager_unique_ptr));
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 1f3a59e..414d168 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -771,7 +771,7 @@ ash::AudioDevicesPrefHandlerImpl::RegisterPrefs(registry); ash::cert_provisioning::RegisterLocalStatePrefs(registry); chromeos::CellularESimProfileHandlerImpl::RegisterLocalStatePrefs(registry); - chromeos::ChromeUserManagerImpl::RegisterPrefs(registry); + ash::ChromeUserManagerImpl::RegisterPrefs(registry); chromeos::CupsPrintersManager::RegisterLocalStatePrefs(registry); chromeos::DemoModeDetector::RegisterPrefs(registry); chromeos::DemoModeResourcesRemover::RegisterLocalStatePrefs(registry); @@ -794,7 +794,7 @@ RegisterLocalStatePrefs(registry); chromeos::login::SecurityTokenSessionController::RegisterLocalStatePrefs( registry); - chromeos::MultiProfileUserController::RegisterPrefs(registry); + ash::MultiProfileUserController::RegisterPrefs(registry); chromeos::NetworkMetadataStore::RegisterPrefs(registry); chromeos::NetworkThrottlingObserver::RegisterPrefs(registry); chromeos::PowerMetricsReporter::RegisterLocalStatePrefs(registry); @@ -811,7 +811,7 @@ ash::StatsReportingController::RegisterLocalStatePrefs(registry); ash::system::AutomaticRebootManager::RegisterPrefs(registry); chromeos::TimeZoneResolver::RegisterPrefs(registry); - chromeos::UserImageManager::RegisterPrefs(registry); + ash::UserImageManager::RegisterPrefs(registry); chromeos::UserSessionManager::RegisterPrefs(registry); ash::WebKioskAppManager::RegisterPrefs(registry); component_updater::MetadataTable::RegisterPrefs(registry); @@ -1100,7 +1100,7 @@ registry); chromeos::multidevice_setup::MultiDeviceSetupService::RegisterProfilePrefs( registry); - chromeos::MultiProfileUserController::RegisterProfilePrefs(registry); + ash::MultiProfileUserController::RegisterProfilePrefs(registry); chromeos::NetworkMetadataStore::RegisterPrefs(registry); chromeos::ReleaseNotesStorage::RegisterProfilePrefs(registry); chromeos::quick_unlock::FingerprintStorage::RegisterProfilePrefs(registry); @@ -1119,7 +1119,7 @@ chromeos::ServicesCustomizationDocument::RegisterProfilePrefs(registry); chromeos::settings::OSSettingsUI::RegisterProfilePrefs(registry); chromeos::StartupUtils::RegisterOobeProfilePrefs(registry); - chromeos::UserImageSyncObserver::RegisterProfilePrefs(registry); + ash::UserImageSyncObserver::RegisterProfilePrefs(registry); crostini::prefs::RegisterProfilePrefs(registry); ash::attestation::TpmChallengeKey::RegisterProfilePrefs(registry); #if defined(USE_CUPS)
diff --git a/chrome/browser/prefs/pref_service_incognito_allowlist.cc b/chrome/browser/prefs/pref_service_incognito_allowlist.cc index cac9b7cb..63db3b00 100644 --- a/chrome/browser/prefs/pref_service_incognito_allowlist.cc +++ b/chrome/browser/prefs/pref_service_incognito_allowlist.cc
@@ -87,6 +87,7 @@ bookmarks::prefs::kManagedBookmarks, bookmarks::prefs::kManagedBookmarksFolderName, bookmarks::prefs::kShowAppsShortcutInBookmarkBar, + bookmarks::prefs::kShowReadingListInBookmarkBar, bookmarks::prefs::kShowManagedBookmarksInBookmarkBar, bookmarks::prefs::kShowBookmarkBar, #if defined(OS_ANDROID)
diff --git a/chrome/browser/profiles/profile_manager_unittest.cc b/chrome/browser/profiles/profile_manager_unittest.cc index 72607ed..2752298 100644 --- a/chrome/browser/profiles/profile_manager_unittest.cc +++ b/chrome/browser/profiles/profile_manager_unittest.cc
@@ -266,7 +266,7 @@ content::BrowserTaskEnvironment task_environment_; #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; std::unique_ptr<base::AutoReset<extensions::mojom::FeatureSessionType>> session_type_; std::unique_ptr<WallpaperControllerClientImpl> wallpaper_controller_client_; @@ -326,8 +326,7 @@ constexpr char kTestUserGaiaId[] = "0123456789"; const AccountId test_account_id( AccountId::FromUserEmailGaiaId(kTestUserName, kTestUserGaiaId)); - chromeos::FakeChromeUserManager* user_manager = - new chromeos::FakeChromeUserManager(); + auto* user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager enabler(base::WrapUnique(user_manager)); const user_manager::User* active_user = @@ -625,8 +624,8 @@ } #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); } #endif
diff --git a/chrome/browser/profiles/reporting_util.cc b/chrome/browser/profiles/reporting_util.cc index bb9d877e..fda46a0 100644 --- a/chrome/browser/profiles/reporting_util.cc +++ b/chrome/browser/profiles/reporting_util.cc
@@ -90,7 +90,7 @@ return std::string(); DeviceDMTokenCallback device_dm_token_callback = - chromeos::GetDeviceDMTokenForUserPolicyGetter(user->GetAccountId()); + ash::GetDeviceDMTokenForUserPolicyGetter(user->GetAccountId()); if (!device_dm_token_callback) return std::string();
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn b/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn index f1d5f1f..0a315d5 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/BUILD.gn
@@ -243,7 +243,8 @@ } } -action("chromevox_phonetic_dictionaries_js") { +# TODO(crbug.com/1112471): Get this to run under Python3. +python2_action("chromevox_phonetic_dictionaries_js") { script = "tools/phonetic_dictionaries.py" src_dir = [ "$root_out_dir/resources/chromeos/accessibility/_locales" ] output_file = "$chromevox_out_dir/phonetic_dictionaries.js"
diff --git a/chrome/browser/resources/new_tab_page/app.js b/chrome/browser/resources/new_tab_page/app.js index b775a57..168b91a4 100644 --- a/chrome/browser/resources/new_tab_page/app.js +++ b/chrome/browser/resources/new_tab_page/app.js
@@ -961,6 +961,10 @@ * @private */ onUndoRemoveModuleButtonClick_() { + if (!this.removedModuleData_) { + return; + } + // Restore the module. this.removedModuleData_.undo();
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.html b/chrome/browser/resources/new_tab_page/modules/cart/module.html index c7119240..92d1896 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.html +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.html
@@ -52,16 +52,12 @@ font-size: 13px; height: 20px; justify-content: center; - margin-inline-end: auto; - margin-inline-start: auto; - margin-top: 4px; + margin: 4px 8px 0 8px; text-align: center; - width: 72px; } .cart-title .merchant { font-weight: 400; - max-width: 54px; overflow: hidden; text-overflow: ellipsis; text-shadow: var(--ntp-theme-text-shadow); @@ -100,7 +96,7 @@ } .thumbnail-img { - border: 2px solid white; + border: 2px solid var(--ntp-background-override-color); border-radius: 50%; height: 44px; object-fit: cover; @@ -121,9 +117,10 @@ .cart-item cr-icon-button { --cr-icon-button-fill-color: var(--ntp-icon-button-color); - --cr-icon-button-size: 16px; + --cr-icon-button-icon-size: 16px; + --cr-icon-button-size: 24px; --cr-icon-button-transition: none; - margin: 11px 8px; + margin: 4px 4px; opacity: 0; position: absolute; right: 0; @@ -188,7 +185,7 @@ .probe { display: inline-flex; - width: 15px; + width: 12px; } </style> <ntp-module-header
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.js b/chrome/browser/resources/new_tab_page/modules/cart/module.js index f735e5c..2a0fbddb 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.js +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.js
@@ -57,6 +57,9 @@ /** @private {string} */ cartMenuRemoveItem_: String, + /** @private {number} */ + height: Number, + /** * Data about the most recently dismissed cart item. * @type {?{message: string, restoreCallback: function()}} @@ -348,6 +351,7 @@ element.headerChipText = loadTimeData.getString('modulesCartHeaderNew'); element.headerDescriptionText = loadTimeData.getString('modulesCartWarmWelcome'); + element.height = 226; } element.cartItems = carts; return element;
diff --git a/chrome/browser/resources/new_tab_page/modules/module_descriptor.js b/chrome/browser/resources/new_tab_page/modules/module_descriptor.js index 29f439ac..a85efc2 100644 --- a/chrome/browser/resources/new_tab_page/modules/module_descriptor.js +++ b/chrome/browser/resources/new_tab_page/modules/module_descriptor.js
@@ -74,6 +74,9 @@ if (!this.element_) { return; } + if (this.element_.height !== undefined) { + this.heightPx_ = this.element_.height; + } const loadEndTime = WindowProxy.getInstance().now(); const duration = loadEndTime - loadStartTime; recordLoadDuration('NewTabPage.Modules.Loaded', loadEndTime);
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_a11y_page/BUILD.gn index c6a1cf79..1301a0d 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/BUILD.gn
@@ -43,6 +43,7 @@ "//chrome/browser/resources/settings/chromeos/device_page:device_page_browser_proxy.m", "//chrome/browser/resources/settings/controls:settings_slider", "//chrome/browser/resources/settings/controls:settings_toggle_button", + "//ui/webui/resources/js:i18n_behavior.m", "//ui/webui/resources/js:load_time_data.m", "//ui/webui/resources/js:web_ui_listener_behavior.m", ]
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.html b/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.html index 13e0396..cc485a3 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.html +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.html
@@ -5,6 +5,7 @@ <link rel="import" href="chrome://resources/cr_elements/icons.html"> <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html"> +<link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/html/load_time_data.html"> <link rel="import" href="../../controls/settings_slider.html"> <link rel="import" href="../../controls/settings_toggle_button.html"> @@ -45,6 +46,10 @@ margin-inline-start: calc(var(--cr-section-indent-padding) + var(--cr-section-indent-width)); } + + #screenMagnifierZoomHintLabel { + white-space: pre-line; + } </style> <template is="dom-if" if="[[!isKioskModeActive_]]"> <div class="settings-box row first"> @@ -98,6 +103,7 @@ class="hr" pref="{{prefs.settings.a11y.screen_magnifier}}" label="$i18n{screenMagnifierLabel}" + sub-label="[[screenMagnifierHintLabel_]]" disabled="[[prefs.ash.docked_magnifier.enabled.value]]" deep-link-focus-id$="[[Setting.kFullscreenMagnifier]]"> </settings-toggle-button> @@ -140,8 +146,9 @@ </settings-toggle-button> </template> <div class="settings-box indented"> - <div class="start settings-box-text" aria-hidden="true"> - $i18n{screenMagnifierZoomLabel} + <div class="flex start settings-box-text" id="labelWrapper"> + <div class="label" aria-hidden="true">$i18n{screenMagnifierZoomLabel}</div> + <div class="secondary label" id="screenMagnifierZoomHintLabel">$i18n{screenMagnifierZoomHintLabel}</div> </div> <settings-dropdown-menu label="$i18n{screenMagnifierZoomLabel}" pref="{{prefs.settings.a11y.screen_magnifier_scale}}"
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.js b/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.js index bdc186c..dbc75a9 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.js +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/manage_a11y_page.js
@@ -15,6 +15,7 @@ behaviors: [ DeepLinkingBehavior, + I18nBehavior, settings.RouteObserverBehavior, settings.RouteOriginBehavior, WebUIListenerBehavior, @@ -213,6 +214,16 @@ } }, + /** @private */ + screenMagnifierHintLabel_: { + type: String, + value() { + return this.i18n( + 'screenMagnifierHintLabel', + this.i18n('screenMagnifierHintSearchKey')); + } + }, + /** * |hasKeyboard_|, |hasMouse_|, |hasPointingStick_|, and |hasTouchpad_| * start undefined so observers don't trigger until they have been
diff --git a/chrome/browser/safe_browsing/incident_reporting/extension_data_collection_unittest.cc b/chrome/browser/safe_browsing/incident_reporting/extension_data_collection_unittest.cc index 11aad28..b67b34d 100644 --- a/chrome/browser/safe_browsing/incident_reporting/extension_data_collection_unittest.cc +++ b/chrome/browser/safe_browsing/incident_reporting/extension_data_collection_unittest.cc
@@ -137,7 +137,7 @@ new TestingProfileManager(TestingBrowserProcess::GetGlobal())); ASSERT_TRUE(profile_manager_->SetUp()); #if BUILDFLAG(IS_CHROMEOS_ASH) - test_user_manager_.reset(new chromeos::ScopedTestUserManager()); + test_user_manager_ = std::make_unique<ash::ScopedTestUserManager>(); #endif } @@ -192,7 +192,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; + std::unique_ptr<ash::ScopedTestUserManager> test_user_manager_; #endif };
diff --git a/chrome/browser/supervised_user/kids_management_url_checker_client_unittest.cc b/chrome/browser/supervised_user/kids_management_url_checker_client_unittest.cc index 7c294e3..7968ec60 100644 --- a/chrome/browser/supervised_user/kids_management_url_checker_client_unittest.cc +++ b/chrome/browser/supervised_user/kids_management_url_checker_client_unittest.cc
@@ -103,11 +103,11 @@ new TestingProfileManager(TestingBrowserProcess::GetGlobal())); ASSERT_TRUE(test_profile_manager_->SetUp()); -// ChromeOS requires a chromeos::FakeChromeUserManager for the tests to work. +// ChromeOS requires an ash::FakeChromeUserManager for the tests to work. #if BUILDFLAG(IS_CHROMEOS_ASH) const char kEmail[] = "account@gmail.com"; const AccountId test_account_id(AccountId::FromUserEmail(kEmail)); - user_manager_ = new chromeos::FakeChromeUserManager; + user_manager_ = new ash::FakeChromeUserManager; user_manager_->AddUser(test_account_id); user_manager_->LoginUser(test_account_id); user_manager_->SwitchActiveUser(test_account_id); @@ -156,7 +156,7 @@ std::unique_ptr<TestingProfileManager> test_profile_manager_; std::unique_ptr<KidsManagementURLCheckerClient> url_classifier_; #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; #endif
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc index 6eb549a..5c26fceda 100644 --- a/chrome/browser/supervised_user/supervised_user_service.cc +++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -209,7 +209,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // |GetActiveUser()| can return null in unit tests. if (email.empty() && !!user_manager::UserManager::Get()->GetActiveUser()) { - email = chromeos::ChromeUserManager::Get() + email = ash::ChromeUserManager::Get() ->GetSupervisedUserManager() ->GetManagerDisplayEmail(user_manager::UserManager::Get() ->GetActiveUser()
diff --git a/chrome/browser/sync/sync_error_notifier_ash_unittest.cc b/chrome/browser/sync/sync_error_notifier_ash_unittest.cc index a115e63..d4dd2ef 100644 --- a/chrome/browser/sync/sync_error_notifier_ash_unittest.cc +++ b/chrome/browser/sync/sync_error_notifier_ash_unittest.cc
@@ -87,7 +87,7 @@ FakeLoginUI login_ui_; std::unique_ptr<NotificationDisplayServiceTester> display_service_; user_manager::ScopedUserManager scoped_user_manager_{ - std::make_unique<chromeos::MockUserManager>()}; + std::make_unique<ash::MockUserManager>()}; private: DISALLOW_COPY_AND_ASSIGN(SyncErrorNotifierTest);
diff --git a/chrome/browser/themes/theme_syncable_service_unittest.cc b/chrome/browser/themes/theme_syncable_service_unittest.cc index 548e148..6d92514 100644 --- a/chrome/browser/themes/theme_syncable_service_unittest.cc +++ b/chrome/browser/themes/theme_syncable_service_unittest.cc
@@ -286,7 +286,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif std::unique_ptr<TestingProfile> profile_;
diff --git a/chrome/browser/ui/app_list/app_context_menu_unittest.cc b/chrome/browser/ui/app_list/app_context_menu_unittest.cc index 60e8eb8..7d16124f 100644 --- a/chrome/browser/ui/app_list/app_context_menu_unittest.cc +++ b/chrome/browser/ui/app_list/app_context_menu_unittest.cc
@@ -675,7 +675,7 @@ // testing::Test: void SetUp() override { - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); auto* fake_user_manager = user_manager.get(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( std::move(user_manager));
diff --git a/chrome/browser/ui/app_list/arc/arc_app_test.cc b/chrome/browser/ui/app_list/arc/arc_app_test.cc index 412266e..cc9184d 100644 --- a/chrome/browser/ui/app_list/arc/arc_app_test.cc +++ b/chrome/browser/ui/app_list/arc/arc_app_test.cc
@@ -59,15 +59,15 @@ ArcAppTest::ArcAppTest() { user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); CreateFakeAppsAndPackages(); } ArcAppTest::~ArcAppTest() { } -chromeos::FakeChromeUserManager* ArcAppTest::GetUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( +ash::FakeChromeUserManager* ArcAppTest::GetUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ui/app_list/arc/arc_app_test.h b/chrome/browser/ui/app_list/arc/arc_app_test.h index 553ce36..e5c346b 100644 --- a/chrome/browser/ui/app_list/arc/arc_app_test.h +++ b/chrome/browser/ui/app_list/arc/arc_app_test.h
@@ -22,7 +22,7 @@ class FakeAppInstance; } // namespace arc -namespace chromeos { +namespace ash { class FakeChromeUserManager; } @@ -78,7 +78,7 @@ return fake_shortcuts_; } - chromeos::FakeChromeUserManager* GetUserManager(); + ash::FakeChromeUserManager* GetUserManager(); arc::FakeAppInstance* app_instance() { return app_instance_.get(); }
diff --git a/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc b/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc index a93d55c..b031f19 100644 --- a/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc +++ b/chrome/browser/ui/app_list/arc/arc_usb_host_permission_browsertest.cc
@@ -178,7 +178,7 @@ void SetUpOnMainThread() override { user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); const AccountId account_id(AccountId::FromUserEmail(kTestProfileName)); GetFakeUserManager()->AddArcKioskAppUser(account_id); GetFakeUserManager()->LoginUser(account_id); @@ -200,8 +200,8 @@ int accepted_response_count() const { return accepted_response_count_; } private: - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ui/ash/ambient/ambient_client_impl_unittest.cc b/chrome/browser/ui/ash/ambient/ambient_client_impl_unittest.cc index 511e4416..fb94be9 100644 --- a/chrome/browser/ui/ash/ambient/ambient_client_impl_unittest.cc +++ b/chrome/browser/ui/ash/ambient/ambient_client_impl_unittest.cc
@@ -39,7 +39,7 @@ identity_test_env_adaptor_ = std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile_); user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); } void TearDown() override { @@ -54,8 +54,8 @@ protected: TestingProfile* profile() { return profile_; } - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc b/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc index 6dd6513..7893309 100644 --- a/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc +++ b/chrome/browser/ui/ash/assistant/assistant_state_client_unittest.cc
@@ -25,8 +25,7 @@ class AssistantStateClientTest : public ChromeAshTestBase { public: AssistantStateClientTest() - : fake_user_manager_( - std::make_unique<chromeos::FakeChromeUserManager>()) {} + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ~AssistantStateClientTest() override = default; void SetUp() override { @@ -75,8 +74,8 @@ } private: - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc index 6152583..eacf6d9a 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -171,7 +171,7 @@ // session controller, because the session controller triggers the loading // of users, which itself calls a code path which eventually reaches the // WallpaperControllerClientImpl singleton instance via - // chromeos::ChromeUserManagerImpl. + // ash::ChromeUserManagerImpl. wallpaper_controller_client_ = std::make_unique<WallpaperControllerClientImpl>(); wallpaper_controller_client_->Init();
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc index 02bcd30e..7821586 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc
@@ -271,7 +271,7 @@ class HoldingSpaceKeyedServiceTest : public BrowserWithTestWindowTest { public: HoldingSpaceKeyedServiceTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)), download_manager_( std::make_unique<testing::NiceMock<MockDownloadManager>>()) { @@ -443,7 +443,7 @@ .WillByDefault(testing::Return(true)); } - chromeos::FakeChromeUserManager* fake_user_manager_; + FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager user_manager_enabler_; std::unique_ptr<MockDownloadManager> download_manager_;
diff --git a/chrome/browser/ui/ash/in_session_auth_dialog_client_unittest.cc b/chrome/browser/ui/ash/in_session_auth_dialog_client_unittest.cc index 7bd8224..787ef9b 100644 --- a/chrome/browser/ui/ash/in_session_auth_dialog_client_unittest.cc +++ b/chrome/browser/ui/ash/in_session_auth_dialog_client_unittest.cc
@@ -18,7 +18,6 @@ #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" -using chromeos::FakeChromeUserManager; using chromeos::FakeExtendedAuthenticator; using chromeos::Key; using chromeos::UserContext; @@ -89,7 +88,8 @@ // thread. const content::BrowserTaskEnvironment task_environment_; - FakeChromeUserManager* fake_user_manager_{new FakeChromeUserManager()}; + ash::FakeChromeUserManager* fake_user_manager_{ + new ash::FakeChromeUserManager()}; user_manager::ScopedUserManager scoped_user_manager_{ base::WrapUnique(fake_user_manager_)}; std::unique_ptr<FakeInSessionAuthDialogController> fake_controller_{
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc index 1ad7177..df9f515b 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
@@ -161,6 +161,7 @@ using extensions::mojom::ManifestLocation; namespace { + constexpr char kOfflineGmailUrl[] = "https://mail.google.com/mail/mu/u"; constexpr char kGmailUrl[] = "https://mail.google.com/mail/u"; constexpr char kGmailLaunchURL[] = "https://mail.google.com/mail/ca"; @@ -1115,7 +1116,7 @@ // testing::Test: void SetUp() override { // Checking to see if Lacros is allowed requires a user. - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); auto* fake_user_manager = user_manager.get(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( std::move(user_manager)); @@ -1279,7 +1280,7 @@ void SetUp() override { // Initialize the UserManager singleton to a fresh FakeUserManager instance. user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); // Initialize the rest. ChromeLauncherControllerTest::SetUp(); @@ -1380,8 +1381,8 @@ private: typedef std::map<Profile*, std::string> ProfileToNameMap; - chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ui/ash/media_notification_provider_impl_unittest.cc b/chrome/browser/ui/ash/media_notification_provider_impl_unittest.cc index a61b752..372c5ae 100644 --- a/chrome/browser/ui/ash/media_notification_provider_impl_unittest.cc +++ b/chrome/browser/ui/ash/media_notification_provider_impl_unittest.cc
@@ -120,8 +120,7 @@ private: session_manager::SessionManager session_manager_; - chromeos::FakeChromeUserManager* user_manager_{ - new chromeos::FakeChromeUserManager()}; + ash::FakeChromeUserManager* user_manager_{new ash::FakeChromeUserManager()}; TestingProfileManager testing_profile_manager_{ TestingBrowserProcess::GetGlobal()}; views::LayoutProvider layout_provider_;
diff --git a/chrome/browser/ui/ash/multi_user/multi_profile_support_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_profile_support_unittest.cc index 292ced0..e2012fc3 100644 --- a/chrome/browser/ui/ash/multi_user/multi_profile_support_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_profile_support_unittest.cc
@@ -121,7 +121,7 @@ class MultiProfileSupportTest : public ChromeAshTestBase { public: MultiProfileSupportTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} // ChromeAshTestBase: @@ -173,7 +173,7 @@ return MultiUserWindowManagerHelper::GetWindowManager(); } - chromeos::FakeChromeUserManager* user_manager() { return fake_user_manager_; } + FakeChromeUserManager* user_manager() { return fake_user_manager_; } TestingProfileManager* profile_manager() { return profile_manager_.get(); } @@ -276,7 +276,7 @@ aura::Window::Windows windows_; // Owned by |user_manager_enabler_|. - chromeos::FakeChromeUserManager* fake_user_manager_ = nullptr; + FakeChromeUserManager* fake_user_manager_ = nullptr; std::unique_ptr<TestingProfileManager> profile_manager_;
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc index d948dd9..d9221566 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc
@@ -28,7 +28,7 @@ class MultiUserContextMenuChromeOSTest : public ChromeAshTestBase { public: MultiUserContextMenuChromeOSTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} void SetUp() override; @@ -57,7 +57,7 @@ aura::Window* window_; // Owned by |user_manager_enabler_|. - chromeos::FakeChromeUserManager* fake_user_manager_ = nullptr; + FakeChromeUserManager* fake_user_manager_ = nullptr; user_manager::ScopedUserManager user_manager_enabler_; DISALLOW_COPY_AND_ASSIGN(MultiUserContextMenuChromeOSTest);
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_util_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_util_chromeos_unittest.cc index 8bd0915..69416d3e 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_util_chromeos_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_util_chromeos_unittest.cc
@@ -34,7 +34,7 @@ void SetUp() override { ChromeAshTestBase::SetUp(); - fake_user_manager_ = new chromeos::FakeChromeUserManager; + fake_user_manager_ = new FakeChromeUserManager; user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager_)); @@ -82,7 +82,7 @@ std::unique_ptr<IdentityTestEnvironmentProfileAdaptor> identity_test_env_adaptor_; // |fake_user_manager_| is owned by |user_manager_enabler_|. - chromeos::FakeChromeUserManager* fake_user_manager_; + FakeChromeUserManager* fake_user_manager_; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; DISALLOW_COPY_AND_ASSIGN(MultiUserUtilTest);
diff --git a/chrome/browser/ui/ash/network/mobile_data_notifications_unittest.cc b/chrome/browser/ui/ash/network/mobile_data_notifications_unittest.cc index fbd167f..92c4c29 100644 --- a/chrome/browser/ui/ash/network/mobile_data_notifications_unittest.cc +++ b/chrome/browser/ui/ash/network/mobile_data_notifications_unittest.cc
@@ -103,7 +103,7 @@ nullptr /* profile */); } void SetupUserManagerAndProfileManager() { - user_manager_ = new chromeos::FakeChromeUserManager; + user_manager_ = new ash::FakeChromeUserManager; user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(user_manager_)); @@ -162,7 +162,7 @@ std::unique_ptr<NetworkConnectTestDelegate> network_connect_delegate_; std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; std::unique_ptr<TestingProfileManager> profile_manager_; std::unique_ptr<NotificationDisplayServiceTester> display_service_;
diff --git a/chrome/browser/ui/ash/session_controller_client_impl.cc b/chrome/browser/ui/ash/session_controller_client_impl.cc index e2b74ca1..b8b8a201 100644 --- a/chrome/browser/ui/ash/session_controller_client_impl.cc +++ b/chrome/browser/ui/ash/session_controller_client_impl.cc
@@ -386,8 +386,8 @@ if (user_manager->GetUsersAllowedForMultiProfile().empty()) return ash::AddUserSessionPolicy::ERROR_NO_ELIGIBLE_USERS; - if (chromeos::MultiProfileUserController::GetPrimaryUserPolicy() != - chromeos::MultiProfileUserController::ALLOWED) { + if (ash::MultiProfileUserController::GetPrimaryUserPolicy() != + ash::MultiProfileUserController::ALLOWED) { return ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER; }
diff --git a/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc b/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc index 10d88bf2..ba839fcc 100644 --- a/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc +++ b/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc
@@ -40,7 +40,6 @@ #include "net/test/test_data_directory.h" #include "testing/gtest/include/gtest/gtest.h" -using chromeos::FakeChromeUserManager; using session_manager::SessionState; namespace { @@ -56,7 +55,7 @@ // A user manager that does not set profiles as loaded and notifies observers // when users being added to a session. -class TestChromeUserManager : public FakeChromeUserManager { +class TestChromeUserManager : public ash::FakeChromeUserManager { public: TestChromeUserManager() = default; ~TestChromeUserManager() override = default; @@ -66,8 +65,8 @@ const std::string& user_id_hash, bool browser_restart, bool is_child) override { - FakeChromeUserManager::UserLoggedIn(account_id, user_id_hash, - browser_restart, is_child); + ash::FakeChromeUserManager::UserLoggedIn(account_id, user_id_hash, + browser_restart, is_child); active_user_ = const_cast<user_manager::User*>(FindUser(account_id)); NotifyUserAddedToSession(active_user_, false); NotifyOnLogin(); @@ -287,7 +286,7 @@ user_profile->GetPrefs()->SetString( prefs::kMultiProfileUserBehavior, - chromeos::MultiProfileUserController::kBehaviorNotAllowed); + ash::MultiProfileUserController::kBehaviorNotAllowed); EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, SessionControllerClientImpl::GetAddUserSessionPolicy()); } @@ -395,7 +394,7 @@ user_manager()->LoginUser(account_id); user_profile->GetPrefs()->SetString( prefs::kMultiProfileUserBehavior, - chromeos::MultiProfileUserController::kBehaviorNotAllowed); + ash::MultiProfileUserController::kBehaviorNotAllowed); user_manager()->AddUser( AccountId::FromUserEmailGaiaId("bb@b.b", "4444444444")); EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER,
diff --git a/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc b/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc index 242ea33..212466c6 100644 --- a/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc +++ b/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc
@@ -8,6 +8,7 @@ #include "base/command_line.h" #include "base/compiler_specific.h" +#include "base/feature_list.h" #include "base/metrics/user_metrics.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h" @@ -29,6 +30,7 @@ #include "components/bookmarks/common/bookmark_pref_names.h" #include "components/bookmarks/managed/managed_bookmark_service.h" #include "components/prefs/pref_service.h" +#include "components/reading_list/features/reading_list_switches.h" #include "components/strings/grit/components_strings.h" #include "components/undo/bookmark_undo_service.h" #include "content/public/browser/page_navigator.h" @@ -85,6 +87,20 @@ } } +// Returns true if |command_id| corresponds to a command related to bookmark bar +// management. +bool IsBookmarkBarManagementCommand(int command_id) { + switch (command_id) { + case IDC_BOOKMARK_MANAGER: + case IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT: + case IDC_BOOKMARK_BAR_SHOW_READING_LIST: + case IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS: + case IDC_BOOKMARK_BAR_ALWAYS_SHOW: + return true; + } + return false; +} + } // namespace BookmarkContextMenuController::BookmarkContextMenuController( @@ -173,6 +189,10 @@ AddCheckboxItem(IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT, IDS_BOOKMARK_BAR_SHOW_APPS_SHORTCUT); } + if (base::FeatureList::IsEnabled(reading_list::switches::kReadLater)) { + AddCheckboxItem(IDC_BOOKMARK_BAR_SHOW_READING_LIST, + IDS_BOOKMARK_BAR_SHOW_READING_LIST); + } AddCheckboxItem(IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS, IDS_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS_DEFAULT_NAME); AddCheckboxItem(IDC_BOOKMARK_BAR_ALWAYS_SHOW, IDS_SHOW_BOOKMARK_BAR); @@ -311,6 +331,14 @@ break; } + case IDC_BOOKMARK_BAR_SHOW_READING_LIST: { + PrefService* prefs = profile_->GetPrefs(); + prefs->SetBoolean( + bookmarks::prefs::kShowReadingListInBookmarkBar, + !prefs->GetBoolean(bookmarks::prefs::kShowReadingListInBookmarkBar)); + break; + } + case IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS: { PrefService* prefs = profile_->GetPrefs(); prefs->SetBoolean( @@ -395,9 +423,13 @@ PrefService* prefs = profile_->GetPrefs(); if (command_id == IDC_BOOKMARK_BAR_ALWAYS_SHOW) return prefs->GetBoolean(bookmarks::prefs::kShowBookmarkBar); - if (command_id == IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS) + if (command_id == IDC_BOOKMARK_BAR_SHOW_MANAGED_BOOKMARKS) { return prefs->GetBoolean( bookmarks::prefs::kShowManagedBookmarksInBookmarkBar); + } + if (command_id == IDC_BOOKMARK_BAR_SHOW_READING_LIST) { + return prefs->GetBoolean(bookmarks::prefs::kShowReadingListInBookmarkBar); + } DCHECK_EQ(IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT, command_id); return prefs->GetBoolean(bookmarks::prefs::kShowAppsShortcutInBookmarkBar); @@ -406,6 +438,12 @@ bool BookmarkContextMenuController::IsCommandIdEnabled(int command_id) const { PrefService* prefs = profile_->GetPrefs(); + // If the context menu is being shown from the reading list button then only + // the bookmark bar management options should be enabled. + if (!parent_ && selection_.empty()) { + return IsBookmarkBarManagementCommand(command_id); + } + bool is_root_node = selection_.size() == 1 && selection_[0]->parent() == model_->root_node(); bool can_edit = prefs->GetBoolean(bookmarks::prefs::kEditBookmarksEnabled) &&
diff --git a/chrome/browser/ui/bookmarks/bookmark_utils.cc b/chrome/browser/ui/bookmarks/bookmark_utils.cc index 04dbba12..c77a292 100644 --- a/chrome/browser/ui/bookmarks/bookmark_utils.cc +++ b/chrome/browser/ui/bookmarks/bookmark_utils.cc
@@ -7,6 +7,7 @@ #include <stddef.h> #include "base/check.h" +#include "base/feature_list.h" #include "base/notreached.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" @@ -22,6 +23,7 @@ #include "components/dom_distiller/core/url_constants.h" #include "components/dom_distiller/core/url_utils.h" #include "components/prefs/pref_service.h" +#include "components/reading_list/features/reading_list_switches.h" #include "components/search/search.h" #include "components/url_formatter/url_formatter.h" #include "components/user_prefs/user_prefs.h" @@ -153,6 +155,12 @@ bookmarks::prefs::kShowAppsShortcutInBookmarkBar); } +bool ShouldShowReadingListInBookmarkBar(Profile* profile) { + return base::FeatureList::IsEnabled(reading_list::switches::kReadLater) && + profile->GetPrefs()->GetBoolean( + bookmarks::prefs::kShowReadingListInBookmarkBar); +} + int GetBookmarkDragOperation(content::BrowserContext* browser_context, const BookmarkNode* node) { PrefService* prefs = user_prefs::UserPrefs::Get(browser_context);
diff --git a/chrome/browser/ui/bookmarks/bookmark_utils.h b/chrome/browser/ui/bookmarks/bookmark_utils.h index 60b699c..3af2b99 100644 --- a/chrome/browser/ui/bookmarks/bookmark_utils.h +++ b/chrome/browser/ui/bookmarks/bookmark_utils.h
@@ -62,6 +62,9 @@ // Returns true if the Apps shortcut should be displayed in the bookmark bar. bool ShouldShowAppsShortcutInBookmarkBar(Profile* profile); +// Returns true if the reading list should be displayed in the bookmark bar. +bool ShouldShowReadingListInBookmarkBar(Profile* profile); + // Returns the drag operations for the specified node. int GetBookmarkDragOperation(content::BrowserContext* browser_context, const bookmarks::BookmarkNode* node);
diff --git a/chrome/browser/ui/browser_finder_chromeos_unittest.cc b/chrome/browser/ui/browser_finder_chromeos_unittest.cc index ad90e3f..dcee0fa7 100644 --- a/chrome/browser/ui/browser_finder_chromeos_unittest.cc +++ b/chrome/browser/ui/browser_finder_chromeos_unittest.cc
@@ -31,7 +31,7 @@ class BrowserFinderChromeOSTest : public BrowserWithTestWindowTest { protected: BrowserFinderChromeOSTest() - : fake_user_manager_(new chromeos::FakeChromeUserManager), + : fake_user_manager_(new ash::FakeChromeUserManager), user_manager_enabler_(base::WrapUnique(fake_user_manager_)) {} TestingProfile* CreateMultiUserProfile(const AccountId& account_id) { @@ -77,7 +77,7 @@ TestingProfile* second_profile_; // |fake_user_manager_| is owned by |user_manager_enabler_| - chromeos::FakeChromeUserManager* fake_user_manager_; + ash::FakeChromeUserManager* fake_user_manager_; user_manager::ScopedUserManager user_manager_enabler_; DISALLOW_COPY_AND_ASSIGN(BrowserFinderChromeOSTest);
diff --git a/chrome/browser/ui/browser_unittest.cc b/chrome/browser/ui/browser_unittest.cc index 3ec398d..08ba679 100644 --- a/chrome/browser/ui/browser_unittest.cc +++ b/chrome/browser/ui/browser_unittest.cc
@@ -257,8 +257,7 @@ // Setting up user manager state to be in kiosk mode: // Creating a new user manager. - chromeos::FakeChromeUserManager* user_manager = - new chromeos::FakeChromeUserManager(); + auto* user_manager = new ash::FakeChromeUserManager(); user_manager::ScopedUserManager manager{ std::unique_ptr<user_manager::UserManager>(user_manager)}; const user_manager::User* user =
diff --git a/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc b/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc index f1c51e5..c1be3de 100644 --- a/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc +++ b/chrome/browser/ui/omnibox/omnibox_pedals_unittest.cc
@@ -137,6 +137,15 @@ "customize sync", "customize site permissions", "google workspace create document", + "create google workspace spreadsheet", + "create presentation workspace", + "schedule workspace meeting", + "create workspace website", + "create workspace note", + "create workspace survey", + "make the most of new chrome features", + "control google account", + "account password change", } }, { "en-GB",
diff --git a/chrome/browser/ui/sync/profile_signin_confirmation_helper_unittest.cc b/chrome/browser/ui/sync/profile_signin_confirmation_helper_unittest.cc index d1cc5723..d854c75f 100644 --- a/chrome/browser/ui/sync/profile_signin_confirmation_helper_unittest.cc +++ b/chrome/browser/ui/sync/profile_signin_confirmation_helper_unittest.cc
@@ -181,7 +181,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif };
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc index e9e1fac5..6d474cf 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -746,7 +746,7 @@ gfx::Size size = apps_page_shortcut_->GetPreferredSize(); width += size.width() + bookmark_bar_button_padding; } - if (read_later_button_) { + if (read_later_button_ && read_later_button_->GetVisible()) { gfx::Size separator_size = read_later_separator_view_->GetPreferredSize(); gfx::Size size = read_later_button_->GetPreferredSize(); width += @@ -809,11 +809,11 @@ // Additional spacing is only needed for this button if it is the last // button in the bookmark bar. When the read later button exists this is no // longer the last button. - if (!read_later_button_) + if (!read_later_button_ || !read_later_button_->GetVisible()) max_x -= bookmark_bar_button_padding; } - if (read_later_button_) { + if (read_later_button_ && read_later_button_->GetVisible()) { if (bookmarks_separator_view_->GetVisible()) max_x -= bookmarks_separator_pref.width(); max_x -= read_later_button_->GetPreferredSize().width() + @@ -893,12 +893,12 @@ x += other_bookmarks_pref.width(); // Additional spacing is only needed for the last button in the bookmark // bar. When the read later button exists this is no longer the last button. - if (!read_later_button_) + if (!read_later_button_ || !read_later_button_->GetVisible()) x += bookmark_bar_button_padding; } // Read-later button and separator. - if (read_later_button_) { + if (read_later_button_ && read_later_button_->GetVisible()) { gfx::Size read_later_separator_pref = read_later_separator_view_->GetPreferredSize(); gfx::Size read_later_pref = read_later_button_->GetPreferredSize(); @@ -1399,6 +1399,8 @@ } else if (source == managed_bookmarks_button_) { parent = managed_->managed_node(); nodes.push_back(parent); + } else if (source == read_later_button_) { + // Do nothing here for now. } else if (source != this && source != apps_page_shortcut_) { // User clicked on one of the bookmark buttons, find which one they // clicked on, except for the apps page shortcut, which must behave as if @@ -1450,6 +1452,7 @@ AddChildView(std::make_unique<ButtonSeparatorView>()); read_later_button_ = AddChildView(std::make_unique<ReadLaterButton>(browser_)); + read_later_button_->set_context_menu_controller(this); } profile_pref_registrar_.Init(browser_->profile()->GetPrefs()); @@ -1459,11 +1462,19 @@ &BookmarkBarView::OnAppsPageShortcutVisibilityPrefChanged, base::Unretained(this))); profile_pref_registrar_.Add( + bookmarks::prefs::kShowReadingListInBookmarkBar, + base::BindRepeating(&BookmarkBarView::OnReadingListVisibilityPrefChanged, + base::Unretained(this))); + profile_pref_registrar_.Add( bookmarks::prefs::kShowManagedBookmarksInBookmarkBar, base::BindRepeating(&BookmarkBarView::OnShowManagedBookmarksPrefChanged, base::Unretained(this))); apps_page_shortcut_->SetVisible( chrome::ShouldShowAppsShortcutInBookmarkBar(browser_->profile())); + if (read_later_button_) { + read_later_button_->SetVisible( + chrome::ShouldShowReadingListInBookmarkBar(browser_->profile())); + } bookmarks_separator_view_ = AddChildView(std::make_unique<ButtonSeparatorView>()); @@ -2007,6 +2018,17 @@ LayoutAndPaint(); } +void BookmarkBarView::OnReadingListVisibilityPrefChanged() { + bool visible = + chrome::ShouldShowReadingListInBookmarkBar(browser_->profile()); + if (read_later_button_->GetVisible() == visible) + return; + read_later_button_->CloseBubble(); + read_later_button_->SetVisible(visible); + read_later_separator_view_->SetVisible(visible); + LayoutAndPaint(); +} + void BookmarkBarView::OnShowManagedBookmarksPrefChanged() { if (UpdateOtherAndManagedButtonsVisibility()) LayoutAndPaint();
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h index c25fa4f..309b7954 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
@@ -349,6 +349,9 @@ // Updates the visibility of the apps shortcut based on the pref value. void OnAppsPageShortcutVisibilityPrefChanged(); + // Updates the visibility of the reading list based on the pref value. + void OnReadingListVisibilityPrefChanged(); + void OnShowManagedBookmarksPrefChanged(); void LayoutAndPaint() {
diff --git a/chrome/browser/ui/views/plugin_vm/plugin_vm_installer_view_browsertest.cc b/chrome/browser/ui/views/plugin_vm/plugin_vm_installer_view_browsertest.cc index ae77a94..e241d452 100644 --- a/chrome/browser/ui/views/plugin_vm/plugin_vm_installer_view_browsertest.cc +++ b/chrome/browser/ui/views/plugin_vm/plugin_vm_installer_view_browsertest.cc
@@ -172,7 +172,7 @@ void SetUserWithAffiliation() { const AccountId account_id(AccountId::FromUserEmailGaiaId( browser()->profile()->GetProfileUserName(), "id")); - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<ash::FakeChromeUserManager>(); user_manager->AddUserWithAffiliation(account_id, true); user_manager->LoginUser(account_id); chromeos::ProfileHelper::Get()->SetProfileToUserMappingForTesting(
diff --git a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc index 1c55f64..f450284 100644 --- a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc +++ b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc
@@ -824,7 +824,7 @@ init_params.start_session = false; ash_test_helper_.SetUp(std::move(init_params)); - user_manager_ = new chromeos::FakeChromeUserManager(); + user_manager_ = new ash::FakeChromeUserManager(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(user_manager_)); @@ -871,7 +871,7 @@ RelaunchNotificationControllerPlatformImpl impl_; ash::AshTestHelper ash_test_helper_; session_manager::SessionManager session_manager_; - chromeos::FakeChromeUserManager* user_manager_; + ash::FakeChromeUserManager* user_manager_; std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; std::unique_ptr<display::test::ActionLogger> logger_; display::NativeDisplayDelegate* native_display_delegate_;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.h b/chrome/browser/ui/views/toolbar/toolbar_button.h index 30b21418..61b6e37 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_button.h +++ b/chrome/browser/ui/views/toolbar/toolbar_button.h
@@ -231,9 +231,6 @@ gfx::SlideAnimation highlight_color_animation_; }; - // TODO(pbos): See if VECTOR_ICON_TEMPLATE_CC can create constexpr VectorIcons - // so SetVectorIcon and friends can use constexpr to avoid potential lifetime - // problems if runtime-created gfx::VectorIcons were to become a thing. struct VectorIcons { const gfx::VectorIcon& icon; const gfx::VectorIcon& touch_icon;
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_userlist_unittest.cc b/chrome/browser/ui/webui/chromeos/login/signin_userlist_unittest.cc index 6bf8f7d..5899c04 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_userlist_unittest.cc +++ b/chrome/browser/ui/webui/chromeos/login/signin_userlist_unittest.cc
@@ -22,8 +22,13 @@ #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" +namespace chromeos { namespace { +// TODO(https://crbug.com/1164001): remove once this file is migrated. +using ::ash::MultiProfileUserController; +using ::ash::MultiProfileUserControllerDelegate; + const size_t kMaxUsers = 50; // same as in user_selection_screen.cc const char* kOwner = "owner@gmail.com"; const char* kUsersPublic[] = {"public0@gmail.com", "public1@gmail.com"}; @@ -34,8 +39,6 @@ } // namespace -namespace chromeos { - class SigninPrepareUserListTest : public testing::Test, public MultiProfileUserControllerDelegate { public:
diff --git a/chrome/browser/ui/webui/chromeos/user_image_source.cc b/chrome/browser/ui/webui/chromeos/user_image_source.cc index c809cc4..0837287 100644 --- a/chrome/browser/ui/webui/chromeos/user_image_source.cc +++ b/chrome/browser/ui/webui/chromeos/user_image_source.cc
@@ -20,6 +20,7 @@ #include "ui/gfx/codec/png_codec.h" #include "url/third_party/mozilla/url_parse.h" +namespace chromeos { namespace { // URL parameter specifying frame index. @@ -147,8 +148,7 @@ } if (user->HasDefaultImage()) { return LoadUserImageFrameForScaleFactor( - chromeos::default_user_image::kDefaultImageResourceIDs - [user->image_index()], + default_user_image::kDefaultImageResourceIDs[user->image_index()], frame, scale_factor); } NOTREACHED() << "User with custom image missing data bytes"; @@ -161,8 +161,6 @@ } // namespace -namespace chromeos { - // Static. scoped_refptr<base::RefCountedMemory> UserImageSource::GetUserImage( const AccountId& account_id) {
diff --git a/chrome/browser/ui/webui/settings/chromeos/accessibility_section.cc b/chrome/browser/ui/webui/settings/chromeos/accessibility_section.cc index 0330200..5b9ff60 100644 --- a/chrome/browser/ui/webui/settings/chromeos/accessibility_section.cc +++ b/chrome/browser/ui/webui/settings/chromeos/accessibility_section.cc
@@ -41,6 +41,7 @@ #include "ui/accessibility/accessibility_switches.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/webui/web_ui_util.h" +#include "ui/chromeos/events/keyboard_layout_util.h" namespace chromeos { namespace settings { @@ -445,6 +446,7 @@ {"chromeVoxLabel", IDS_SETTINGS_CHROMEVOX_LABEL}, {"chromeVoxOptionsLabel", IDS_SETTINGS_CHROMEVOX_OPTIONS_LABEL}, {"screenMagnifierLabel", IDS_SETTINGS_SCREEN_MAGNIFIER_LABEL}, + {"screenMagnifierHintLabel", IDS_SETTINGS_SCREEN_MAGNIFIER_HINT_LABEL}, {"screenMagnifierMouseFollowingModeContinuous", IDS_SETTINGS_SCREEN_MANIFIER_MOUSE_FOLLOWING_MODE_CONTINUOUS}, {"screenMagnifierMouseFollowingModeCentered", @@ -454,6 +456,8 @@ {"screenMagnifierFocusFollowingLabel", IDS_SETTINGS_SCREEN_MAGNIFIER_FOCUS_FOLLOWING_LABEL}, {"screenMagnifierZoomLabel", IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_LABEL}, + {"screenMagnifierZoomHintLabel", + IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_HINT_LABEL}, {"dockedMagnifierLabel", IDS_SETTINGS_DOCKED_MAGNIFIER_LABEL}, {"dockedMagnifierZoomLabel", IDS_SETTINGS_DOCKED_MAGNIFIER_ZOOM_LABEL}, {"screenMagnifierZoom2x", IDS_SETTINGS_SCREEN_MAGNIFIER_ZOOM_2_X}, @@ -662,6 +666,11 @@ }; html_source->AddLocalizedStrings(kLocalizedStrings); + html_source->AddLocalizedString("screenMagnifierHintSearchKey", + ui::DeviceUsesKeyboardLayout2() + ? IDS_SETTINGS_KEYBOARD_KEY_LAUNCHER + : IDS_SETTINGS_KEYBOARD_KEY_SEARCH); + html_source->AddString("a11yLearnMoreUrl", chrome::kChromeAccessibilityHelpURL);
diff --git a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler_browsertest.cc b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler_browsertest.cc index 92455c5..6ca8dab 100644 --- a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler_browsertest.cc +++ b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler_browsertest.cc
@@ -142,7 +142,7 @@ } profile_ = profile_builder.Build(); - auto user_manager = std::make_unique<chromeos::FakeChromeUserManager>(); + auto user_manager = std::make_unique<FakeChromeUserManager>(); const user_manager::User* user; if (GetDeviceAccountInfo().user_type == user_manager::UserType::USER_TYPE_ACTIVE_DIRECTORY) { @@ -244,8 +244,8 @@ AccountManager* account_manager() { return account_manager_; } private: - chromeos::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<chromeos::FakeChromeUserManager*>( + FakeChromeUserManager* GetFakeUserManager() const { + return static_cast<FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc b/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc index 43cd942..f06a0d7 100644 --- a/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc
@@ -273,7 +273,7 @@ } void ChangePictureHandler::UpdateProfileImage() { - UserImageManager* user_image_manager = + auto* user_image_manager = ChromeUserManager::Get()->GetUserImageManager(GetUser()->GetAccountId()); // If we have a downloaded profile image and haven't sent it in // |SendSelectedImage|, send it now (without selecting). @@ -307,7 +307,7 @@ // |image_url| may be empty unless |image_type| is "default". DCHECK(!image_type.empty()); - UserImageManager* user_image_manager = + auto* user_image_manager = ChromeUserManager::Get()->GetUserImageManager(GetUser()->GetAccountId()); bool waiting_for_camera_photo = false;
diff --git a/chrome/browser/ui/webui/settings/on_startup_handler_unittest.cc b/chrome/browser/ui/webui/settings/on_startup_handler_unittest.cc index d304a01c..ca3fb450 100644 --- a/chrome/browser/ui/webui/settings/on_startup_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/on_startup_handler_unittest.cc
@@ -48,8 +48,7 @@ ASSERT_TRUE(profile_manager_.SetUp()); #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager; + auto* fake_user_manager = new ash::FakeChromeUserManager; user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager)); constexpr char kFakeEmail[] = "fake_id@gmail.com";
diff --git a/chrome/browser/ui/webui/settings/profile_info_handler_unittest.cc b/chrome/browser/ui/webui/settings/profile_info_handler_unittest.cc index 9b540f01..c4427617 100644 --- a/chrome/browser/ui/webui/settings/profile_info_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/profile_info_handler_unittest.cc
@@ -57,8 +57,7 @@ ASSERT_TRUE(profile_manager_.SetUp()); #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::FakeChromeUserManager* fake_user_manager = - new chromeos::FakeChromeUserManager; + auto* fake_user_manager = new ash::FakeChromeUserManager; user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( base::WrapUnique(fake_user_manager)); profile_ = profile_manager_.CreateTestingProfile(fake_email);
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc index ea0a9f91..f695c1ac 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -157,7 +157,7 @@ ContentSettingsType::COOKIES)) { #if BUILDFLAG(IS_CHROMEOS_ASH) user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::MockUserManager>()); + std::make_unique<ash::MockUserManager>()); #endif // Fully initialize |profile_| in the constructor since some children
diff --git a/chrome/browser/usb/web_usb_detector_unittest.cc b/chrome/browser/usb/web_usb_detector_unittest.cc index b0d1345b..ef04c7e 100644 --- a/chrome/browser/usb/web_usb_detector_unittest.cc +++ b/chrome/browser/usb/web_usb_detector_unittest.cc
@@ -71,7 +71,7 @@ BrowserWithTestWindowTest::SetUp(); #if BUILDFLAG(IS_CHROMEOS_ASH) user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); GetFakeUserManager()->AddUser(user_manager::StubAccountId()); GetFakeUserManager()->LoginUser(user_manager::StubAccountId()); @@ -104,8 +104,8 @@ protected: #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* GetFakeUserManager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/browser/web_applications/components/web_app_utils_unittest.cc b/chrome/browser/web_applications/components/web_app_utils_unittest.cc index 8f73eb1..6ab43764 100644 --- a/chrome/browser/web_applications/components/web_app_utils_unittest.cc +++ b/chrome/browser/web_applications/components/web_app_utils_unittest.cc
@@ -96,7 +96,7 @@ EXPECT_FALSE(AreWebAppsEnabled(lock_screen_profile)); EXPECT_FALSE(AreWebAppsEnabled(lock_screen_profile->GetPrimaryOTRProfile())); - using MockUserManager = testing::NiceMock<chromeos::MockUserManager>; + using MockUserManager = testing::NiceMock<ash::MockUserManager>; { auto user_manager = std::make_unique<MockUserManager>(); user_manager::ScopedUserManager enabler(std::move(user_manager));
diff --git a/chrome/browser/web_applications/external_web_app_manager_unittest.cc b/chrome/browser/web_applications/external_web_app_manager_unittest.cc index 4a44eacb..440092d 100644 --- a/chrome/browser/web_applications/external_web_app_manager_unittest.cc +++ b/chrome/browser/web_applications/external_web_app_manager_unittest.cc
@@ -71,7 +71,7 @@ testing::Test::SetUp(); #if BUILDFLAG(IS_CHROMEOS_ASH) user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<chromeos::FakeChromeUserManager>()); + std::make_unique<ash::FakeChromeUserManager>()); #endif } @@ -180,8 +180,8 @@ private: #if BUILDFLAG(IS_CHROMEOS_ASH) - chromeos::FakeChromeUserManager* user_manager() { - return static_cast<chromeos::FakeChromeUserManager*>( + ash::FakeChromeUserManager* user_manager() { + return static_cast<ash::FakeChromeUserManager*>( user_manager::UserManager::Get()); }
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 2eaa8fc..a8e16ce 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1616688932-8908de30e8d4928a4b6ebe72cfae8aa5c926495b.profdata +chrome-linux-master-1616759954-345f4e8846912b97ff232ef62df676ed769a64cd.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 9bf71a5..c7b3e004 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1616688932-b50b332c3827ac1838676add206e80f6f52509e7.profdata +chrome-mac-master-1616759954-99866b761dcad11414ec9ebb20e1d43cd0dac5c5.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 555e58a4..c061c4cc 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1616688932-0cc7d689b3cb3193e016f80eb9aca2a6f2a5db92.profdata +chrome-win32-master-1616748703-f8bdc10e4d2e08b1638f9b036f6c1bdce7a348ea.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index ec8924f7..6475eb5 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1616684217-b206821e8155e9e063c7043539d22db342483e7a.profdata +chrome-win64-master-1616759954-bc21f04558fbce24839a5ad4a05c32f18f01afd9.profdata
diff --git a/chrome/test/base/browser_with_test_window_test.h b/chrome/test/base/browser_with_test_window_test.h index f31c449..5535695c 100644 --- a/chrome/test/base/browser_with_test_window_test.h +++ b/chrome/test/base/browser_with_test_window_test.h
@@ -220,7 +220,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) ash::ScopedCrosSettingsTestHelper cros_settings_test_helper_; - chromeos::ScopedTestUserManager test_user_manager_; + ash::ScopedTestUserManager test_user_manager_; #endif TestingProfile* profile_;
diff --git a/chrome/test/data/webui/histograms/histograms_internals_ui_browsertest.js b/chrome/test/data/webui/histograms/histograms_internals_ui_browsertest.js index 24954a2..8b4d66f 100644 --- a/chrome/test/data/webui/histograms/histograms_internals_ui_browsertest.js +++ b/chrome/test/data/webui/histograms/histograms_internals_ui_browsertest.js
@@ -60,9 +60,10 @@ }); document.querySelector('#refresh').click(); return whenRefreshed.then(() => { - document.querySelectorAll('h4').forEach(header => { - assertNotEquals(header.textContent, ''); - }); + document.querySelectorAll('.histogram-header-text') + .forEach(header => { + assertNotEquals(header.textContent, ''); + }); }); });
diff --git a/chrome/test/data/webui/new_tab_page/app_test.js b/chrome/test/data/webui/new_tab_page/app_test.js index 26ae8d1..0d79143 100644 --- a/chrome/test/data/webui/new_tab_page/app_test.js +++ b/chrome/test/data/webui/new_tab_page/app_test.js
@@ -603,6 +603,14 @@ assertTrue(restoreCalled); assertEquals(1, metrics.count('NewTabPage.Modules.Enabled', 'foo')); assertEquals(1, metrics.count('NewTabPage.Modules.Enabled.Toast', 'foo')); + + // Act. + window.dispatchEvent(new KeyboardEvent('keydown', { + key: 'z', + ctrlKey: true, + })); + + // Assert: no crash. }); test('modules can open customize dialog', async () => {
diff --git a/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js b/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js index d196afc..9fb9248 100644 --- a/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js +++ b/chrome/test/data/webui/new_tab_page/modules/cart/module_test.js
@@ -87,6 +87,7 @@ // Assert. const cartItems = moduleElement.shadowRoot.querySelectorAll('.cart-item'); assertEquals(4, cartItems.length); + assertEquals(216, chromeCartDescriptor.heightPx); assertEquals('https://amazon.com/', cartItems[0].href); assertEquals('Amazon', cartItems[0].querySelector('.merchant').innerText); @@ -163,6 +164,7 @@ assertEquals( loadTimeData.getString('modulesCartWarmWelcome'), headerDescription.innerText); + assertEquals(226, chromeCartDescriptor.heightPx); }); test('Backend is notified when module is dismissed or restored', async () => {
diff --git a/chrome/test/data/webui/new_tab_page/modules/module_descriptor_test.js b/chrome/test/data/webui/new_tab_page/modules/module_descriptor_test.js index 4e03d3a..8144832b 100644 --- a/chrome/test/data/webui/new_tab_page/modules/module_descriptor_test.js +++ b/chrome/test/data/webui/new_tab_page/modules/module_descriptor_test.js
@@ -83,4 +83,20 @@ assertEquals(null, moduleDescriptor.element); assertEquals(123, timeout); }); + + test('module update height in initialization', async () => { + // Arrange. + const element = document.createElement('div'); + let moduleDescriptor = new ModuleDescriptor('foo', 'bar', 100, () => { + element.height = 200; + return Promise.resolve(element); + }); + + // Act. + await moduleDescriptor.initialize(); + + // Assert. + assertEquals(element, moduleDescriptor.element); + assertEquals(200, moduleDescriptor.heightPx); + }); });
diff --git a/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js b/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js index 3dbc41cc..1d1c228 100644 --- a/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js +++ b/chrome/test/data/webui/settings/chromeos/multidevice_page_tests.js
@@ -142,7 +142,7 @@ settings.MultiDeviceBrowserProxyImpl.instance_ = browserProxy; loadTimeData.overrideValues({ - nearbySharingFeatureFlag: true, + isNearbyShareSupported: true, }); multidevicePage = document.createElement('settings-multidevice-page');
diff --git a/chromeos/lacros/lacros_chrome_service_impl.cc b/chromeos/lacros/lacros_chrome_service_impl.cc index a78ea22..eef8b51 100644 --- a/chromeos/lacros/lacros_chrome_service_impl.cc +++ b/chromeos/lacros/lacros_chrome_service_impl.cc
@@ -61,44 +61,34 @@ return result; } -// This function binds a pending receiver by posting the corresponding task to -// the never blocking sequence. -template <typename PendingReceiverOrRemote, - void (Crosapi::*bind_func)(PendingReceiverOrRemote)> -void BindPendingReceiverOrRemote( - PendingReceiverOrRemote pending_receiver_or_remote, - scoped_refptr<base::SequencedTaskRunner> sequence, - base::WeakPtr<LacrosChromeServiceImplNeverBlockingState> - weak_sequenced_state) { - sequence->PostTask( - FROM_HERE, - base::BindOnce( - &LacrosChromeServiceImplNeverBlockingState:: - BindCrosapiFeatureReceiver<PendingReceiverOrRemote, bind_func>, - weak_sequenced_state, std::move(pending_receiver_or_remote))); -} - -// This function initializes a remote for a given CrosapiFeature. -// It performs the following operations: -// 1) Calls BindNewPipeAndPassReceiver() on the remote. -// 2) Posts a callback to |sequence| with the resulting PendingReceiver. -// 3) Calls the appropriate Bind* function on the crosapi interface with the -// PendingReceiver. -template <typename CrosapiFeature, - void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiFeature>)> -void InitializeAndBindRemote( - mojo::Remote<CrosapiFeature>* remote, - scoped_refptr<base::SequencedTaskRunner> sequence, - base::WeakPtr<LacrosChromeServiceImplNeverBlockingState> - weak_sequenced_state) { - mojo::PendingReceiver<CrosapiFeature> pending_receiver = - remote->BindNewPipeAndPassReceiver(); - BindPendingReceiverOrRemote<mojo::PendingReceiver<CrosapiFeature>, bind_func>( - std::move(pending_receiver), sequence, weak_sequenced_state); -} - } // namespace +LacrosChromeServiceImpl::InterfaceEntryBase::InterfaceEntryBase() = default; +LacrosChromeServiceImpl::InterfaceEntryBase::~InterfaceEntryBase() = default; + +template <typename CrosapiInterface, + void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiInterface>), + uint32_t MethodMinVersion> +class LacrosChromeServiceImpl::InterfaceEntry + : public LacrosChromeServiceImpl::InterfaceEntryBase { + public: + InterfaceEntry() : InterfaceEntryBase() {} + InterfaceEntry(const InterfaceEntry&) = delete; + InterfaceEntry& operator=(const InterfaceEntry&) = delete; + ~InterfaceEntry() override = default; + void* GetInternal() override { return &remote_; } + void MaybeBind(uint32_t crosapi_version, + LacrosChromeServiceImpl* impl) override { + available_ = crosapi_version >= MethodMinVersion; + if (available_) { + impl->InitializeAndBindRemote<CrosapiInterface, bind_func>(&remote_); + } + } + + private: + mojo::Remote<CrosapiInterface> remote_; +}; + // static LacrosChromeServiceImpl* LacrosChromeServiceImpl::Get() { return g_instance; @@ -178,6 +168,9 @@ base::BindOnce(&LacrosChromeServiceImplNeverBlockingState::BindCrosapi, weak_sequenced_state_)); + ConstructRemote<crosapi::mojom::Clipboard, &Crosapi::BindClipboard, + Crosapi::MethodMinVersions::kBindClipboardMinVersion>(); + DCHECK(!g_instance); g_instance = this; } @@ -238,61 +231,58 @@ delegate_->OnInitialized(*init_params_); did_bind_receiver_ = true; + if (CrosapiVersion()) { + for (auto& entry : interfaces_) { + entry.second->MaybeBind(*CrosapiVersion(), this); + } + } + if (IsAutomationAvailable()) { InitializeAndBindRemote<crosapi::mojom::Automation, &crosapi::mojom::Crosapi::BindAutomation>( - &automation_remote_, never_blocking_sequence_, weak_sequenced_state_); + &automation_remote_); } if (IsCertDbAvailable()) { InitializeAndBindRemote<crosapi::mojom::CertDatabase, &crosapi::mojom::Crosapi::BindCertDatabase>( - &cert_database_remote_, never_blocking_sequence_, - weak_sequenced_state_); - } - - if (IsClipboardAvailable()) { - InitializeAndBindRemote<crosapi::mojom::Clipboard, - &crosapi::mojom::Crosapi::BindClipboard>( - &clipboard_remote_, never_blocking_sequence_, weak_sequenced_state_); + &cert_database_remote_); } if (IsDeviceAttributesAvailable()) { InitializeAndBindRemote<crosapi::mojom::DeviceAttributes, &crosapi::mojom::Crosapi::BindDeviceAttributes>( - &device_attributes_remote_, never_blocking_sequence_, - weak_sequenced_state_); + &device_attributes_remote_); } if (IsFeedbackAvailable()) { InitializeAndBindRemote<crosapi::mojom::Feedback, &crosapi::mojom::Crosapi::BindFeedback>( - &feedback_remote_, never_blocking_sequence_, weak_sequenced_state_); + &feedback_remote_); } if (IsFileManagerAvailable()) { InitializeAndBindRemote<crosapi::mojom::FileManager, &crosapi::mojom::Crosapi::BindFileManager>( - &file_manager_remote_, never_blocking_sequence_, weak_sequenced_state_); + &file_manager_remote_); } if (IsHidManagerAvailable()) { InitializeAndBindRemote<device::mojom::HidManager, &crosapi::mojom::Crosapi::BindHidManager>( - &hid_manager_remote_, never_blocking_sequence_, weak_sequenced_state_); + &hid_manager_remote_); } if (IsIdleServiceAvailable()) { InitializeAndBindRemote<crosapi::mojom::IdleService, &crosapi::mojom::Crosapi::BindIdleService>( - &idle_service_remote_, never_blocking_sequence_, weak_sequenced_state_); + &idle_service_remote_); } if (IsKeystoreServiceAvailable()) { InitializeAndBindRemote<crosapi::mojom::KeystoreService, &crosapi::mojom::Crosapi::BindKeystoreService>( - &keystore_service_remote_, never_blocking_sequence_, - weak_sequenced_state_); + &keystore_service_remote_); } // Bind the remote for MessageCenter on the current thread, and then pass the @@ -300,8 +290,7 @@ if (IsMessageCenterAvailable()) { InitializeAndBindRemote<crosapi::mojom::MessageCenter, &crosapi::mojom::Crosapi::BindMessageCenter>( - &message_center_remote_, never_blocking_sequence_, - weak_sequenced_state_); + &message_center_remote_); } if (IsOnBrowserStartupAvailable()) { @@ -315,7 +304,7 @@ if (IsPrefsAvailable()) { InitializeAndBindRemote<crosapi::mojom::Prefs, &crosapi::mojom::Crosapi::BindPrefs>( - &prefs_remote_, never_blocking_sequence_, weak_sequenced_state_); + &prefs_remote_); } // Bind the remote for SelectFile on the current thread, and then pass the @@ -323,26 +312,25 @@ if (IsSelectFileAvailable()) { InitializeAndBindRemote<crosapi::mojom::SelectFile, &crosapi::mojom::Crosapi::BindSelectFile>( - &select_file_remote_, never_blocking_sequence_, weak_sequenced_state_); + &select_file_remote_); } if (IsTaskManagerAvailable()) { InitializeAndBindRemote<crosapi::mojom::TaskManager, &crosapi::mojom::Crosapi::BindTaskManager>( - &task_manager_remote_, never_blocking_sequence_, weak_sequenced_state_); + &task_manager_remote_); } if (IsTestControllerAvailable()) { InitializeAndBindRemote<crosapi::mojom::TestController, &crosapi::mojom::Crosapi::BindTestController>( - &test_controller_remote_, never_blocking_sequence_, - weak_sequenced_state_); + &test_controller_remote_); } if (IsUrlHandlerAvailable()) { InitializeAndBindRemote<crosapi::mojom::UrlHandler, &crosapi::mojom::Crosapi::BindUrlHandler>( - &url_handler_remote_, never_blocking_sequence_, weak_sequenced_state_); + &url_handler_remote_); } } @@ -370,12 +358,6 @@ Crosapi::MethodMinVersions::kBindCertDatabaseMinVersion; } -bool LacrosChromeServiceImpl::IsClipboardAvailable() const { - base::Optional<uint32_t> version = CrosapiVersion(); - return version && version.value() >= - Crosapi::MethodMinVersions::kBindClipboardMinVersion; -} - bool LacrosChromeServiceImpl::IsDeviceAttributesAvailable() const { base::Optional<uint32_t> version = CrosapiVersion(); return version && @@ -505,9 +487,8 @@ DCHECK(IsAccountManagerAvailable()); BindPendingReceiverOrRemote< mojo::PendingReceiver<crosapi::mojom::AccountManager>, - &crosapi::mojom::Crosapi::BindAccountManager>(std::move(pending_receiver), - never_blocking_sequence_, - weak_sequenced_state_); + &crosapi::mojom::Crosapi::BindAccountManager>( + std::move(pending_receiver)); } void LacrosChromeServiceImpl::BindAudioFocusManager( @@ -516,8 +497,7 @@ BindPendingReceiverOrRemote< mojo::PendingReceiver<media_session::mojom::AudioFocusManager>, - &crosapi::mojom::Crosapi::BindMediaSessionAudioFocus>( - std::move(remote), never_blocking_sequence_, weak_sequenced_state_); + &crosapi::mojom::Crosapi::BindMediaSessionAudioFocus>(std::move(remote)); } void LacrosChromeServiceImpl::BindAudioFocusManagerDebug( @@ -528,7 +508,7 @@ BindPendingReceiverOrRemote< mojo::PendingReceiver<media_session::mojom::AudioFocusManagerDebug>, &crosapi::mojom::Crosapi::BindMediaSessionAudioFocusDebug>( - std::move(remote), never_blocking_sequence_, weak_sequenced_state_); + std::move(remote)); } void LacrosChromeServiceImpl::BindMediaControllerManager( @@ -538,8 +518,7 @@ BindPendingReceiverOrRemote< mojo::PendingReceiver<media_session::mojom::MediaControllerManager>, - &crosapi::mojom::Crosapi::BindMediaSessionController>( - std::move(remote), never_blocking_sequence_, weak_sequenced_state_); + &crosapi::mojom::Crosapi::BindMediaSessionController>(std::move(remote)); } void LacrosChromeServiceImpl::BindMetricsReporting( @@ -547,8 +526,7 @@ DCHECK(IsMetricsReportingAvailable()); BindPendingReceiverOrRemote< mojo::PendingReceiver<crosapi::mojom::MetricsReporting>, - &crosapi::mojom::Crosapi::BindMetricsReporting>( - std::move(receiver), never_blocking_sequence_, weak_sequenced_state_); + &crosapi::mojom::Crosapi::BindMetricsReporting>(std::move(receiver)); } void LacrosChromeServiceImpl::BindScreenManagerReceiver( @@ -556,9 +534,7 @@ DCHECK(IsScreenManagerAvailable()); BindPendingReceiverOrRemote< mojo::PendingReceiver<crosapi::mojom::ScreenManager>, - &crosapi::mojom::Crosapi::BindScreenManager>(std::move(pending_receiver), - never_blocking_sequence_, - weak_sequenced_state_); + &crosapi::mojom::Crosapi::BindScreenManager>(std::move(pending_receiver)); } void LacrosChromeServiceImpl::BindSensorHalClient( @@ -566,8 +542,7 @@ DCHECK(IsSensorHalClientAvailable()); BindPendingReceiverOrRemote< mojo::PendingRemote<chromeos::sensors::mojom::SensorHalClient>, - &crosapi::mojom::Crosapi::BindSensorHalClient>( - std::move(remote), never_blocking_sequence_, weak_sequenced_state_); + &crosapi::mojom::Crosapi::BindSensorHalClient>(std::move(remote)); } bool LacrosChromeServiceImpl::IsOnBrowserStartupAvailable() const { @@ -583,8 +558,7 @@ BindPendingReceiverOrRemote< mojo::PendingReceiver<crosapi::mojom::VideoCaptureDeviceFactory>, &crosapi::mojom::Crosapi::BindVideoCaptureDeviceFactory>( - std::move(pending_receiver), never_blocking_sequence_, - weak_sequenced_state_); + std::move(pending_receiver)); } bool LacrosChromeServiceImpl::IsVideoCaptureDeviceFactoryAvailable() const { @@ -657,6 +631,38 @@ system_idle_cache_->Start(); } +template <typename PendingReceiverOrRemote, + void (Crosapi::*bind_func)(PendingReceiverOrRemote)> +void LacrosChromeServiceImpl::BindPendingReceiverOrRemote( + PendingReceiverOrRemote pending_receiver_or_remote) { + never_blocking_sequence_->PostTask( + FROM_HERE, + base::BindOnce( + &LacrosChromeServiceImplNeverBlockingState:: + BindCrosapiFeatureReceiver<PendingReceiverOrRemote, bind_func>, + weak_sequenced_state_, std::move(pending_receiver_or_remote))); +} + +template <typename CrosapiInterface, + void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiInterface>)> +void LacrosChromeServiceImpl::InitializeAndBindRemote( + mojo::Remote<CrosapiInterface>* remote) { + mojo::PendingReceiver<CrosapiInterface> pending_receiver = + remote->BindNewPipeAndPassReceiver(); + BindPendingReceiverOrRemote<mojo::PendingReceiver<CrosapiInterface>, + bind_func>(std::move(pending_receiver)); +} + +template <typename CrosapiInterface, + void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiInterface>), + uint32_t MethodMinVersion> +void LacrosChromeServiceImpl::ConstructRemote() { + DCHECK(!base::Contains(interfaces_, CrosapiInterface::Uuid_)); + interfaces_.emplace(CrosapiInterface::Uuid_, + std::make_unique<LacrosChromeServiceImpl::InterfaceEntry< + CrosapiInterface, bind_func, MethodMinVersion>>()); +} + void LacrosChromeServiceImpl::AddObserver(Observer* obs) { observer_list_->AddObserver(obs); }
diff --git a/chromeos/lacros/lacros_chrome_service_impl.h b/chromeos/lacros/lacros_chrome_service_impl.h index 5497c10f..7a7b3a0 100644 --- a/chromeos/lacros/lacros_chrome_service_impl.h +++ b/chromeos/lacros/lacros_chrome_service_impl.h
@@ -7,9 +7,11 @@ #include <stdint.h> +#include <map> #include <memory> #include <vector> +#include "base/check.h" #include "base/component_export.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" @@ -17,6 +19,8 @@ #include "base/optional.h" #include "base/sequence_checker.h" #include "base/sequenced_task_runner.h" +#include "base/stl_util.h" +#include "base/token.h" #include "chromeos/components/sensors/mojom/cros_sensor_service.mojom.h" #include "chromeos/crosapi/mojom/account_manager.mojom.h" #include "chromeos/crosapi/mojom/automation.mojom.h" @@ -105,10 +109,11 @@ // Each of these functions guards usage of access to the corresponding remote. // Keep these in alphabetical order. + // Most use-cases of these methods can be replaced by IsAvailable(). See + // crosapi::mojom::Clipboard for an example. bool IsAutomationAvailable() const; bool IsAccountManagerAvailable() const; bool IsCertDbAvailable() const; - bool IsClipboardAvailable() const; bool IsDeviceAttributesAvailable() const; bool IsFeedbackAvailable() const; bool IsFileManagerAvailable() const; @@ -132,12 +137,40 @@ void AddObserver(Observer* obs); void RemoveObserver(Observer* obs); + // Returns whether this interface uses the automatic registration system to be + // available for immediate use at startup. Any crosapi interface can be + // registered by using ConstructRemote. + template <typename CrosapiInterface> + bool IsRegistered() const { + return base::Contains(interfaces_, CrosapiInterface::Uuid_); + } + + // Gaurds usage to the corresponding crosapi interface. Can only be used with + // automatically registered interfaces. See IsRegistered(). + template <typename CrosapiInterface> + bool IsAvailable() const { + DCHECK(IsRegistered<CrosapiInterface>()); + return interfaces_.find(CrosapiInterface::Uuid_)->second->IsAvailable(); + } + + // Returns the automatically registered remote for a given crosapi interface. + // Can only be used with automatically registered features that are also + // available. This method can only be called from the affine sequence (main + // thread). The returned remote can only be used on the affine sequence (main + // thread). + template <typename CrosapiInterface> + mojo::Remote<CrosapiInterface>& GetRemote() { + DCHECK_CALLED_ON_VALID_SEQUENCE(affine_sequence_checker_); + DCHECK(IsAvailable<CrosapiInterface>()); + return interfaces_.find(CrosapiInterface::Uuid_) + ->second->template Get<CrosapiInterface>(); + } + // -------------------------------------------------------------------------- // mojo::Remote is sequence affine. The following methods are convenient // helpers that expose pre-established Remotes that can only be used from the // affine sequence (main thread). // -------------------------------------------------------------------------- - // This must be called on the affine sequence. mojo::Remote<crosapi::mojom::Automation>& automation_remote() { DCHECK_CALLED_ON_VALID_SEQUENCE(affine_sequence_checker_); @@ -153,14 +186,6 @@ } // This must be called on the affine sequence. It exposes a remote that can - // be used to interface with the clipboard - mojo::Remote<crosapi::mojom::Clipboard>& clipboard_remote() { - DCHECK_CALLED_ON_VALID_SEQUENCE(affine_sequence_checker_); - DCHECK(IsClipboardAvailable()); - return clipboard_remote_; - } - - // This must be called on the affine sequence. It exposes a remote that can // be used to interface with DeviceAttributes. mojo::Remote<crosapi::mojom::DeviceAttributes>& device_attributes_remote() { DCHECK_CALLED_ON_VALID_SEQUENCE(affine_sequence_checker_); @@ -333,10 +358,51 @@ void SetInitParamsForTests(crosapi::mojom::BrowserInitParamsPtr init_params); private: + using Crosapi = crosapi::mojom::Crosapi; + + // This class is a wrapper around a crosapi remote, e.g. + // mojo::Remote<crosapi::mojom::Automation>. This base class uses type erasure + // to allow us to store all instances in a single container. + class InterfaceEntryBase { + public: + virtual ~InterfaceEntryBase(); + + // Returns the remote that is being wrapped. + template <typename CrosapiInterface> + mojo::Remote<CrosapiInterface>& Get() { + return *reinterpret_cast<mojo::Remote<CrosapiInterface>*>(GetInternal()); + } + + // Returns whether Ash is sufficiently recent to support the crosapi + // protocol that the remote is based on. + bool IsAvailable() const { return available_; } + + // Initialization for the remote and |available_|. + virtual void MaybeBind(uint32_t crosapi_version, + LacrosChromeServiceImpl* impl) = 0; + + protected: + InterfaceEntryBase(); + InterfaceEntryBase(const InterfaceEntryBase&) = delete; + InterfaceEntryBase& operator=(const InterfaceEntryBase&) = delete; + + // Returns a raw pointer to a mojo::Remote<CrosapiInterface>. + virtual void* GetInternal() = 0; + + // See |IsAvailable|. + bool available_ = false; + }; + // LacrosChromeServiceImplNeverBlockingState is an implementation detail of // this class. friend class LacrosChromeServiceImplNeverBlockingState; + // Forward declare inner class to give it access to private members. + template <typename CrosapiInterface, + void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiInterface>), + uint32_t MethodMinVersion> + class InterfaceEntry; + // Creates a new window on the affine sequence. void NewWindowAffineSequence(bool incognito); @@ -372,6 +438,28 @@ // Requests ash-chrome to send idle info updates. void StartSystemIdleCache(); + // This function binds a pending receiver or remote by posting the + // corresponding bind task to the |never_blocking_sequence_|. + template <typename PendingReceiverOrRemote, + void (Crosapi::*bind_func)(PendingReceiverOrRemote)> + void BindPendingReceiverOrRemote( + PendingReceiverOrRemote pending_receiver_or_remote); + + // This function initializes a remote for a given CrosapiInterface. + // It performs the following operations: + // 1) Calls BindNewPipeAndPassReceiver() on the remote. + // 2) Calls BindPendingReceiverOrRemote() on the PendingReceiver. + template <typename CrosapiInterface, + void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiInterface>)> + void InitializeAndBindRemote(mojo::Remote<CrosapiInterface>* remote); + + // This function constructs a new remote for a crosapi interface and stashes + // it in |interfaces_|. This remote will later be bound during BindReceiver(). + template <typename CrosapiInterface, + void (Crosapi::*bind_func)(mojo::PendingReceiver<CrosapiInterface>), + uint32_t MethodMinVersion> + void ConstructRemote(); + // Delegate instance to inject Chrome dependent code. Must only be used on the // affine sequence. std::unique_ptr<LacrosChromeServiceDelegate> delegate_; @@ -384,9 +472,10 @@ // These members are affine to the affine sequence. They are initialized in // the constructor and are immediately available for use. + // DEPRECATED. Do not add more instances of these methods. Instead, use + // ConstructRemote. See crosapi::mojom::Clipboard for an example. mojo::Remote<crosapi::mojom::Automation> automation_remote_; mojo::Remote<crosapi::mojom::CertDatabase> cert_database_remote_; - mojo::Remote<crosapi::mojom::Clipboard> clipboard_remote_; mojo::Remote<crosapi::mojom::DeviceAttributes> device_attributes_remote_; mojo::Remote<crosapi::mojom::Feedback> feedback_remote_; mojo::Remote<crosapi::mojom::FileManager> file_manager_remote_; @@ -421,6 +510,13 @@ // The list of observers. scoped_refptr<base::ObserverListThreadSafe<Observer>> observer_list_; + // Each element of |interfaces_| corresponds to a crosapi interface remote + // (e.g. mojo::Remote<crosapi::mojom::Automation>). The key of the element is + // the UUID of the crosapi interface. The value is a wrapper around the + // mojo::Remote. Each element can only be used on the affine sequence. Each + // element is automatically bound to the corresponding receiver in ash. + std::map<base::Token, std::unique_ptr<InterfaceEntryBase>> interfaces_; + // Checks that the method is called on the affine sequence. SEQUENCE_CHECKER(affine_sequence_checker_);
diff --git a/chromeos/login/login_state/login_state.h b/chromeos/login/login_state/login_state.h index 2523b93..bef04d9c 100644 --- a/chromeos/login/login_state/login_state.h +++ b/chromeos/login/login_state/login_state.h
@@ -124,4 +124,9 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace ash { +using ::chromeos::LoginState; +} + #endif // CHROMEOS_LOGIN_LOGIN_STATE_LOGIN_STATE_H_
diff --git a/components/arc/session/arc_vm_client_adapter.cc b/components/arc/session/arc_vm_client_adapter.cc index 61b2340..fea4f3a 100644 --- a/components/arc/session/arc_vm_client_adapter.cc +++ b/components/arc/session/arc_vm_client_adapter.cc
@@ -121,15 +121,6 @@ return value.erase(value.find(kChannelSuffix), kChannelSuffix.size()); } -std::string MonotonicTimestamp() { - struct timespec ts; - const int ret = clock_gettime(CLOCK_BOOTTIME, &ts); - DPCHECK(ret == 0); - const int64_t time = - ts.tv_sec * base::Time::kNanosecondsPerSecond + ts.tv_nsec; - return base::NumberToString(time); -} - ArcBinaryTranslationType IdentifyBinaryTranslationType( const StartParams& start_params) { const auto* command_line = base::CommandLine::ForCurrentProcess(); @@ -227,7 +218,6 @@ base::StringPrintf("androidboot.disable_system_default_app=%d", start_params.arc_disable_system_default_app), "androidboot.chromeos_channel=" + channel, - "androidboot.boottime_offset=" + MonotonicTimestamp(), base::StringPrintf("androidboot.iioservice_present=%d", BUILDFLAG(USE_IIOSERVICE)), };
diff --git a/components/arc/session/arc_vm_client_adapter_unittest.cc b/components/arc/session/arc_vm_client_adapter_unittest.cc index 058f7c2..5281dcf 100644 --- a/components/arc/session/arc_vm_client_adapter_unittest.cc +++ b/components/arc/session/arc_vm_client_adapter_unittest.cc
@@ -1574,6 +1574,49 @@ "androidboot.native_bridge=libhoudini.so")); } +// Tests that "readahead" mode is used by default. +TEST_F(ArcVmClientAdapterTest, TestGetArcVmUreadaheadModeDefault) { + StartParams start_params(GetPopulatedStartParams()); + SetValidUserInfo(); + StartMiniArcWithParams(true, std::move(start_params)); + EXPECT_TRUE( + base::Contains(GetTestConciergeClient()->start_arc_vm_request().params(), + "androidboot.arcvm_ureadahead_mode=readahead")); + EXPECT_FALSE( + base::Contains(GetTestConciergeClient()->start_arc_vm_request().params(), + "androidboot.arcvm_ureadahead_mode=generate")); +} + +// Tests that the "generate" command line switches the mode. +TEST_F(ArcVmClientAdapterTest, TestGetArcVmUreadaheadModeGenerate) { + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arcvm-ureadahead-mode=generate"}); + StartParams start_params(GetPopulatedStartParams()); + SetValidUserInfo(); + StartMiniArcWithParams(true, std::move(start_params)); + EXPECT_FALSE( + base::Contains(GetTestConciergeClient()->start_arc_vm_request().params(), + "androidboot.arcvm_ureadahead_mode=readahead")); + EXPECT_TRUE( + base::Contains(GetTestConciergeClient()->start_arc_vm_request().params(), + "androidboot.arcvm_ureadahead_mode=generate")); +} + +// Tests that the "disabled" command line disables both readahead and generate. +TEST_F(ArcVmClientAdapterTest, TestGetArcVmUreadaheadModeDisabled) { + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arcvm-ureadahead-mode=disabled"}); + StartParams start_params(GetPopulatedStartParams()); + SetValidUserInfo(); + StartMiniArcWithParams(true, std::move(start_params)); + EXPECT_FALSE( + base::Contains(GetTestConciergeClient()->start_arc_vm_request().params(), + "androidboot.arcvm_ureadahead_mode=readahead")); + EXPECT_FALSE( + base::Contains(GetTestConciergeClient()->start_arc_vm_request().params(), + "androidboot.arcvm_ureadahead_mode=generate")); +} + // Tests that ArcVmClientAdapter connects to the boot notification server // twice: once in StartMiniArc to check that it is listening, and the second // time in UpgradeArc to send props.
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc index dca90c7..19769b3 100644 --- a/components/bookmarks/browser/bookmark_utils.cc +++ b/components/bookmarks/browser/bookmark_utils.cc
@@ -448,6 +448,9 @@ true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref( + prefs::kShowReadingListInBookmarkBar, true, + user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); + registry->RegisterBooleanPref( prefs::kShowManagedBookmarksInBookmarkBar, true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
diff --git a/components/bookmarks/common/bookmark_pref_names.cc b/components/bookmarks/common/bookmark_pref_names.cc index 1989d89..a3202d1 100644 --- a/components/bookmarks/common/bookmark_pref_names.cc +++ b/components/bookmarks/common/bookmark_pref_names.cc
@@ -27,6 +27,10 @@ // bar. const char kShowAppsShortcutInBookmarkBar[] = "bookmark_bar.show_apps_shortcut"; +// Boolean which specifies whether the reading list is visible on the bookmark +// bar. +const char kShowReadingListInBookmarkBar[] = "bookmark_bar.show_reading_list"; + // Boolean which specifies whether the Managed Bookmarks folder is visible on // the bookmark bar. const char kShowManagedBookmarksInBookmarkBar[] =
diff --git a/components/bookmarks/common/bookmark_pref_names.h b/components/bookmarks/common/bookmark_pref_names.h index de8181a..d3e610c 100644 --- a/components/bookmarks/common/bookmark_pref_names.h +++ b/components/bookmarks/common/bookmark_pref_names.h
@@ -15,6 +15,7 @@ extern const char kManagedBookmarks[]; extern const char kManagedBookmarksFolderName[]; extern const char kShowAppsShortcutInBookmarkBar[]; +extern const char kShowReadingListInBookmarkBar[]; extern const char kShowManagedBookmarksInBookmarkBar[]; extern const char kShowBookmarkBar[];
diff --git a/components/error_page/common/alt_game_images.cc b/components/error_page/common/alt_game_images.cc index 9aa89e9..1258877 100644 --- a/components/error_page/common/alt_game_images.cc +++ b/components/error_page/common/alt_game_images.cc
@@ -4,6 +4,8 @@ #include "components/error_page/common/alt_game_images.h" +#include <cstring> + #include "base/base64.h" #include "base/base64url.h" #include "base/rand_util.h"
diff --git a/components/messages/android/BUILD.gn b/components/messages/android/BUILD.gn index 8d607a80..c1c7638 100644 --- a/components/messages/android/BUILD.gn +++ b/components/messages/android/BUILD.gn
@@ -5,8 +5,6 @@ import("//build/config/android/rules.gni") import("//chrome/android/features/android_library_factory_tmpl.gni") -# TODO(crbug.com/1163321): Decide which classes should stay in the public -# target, and probably move MessageBanner* classes to internal/. android_library("java") { sources = [ "java/src/org/chromium/components/messages/MessageBannerProperties.java",
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java index f40d6efa..df13286 100644 --- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java +++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageQueueManager.java
@@ -137,7 +137,7 @@ mMessageQueueDelegate = delegate; } - // TODO(crbug.com/1163289): Handle the case in which the scope becomes inactive when the + // TODO(crbug.com/1163290): Handle the case in which the scope becomes inactive when the // message is already running the animation. @Override public void onScopeChange(MessageScopeChange change) { @@ -228,7 +228,7 @@ static class MessageState { private static int sIdNext; - // TODO(crbug.com/1168693): add priority if necessary. + // TODO(crbug.com/1188980): add priority if necessary. public final int id; public final ScopeKey scopeKey; public final Object messageKey;
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java b/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java index 4b14219d..0bb26a7 100644 --- a/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java +++ b/components/messages/android/java/src/org/chromium/components/messages/MessageBannerProperties.java
@@ -38,7 +38,6 @@ new WritableObjectPropertyKey<>(); public static final WritableObjectPropertyKey<String> SECONDARY_ICON_CONTENT_DESCRIPTION = new WritableObjectPropertyKey<>(); - // TODO(crbug.com/1123947): remove this since on_dismissed is not a property of the view? /** * The callback invoked when the message is dismissed. DismissReason is passed through the * callback's parameter.
diff --git a/components/messages/android/message_wrapper.h b/components/messages/android/message_wrapper.h index a9aae728..7e3a51e 100644 --- a/components/messages/android/message_wrapper.h +++ b/components/messages/android/message_wrapper.h
@@ -33,9 +33,6 @@ // Methods to manipulate message properties. On Android the values are // propagated to Java and stored in |PropertyModel|. - // TODO(crbug.com/1163325): Reevaluate if propagating values to Java - // immediately is really necessary. Alternatively we could collect all the - // values in native and pass them to Java when enqueueing the message. std::u16string GetTitle(); void SetTitle(const std::u16string& title); std::u16string GetDescription();
diff --git a/components/omnibox/browser/omnibox_pedal.cc b/components/omnibox/browser/omnibox_pedal.cc index e041adb7..e677523 100644 --- a/components/omnibox/browser/omnibox_pedal.cc +++ b/components/omnibox/browser/omnibox_pedal.cc
@@ -53,6 +53,8 @@ accessibility_suffix(l10n_util::GetStringUTF16(id_accessibility_suffix)), accessibility_hint(l10n_util::GetStringUTF16(id_accessibility_hint)) {} +OmniboxPedal::LabelStrings::LabelStrings() = default; + OmniboxPedal::LabelStrings::LabelStrings(const LabelStrings&) = default; OmniboxPedal::LabelStrings::~LabelStrings() = default;
diff --git a/components/omnibox/browser/omnibox_pedal.h b/components/omnibox/browser/omnibox_pedal.h index 2462a2a8..411cb776 100644 --- a/components/omnibox/browser/omnibox_pedal.h +++ b/components/omnibox/browser/omnibox_pedal.h
@@ -44,6 +44,7 @@ int id_suggestion_contents, int id_accessibility_suffix, int id_accessibility_hint); + LabelStrings(); LabelStrings(const LabelStrings&); ~LabelStrings(); std::u16string hint;
diff --git a/components/omnibox/browser/omnibox_pedal_concepts.h b/components/omnibox/browser/omnibox_pedal_concepts.h index b718600..455b0c3c 100644 --- a/components/omnibox/browser/omnibox_pedal_concepts.h +++ b/components/omnibox/browser/omnibox_pedal_concepts.h
@@ -10,7 +10,7 @@ // This value is generated during Pedal concept data processing, and written // to all data files as well as the source code here to ensure synchrony. // The runtime loaded data must match this version exactly or it won't load. -constexpr int OMNIBOX_PEDAL_CONCEPTS_DATA_VERSION = 15787889; +constexpr int OMNIBOX_PEDAL_CONCEPTS_DATA_VERSION = 15789351; // Unique identifiers for Pedals, used to bind loaded data to implementations. // Also used in the Omnibox.SuggestionUsed.Pedal histogram. Do not remove or
diff --git a/components/omnibox/browser/omnibox_pedal_implementations.cc b/components/omnibox/browser/omnibox_pedal_implementations.cc index c3347fe..cf294c64 100644 --- a/components/omnibox/browser/omnibox_pedal_implementations.cc +++ b/components/omnibox/browser/omnibox_pedal_implementations.cc
@@ -219,17 +219,10 @@ // ============================================================================= -class OmniboxPedalCreateGoogleDoc : public OmniboxPedal { +class OmniboxPedalAuthRequired : public OmniboxPedal { public: - OmniboxPedalCreateGoogleDoc() - : OmniboxPedal( - OmniboxPedalId::CREATE_GOOGLE_DOC, - OmniboxPedal::LabelStrings( - IDS_OMNIBOX_PEDAL_CREATE_GOOGLE_DOC_HINT, - IDS_OMNIBOX_PEDAL_CREATE_GOOGLE_DOC_SUGGESTION_CONTENTS, - IDS_ACC_OMNIBOX_PEDAL_CREATE_GOOGLE_DOC_SUFFIX, - IDS_ACC_OMNIBOX_PEDAL_CREATE_GOOGLE_DOC), - GURL()) {} + explicit OmniboxPedalAuthRequired(OmniboxPedalId id) + : OmniboxPedal(id, OmniboxPedal::LabelStrings(), GURL()) {} bool IsReadyToTrigger( const AutocompleteInput& input, const AutocompleteProviderClient& client) const override { @@ -239,6 +232,89 @@ // ============================================================================= +class OmniboxPedalCreateGoogleDoc : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleDoc() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_DOC) {} +}; + +// ============================================================================= + +class OmniboxPedalCreateGoogleSheet : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleSheet() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_SHEET) {} +}; + +// ============================================================================= + +class OmniboxPedalCreateGoogleSlide : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleSlide() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_SLIDE) {} +}; + +// ============================================================================= + +class OmniboxPedalCreateGoogleCalendarEvent : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleCalendarEvent() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_CALENDAR_EVENT) { + } +}; + +// ============================================================================= + +class OmniboxPedalCreateGoogleSite : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleSite() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_SITE) {} +}; + +// ============================================================================= + +class OmniboxPedalCreateGoogleKeepNote : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleKeepNote() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_KEEP_NOTE) {} +}; + +// ============================================================================= + +class OmniboxPedalCreateGoogleForm : public OmniboxPedalAuthRequired { + public: + OmniboxPedalCreateGoogleForm() + : OmniboxPedalAuthRequired(OmniboxPedalId::CREATE_GOOGLE_FORM) {} +}; + +// ============================================================================= + +class OmniboxPedalSeeChromeTips : public OmniboxPedal { + public: + OmniboxPedalSeeChromeTips() + : OmniboxPedal(OmniboxPedalId::SEE_CHROME_TIPS, + OmniboxPedal::LabelStrings(), + GURL()) {} +}; + +// ============================================================================= + +class OmniboxPedalManageGoogleAccount : public OmniboxPedalAuthRequired { + public: + OmniboxPedalManageGoogleAccount() + : OmniboxPedalAuthRequired(OmniboxPedalId::MANAGE_GOOGLE_ACCOUNT) {} +}; + +// ============================================================================= + +class OmniboxPedalChangeGooglePassword : public OmniboxPedalAuthRequired { + public: + OmniboxPedalChangeGooglePassword() + : OmniboxPedalAuthRequired(OmniboxPedalId::CHANGE_GOOGLE_PASSWORD) {} +}; + +// ============================================================================= + std::unordered_map<OmniboxPedalId, std::unique_ptr<OmniboxPedal>> GetPedalImplementations() { std::unordered_map<OmniboxPedalId, std::unique_ptr<OmniboxPedal>> pedals; @@ -262,6 +338,21 @@ add(OmniboxPedalId::MANAGE_SITE_SETTINGS, new OmniboxPedalManageSiteSettings()); add(OmniboxPedalId::CREATE_GOOGLE_DOC, new OmniboxPedalCreateGoogleDoc()); + add(OmniboxPedalId::CREATE_GOOGLE_SHEET, + new OmniboxPedalCreateGoogleSheet()); + add(OmniboxPedalId::CREATE_GOOGLE_SLIDE, + new OmniboxPedalCreateGoogleSlide()); + add(OmniboxPedalId::CREATE_GOOGLE_CALENDAR_EVENT, + new OmniboxPedalCreateGoogleCalendarEvent()); + add(OmniboxPedalId::CREATE_GOOGLE_SITE, new OmniboxPedalCreateGoogleSite()); + add(OmniboxPedalId::CREATE_GOOGLE_KEEP_NOTE, + new OmniboxPedalCreateGoogleKeepNote()); + add(OmniboxPedalId::CREATE_GOOGLE_FORM, new OmniboxPedalCreateGoogleForm()); + add(OmniboxPedalId::SEE_CHROME_TIPS, new OmniboxPedalSeeChromeTips()); + add(OmniboxPedalId::MANAGE_GOOGLE_ACCOUNT, + new OmniboxPedalManageGoogleAccount()); + add(OmniboxPedalId::CHANGE_GOOGLE_PASSWORD, + new OmniboxPedalChangeGooglePassword()); } return pedals; }
diff --git a/components/omnibox/browser/omnibox_pedal_implementations_unittest.cc b/components/omnibox/browser/omnibox_pedal_implementations_unittest.cc index fbbf33e..0b38a78 100644 --- a/components/omnibox/browser/omnibox_pedal_implementations_unittest.cc +++ b/components/omnibox/browser/omnibox_pedal_implementations_unittest.cc
@@ -13842,6 +13842,3334 @@ "workspace start document", }, + // ID#14 + { + // Generated suggestions: + "browser create sheet", + "browser create spreadsheet", + "browser create trix", + "browser make sheet", + "browser make spreadsheet", + "browser make trix", + "browser new sheet", + "browser new spreadsheet", + "browser new trix", + "browser open sheet", + "browser open spreadsheet", + "browser open trix", + "browser sheet create", + "browser sheet make", + "browser sheet new", + "browser sheet open", + "browser sheet start", + "browser spreadsheet create", + "browser spreadsheet make", + "browser spreadsheet new", + "browser spreadsheet open", + "browser spreadsheet start", + "browser start sheet", + "browser start spreadsheet", + "browser start trix", + "browser trix create", + "browser trix make", + "browser trix new", + "browser trix open", + "browser trix start", + "chrome create sheet", + "chrome create spreadsheet", + "chrome create trix", + "chrome make sheet", + "chrome make spreadsheet", + "chrome make trix", + "chrome new sheet", + "chrome new spreadsheet", + "chrome new trix", + "chrome open sheet", + "chrome open spreadsheet", + "chrome open trix", + "chrome sheet create", + "chrome sheet make", + "chrome sheet new", + "chrome sheet open", + "chrome sheet start", + "chrome spreadsheet create", + "chrome spreadsheet make", + "chrome spreadsheet new", + "chrome spreadsheet open", + "chrome spreadsheet start", + "chrome start sheet", + "chrome start spreadsheet", + "chrome start trix", + "chrome trix create", + "chrome trix make", + "chrome trix new", + "chrome trix open", + "chrome trix start", + "create browser sheet", + "create browser spreadsheet", + "create browser trix", + "create chrome sheet", + "create chrome spreadsheet", + "create chrome trix", + "create g suite sheet", + "create g suite spreadsheet", + "create g suite trix", + "create google chrome sheet", + "create google chrome spreadsheet", + "create google chrome trix", + "create google sheet", + "create google spreadsheet", + "create google trix", + "create google workspace sheet", + "create google workspace spreadsheet", + "create google workspace trix", + "create sheet browser", + "create sheet chrome", + "create sheet g suite", + "create sheet google", + "create sheet google chrome", + "create sheet google workspace", + "create sheet workspace", + "create spreadsheet browser", + "create spreadsheet chrome", + "create spreadsheet g suite", + "create spreadsheet google", + "create spreadsheet google chrome", + "create spreadsheet google workspace", + "create spreadsheet workspace", + "create trix browser", + "create trix chrome", + "create trix g suite", + "create trix google", + "create trix google chrome", + "create trix google workspace", + "create trix workspace", + "create workspace sheet", + "create workspace spreadsheet", + "create workspace trix", + "g suite create sheet", + "g suite create spreadsheet", + "g suite create trix", + "g suite make sheet", + "g suite make spreadsheet", + "g suite make trix", + "g suite new sheet", + "g suite new spreadsheet", + "g suite new trix", + "g suite open sheet", + "g suite open spreadsheet", + "g suite open trix", + "g suite sheet create", + "g suite sheet make", + "g suite sheet new", + "g suite sheet open", + "g suite sheet start", + "g suite spreadsheet create", + "g suite spreadsheet make", + "g suite spreadsheet new", + "g suite spreadsheet open", + "g suite spreadsheet start", + "g suite start sheet", + "g suite start spreadsheet", + "g suite start trix", + "g suite trix create", + "g suite trix make", + "g suite trix new", + "g suite trix open", + "g suite trix start", + "google chrome create sheet", + "google chrome create spreadsheet", + "google chrome create trix", + "google chrome make sheet", + "google chrome make spreadsheet", + "google chrome make trix", + "google chrome new sheet", + "google chrome new spreadsheet", + "google chrome new trix", + "google chrome open sheet", + "google chrome open spreadsheet", + "google chrome open trix", + "google chrome sheet create", + "google chrome sheet make", + "google chrome sheet new", + "google chrome sheet open", + "google chrome sheet start", + "google chrome spreadsheet create", + "google chrome spreadsheet make", + "google chrome spreadsheet new", + "google chrome spreadsheet open", + "google chrome spreadsheet start", + "google chrome start sheet", + "google chrome start spreadsheet", + "google chrome start trix", + "google chrome trix create", + "google chrome trix make", + "google chrome trix new", + "google chrome trix open", + "google chrome trix start", + "google create sheet", + "google create spreadsheet", + "google create trix", + "google make sheet", + "google make spreadsheet", + "google make trix", + "google new sheet", + "google new spreadsheet", + "google new trix", + "google open sheet", + "google open spreadsheet", + "google open trix", + "google sheet create", + "google sheet make", + "google sheet new", + "google sheet open", + "google sheet start", + "google spreadsheet create", + "google spreadsheet make", + "google spreadsheet new", + "google spreadsheet open", + "google spreadsheet start", + "google start sheet", + "google start spreadsheet", + "google start trix", + "google trix create", + "google trix make", + "google trix new", + "google trix open", + "google trix start", + "google workspace create sheet", + "google workspace create spreadsheet", + "google workspace create trix", + "google workspace make sheet", + "google workspace make spreadsheet", + "google workspace make trix", + "google workspace new sheet", + "google workspace new spreadsheet", + "google workspace new trix", + "google workspace open sheet", + "google workspace open spreadsheet", + "google workspace open trix", + "google workspace sheet create", + "google workspace sheet make", + "google workspace sheet new", + "google workspace sheet open", + "google workspace sheet start", + "google workspace spreadsheet create", + "google workspace spreadsheet make", + "google workspace spreadsheet new", + "google workspace spreadsheet open", + "google workspace spreadsheet start", + "google workspace start sheet", + "google workspace start spreadsheet", + "google workspace start trix", + "google workspace trix create", + "google workspace trix make", + "google workspace trix new", + "google workspace trix open", + "google workspace trix start", + "make browser sheet", + "make browser spreadsheet", + "make browser trix", + "make chrome sheet", + "make chrome spreadsheet", + "make chrome trix", + "make g suite sheet", + "make g suite spreadsheet", + "make g suite trix", + "make google chrome sheet", + "make google chrome spreadsheet", + "make google chrome trix", + "make google sheet", + "make google spreadsheet", + "make google trix", + "make google workspace sheet", + "make google workspace spreadsheet", + "make google workspace trix", + "make sheet browser", + "make sheet chrome", + "make sheet g suite", + "make sheet google", + "make sheet google chrome", + "make sheet google workspace", + "make sheet workspace", + "make spreadsheet browser", + "make spreadsheet chrome", + "make spreadsheet g suite", + "make spreadsheet google", + "make spreadsheet google chrome", + "make spreadsheet google workspace", + "make spreadsheet workspace", + "make trix browser", + "make trix chrome", + "make trix g suite", + "make trix google", + "make trix google chrome", + "make trix google workspace", + "make trix workspace", + "make workspace sheet", + "make workspace spreadsheet", + "make workspace trix", + "new browser sheet", + "new browser spreadsheet", + "new browser trix", + "new chrome sheet", + "new chrome spreadsheet", + "new chrome trix", + "new g suite sheet", + "new g suite spreadsheet", + "new g suite trix", + "new google chrome sheet", + "new google chrome spreadsheet", + "new google chrome trix", + "new google sheet", + "new google spreadsheet", + "new google trix", + "new google workspace sheet", + "new google workspace spreadsheet", + "new google workspace trix", + "new sheet browser", + "new sheet chrome", + "new sheet g suite", + "new sheet google", + "new sheet google chrome", + "new sheet google workspace", + "new sheet workspace", + "new spreadsheet browser", + "new spreadsheet chrome", + "new spreadsheet g suite", + "new spreadsheet google", + "new spreadsheet google chrome", + "new spreadsheet google workspace", + "new spreadsheet workspace", + "new trix browser", + "new trix chrome", + "new trix g suite", + "new trix google", + "new trix google chrome", + "new trix google workspace", + "new trix workspace", + "new workspace sheet", + "new workspace spreadsheet", + "new workspace trix", + "open browser sheet", + "open browser spreadsheet", + "open browser trix", + "open chrome sheet", + "open chrome spreadsheet", + "open chrome trix", + "open g suite sheet", + "open g suite spreadsheet", + "open g suite trix", + "open google chrome sheet", + "open google chrome spreadsheet", + "open google chrome trix", + "open google sheet", + "open google spreadsheet", + "open google trix", + "open google workspace sheet", + "open google workspace spreadsheet", + "open google workspace trix", + "open sheet browser", + "open sheet chrome", + "open sheet g suite", + "open sheet google", + "open sheet google chrome", + "open sheet google workspace", + "open sheet workspace", + "open spreadsheet browser", + "open spreadsheet chrome", + "open spreadsheet g suite", + "open spreadsheet google", + "open spreadsheet google chrome", + "open spreadsheet google workspace", + "open spreadsheet workspace", + "open trix browser", + "open trix chrome", + "open trix g suite", + "open trix google", + "open trix google chrome", + "open trix google workspace", + "open trix workspace", + "open workspace sheet", + "open workspace spreadsheet", + "open workspace trix", + "sheet browser create", + "sheet browser make", + "sheet browser new", + "sheet browser open", + "sheet browser start", + "sheet chrome create", + "sheet chrome make", + "sheet chrome new", + "sheet chrome open", + "sheet chrome start", + "sheet create browser", + "sheet create chrome", + "sheet create g suite", + "sheet create google", + "sheet create google chrome", + "sheet create google workspace", + "sheet create workspace", + "sheet g suite create", + "sheet g suite make", + "sheet g suite new", + "sheet g suite open", + "sheet g suite start", + "sheet google chrome create", + "sheet google chrome make", + "sheet google chrome new", + "sheet google chrome open", + "sheet google chrome start", + "sheet google create", + "sheet google make", + "sheet google new", + "sheet google open", + "sheet google start", + "sheet google workspace create", + "sheet google workspace make", + "sheet google workspace new", + "sheet google workspace open", + "sheet google workspace start", + "sheet make browser", + "sheet make chrome", + "sheet make g suite", + "sheet make google", + "sheet make google chrome", + "sheet make google workspace", + "sheet make workspace", + "sheet new browser", + "sheet new chrome", + "sheet new g suite", + "sheet new google", + "sheet new google chrome", + "sheet new google workspace", + "sheet new workspace", + "sheet open browser", + "sheet open chrome", + "sheet open g suite", + "sheet open google", + "sheet open google chrome", + "sheet open google workspace", + "sheet open workspace", + "sheet start browser", + "sheet start chrome", + "sheet start g suite", + "sheet start google", + "sheet start google chrome", + "sheet start google workspace", + "sheet start workspace", + "sheet workspace create", + "sheet workspace make", + "sheet workspace new", + "sheet workspace open", + "sheet workspace start", + "spreadsheet browser create", + "spreadsheet browser make", + "spreadsheet browser new", + "spreadsheet browser open", + "spreadsheet browser start", + "spreadsheet chrome create", + "spreadsheet chrome make", + "spreadsheet chrome new", + "spreadsheet chrome open", + "spreadsheet chrome start", + "spreadsheet create browser", + "spreadsheet create chrome", + "spreadsheet create g suite", + "spreadsheet create google", + "spreadsheet create google chrome", + "spreadsheet create google workspace", + "spreadsheet create workspace", + "spreadsheet g suite create", + "spreadsheet g suite make", + "spreadsheet g suite new", + "spreadsheet g suite open", + "spreadsheet g suite start", + "spreadsheet google chrome create", + "spreadsheet google chrome make", + "spreadsheet google chrome new", + "spreadsheet google chrome open", + "spreadsheet google chrome start", + "spreadsheet google create", + "spreadsheet google make", + "spreadsheet google new", + "spreadsheet google open", + "spreadsheet google start", + "spreadsheet google workspace create", + "spreadsheet google workspace make", + "spreadsheet google workspace new", + "spreadsheet google workspace open", + "spreadsheet google workspace start", + "spreadsheet make browser", + "spreadsheet make chrome", + "spreadsheet make g suite", + "spreadsheet make google", + "spreadsheet make google chrome", + "spreadsheet make google workspace", + "spreadsheet make workspace", + "spreadsheet new browser", + "spreadsheet new chrome", + "spreadsheet new g suite", + "spreadsheet new google", + "spreadsheet new google chrome", + "spreadsheet new google workspace", + "spreadsheet new workspace", + "spreadsheet open browser", + "spreadsheet open chrome", + "spreadsheet open g suite", + "spreadsheet open google", + "spreadsheet open google chrome", + "spreadsheet open google workspace", + "spreadsheet open workspace", + "spreadsheet start browser", + "spreadsheet start chrome", + "spreadsheet start g suite", + "spreadsheet start google", + "spreadsheet start google chrome", + "spreadsheet start google workspace", + "spreadsheet start workspace", + "spreadsheet workspace create", + "spreadsheet workspace make", + "spreadsheet workspace new", + "spreadsheet workspace open", + "spreadsheet workspace start", + "start browser sheet", + "start browser spreadsheet", + "start browser trix", + "start chrome sheet", + "start chrome spreadsheet", + "start chrome trix", + "start g suite sheet", + "start g suite spreadsheet", + "start g suite trix", + "start google chrome sheet", + "start google chrome spreadsheet", + "start google chrome trix", + "start google sheet", + "start google spreadsheet", + "start google trix", + "start google workspace sheet", + "start google workspace spreadsheet", + "start google workspace trix", + "start sheet browser", + "start sheet chrome", + "start sheet g suite", + "start sheet google", + "start sheet google chrome", + "start sheet google workspace", + "start sheet workspace", + "start spreadsheet browser", + "start spreadsheet chrome", + "start spreadsheet g suite", + "start spreadsheet google", + "start spreadsheet google chrome", + "start spreadsheet google workspace", + "start spreadsheet workspace", + "start trix browser", + "start trix chrome", + "start trix g suite", + "start trix google", + "start trix google chrome", + "start trix google workspace", + "start trix workspace", + "start workspace sheet", + "start workspace spreadsheet", + "start workspace trix", + "trix browser create", + "trix browser make", + "trix browser new", + "trix browser open", + "trix browser start", + "trix chrome create", + "trix chrome make", + "trix chrome new", + "trix chrome open", + "trix chrome start", + "trix create browser", + "trix create chrome", + "trix create g suite", + "trix create google", + "trix create google chrome", + "trix create google workspace", + "trix create workspace", + "trix g suite create", + "trix g suite make", + "trix g suite new", + "trix g suite open", + "trix g suite start", + "trix google chrome create", + "trix google chrome make", + "trix google chrome new", + "trix google chrome open", + "trix google chrome start", + "trix google create", + "trix google make", + "trix google new", + "trix google open", + "trix google start", + "trix google workspace create", + "trix google workspace make", + "trix google workspace new", + "trix google workspace open", + "trix google workspace start", + "trix make browser", + "trix make chrome", + "trix make g suite", + "trix make google", + "trix make google chrome", + "trix make google workspace", + "trix make workspace", + "trix new browser", + "trix new chrome", + "trix new g suite", + "trix new google", + "trix new google chrome", + "trix new google workspace", + "trix new workspace", + "trix open browser", + "trix open chrome", + "trix open g suite", + "trix open google", + "trix open google chrome", + "trix open google workspace", + "trix open workspace", + "trix start browser", + "trix start chrome", + "trix start g suite", + "trix start google", + "trix start google chrome", + "trix start google workspace", + "trix start workspace", + "trix workspace create", + "trix workspace make", + "trix workspace new", + "trix workspace open", + "trix workspace start", + "workspace create sheet", + "workspace create spreadsheet", + "workspace create trix", + "workspace make sheet", + "workspace make spreadsheet", + "workspace make trix", + "workspace new sheet", + "workspace new spreadsheet", + "workspace new trix", + "workspace open sheet", + "workspace open spreadsheet", + "workspace open trix", + "workspace sheet create", + "workspace sheet make", + "workspace sheet new", + "workspace sheet open", + "workspace sheet start", + "workspace spreadsheet create", + "workspace spreadsheet make", + "workspace spreadsheet new", + "workspace spreadsheet open", + "workspace spreadsheet start", + "workspace start sheet", + "workspace start spreadsheet", + "workspace start trix", + "workspace trix create", + "workspace trix make", + "workspace trix new", + "workspace trix open", + "workspace trix start", + }, + + // ID#15 + { + // Generated suggestions: + "browser create deck", + "browser create presentation", + "browser create preso", + "browser create slide", + "browser deck create", + "browser deck make", + "browser deck new", + "browser deck open", + "browser deck start", + "browser make deck", + "browser make presentation", + "browser make preso", + "browser make slide", + "browser new deck", + "browser new presentation", + "browser new preso", + "browser new slide", + "browser open deck", + "browser open presentation", + "browser open preso", + "browser open slide", + "browser presentation create", + "browser presentation make", + "browser presentation new", + "browser presentation open", + "browser presentation start", + "browser preso create", + "browser preso make", + "browser preso new", + "browser preso open", + "browser preso start", + "browser slide create", + "browser slide make", + "browser slide new", + "browser slide open", + "browser slide start", + "browser start deck", + "browser start presentation", + "browser start preso", + "browser start slide", + "chrome create deck", + "chrome create presentation", + "chrome create preso", + "chrome create slide", + "chrome deck create", + "chrome deck make", + "chrome deck new", + "chrome deck open", + "chrome deck start", + "chrome make deck", + "chrome make presentation", + "chrome make preso", + "chrome make slide", + "chrome new deck", + "chrome new presentation", + "chrome new preso", + "chrome new slide", + "chrome open deck", + "chrome open presentation", + "chrome open preso", + "chrome open slide", + "chrome presentation create", + "chrome presentation make", + "chrome presentation new", + "chrome presentation open", + "chrome presentation start", + "chrome preso create", + "chrome preso make", + "chrome preso new", + "chrome preso open", + "chrome preso start", + "chrome slide create", + "chrome slide make", + "chrome slide new", + "chrome slide open", + "chrome slide start", + "chrome start deck", + "chrome start presentation", + "chrome start preso", + "chrome start slide", + "create browser deck", + "create browser presentation", + "create browser preso", + "create browser slide", + "create chrome deck", + "create chrome presentation", + "create chrome preso", + "create chrome slide", + "create deck browser", + "create deck chrome", + "create deck g suite", + "create deck google", + "create deck workspace", + "create g suite deck", + "create g suite presentation", + "create g suite preso", + "create g suite slide", + "create google deck", + "create google presentation", + "create google preso", + "create google slide", + "create presentation browser", + "create presentation chrome", + "create presentation g suite", + "create presentation google", + "create presentation workspace", + "create preso browser", + "create preso chrome", + "create preso g suite", + "create preso google", + "create preso workspace", + "create slide browser", + "create slide chrome", + "create slide g suite", + "create slide google", + "create slide workspace", + "create workspace deck", + "create workspace presentation", + "create workspace preso", + "create workspace slide", + "deck browser create", + "deck browser make", + "deck browser new", + "deck browser open", + "deck browser start", + "deck chrome create", + "deck chrome make", + "deck chrome new", + "deck chrome open", + "deck chrome start", + "deck create browser", + "deck create chrome", + "deck create g suite", + "deck create google", + "deck create workspace", + "deck g suite create", + "deck g suite make", + "deck g suite new", + "deck g suite open", + "deck g suite start", + "deck google create", + "deck google make", + "deck google new", + "deck google open", + "deck google start", + "deck make browser", + "deck make chrome", + "deck make g suite", + "deck make google", + "deck make workspace", + "deck new browser", + "deck new chrome", + "deck new g suite", + "deck new google", + "deck new workspace", + "deck open browser", + "deck open chrome", + "deck open g suite", + "deck open google", + "deck open workspace", + "deck start browser", + "deck start chrome", + "deck start g suite", + "deck start google", + "deck start workspace", + "deck workspace create", + "deck workspace make", + "deck workspace new", + "deck workspace open", + "deck workspace start", + "g suite create deck", + "g suite create presentation", + "g suite create preso", + "g suite create slide", + "g suite deck create", + "g suite deck make", + "g suite deck new", + "g suite deck open", + "g suite deck start", + "g suite make deck", + "g suite make presentation", + "g suite make preso", + "g suite make slide", + "g suite new deck", + "g suite new presentation", + "g suite new preso", + "g suite new slide", + "g suite open deck", + "g suite open presentation", + "g suite open preso", + "g suite open slide", + "g suite presentation create", + "g suite presentation make", + "g suite presentation new", + "g suite presentation open", + "g suite presentation start", + "g suite preso create", + "g suite preso make", + "g suite preso new", + "g suite preso open", + "g suite preso start", + "g suite slide create", + "g suite slide make", + "g suite slide new", + "g suite slide open", + "g suite slide start", + "g suite start deck", + "g suite start presentation", + "g suite start preso", + "g suite start slide", + "google create deck", + "google create presentation", + "google create preso", + "google create slide", + "google deck create", + "google deck make", + "google deck new", + "google deck open", + "google deck start", + "google make deck", + "google make presentation", + "google make preso", + "google make slide", + "google new deck", + "google new presentation", + "google new preso", + "google new slide", + "google open deck", + "google open presentation", + "google open preso", + "google open slide", + "google presentation create", + "google presentation make", + "google presentation new", + "google presentation open", + "google presentation start", + "google preso create", + "google preso make", + "google preso new", + "google preso open", + "google preso start", + "google slide create", + "google slide make", + "google slide new", + "google slide open", + "google slide start", + "google start deck", + "google start presentation", + "google start preso", + "google start slide", + "make browser deck", + "make browser presentation", + "make browser preso", + "make browser slide", + "make chrome deck", + "make chrome presentation", + "make chrome preso", + "make chrome slide", + "make deck browser", + "make deck chrome", + "make deck g suite", + "make deck google", + "make deck workspace", + "make g suite deck", + "make g suite presentation", + "make g suite preso", + "make g suite slide", + "make google deck", + "make google presentation", + "make google preso", + "make google slide", + "make presentation browser", + "make presentation chrome", + "make presentation g suite", + "make presentation google", + "make presentation workspace", + "make preso browser", + "make preso chrome", + "make preso g suite", + "make preso google", + "make preso workspace", + "make slide browser", + "make slide chrome", + "make slide g suite", + "make slide google", + "make slide workspace", + "make workspace deck", + "make workspace presentation", + "make workspace preso", + "make workspace slide", + "new browser deck", + "new browser presentation", + "new browser preso", + "new browser slide", + "new chrome deck", + "new chrome presentation", + "new chrome preso", + "new chrome slide", + "new deck browser", + "new deck chrome", + "new deck g suite", + "new deck google", + "new deck workspace", + "new g suite deck", + "new g suite presentation", + "new g suite preso", + "new g suite slide", + "new google deck", + "new google presentation", + "new google preso", + "new google slide", + "new presentation browser", + "new presentation chrome", + "new presentation g suite", + "new presentation google", + "new presentation workspace", + "new preso browser", + "new preso chrome", + "new preso g suite", + "new preso google", + "new preso workspace", + "new slide browser", + "new slide chrome", + "new slide g suite", + "new slide google", + "new slide workspace", + "new workspace deck", + "new workspace presentation", + "new workspace preso", + "new workspace slide", + "open browser deck", + "open browser presentation", + "open browser preso", + "open browser slide", + "open chrome deck", + "open chrome presentation", + "open chrome preso", + "open chrome slide", + "open deck browser", + "open deck chrome", + "open deck g suite", + "open deck google", + "open deck workspace", + "open g suite deck", + "open g suite presentation", + "open g suite preso", + "open g suite slide", + "open google deck", + "open google presentation", + "open google preso", + "open google slide", + "open presentation browser", + "open presentation chrome", + "open presentation g suite", + "open presentation google", + "open presentation workspace", + "open preso browser", + "open preso chrome", + "open preso g suite", + "open preso google", + "open preso workspace", + "open slide browser", + "open slide chrome", + "open slide g suite", + "open slide google", + "open slide workspace", + "open workspace deck", + "open workspace presentation", + "open workspace preso", + "open workspace slide", + "presentation browser create", + "presentation browser make", + "presentation browser new", + "presentation browser open", + "presentation browser start", + "presentation chrome create", + "presentation chrome make", + "presentation chrome new", + "presentation chrome open", + "presentation chrome start", + "presentation create browser", + "presentation create chrome", + "presentation create g suite", + "presentation create google", + "presentation create workspace", + "presentation g suite create", + "presentation g suite make", + "presentation g suite new", + "presentation g suite open", + "presentation g suite start", + "presentation google create", + "presentation google make", + "presentation google new", + "presentation google open", + "presentation google start", + "presentation make browser", + "presentation make chrome", + "presentation make g suite", + "presentation make google", + "presentation make workspace", + "presentation new browser", + "presentation new chrome", + "presentation new g suite", + "presentation new google", + "presentation new workspace", + "presentation open browser", + "presentation open chrome", + "presentation open g suite", + "presentation open google", + "presentation open workspace", + "presentation start browser", + "presentation start chrome", + "presentation start g suite", + "presentation start google", + "presentation start workspace", + "presentation workspace create", + "presentation workspace make", + "presentation workspace new", + "presentation workspace open", + "presentation workspace start", + "preso browser create", + "preso browser make", + "preso browser new", + "preso browser open", + "preso browser start", + "preso chrome create", + "preso chrome make", + "preso chrome new", + "preso chrome open", + "preso chrome start", + "preso create browser", + "preso create chrome", + "preso create g suite", + "preso create google", + "preso create workspace", + "preso g suite create", + "preso g suite make", + "preso g suite new", + "preso g suite open", + "preso g suite start", + "preso google create", + "preso google make", + "preso google new", + "preso google open", + "preso google start", + "preso make browser", + "preso make chrome", + "preso make g suite", + "preso make google", + "preso make workspace", + "preso new browser", + "preso new chrome", + "preso new g suite", + "preso new google", + "preso new workspace", + "preso open browser", + "preso open chrome", + "preso open g suite", + "preso open google", + "preso open workspace", + "preso start browser", + "preso start chrome", + "preso start g suite", + "preso start google", + "preso start workspace", + "preso workspace create", + "preso workspace make", + "preso workspace new", + "preso workspace open", + "preso workspace start", + "slide browser create", + "slide browser make", + "slide browser new", + "slide browser open", + "slide browser start", + "slide chrome create", + "slide chrome make", + "slide chrome new", + "slide chrome open", + "slide chrome start", + "slide create browser", + "slide create chrome", + "slide create g suite", + "slide create google", + "slide create workspace", + "slide g suite create", + "slide g suite make", + "slide g suite new", + "slide g suite open", + "slide g suite start", + "slide google create", + "slide google make", + "slide google new", + "slide google open", + "slide google start", + "slide make browser", + "slide make chrome", + "slide make g suite", + "slide make google", + "slide make workspace", + "slide new browser", + "slide new chrome", + "slide new g suite", + "slide new google", + "slide new workspace", + "slide open browser", + "slide open chrome", + "slide open g suite", + "slide open google", + "slide open workspace", + "slide start browser", + "slide start chrome", + "slide start g suite", + "slide start google", + "slide start workspace", + "slide workspace create", + "slide workspace make", + "slide workspace new", + "slide workspace open", + "slide workspace start", + "start browser deck", + "start browser presentation", + "start browser preso", + "start browser slide", + "start chrome deck", + "start chrome presentation", + "start chrome preso", + "start chrome slide", + "start deck browser", + "start deck chrome", + "start deck g suite", + "start deck google", + "start deck workspace", + "start g suite deck", + "start g suite presentation", + "start g suite preso", + "start g suite slide", + "start google deck", + "start google presentation", + "start google preso", + "start google slide", + "start presentation browser", + "start presentation chrome", + "start presentation g suite", + "start presentation google", + "start presentation workspace", + "start preso browser", + "start preso chrome", + "start preso g suite", + "start preso google", + "start preso workspace", + "start slide browser", + "start slide chrome", + "start slide g suite", + "start slide google", + "start slide workspace", + "start workspace deck", + "start workspace presentation", + "start workspace preso", + "start workspace slide", + "workspace create deck", + "workspace create presentation", + "workspace create preso", + "workspace create slide", + "workspace deck create", + "workspace deck make", + "workspace deck new", + "workspace deck open", + "workspace deck start", + "workspace make deck", + "workspace make presentation", + "workspace make preso", + "workspace make slide", + "workspace new deck", + "workspace new presentation", + "workspace new preso", + "workspace new slide", + "workspace open deck", + "workspace open presentation", + "workspace open preso", + "workspace open slide", + "workspace presentation create", + "workspace presentation make", + "workspace presentation new", + "workspace presentation open", + "workspace presentation start", + "workspace preso create", + "workspace preso make", + "workspace preso new", + "workspace preso open", + "workspace preso start", + "workspace slide create", + "workspace slide make", + "workspace slide new", + "workspace slide open", + "workspace slide start", + "workspace start deck", + "workspace start presentation", + "workspace start preso", + "workspace start slide", + }, + + // ID#16 + { + // Generated suggestions: + "add browser event", + "add browser invite", + "add browser meeting", + "add cal event", + "add cal invite", + "add cal meeting", + "add calendar event", + "add calendar invite", + "add calendar meeting", + "add chrome event", + "add chrome invite", + "add chrome meeting", + "add event browser", + "add event cal", + "add event calendar", + "add event chrome", + "add event g suite", + "add event google", + "add event workspace", + "add g suite event", + "add g suite invite", + "add g suite meeting", + "add google event", + "add google invite", + "add google meeting", + "add invite browser", + "add invite cal", + "add invite calendar", + "add invite chrome", + "add invite g suite", + "add invite google", + "add invite workspace", + "add meeting browser", + "add meeting cal", + "add meeting calendar", + "add meeting chrome", + "add meeting g suite", + "add meeting google", + "add meeting workspace", + "add workspace event", + "add workspace invite", + "add workspace meeting", + "browser add event", + "browser add invite", + "browser add meeting", + "browser create event", + "browser create invite", + "browser create meeting", + "browser event add", + "browser event create", + "browser event make", + "browser event new", + "browser event open", + "browser event schedule", + "browser event start", + "browser invite add", + "browser invite create", + "browser invite make", + "browser invite new", + "browser invite open", + "browser invite schedule", + "browser invite start", + "browser make event", + "browser make invite", + "browser make meeting", + "browser meeting add", + "browser meeting create", + "browser meeting make", + "browser meeting new", + "browser meeting open", + "browser meeting schedule", + "browser meeting start", + "browser new event", + "browser new invite", + "browser new meeting", + "browser open event", + "browser open invite", + "browser open meeting", + "browser schedule event", + "browser schedule invite", + "browser schedule meeting", + "browser start event", + "browser start invite", + "browser start meeting", + "cal add event", + "cal add invite", + "cal add meeting", + "cal create event", + "cal create invite", + "cal create meeting", + "cal event add", + "cal event create", + "cal event make", + "cal event new", + "cal event open", + "cal event schedule", + "cal event start", + "cal invite add", + "cal invite create", + "cal invite make", + "cal invite new", + "cal invite open", + "cal invite schedule", + "cal invite start", + "cal make event", + "cal make invite", + "cal make meeting", + "cal meeting add", + "cal meeting create", + "cal meeting make", + "cal meeting new", + "cal meeting open", + "cal meeting schedule", + "cal meeting start", + "cal new event", + "cal new invite", + "cal new meeting", + "cal open event", + "cal open invite", + "cal open meeting", + "cal schedule event", + "cal schedule invite", + "cal schedule meeting", + "cal start event", + "cal start invite", + "cal start meeting", + "calendar add event", + "calendar add invite", + "calendar add meeting", + "calendar create event", + "calendar create invite", + "calendar create meeting", + "calendar event add", + "calendar event create", + "calendar event make", + "calendar event new", + "calendar event open", + "calendar event schedule", + "calendar event start", + "calendar invite add", + "calendar invite create", + "calendar invite make", + "calendar invite new", + "calendar invite open", + "calendar invite schedule", + "calendar invite start", + "calendar make event", + "calendar make invite", + "calendar make meeting", + "calendar meeting add", + "calendar meeting create", + "calendar meeting make", + "calendar meeting new", + "calendar meeting open", + "calendar meeting schedule", + "calendar meeting start", + "calendar new event", + "calendar new invite", + "calendar new meeting", + "calendar open event", + "calendar open invite", + "calendar open meeting", + "calendar schedule event", + "calendar schedule invite", + "calendar schedule meeting", + "calendar start event", + "calendar start invite", + "calendar start meeting", + "chrome add event", + "chrome add invite", + "chrome add meeting", + "chrome create event", + "chrome create invite", + "chrome create meeting", + "chrome event add", + "chrome event create", + "chrome event make", + "chrome event new", + "chrome event open", + "chrome event schedule", + "chrome event start", + "chrome invite add", + "chrome invite create", + "chrome invite make", + "chrome invite new", + "chrome invite open", + "chrome invite schedule", + "chrome invite start", + "chrome make event", + "chrome make invite", + "chrome make meeting", + "chrome meeting add", + "chrome meeting create", + "chrome meeting make", + "chrome meeting new", + "chrome meeting open", + "chrome meeting schedule", + "chrome meeting start", + "chrome new event", + "chrome new invite", + "chrome new meeting", + "chrome open event", + "chrome open invite", + "chrome open meeting", + "chrome schedule event", + "chrome schedule invite", + "chrome schedule meeting", + "chrome start event", + "chrome start invite", + "chrome start meeting", + "create browser event", + "create browser invite", + "create browser meeting", + "create cal event", + "create cal invite", + "create cal meeting", + "create calendar event", + "create calendar invite", + "create calendar meeting", + "create chrome event", + "create chrome invite", + "create chrome meeting", + "create event browser", + "create event cal", + "create event calendar", + "create event chrome", + "create event g suite", + "create event google", + "create event workspace", + "create g suite event", + "create g suite invite", + "create g suite meeting", + "create google event", + "create google invite", + "create google meeting", + "create invite browser", + "create invite cal", + "create invite calendar", + "create invite chrome", + "create invite g suite", + "create invite google", + "create invite workspace", + "create meeting browser", + "create meeting cal", + "create meeting calendar", + "create meeting chrome", + "create meeting g suite", + "create meeting google", + "create meeting workspace", + "create workspace event", + "create workspace invite", + "create workspace meeting", + "event add browser", + "event add cal", + "event add calendar", + "event add chrome", + "event add g suite", + "event add google", + "event add workspace", + "event browser add", + "event browser create", + "event browser make", + "event browser new", + "event browser open", + "event browser schedule", + "event browser start", + "event cal add", + "event cal create", + "event cal make", + "event cal new", + "event cal open", + "event cal schedule", + "event cal start", + "event calendar add", + "event calendar create", + "event calendar make", + "event calendar new", + "event calendar open", + "event calendar schedule", + "event calendar start", + "event chrome add", + "event chrome create", + "event chrome make", + "event chrome new", + "event chrome open", + "event chrome schedule", + "event chrome start", + "event create browser", + "event create cal", + "event create calendar", + "event create chrome", + "event create g suite", + "event create google", + "event create workspace", + "event g suite add", + "event g suite create", + "event g suite make", + "event g suite new", + "event g suite open", + "event g suite schedule", + "event g suite start", + "event google add", + "event google create", + "event google make", + "event google new", + "event google open", + "event google schedule", + "event google start", + "event make browser", + "event make cal", + "event make calendar", + "event make chrome", + "event make g suite", + "event make google", + "event make workspace", + "event new browser", + "event new cal", + "event new calendar", + "event new chrome", + "event new g suite", + "event new google", + "event new workspace", + "event open browser", + "event open cal", + "event open calendar", + "event open chrome", + "event open g suite", + "event open google", + "event open workspace", + "event schedule browser", + "event schedule cal", + "event schedule calendar", + "event schedule chrome", + "event schedule g suite", + "event schedule google", + "event schedule workspace", + "event start browser", + "event start cal", + "event start calendar", + "event start chrome", + "event start g suite", + "event start google", + "event start workspace", + "event workspace add", + "event workspace create", + "event workspace make", + "event workspace new", + "event workspace open", + "event workspace schedule", + "event workspace start", + "g suite add event", + "g suite add invite", + "g suite add meeting", + "g suite create event", + "g suite create invite", + "g suite create meeting", + "g suite event add", + "g suite event create", + "g suite event make", + "g suite event new", + "g suite event open", + "g suite event schedule", + "g suite event start", + "g suite invite add", + "g suite invite create", + "g suite invite make", + "g suite invite new", + "g suite invite open", + "g suite invite schedule", + "g suite invite start", + "g suite make event", + "g suite make invite", + "g suite make meeting", + "g suite meeting add", + "g suite meeting create", + "g suite meeting make", + "g suite meeting new", + "g suite meeting open", + "g suite meeting schedule", + "g suite meeting start", + "g suite new event", + "g suite new invite", + "g suite new meeting", + "g suite open event", + "g suite open invite", + "g suite open meeting", + "g suite schedule event", + "g suite schedule invite", + "g suite schedule meeting", + "g suite start event", + "g suite start invite", + "g suite start meeting", + "google add event", + "google add invite", + "google add meeting", + "google create event", + "google create invite", + "google create meeting", + "google event add", + "google event create", + "google event make", + "google event new", + "google event open", + "google event schedule", + "google event start", + "google invite add", + "google invite create", + "google invite make", + "google invite new", + "google invite open", + "google invite schedule", + "google invite start", + "google make event", + "google make invite", + "google make meeting", + "google meeting add", + "google meeting create", + "google meeting make", + "google meeting new", + "google meeting open", + "google meeting schedule", + "google meeting start", + "google new event", + "google new invite", + "google new meeting", + "google open event", + "google open invite", + "google open meeting", + "google schedule event", + "google schedule invite", + "google schedule meeting", + "google start event", + "google start invite", + "google start meeting", + "invite add browser", + "invite add cal", + "invite add calendar", + "invite add chrome", + "invite add g suite", + "invite add google", + "invite add workspace", + "invite browser add", + "invite browser create", + "invite browser make", + "invite browser new", + "invite browser open", + "invite browser schedule", + "invite browser start", + "invite cal add", + "invite cal create", + "invite cal make", + "invite cal new", + "invite cal open", + "invite cal schedule", + "invite cal start", + "invite calendar add", + "invite calendar create", + "invite calendar make", + "invite calendar new", + "invite calendar open", + "invite calendar schedule", + "invite calendar start", + "invite chrome add", + "invite chrome create", + "invite chrome make", + "invite chrome new", + "invite chrome open", + "invite chrome schedule", + "invite chrome start", + "invite create browser", + "invite create cal", + "invite create calendar", + "invite create chrome", + "invite create g suite", + "invite create google", + "invite create workspace", + "invite g suite add", + "invite g suite create", + "invite g suite make", + "invite g suite new", + "invite g suite open", + "invite g suite schedule", + "invite g suite start", + "invite google add", + "invite google create", + "invite google make", + "invite google new", + "invite google open", + "invite google schedule", + "invite google start", + "invite make browser", + "invite make cal", + "invite make calendar", + "invite make chrome", + "invite make g suite", + "invite make google", + "invite make workspace", + "invite new browser", + "invite new cal", + "invite new calendar", + "invite new chrome", + "invite new g suite", + "invite new google", + "invite new workspace", + "invite open browser", + "invite open cal", + "invite open calendar", + "invite open chrome", + "invite open g suite", + "invite open google", + "invite open workspace", + "invite schedule browser", + "invite schedule cal", + "invite schedule calendar", + "invite schedule chrome", + "invite schedule g suite", + "invite schedule google", + "invite schedule workspace", + "invite start browser", + "invite start cal", + "invite start calendar", + "invite start chrome", + "invite start g suite", + "invite start google", + "invite start workspace", + "invite workspace add", + "invite workspace create", + "invite workspace make", + "invite workspace new", + "invite workspace open", + "invite workspace schedule", + "invite workspace start", + "make browser event", + "make browser invite", + "make browser meeting", + "make cal event", + "make cal invite", + "make cal meeting", + "make calendar event", + "make calendar invite", + "make calendar meeting", + "make chrome event", + "make chrome invite", + "make chrome meeting", + "make event browser", + "make event cal", + "make event calendar", + "make event chrome", + "make event g suite", + "make event google", + "make event workspace", + "make g suite event", + "make g suite invite", + "make g suite meeting", + "make google event", + "make google invite", + "make google meeting", + "make invite browser", + "make invite cal", + "make invite calendar", + "make invite chrome", + "make invite g suite", + "make invite google", + "make invite workspace", + "make meeting browser", + "make meeting cal", + "make meeting calendar", + "make meeting chrome", + "make meeting g suite", + "make meeting google", + "make meeting workspace", + "make workspace event", + "make workspace invite", + "make workspace meeting", + "meeting add browser", + "meeting add cal", + "meeting add calendar", + "meeting add chrome", + "meeting add g suite", + "meeting add google", + "meeting add workspace", + "meeting browser add", + "meeting browser create", + "meeting browser make", + "meeting browser new", + "meeting browser open", + "meeting browser schedule", + "meeting browser start", + "meeting cal add", + "meeting cal create", + "meeting cal make", + "meeting cal new", + "meeting cal open", + "meeting cal schedule", + "meeting cal start", + "meeting calendar add", + "meeting calendar create", + "meeting calendar make", + "meeting calendar new", + "meeting calendar open", + "meeting calendar schedule", + "meeting calendar start", + "meeting chrome add", + "meeting chrome create", + "meeting chrome make", + "meeting chrome new", + "meeting chrome open", + "meeting chrome schedule", + "meeting chrome start", + "meeting create browser", + "meeting create cal", + "meeting create calendar", + "meeting create chrome", + "meeting create g suite", + "meeting create google", + "meeting create workspace", + "meeting g suite add", + "meeting g suite create", + "meeting g suite make", + "meeting g suite new", + "meeting g suite open", + "meeting g suite schedule", + "meeting g suite start", + "meeting google add", + "meeting google create", + "meeting google make", + "meeting google new", + "meeting google open", + "meeting google schedule", + "meeting google start", + "meeting make browser", + "meeting make cal", + "meeting make calendar", + "meeting make chrome", + "meeting make g suite", + "meeting make google", + "meeting make workspace", + "meeting new browser", + "meeting new cal", + "meeting new calendar", + "meeting new chrome", + "meeting new g suite", + "meeting new google", + "meeting new workspace", + "meeting open browser", + "meeting open cal", + "meeting open calendar", + "meeting open chrome", + "meeting open g suite", + "meeting open google", + "meeting open workspace", + "meeting schedule browser", + "meeting schedule cal", + "meeting schedule calendar", + "meeting schedule chrome", + "meeting schedule g suite", + "meeting schedule google", + "meeting schedule workspace", + "meeting start browser", + "meeting start cal", + "meeting start calendar", + "meeting start chrome", + "meeting start g suite", + "meeting start google", + "meeting start workspace", + "meeting workspace add", + "meeting workspace create", + "meeting workspace make", + "meeting workspace new", + "meeting workspace open", + "meeting workspace schedule", + "meeting workspace start", + "new browser event", + "new browser invite", + "new browser meeting", + "new cal event", + "new cal invite", + "new cal meeting", + "new calendar event", + "new calendar invite", + "new calendar meeting", + "new chrome event", + "new chrome invite", + "new chrome meeting", + "new event browser", + "new event cal", + "new event calendar", + "new event chrome", + "new event g suite", + "new event google", + "new event workspace", + "new g suite event", + "new g suite invite", + "new g suite meeting", + "new google event", + "new google invite", + "new google meeting", + "new invite browser", + "new invite cal", + "new invite calendar", + "new invite chrome", + "new invite g suite", + "new invite google", + "new invite workspace", + "new meeting browser", + "new meeting cal", + "new meeting calendar", + "new meeting chrome", + "new meeting g suite", + "new meeting google", + "new meeting workspace", + "new workspace event", + "new workspace invite", + "new workspace meeting", + "open browser event", + "open browser invite", + "open browser meeting", + "open cal event", + "open cal invite", + "open cal meeting", + "open calendar event", + "open calendar invite", + "open calendar meeting", + "open chrome event", + "open chrome invite", + "open chrome meeting", + "open event browser", + "open event cal", + "open event calendar", + "open event chrome", + "open event g suite", + "open event google", + "open event workspace", + "open g suite event", + "open g suite invite", + "open g suite meeting", + "open google event", + "open google invite", + "open google meeting", + "open invite browser", + "open invite cal", + "open invite calendar", + "open invite chrome", + "open invite g suite", + "open invite google", + "open invite workspace", + "open meeting browser", + "open meeting cal", + "open meeting calendar", + "open meeting chrome", + "open meeting g suite", + "open meeting google", + "open meeting workspace", + "open workspace event", + "open workspace invite", + "open workspace meeting", + "schedule browser event", + "schedule browser invite", + "schedule browser meeting", + "schedule cal event", + "schedule cal invite", + "schedule cal meeting", + "schedule calendar event", + "schedule calendar invite", + "schedule calendar meeting", + "schedule chrome event", + "schedule chrome invite", + "schedule chrome meeting", + "schedule event browser", + "schedule event cal", + "schedule event calendar", + "schedule event chrome", + "schedule event g suite", + "schedule event google", + "schedule event workspace", + "schedule g suite event", + "schedule g suite invite", + "schedule g suite meeting", + "schedule google event", + "schedule google invite", + "schedule google meeting", + "schedule invite browser", + "schedule invite cal", + "schedule invite calendar", + "schedule invite chrome", + "schedule invite g suite", + "schedule invite google", + "schedule invite workspace", + "schedule meeting browser", + "schedule meeting cal", + "schedule meeting calendar", + "schedule meeting chrome", + "schedule meeting g suite", + "schedule meeting google", + "schedule meeting workspace", + "schedule workspace event", + "schedule workspace invite", + "schedule workspace meeting", + "start browser event", + "start browser invite", + "start browser meeting", + "start cal event", + "start cal invite", + "start cal meeting", + "start calendar event", + "start calendar invite", + "start calendar meeting", + "start chrome event", + "start chrome invite", + "start chrome meeting", + "start event browser", + "start event cal", + "start event calendar", + "start event chrome", + "start event g suite", + "start event google", + "start event workspace", + "start g suite event", + "start g suite invite", + "start g suite meeting", + "start google event", + "start google invite", + "start google meeting", + "start invite browser", + "start invite cal", + "start invite calendar", + "start invite chrome", + "start invite g suite", + "start invite google", + "start invite workspace", + "start meeting browser", + "start meeting cal", + "start meeting calendar", + "start meeting chrome", + "start meeting g suite", + "start meeting google", + "start meeting workspace", + "start workspace event", + "start workspace invite", + "start workspace meeting", + "workspace add event", + "workspace add invite", + "workspace add meeting", + "workspace create event", + "workspace create invite", + "workspace create meeting", + "workspace event add", + "workspace event create", + "workspace event make", + "workspace event new", + "workspace event open", + "workspace event schedule", + "workspace event start", + "workspace invite add", + "workspace invite create", + "workspace invite make", + "workspace invite new", + "workspace invite open", + "workspace invite schedule", + "workspace invite start", + "workspace make event", + "workspace make invite", + "workspace make meeting", + "workspace meeting add", + "workspace meeting create", + "workspace meeting make", + "workspace meeting new", + "workspace meeting open", + "workspace meeting schedule", + "workspace meeting start", + "workspace new event", + "workspace new invite", + "workspace new meeting", + "workspace open event", + "workspace open invite", + "workspace open meeting", + "workspace schedule event", + "workspace schedule invite", + "workspace schedule meeting", + "workspace start event", + "workspace start invite", + "workspace start meeting", + }, + + // ID#17 + { + // Generated suggestions: + "browser create site", + "browser create website", + "browser make site", + "browser make website", + "browser new site", + "browser new website", + "browser open site", + "browser open website", + "browser site create", + "browser site make", + "browser site new", + "browser site open", + "browser site start", + "browser start site", + "browser start website", + "browser website create", + "browser website make", + "browser website new", + "browser website open", + "browser website start", + "chrome create site", + "chrome create website", + "chrome make site", + "chrome make website", + "chrome new site", + "chrome new website", + "chrome open site", + "chrome open website", + "chrome site create", + "chrome site make", + "chrome site new", + "chrome site open", + "chrome site start", + "chrome start site", + "chrome start website", + "chrome website create", + "chrome website make", + "chrome website new", + "chrome website open", + "chrome website start", + "create browser site", + "create browser website", + "create chrome site", + "create chrome website", + "create g suite site", + "create g suite website", + "create google site", + "create google website", + "create site browser", + "create site chrome", + "create site g suite", + "create site google", + "create site workspace", + "create website browser", + "create website chrome", + "create website g suite", + "create website google", + "create website workspace", + "create workspace site", + "create workspace website", + "g suite create site", + "g suite create website", + "g suite make site", + "g suite make website", + "g suite new site", + "g suite new website", + "g suite open site", + "g suite open website", + "g suite site create", + "g suite site make", + "g suite site new", + "g suite site open", + "g suite site start", + "g suite start site", + "g suite start website", + "g suite website create", + "g suite website make", + "g suite website new", + "g suite website open", + "g suite website start", + "google create site", + "google create website", + "google make site", + "google make website", + "google new site", + "google new website", + "google open site", + "google open website", + "google site create", + "google site make", + "google site new", + "google site open", + "google site start", + "google start site", + "google start website", + "google website create", + "google website make", + "google website new", + "google website open", + "google website start", + "make browser site", + "make browser website", + "make chrome site", + "make chrome website", + "make g suite site", + "make g suite website", + "make google site", + "make google website", + "make site browser", + "make site chrome", + "make site g suite", + "make site google", + "make site workspace", + "make website browser", + "make website chrome", + "make website g suite", + "make website google", + "make website workspace", + "make workspace site", + "make workspace website", + "new browser site", + "new browser website", + "new chrome site", + "new chrome website", + "new g suite site", + "new g suite website", + "new google site", + "new google website", + "new site browser", + "new site chrome", + "new site g suite", + "new site google", + "new site workspace", + "new website browser", + "new website chrome", + "new website g suite", + "new website google", + "new website workspace", + "new workspace site", + "new workspace website", + "open browser site", + "open browser website", + "open chrome site", + "open chrome website", + "open g suite site", + "open g suite website", + "open google site", + "open google website", + "open site browser", + "open site chrome", + "open site g suite", + "open site google", + "open site workspace", + "open website browser", + "open website chrome", + "open website g suite", + "open website google", + "open website workspace", + "open workspace site", + "open workspace website", + "site browser create", + "site browser make", + "site browser new", + "site browser open", + "site browser start", + "site chrome create", + "site chrome make", + "site chrome new", + "site chrome open", + "site chrome start", + "site create browser", + "site create chrome", + "site create g suite", + "site create google", + "site create workspace", + "site g suite create", + "site g suite make", + "site g suite new", + "site g suite open", + "site g suite start", + "site google create", + "site google make", + "site google new", + "site google open", + "site google start", + "site make browser", + "site make chrome", + "site make g suite", + "site make google", + "site make workspace", + "site new browser", + "site new chrome", + "site new g suite", + "site new google", + "site new workspace", + "site open browser", + "site open chrome", + "site open g suite", + "site open google", + "site open workspace", + "site start browser", + "site start chrome", + "site start g suite", + "site start google", + "site start workspace", + "site workspace create", + "site workspace make", + "site workspace new", + "site workspace open", + "site workspace start", + "start browser site", + "start browser website", + "start chrome site", + "start chrome website", + "start g suite site", + "start g suite website", + "start google site", + "start google website", + "start site browser", + "start site chrome", + "start site g suite", + "start site google", + "start site workspace", + "start website browser", + "start website chrome", + "start website g suite", + "start website google", + "start website workspace", + "start workspace site", + "start workspace website", + "website browser create", + "website browser make", + "website browser new", + "website browser open", + "website browser start", + "website chrome create", + "website chrome make", + "website chrome new", + "website chrome open", + "website chrome start", + "website create browser", + "website create chrome", + "website create g suite", + "website create google", + "website create workspace", + "website g suite create", + "website g suite make", + "website g suite new", + "website g suite open", + "website g suite start", + "website google create", + "website google make", + "website google new", + "website google open", + "website google start", + "website make browser", + "website make chrome", + "website make g suite", + "website make google", + "website make workspace", + "website new browser", + "website new chrome", + "website new g suite", + "website new google", + "website new workspace", + "website open browser", + "website open chrome", + "website open g suite", + "website open google", + "website open workspace", + "website start browser", + "website start chrome", + "website start g suite", + "website start google", + "website start workspace", + "website workspace create", + "website workspace make", + "website workspace new", + "website workspace open", + "website workspace start", + "workspace create site", + "workspace create website", + "workspace make site", + "workspace make website", + "workspace new site", + "workspace new website", + "workspace open site", + "workspace open website", + "workspace site create", + "workspace site make", + "workspace site new", + "workspace site open", + "workspace site start", + "workspace start site", + "workspace start website", + "workspace website create", + "workspace website make", + "workspace website new", + "workspace website open", + "workspace website start", + }, + + // ID#18 + { + // Generated suggestions: + "browser create note", + "browser make note", + "browser new note", + "browser note create", + "browser note make", + "browser note new", + "browser note open", + "browser note start", + "browser open note", + "browser start note", + "chrome create note", + "chrome make note", + "chrome new note", + "chrome note create", + "chrome note make", + "chrome note new", + "chrome note open", + "chrome note start", + "chrome open note", + "chrome start note", + "create browser note", + "create chrome note", + "create g suite note", + "create google note", + "create keep note", + "create note browser", + "create note chrome", + "create note g suite", + "create note google", + "create note keep", + "create note workspace", + "create workspace note", + "g suite create note", + "g suite make note", + "g suite new note", + "g suite note create", + "g suite note make", + "g suite note new", + "g suite note open", + "g suite note start", + "g suite open note", + "g suite start note", + "google create note", + "google make note", + "google new note", + "google note create", + "google note make", + "google note new", + "google note open", + "google note start", + "google open note", + "google start note", + "keep create note", + "keep make note", + "keep new note", + "keep note create", + "keep note make", + "keep note new", + "keep note open", + "keep note start", + "keep open note", + "keep start note", + "make browser note", + "make chrome note", + "make g suite note", + "make google note", + "make keep note", + "make note browser", + "make note chrome", + "make note g suite", + "make note google", + "make note keep", + "make note workspace", + "make workspace note", + "new browser note", + "new chrome note", + "new g suite note", + "new google note", + "new keep note", + "new note browser", + "new note chrome", + "new note g suite", + "new note google", + "new note keep", + "new note workspace", + "new workspace note", + "note browser create", + "note browser make", + "note browser new", + "note browser open", + "note browser start", + "note chrome create", + "note chrome make", + "note chrome new", + "note chrome open", + "note chrome start", + "note create browser", + "note create chrome", + "note create g suite", + "note create google", + "note create keep", + "note create workspace", + "note g suite create", + "note g suite make", + "note g suite new", + "note g suite open", + "note g suite start", + "note google create", + "note google make", + "note google new", + "note google open", + "note google start", + "note keep create", + "note keep make", + "note keep new", + "note keep open", + "note keep start", + "note make browser", + "note make chrome", + "note make g suite", + "note make google", + "note make keep", + "note make workspace", + "note new browser", + "note new chrome", + "note new g suite", + "note new google", + "note new keep", + "note new workspace", + "note open browser", + "note open chrome", + "note open g suite", + "note open google", + "note open keep", + "note open workspace", + "note start browser", + "note start chrome", + "note start g suite", + "note start google", + "note start keep", + "note start workspace", + "note workspace create", + "note workspace make", + "note workspace new", + "note workspace open", + "note workspace start", + "open browser note", + "open chrome note", + "open g suite note", + "open google note", + "open keep note", + "open note browser", + "open note chrome", + "open note g suite", + "open note google", + "open note keep", + "open note workspace", + "open workspace note", + "start browser note", + "start chrome note", + "start g suite note", + "start google note", + "start keep note", + "start note browser", + "start note chrome", + "start note g suite", + "start note google", + "start note keep", + "start note workspace", + "start workspace note", + "workspace create note", + "workspace make note", + "workspace new note", + "workspace note create", + "workspace note make", + "workspace note new", + "workspace note open", + "workspace note start", + "workspace open note", + "workspace start note", + }, + + // ID#19 + { + // Generated suggestions: + "browser create form", + "browser create survey", + "browser form create", + "browser form make", + "browser form new", + "browser form open", + "browser form start", + "browser make form", + "browser make survey", + "browser new form", + "browser new survey", + "browser open form", + "browser open survey", + "browser start form", + "browser start survey", + "browser survey create", + "browser survey make", + "browser survey new", + "browser survey open", + "browser survey start", + "chrome create form", + "chrome create survey", + "chrome form create", + "chrome form make", + "chrome form new", + "chrome form open", + "chrome form start", + "chrome make form", + "chrome make survey", + "chrome new form", + "chrome new survey", + "chrome open form", + "chrome open survey", + "chrome start form", + "chrome start survey", + "chrome survey create", + "chrome survey make", + "chrome survey new", + "chrome survey open", + "chrome survey start", + "create browser form", + "create browser survey", + "create chrome form", + "create chrome survey", + "create form browser", + "create form chrome", + "create form g suite", + "create form google", + "create form workspace", + "create g suite form", + "create g suite survey", + "create google form", + "create google survey", + "create survey browser", + "create survey chrome", + "create survey g suite", + "create survey google", + "create survey workspace", + "create workspace form", + "create workspace survey", + "form browser create", + "form browser make", + "form browser new", + "form browser open", + "form browser start", + "form chrome create", + "form chrome make", + "form chrome new", + "form chrome open", + "form chrome start", + "form create browser", + "form create chrome", + "form create g suite", + "form create google", + "form create workspace", + "form g suite create", + "form g suite make", + "form g suite new", + "form g suite open", + "form g suite start", + "form google create", + "form google make", + "form google new", + "form google open", + "form google start", + "form make browser", + "form make chrome", + "form make g suite", + "form make google", + "form make workspace", + "form new browser", + "form new chrome", + "form new g suite", + "form new google", + "form new workspace", + "form open browser", + "form open chrome", + "form open g suite", + "form open google", + "form open workspace", + "form start browser", + "form start chrome", + "form start g suite", + "form start google", + "form start workspace", + "form workspace create", + "form workspace make", + "form workspace new", + "form workspace open", + "form workspace start", + "g suite create form", + "g suite create survey", + "g suite form create", + "g suite form make", + "g suite form new", + "g suite form open", + "g suite form start", + "g suite make form", + "g suite make survey", + "g suite new form", + "g suite new survey", + "g suite open form", + "g suite open survey", + "g suite start form", + "g suite start survey", + "g suite survey create", + "g suite survey make", + "g suite survey new", + "g suite survey open", + "g suite survey start", + "google create form", + "google create survey", + "google form create", + "google form make", + "google form new", + "google form open", + "google form start", + "google make form", + "google make survey", + "google new form", + "google new survey", + "google open form", + "google open survey", + "google start form", + "google start survey", + "google survey create", + "google survey make", + "google survey new", + "google survey open", + "google survey start", + "make browser form", + "make browser survey", + "make chrome form", + "make chrome survey", + "make form browser", + "make form chrome", + "make form g suite", + "make form google", + "make form workspace", + "make g suite form", + "make g suite survey", + "make google form", + "make google survey", + "make survey browser", + "make survey chrome", + "make survey g suite", + "make survey google", + "make survey workspace", + "make workspace form", + "make workspace survey", + "new browser form", + "new browser survey", + "new chrome form", + "new chrome survey", + "new form browser", + "new form chrome", + "new form g suite", + "new form google", + "new form workspace", + "new g suite form", + "new g suite survey", + "new google form", + "new google survey", + "new survey browser", + "new survey chrome", + "new survey g suite", + "new survey google", + "new survey workspace", + "new workspace form", + "new workspace survey", + "open browser form", + "open browser survey", + "open chrome form", + "open chrome survey", + "open form browser", + "open form chrome", + "open form g suite", + "open form google", + "open form workspace", + "open g suite form", + "open g suite survey", + "open google form", + "open google survey", + "open survey browser", + "open survey chrome", + "open survey g suite", + "open survey google", + "open survey workspace", + "open workspace form", + "open workspace survey", + "start browser form", + "start browser survey", + "start chrome form", + "start chrome survey", + "start form browser", + "start form chrome", + "start form g suite", + "start form google", + "start form workspace", + "start g suite form", + "start g suite survey", + "start google form", + "start google survey", + "start survey browser", + "start survey chrome", + "start survey g suite", + "start survey google", + "start survey workspace", + "start workspace form", + "start workspace survey", + "survey browser create", + "survey browser make", + "survey browser new", + "survey browser open", + "survey browser start", + "survey chrome create", + "survey chrome make", + "survey chrome new", + "survey chrome open", + "survey chrome start", + "survey create browser", + "survey create chrome", + "survey create g suite", + "survey create google", + "survey create workspace", + "survey g suite create", + "survey g suite make", + "survey g suite new", + "survey g suite open", + "survey g suite start", + "survey google create", + "survey google make", + "survey google new", + "survey google open", + "survey google start", + "survey make browser", + "survey make chrome", + "survey make g suite", + "survey make google", + "survey make workspace", + "survey new browser", + "survey new chrome", + "survey new g suite", + "survey new google", + "survey new workspace", + "survey open browser", + "survey open chrome", + "survey open g suite", + "survey open google", + "survey open workspace", + "survey start browser", + "survey start chrome", + "survey start g suite", + "survey start google", + "survey start workspace", + "survey workspace create", + "survey workspace make", + "survey workspace new", + "survey workspace open", + "survey workspace start", + "workspace create form", + "workspace create survey", + "workspace form create", + "workspace form make", + "workspace form new", + "workspace form open", + "workspace form start", + "workspace make form", + "workspace make survey", + "workspace new form", + "workspace new survey", + "workspace open form", + "workspace open survey", + "workspace start form", + "workspace start survey", + "workspace survey create", + "workspace survey make", + "workspace survey new", + "workspace survey open", + "workspace survey start", + }, + + // ID#21 + { + // Generated suggestions: + "browser chrome features explore", + "browser chrome features learn", + "browser chrome features make the most of", + "browser chrome features see", + "browser chrome features understand", + "browser chrome features visit", + "browser chrome tips center explore", + "browser chrome tips center learn", + "browser chrome tips center make the most of", + "browser chrome tips center see", + "browser chrome tips center understand", + "browser chrome tips center visit", + "browser chrome tips explore", + "browser chrome tips learn", + "browser chrome tips make the most of", + "browser chrome tips see", + "browser chrome tips understand", + "browser chrome tips visit", + "browser explore chrome features", + "browser explore chrome tips", + "browser explore chrome tips center", + "browser explore new chrome features", + "browser learn chrome features", + "browser learn chrome tips", + "browser learn chrome tips center", + "browser learn new chrome features", + "browser make the most of chrome features", + "browser make the most of chrome tips", + "browser make the most of chrome tips center", + "browser make the most of new chrome features", + "browser new chrome features explore", + "browser new chrome features learn", + "browser new chrome features make the most of", + "browser new chrome features see", + "browser new chrome features understand", + "browser new chrome features visit", + "browser see chrome features", + "browser see chrome tips", + "browser see chrome tips center", + "browser see new chrome features", + "browser understand chrome features", + "browser understand chrome tips", + "browser understand chrome tips center", + "browser understand new chrome features", + "browser visit chrome features", + "browser visit chrome tips", + "browser visit chrome tips center", + "browser visit new chrome features", + "chrome features browser explore", + "chrome features browser learn", + "chrome features browser make the most of", + "chrome features browser see", + "chrome features browser understand", + "chrome features browser visit", + "chrome features explore", + "chrome features explore browser", + "chrome features explore google", + "chrome features google explore", + "chrome features google learn", + "chrome features google make the most of", + "chrome features google see", + "chrome features google understand", + "chrome features google visit", + "chrome features learn", + "chrome features learn browser", + "chrome features learn google", + "chrome features make the most of", + "chrome features make the most of browser", + "chrome features make the most of google", + "chrome features see", + "chrome features see browser", + "chrome features see google", + "chrome features understand", + "chrome features understand browser", + "chrome features understand google", + "chrome features visit", + "chrome features visit browser", + "chrome features visit google", + "chrome tips browser explore", + "chrome tips browser learn", + "chrome tips browser make the most of", + "chrome tips browser see", + "chrome tips browser understand", + "chrome tips browser visit", + "chrome tips center browser explore", + "chrome tips center browser learn", + "chrome tips center browser make the most of", + "chrome tips center browser see", + "chrome tips center browser understand", + "chrome tips center browser visit", + "chrome tips center explore", + "chrome tips center explore browser", + "chrome tips center explore google", + "chrome tips center google explore", + "chrome tips center google learn", + "chrome tips center google make the most of", + "chrome tips center google see", + "chrome tips center google understand", + "chrome tips center google visit", + "chrome tips center learn", + "chrome tips center learn browser", + "chrome tips center learn google", + "chrome tips center make the most of", + "chrome tips center make the most of browser", + "chrome tips center make the most of google", + "chrome tips center see", + "chrome tips center see browser", + "chrome tips center see google", + "chrome tips center understand", + "chrome tips center understand browser", + "chrome tips center understand google", + "chrome tips center visit", + "chrome tips center visit browser", + "chrome tips center visit google", + "chrome tips explore", + "chrome tips explore browser", + "chrome tips explore google", + "chrome tips google explore", + "chrome tips google learn", + "chrome tips google make the most of", + "chrome tips google see", + "chrome tips google understand", + "chrome tips google visit", + "chrome tips learn", + "chrome tips learn browser", + "chrome tips learn google", + "chrome tips make the most of", + "chrome tips make the most of browser", + "chrome tips make the most of google", + "chrome tips see", + "chrome tips see browser", + "chrome tips see google", + "chrome tips understand", + "chrome tips understand browser", + "chrome tips understand google", + "chrome tips visit", + "chrome tips visit browser", + "chrome tips visit google", + "explore browser chrome features", + "explore browser chrome tips", + "explore browser chrome tips center", + "explore browser new chrome features", + "explore chrome features", + "explore chrome features browser", + "explore chrome features google", + "explore chrome tips", + "explore chrome tips browser", + "explore chrome tips center", + "explore chrome tips center browser", + "explore chrome tips center google", + "explore chrome tips google", + "explore google chrome features", + "explore google chrome tips", + "explore google chrome tips center", + "explore google new chrome features", + "explore new chrome features", + "explore new chrome features browser", + "explore new chrome features google", + "google chrome features explore", + "google chrome features learn", + "google chrome features make the most of", + "google chrome features see", + "google chrome features understand", + "google chrome features visit", + "google chrome tips center explore", + "google chrome tips center learn", + "google chrome tips center make the most of", + "google chrome tips center see", + "google chrome tips center understand", + "google chrome tips center visit", + "google chrome tips explore", + "google chrome tips learn", + "google chrome tips make the most of", + "google chrome tips see", + "google chrome tips understand", + "google chrome tips visit", + "google explore chrome features", + "google explore chrome tips", + "google explore chrome tips center", + "google explore new chrome features", + "google learn chrome features", + "google learn chrome tips", + "google learn chrome tips center", + "google learn new chrome features", + "google make the most of chrome features", + "google make the most of chrome tips", + "google make the most of chrome tips center", + "google make the most of new chrome features", + "google new chrome features explore", + "google new chrome features learn", + "google new chrome features make the most of", + "google new chrome features see", + "google new chrome features understand", + "google new chrome features visit", + "google see chrome features", + "google see chrome tips", + "google see chrome tips center", + "google see new chrome features", + "google understand chrome features", + "google understand chrome tips", + "google understand chrome tips center", + "google understand new chrome features", + "google visit chrome features", + "google visit chrome tips", + "google visit chrome tips center", + "google visit new chrome features", + "learn browser chrome features", + "learn browser chrome tips", + "learn browser chrome tips center", + "learn browser new chrome features", + "learn chrome features", + "learn chrome features browser", + "learn chrome features google", + "learn chrome tips", + "learn chrome tips browser", + "learn chrome tips center", + "learn chrome tips center browser", + "learn chrome tips center google", + "learn chrome tips google", + "learn google chrome features", + "learn google chrome tips", + "learn google chrome tips center", + "learn google new chrome features", + "learn new chrome features", + "learn new chrome features browser", + "learn new chrome features google", + "make the most of browser chrome features", + "make the most of browser chrome tips", + "make the most of browser chrome tips center", + "make the most of browser new chrome features", + "make the most of chrome features", + "make the most of chrome features browser", + "make the most of chrome features google", + "make the most of chrome tips", + "make the most of chrome tips browser", + "make the most of chrome tips center", + "make the most of chrome tips center browser", + "make the most of chrome tips center google", + "make the most of chrome tips google", + "make the most of google chrome features", + "make the most of google chrome tips", + "make the most of google chrome tips center", + "make the most of google new chrome features", + "make the most of new chrome features", + "make the most of new chrome features browser", + "make the most of new chrome features google", + "new chrome features browser explore", + "new chrome features browser learn", + "new chrome features browser make the most of", + "new chrome features browser see", + "new chrome features browser understand", + "new chrome features browser visit", + "new chrome features explore", + "new chrome features explore browser", + "new chrome features explore google", + "new chrome features google explore", + "new chrome features google learn", + "new chrome features google make the most of", + "new chrome features google see", + "new chrome features google understand", + "new chrome features google visit", + "new chrome features learn", + "new chrome features learn browser", + "new chrome features learn google", + "new chrome features make the most of", + "new chrome features make the most of browser", + "new chrome features make the most of google", + "new chrome features see", + "new chrome features see browser", + "new chrome features see google", + "new chrome features understand", + "new chrome features understand browser", + "new chrome features understand google", + "new chrome features visit", + "new chrome features visit browser", + "new chrome features visit google", + "see browser chrome features", + "see browser chrome tips", + "see browser chrome tips center", + "see browser new chrome features", + "see chrome features", + "see chrome features browser", + "see chrome features google", + "see chrome tips", + "see chrome tips browser", + "see chrome tips center", + "see chrome tips center browser", + "see chrome tips center google", + "see chrome tips google", + "see google chrome features", + "see google chrome tips", + "see google chrome tips center", + "see google new chrome features", + "see new chrome features", + "see new chrome features browser", + "see new chrome features google", + "understand browser chrome features", + "understand browser chrome tips", + "understand browser chrome tips center", + "understand browser new chrome features", + "understand chrome features", + "understand chrome features browser", + "understand chrome features google", + "understand chrome tips", + "understand chrome tips browser", + "understand chrome tips center", + "understand chrome tips center browser", + "understand chrome tips center google", + "understand chrome tips google", + "understand google chrome features", + "understand google chrome tips", + "understand google chrome tips center", + "understand google new chrome features", + "understand new chrome features", + "understand new chrome features browser", + "understand new chrome features google", + "visit browser chrome features", + "visit browser chrome tips", + "visit browser chrome tips center", + "visit browser new chrome features", + "visit chrome features", + "visit chrome features browser", + "visit chrome features google", + "visit chrome tips", + "visit chrome tips browser", + "visit chrome tips center", + "visit chrome tips center browser", + "visit chrome tips center google", + "visit chrome tips google", + "visit google chrome features", + "visit google chrome tips", + "visit google chrome tips center", + "visit google new chrome features", + "visit new chrome features", + "visit new chrome features browser", + "visit new chrome features google", + }, + + // ID#22 + { + // Generated suggestions: + "adjust google account", + "adjust google account browser", + "adjust google account chrome", + "browser adjust google account", + "browser control google account", + "browser fix google account", + "browser manage google account", + "chrome adjust google account", + "chrome control google account", + "chrome fix google account", + "chrome manage google account", + "control google account", + "control google account browser", + "control google account chrome", + "fix google account", + "fix google account browser", + "fix google account chrome", + "manage google account", + "manage google account browser", + "manage google account chrome", + }, + + // ID#24 + { + // Generated suggestions: + "account password change", + "account password change browser", + "account password change chrome", + "account password change google", + "browser account password change", + "browser change gmail password", + "browser change google password", + "browser gmail reset password", + "browser google reset password", + "change gmail password", + "change gmail password browser", + "change gmail password chrome", + "change gmail password google", + "change google password", + "change google password browser", + "change google password chrome", + "change google password google", + "chrome account password change", + "chrome change gmail password", + "chrome change google password", + "chrome gmail reset password", + "chrome google reset password", + "gmail reset password", + "gmail reset password browser", + "gmail reset password chrome", + "gmail reset password google", + "google account password change", + "google change gmail password", + "google change google password", + "google gmail reset password", + "google google reset password", + "google reset password", + "google reset password browser", + "google reset password chrome", + "google reset password google", + }, + // End of generated test code // clang-format on };
diff --git a/components/omnibox/browser/omnibox_pedal_provider.cc b/components/omnibox/browser/omnibox_pedal_provider.cc index ceb9252..ad51cbe8c 100644 --- a/components/omnibox/browser/omnibox_pedal_provider.cc +++ b/components/omnibox/browser/omnibox_pedal_provider.cc
@@ -10,6 +10,7 @@ #include "base/i18n/char_iterator.h" #include "base/json/json_reader.h" #include "base/metrics/field_trial_params.h" +#include "base/stl_util.h" #include "base/strings/string_tokenizer.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -35,6 +36,15 @@ pedals_(GetPedalImplementations()), ignore_group_(false, false, 0) { LoadPedalConcepts(); + + // Cull Pedals with incomplete data; they won't trigger if not enabled, + // but there's no need to keep them in the collection (iterated frequently). + base::EraseIf(pedals_, [](const auto& it) { + const OmniboxPedal::LabelStrings& labels = it.second->GetLabelStrings(); + return labels.hint.empty() || labels.suggestion_contents.empty() || + labels.accessibility_hint.empty() || + labels.accessibility_suffix.empty(); + }); } OmniboxPedalProvider::~OmniboxPedalProvider() {} @@ -201,8 +211,9 @@ for (const auto& pedal_value : concept_data->FindKey("pedals")->GetList()) { DCHECK(pedal_value.is_dict()); const int id = pedal_value.FindIntKey("id").value(); + // These IDs are the first and last for batch 2. if (id >= static_cast<int>(OmniboxPedalId::RUN_CHROME_SAFETY_CHECK) && - id <= static_cast<int>(OmniboxPedalId::CLEAR_YOUTUBE_HISTORY) && + id <= static_cast<int>(OmniboxPedalId::CHANGE_GOOGLE_PASSWORD) && !OmniboxFieldTrial::IsPedalsBatch2Enabled()) { continue; }
diff --git a/components/omnibox/resources/omnibox_pedal_concepts.json b/components/omnibox/resources/omnibox_pedal_concepts.json index 061b08c..df968f41 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts.json +++ b/components/omnibox/resources/omnibox_pedal_concepts.json
@@ -1,7 +1,7 @@ { "schema": "pedals_translation_model", "schema_version": 3, - "time_generated": "2021-03-24T01:34:39.962Z", + "time_generated": "2021-03-25T19:25:52.349Z", "primary_language_code": "en", "pedal_definitions": [ { @@ -6757,12 +6757,12 @@ ], "enabled": true, "omnibox_ui_strings": { - "button_text": "", - "description_text": "", - "spoken_suggestion_description_suffix": "$1", - "spoken_button_focus_announcement": "" + "button_text": "Manage security settings", + "description_text": "Manage your Safe Browsing and more in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage your Safe Browsing and more in Chrome settings", + "spoken_button_focus_announcement": "Manage security settings button, press Enter to manage your Safe Browsing and more in Chrome settings" }, - "date_modified_omnibox_ui_strings": "1991-03-19T00:00:00+0000" + "date_modified_omnibox_ui_strings": "2021-03-25T19:16:35.207Z" }, { "id": 9, @@ -6814,12 +6814,12 @@ ], "enabled": true, "omnibox_ui_strings": { - "button_text": "", - "description_text": "", - "spoken_suggestion_description_suffix": "$1", - "spoken_button_focus_announcement": "" + "button_text": "Manage cookies", + "description_text": "Manage your cookie preferences in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage your cookie preferences in Chrome settings", + "spoken_button_focus_announcement": "Manage cookies button, press Enter to manage your cookie preferences in Chrome settings" }, - "date_modified_omnibox_ui_strings": "1991-03-19T00:00:00+0000" + "date_modified_omnibox_ui_strings": "2021-03-25T19:17:27.469Z" }, { "id": 10, @@ -6864,12 +6864,12 @@ ], "enabled": true, "omnibox_ui_strings": { - "button_text": "", - "description_text": "", - "spoken_suggestion_description_suffix": "$1", - "spoken_button_focus_announcement": "" + "button_text": "Manage addresses", + "description_text": "Add and manage addresses in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to add and manage addresses in Chrome settings", + "spoken_button_focus_announcement": "Manage addresses button, press Enter to add and manage addresses in Chrome settings" }, - "date_modified_omnibox_ui_strings": "1991-03-19T00:00:00+0000" + "date_modified_omnibox_ui_strings": "2021-03-25T19:18:19.579Z" }, { "id": 11, @@ -6911,12 +6911,12 @@ ], "enabled": true, "omnibox_ui_strings": { - "button_text": "", - "description_text": "", - "spoken_suggestion_description_suffix": "$1", - "spoken_button_focus_announcement": "" + "button_text": "Manage sync", + "description_text": "Manage what info you sync in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage what info you sync in Chrome settings", + "spoken_button_focus_announcement": "Manage sync button, press Enter to manage what info you sync in Chrome settings" }, - "date_modified_omnibox_ui_strings": "1991-03-19T00:00:00+0000" + "date_modified_omnibox_ui_strings": "2021-03-25T19:19:20.161Z" }, { "id": 12, @@ -6958,12 +6958,12 @@ ], "enabled": true, "omnibox_ui_strings": { - "button_text": "", - "description_text": "", - "spoken_suggestion_description_suffix": "$1", - "spoken_button_focus_announcement": "" + "button_text": "Manage site settings", + "description_text": "Manage permissions and data stored across sites in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage permissions and data stored across sites in Chrome settings", + "spoken_button_focus_announcement": "Manage site settings button, press Enter to manage permissions and data stored across sites in Chrome settings" }, - "date_modified_omnibox_ui_strings": "1991-03-19T00:00:00+0000" + "date_modified_omnibox_ui_strings": "2021-03-25T19:20:00.231Z" }, { "id": 13, @@ -7007,12 +7007,12 @@ ], "enabled": true, "omnibox_ui_strings": { - "button_text": "", - "description_text": "", - "spoken_suggestion_description_suffix": "$1", - "spoken_button_focus_announcement": "" + "button_text": "Create doc", + "description_text": "Create a new Google Doc quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new Google Doc quickly", + "spoken_button_focus_announcement": "Create doc button, press Enter to create a new Google Doc quickly" }, - "date_modified_omnibox_ui_strings": "1991-03-19T00:00:00+0000" + "date_modified_omnibox_ui_strings": "2021-03-25T19:20:40.431Z" }, { "id": 14, @@ -7054,7 +7054,7 @@ "cover_cases": [ "create google sheet" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Create sheet", "description_text": "Create a new Google Sheet quickly", @@ -7102,7 +7102,7 @@ "cover_cases": [ "create google slide" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Create presentation", "description_text": "Create a new Google presentation in Slides quickly", @@ -7116,7 +7116,7 @@ "groups": [ { "required": true, - "single": true, + "single": false, "synonyms": [ "schedule", "create", @@ -7132,27 +7132,29 @@ "single": false, "synonyms": [ "workspace", + "calendar", "browser", "g suite", "google", - "chrome" + "chrome", + "cal" ] }, { "required": true, "single": true, "synonyms": [ - "calendar", + "meeting", "invite", - "event", - "cal" + "event" ] } ], "cover_cases": [ - "create google calendar event" + "create google calendar event", + "create new cal invite" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Create event", "description_text": "Create a new event in Google Calendar quickly", @@ -7198,7 +7200,7 @@ "cover_cases": [ "create google site" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Create site", "description_text": "Create a new site in Google Site quickly", @@ -7212,7 +7214,7 @@ "groups": [ { "required": true, - "single": true, + "single": false, "synonyms": [ "create", "start", @@ -7229,7 +7231,8 @@ "browser", "g suite", "google", - "chrome" + "chrome", + "keep" ] }, { @@ -7241,9 +7244,10 @@ } ], "cover_cases": [ - "create google keep note" + "create google keep note", + "make new google keep note" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Create note", "description_text": "Create a new note in Google Keep quickly", @@ -7289,7 +7293,7 @@ "cover_cases": [ "create google form" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Create form", "description_text": "Create a new form in Google Form quickly", @@ -7386,7 +7390,7 @@ "cover_cases": [ "see chrome tips" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "See Chrome tips", "description_text": "Learn about Chrome features", @@ -7420,7 +7424,7 @@ "cover_cases": [ "manage google account" ], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Manage Google Account", "description_text": "Manage your info, privacy, and security in your Google Account", @@ -7488,7 +7492,7 @@ } ], "cover_cases": [], - "enabled": false, + "enabled": true, "omnibox_ui_strings": { "button_text": "Change Google password", "description_text": "Change the password for your Google Account",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_am.json b/components/omnibox/resources/omnibox_pedal_concepts_am.json index 9973302c..4ced5d94 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_am.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_am.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ar.json b/components/omnibox/resources/omnibox_pedal_concepts_ar.json index b5be7e9..5106908 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ar.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ar.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_bg.json b/components/omnibox/resources/omnibox_pedal_concepts_bg.json index 50f18a31..838c8c5 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_bg.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_bg.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_bn.json b/components/omnibox/resources/omnibox_pedal_concepts_bn.json index ef3f3e4e..b280858 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_bn.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_bn.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ca.json b/components/omnibox/resources/omnibox_pedal_concepts_ca.json index b1a10042..f06d703 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ca.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ca.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_cs.json b/components/omnibox/resources/omnibox_pedal_concepts_cs.json index 65806c3..69101c7c 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_cs.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_cs.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "aktualizovat",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_da.json b/components/omnibox/resources/omnibox_pedal_concepts_da.json index a84b0424..fbff57a 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_da.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_da.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "adgangskode",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_de.json b/components/omnibox/resources/omnibox_pedal_concepts_de.json index f9634b5..7d7a4971 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_de.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_de.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "aktualisieren",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_el.json b/components/omnibox/resources/omnibox_pedal_concepts_el.json index fd24d16..c0cbb8ae 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_el.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_el.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json b/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json index b23ac5d..9cba2cb 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_en-GB.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_en.json b/components/omnibox/resources/omnibox_pedal_concepts_en.json index 4d9f090..94462a95 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_en.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_en.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a", @@ -72,6 +72,7 @@ "inside", "install", "invite", + "keep", "keys", "language", "launch", @@ -79,6 +80,7 @@ "make", "manage", "manager", + "meeting", "message", "methods", "mode", @@ -185,7 +187,7 @@ 36 ], [ - 98 + 100 ], [ 26 @@ -194,7 +196,7 @@ 47 ], [ - 144 + 146 ] ] }, @@ -250,28 +252,28 @@ "single": true, "synonyms": [ [ - 74 + 75 ], [ 22 ], [ - 73 + 74 ], [ - 134 + 136 ], [ 43 ], [ - 104 + 106 ], [ - 114 + 116 ], [ - 138 + 140 ] ] }, @@ -283,10 +285,10 @@ 31 ], [ - 89 + 91 ], [ - 88 + 90 ] ] } @@ -321,16 +323,16 @@ 22 ], [ - 73 + 74 ], [ - 134 + 136 ], [ 43 ], [ - 104 + 106 ] ] }, @@ -353,8 +355,8 @@ 64 ], [ - 90, - 76 + 92, + 78 ], [ 32, @@ -369,10 +371,10 @@ 63 ], [ - 91 + 93 ], [ - 90 + 92 ], [ 19 @@ -410,16 +412,16 @@ 30 ], [ - 70 + 71 ], [ 46 ], [ - 119 + 121 ], [ - 85 + 87 ] ] }, @@ -429,27 +431,27 @@ "synonyms": [ [ 62, - 143 + 145 ], [ 62, - 77 + 79 ], [ - 96, - 143 + 98, + 145 ], [ 62, - 124 + 126 ], [ - 96, - 77 + 98, + 79 ], [ - 96, - 124 + 98, + 126 ], [ 62 @@ -485,10 +487,10 @@ "synonyms": [ [ 22, - 69 + 70 ], [ - 131 + 133 ] ] }, @@ -497,21 +499,21 @@ "single": true, "synonyms": [ [ - 127, - 86 + 129, + 88 ], [ - 140, - 86 + 142, + 88 ], [ - 141 + 143 ], [ - 86 + 88 ], [ - 127 + 129 ] ] } @@ -546,13 +548,13 @@ 66 ], [ - 135 + 137 + ], + [ + 138 ], [ 136 - ], - [ - 134 ] ] } @@ -571,13 +573,13 @@ 2 ], [ - 92 + 94 ], [ - 100 + 102 ], [ - 137 + 139 ] ] }, @@ -617,16 +619,16 @@ "single": true, "synonyms": [ [ - 89 + 91 ], [ - 108 + 110 ], [ - 88 + 90 ], [ - 103 + 105 ] ] } @@ -650,7 +652,7 @@ 14 ], [ - 73 + 74 ], [ 12 @@ -662,7 +664,7 @@ 9 ], [ - 137 + 139 ] ] }, @@ -691,40 +693,45 @@ "synonyms": [ [ 45, - 97 + 99 ], [ - 118, - 97 + 120, + 99 + ], + [ + 110, + 113 + ], + [ + 110, + 69 ], [ 108, - 111 - ], - [ - 108, - 68 - ], - [ - 106, 39 ], [ 21 ], [ - 107 + 109 ], [ - 102 + 104 ], [ - 101 + 103 ] ] } ], - "omnibox_ui_strings": null, + "omnibox_ui_strings": { + "button_text": "Manage security settings", + "description_text": "Manage your Safe Browsing and more in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage your Safe Browsing and more in Chrome settings", + "spoken_button_focus_announcement": "Manage security settings button, press Enter to manage your Safe Browsing and more in Chrome settings" + }, "url": "chrome://settings/security" }, { @@ -745,7 +752,7 @@ 28 ], [ - 73 + 74 ], [ 11 @@ -757,7 +764,7 @@ 9 ], [ - 137 + 139 ] ] }, @@ -766,8 +773,8 @@ "single": true, "synonyms": [ [ - 81, - 130 + 83, + 132 ], [ 29 @@ -798,8 +805,8 @@ "single": false, "synonyms": [ [ - 126, - 87 + 128, + 89 ], [ 7 @@ -807,7 +814,12 @@ ] } ], - "omnibox_ui_strings": null, + "omnibox_ui_strings": { + "button_text": "Manage cookies", + "description_text": "Manage your cookie preferences in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage your cookie preferences in Chrome settings", + "spoken_button_focus_announcement": "Manage cookies button, press Enter to manage your cookie preferences in Chrome settings" + }, "url": "chrome://settings/cookies" }, { @@ -821,7 +833,7 @@ 28 ], [ - 73 + 74 ], [ 6 @@ -833,7 +845,7 @@ 22 ], [ - 120 + 122 ], [ 43 @@ -848,11 +860,11 @@ "single": true, "synonyms": [ [ - 113, + 115, 4 ], [ - 80, + 82, 4 ], [ @@ -883,7 +895,12 @@ ] } ], - "omnibox_ui_strings": null, + "omnibox_ui_strings": { + "button_text": "Manage addresses", + "description_text": "Add and manage addresses in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to add and manage addresses in Chrome settings", + "spoken_button_focus_announcement": "Manage addresses button, press Enter to add and manage addresses in Chrome settings" + }, "url": "chrome://settings/addresses" }, { @@ -903,7 +920,7 @@ 37 ], [ - 73 + 74 ], [ 6 @@ -924,7 +941,7 @@ "single": true, "synonyms": [ [ - 123 + 125 ] ] }, @@ -948,7 +965,12 @@ ] } ], - "omnibox_ui_strings": null, + "omnibox_ui_strings": { + "button_text": "Manage sync", + "description_text": "Manage what info you sync in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage what info you sync in Chrome settings", + "spoken_button_focus_announcement": "Manage sync button, press Enter to manage what info you sync in Chrome settings" + }, "url": "chrome://settings/syncSetup/advanced" }, { @@ -965,7 +987,7 @@ 28 ], [ - 73 + 74 ], [ 6 @@ -983,15 +1005,15 @@ "single": true, "synonyms": [ [ - 115, - 93 + 117, + 95 ], [ - 115, - 111 + 117, + 113 ], [ - 93 + 95 ] ] }, @@ -1015,7 +1037,12 @@ ] } ], - "omnibox_ui_strings": null, + "omnibox_ui_strings": { + "button_text": "Manage site settings", + "description_text": "Manage permissions and data stored across sites in Chrome settings", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage permissions and data stored across sites in Chrome settings", + "spoken_button_focus_announcement": "Manage site settings button, press Enter to manage permissions and data stored across sites in Chrome settings" + }, "url": "chrome://settings/content" }, { @@ -1027,7 +1054,7 @@ "synonyms": [ [ 56, - 146 + 148 ], [ 56, @@ -1035,10 +1062,10 @@ ], [ 54, - 121 + 123 ], [ - 146 + 148 ], [ 13 @@ -1062,16 +1089,16 @@ 30 ], [ - 119 + 121 ], [ - 85 + 87 ], [ - 72 + 73 ], [ - 80 + 82 ] ] }, @@ -1088,8 +1115,629 @@ ] } ], - "omnibox_ui_strings": null, + "omnibox_ui_strings": { + "button_text": "Create doc", + "description_text": "Create a new Google Doc quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new Google Doc quickly", + "spoken_button_focus_announcement": "Create doc button, press Enter to create a new Google Doc quickly" + }, "url": "https://docs.google.com/document/u/0/create?usp=chrome_actions" + }, + { + "id": 14, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 30 + ], + [ + 121 + ], + [ + 87 + ], + [ + 73 + ], + [ + 82 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 56, + 148 + ], + [ + 56, + 25 + ], + [ + 54, + 123 + ], + [ + 148 + ], + [ + 13 + ], + [ + 56 + ], + [ + 25 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 119 + ], + [ + 114 + ], + [ + 134 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Create sheet", + "description_text": "Create a new Google Sheet quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new Google Sheet quickly", + "spoken_button_focus_announcement": "Create sheet button, press Enter to create a new Google Sheet quickly" + }, + "url": "https://docs.google.com/spreadsheets/u/0/create?usp=chrome_actions" + }, + { + "id": 15, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 30 + ], + [ + 121 + ], + [ + 87 + ], + [ + 73 + ], + [ + 82 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 96 + ], + [ + 118 + ], + [ + 97 + ], + [ + 35 + ] + ] + }, + { + "required": true, + "single": false, + "synonyms": [ + [ + 54, + 123 + ], + [ + 148 + ], + [ + 13 + ], + [ + 56 + ], + [ + 25 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Create presentation", + "description_text": "Create a new Google presentation in Slides quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new Google presentation in Slides quickly", + "spoken_button_focus_announcement": "Create presentation button, press Enter to create a new Google presentation in Slides quickly" + }, + "url": "https://docs.google.com/presentation/u/0/create?usp=chrome_actions" + }, + { + "id": 16, + "groups": [ + { + "required": true, + "single": false, + "synonyms": [ + [ + 107 + ], + [ + 30 + ], + [ + 121 + ], + [ + 87 + ], + [ + 73 + ], + [ + 82 + ], + [ + 3 + ] + ] + }, + { + "required": true, + "single": false, + "synonyms": [ + [ + 54, + 123 + ], + [ + 148 + ], + [ + 17 + ], + [ + 13 + ], + [ + 56 + ], + [ + 25 + ], + [ + 16 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 76 + ], + [ + 67 + ], + [ + 48 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Create event", + "description_text": "Create a new event in Google Calendar quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new event in Google Calendar quickly", + "spoken_button_focus_announcement": "Create event button, press Enter to create a new event in Google Calendar quickly" + }, + "url": "https://calendar.google.com/calendar/u/0/r/eventedit?usp=chrome_actions" + }, + { + "id": 17, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 30 + ], + [ + 121 + ], + [ + 87 + ], + [ + 73 + ], + [ + 82 + ] + ] + }, + { + "required": true, + "single": false, + "synonyms": [ + [ + 54, + 123 + ], + [ + 148 + ], + [ + 13 + ], + [ + 56 + ], + [ + 25 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 144 + ], + [ + 117 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Create site", + "description_text": "Create a new site in Google Site quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new site in Google Site quickly", + "spoken_button_focus_announcement": "Create site button, press Enter to create a new site in Google Site quickly" + }, + "url": "https://sites.google.com/u/0/create?usp=chrome_actions" + }, + { + "id": 18, + "groups": [ + { + "required": true, + "single": false, + "synonyms": [ + [ + 30 + ], + [ + 121 + ], + [ + 87 + ], + [ + 73 + ], + [ + 82 + ] + ] + }, + { + "required": true, + "single": false, + "synonyms": [ + [ + 54, + 123 + ], + [ + 148 + ], + [ + 13 + ], + [ + 56 + ], + [ + 25 + ], + [ + 68 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 84 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Create note", + "description_text": "Create a new note in Google Keep quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new note in Google Keep quickly", + "spoken_button_focus_announcement": "Create note button, press Enter to create a new note in Google Keep quickly" + }, + "url": "https://keep.google.com/u/0/?usp=chrome_actions#NEWNOTE" + }, + { + "id": 19, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 30 + ], + [ + 121 + ], + [ + 87 + ], + [ + 73 + ], + [ + 82 + ] + ] + }, + { + "required": true, + "single": false, + "synonyms": [ + [ + 54, + 123 + ], + [ + 148 + ], + [ + 13 + ], + [ + 25 + ], + [ + 56 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 124 + ], + [ + 53 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Create form", + "description_text": "Create a new form in Google Form quickly", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to create a new form in Google Form quickly", + "spoken_button_focus_announcement": "Create form button, press Enter to create a new form in Google Form quickly" + }, + "url": "https://docs.google.com/forms/u/0/create?usp=chrome_actions" + }, + { + "id": 21, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 73, + 80, + 85 + ], + [ + 135 + ], + [ + 49 + ], + [ + 72 + ], + [ + 141 + ], + [ + 111 + ] + ] + }, + { + "required": false, + "single": false, + "synonyms": [ + [ + 13 + ], + [ + 56 + ] + ] + }, + { + "required": true, + "single": true, + "synonyms": [ + [ + 82, + 25, + 50 + ], + [ + 25, + 130, + 20 + ], + [ + 25, + 50 + ], + [ + 25, + 130 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "See Chrome tips", + "description_text": "Learn about Chrome features", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to learn about Chrome features", + "spoken_button_focus_announcement": "See Chrome tips button, press Enter to learn about Chrome features" + }, + "url": "https://www.google.com/chrome/tips/" + }, + { + "id": 22, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 28, + 56, + 1 + ], + [ + 74, + 56, + 1 + ], + [ + 6, + 56, + 1 + ], + [ + 51, + 56, + 1 + ] + ] + }, + { + "required": false, + "single": false, + "synonyms": [ + [ + 13 + ], + [ + 25 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Manage Google Account", + "description_text": "Manage your info, privacy, and security in your Google Account", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to manage your info, privacy, and security in your Google Account", + "spoken_button_focus_announcement": "Manage Google Account, press Enter to manage your info, privacy, and security in your Google Account" + }, + "url": "https://myaccount.google.com/?utm_source=ga-chrome-actions&utm_medium=manageGA" + }, + { + "id": 24, + "groups": [ + { + "required": true, + "single": true, + "synonyms": [ + [ + 1, + 90, + 22 + ], + [ + 22, + 56, + 90 + ], + [ + 22, + 55, + 90 + ], + [ + 56, + 101, + 90 + ], + [ + 55, + 101, + 90 + ] + ] + }, + { + "required": false, + "single": false, + "synonyms": [ + [ + 13 + ], + [ + 25 + ], + [ + 56 + ] + ] + } + ], + "omnibox_ui_strings": { + "button_text": "Change Google password", + "description_text": "Change the password for your Google Account", + "spoken_suggestion_description_suffix": "$1, press Tab then Enter to change the password for your Google Account", + "spoken_button_focus_announcement": "Change Google password button, press Enter to change the password for your Google Account" + }, + "url": "https://myaccount.google.com/signinoptions/password?utm_source=ga-chrome-actions&utm_medium=changePW" } ], "ignore_group": { @@ -1100,7 +1748,7 @@ 65 ], [ - 145 + 147 ], [ 52 @@ -1109,7 +1757,7 @@ 59 ], [ - 125 + 127 ], [ 10 @@ -1121,13 +1769,13 @@ 61 ], [ - 79 + 81 ], [ - 84 + 86 ], [ - 129 + 131 ], [ 0
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_es-419.json b/components/omnibox/resources/omnibox_pedal_concepts_es-419.json index 78640b5..2a62ed11 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_es-419.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_es-419.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "abrir",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_es.json b/components/omnibox/resources/omnibox_pedal_concepts_es.json index f5aaaf0..3182f6fa 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_es.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_es.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_et.json b/components/omnibox/resources/omnibox_pedal_concepts_et.json index b35b158..c3763ee0 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_et.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_et.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "ajalugu",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fa.json b/components/omnibox/resources/omnibox_pedal_concepts_fa.json index 60626f9..91a654b 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fa.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fa.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fi.json b/components/omnibox/resources/omnibox_pedal_concepts_fi.json index 0e6dcfd..5becd856 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fi.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fi.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "asenna",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fil.json b/components/omnibox/resources/omnibox_pedal_concepts_fil.json index 04da9c1..495e3674 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fil.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fil.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "akin",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_fr.json b/components/omnibox/resources/omnibox_pedal_concepts_fr.json index 3c68cc4..ba38199ad 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_fr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_fr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "actualise",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_gu.json b/components/omnibox/resources/omnibox_pedal_concepts_gu.json index d718141..4e38883 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_gu.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_gu.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_he.json b/components/omnibox/resources/omnibox_pedal_concepts_he.json index 4b3b77a2..09a96d09 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_he.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_he.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_hi.json b/components/omnibox/resources/omnibox_pedal_concepts_hi.json index 215d5c8..d65e614 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_hi.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_hi.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_hr.json b/components/omnibox/resources/omnibox_pedal_concepts_hr.json index 0ed6eb5..08de1cb 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_hr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_hr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "anonimna",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_hu.json b/components/omnibox/resources/omnibox_pedal_concepts_hu.json index e73606c..ef3b151d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_hu.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_hu.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_id.json b/components/omnibox/resources/omnibox_pedal_concepts_id.json index 1d28c89c..e5b31b7 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_id.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_id.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "bagaimana",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_it.json b/components/omnibox/resources/omnibox_pedal_concepts_it.json index be511bbb..f4ebbed0 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_it.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_it.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ja.json b/components/omnibox/resources/omnibox_pedal_concepts_ja.json index 8296c5c..e5cca26 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ja.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ja.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": true, "dictionary": [ " ",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_kn.json b/components/omnibox/resources/omnibox_pedal_concepts_kn.json index 72673bcb..f2c7677 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_kn.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_kn.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ko.json b/components/omnibox/resources/omnibox_pedal_concepts_ko.json index 3c42b4de..a86154f 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ko.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ko.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_lt.json b/components/omnibox/resources/omnibox_pedal_concepts_lt.json index d25446b..bfd4749 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_lt.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_lt.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_lv.json b/components/omnibox/resources/omnibox_pedal_concepts_lv.json index 5388183..add7af6 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_lv.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_lv.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ml.json b/components/omnibox/resources/omnibox_pedal_concepts_ml.json index 005cf71..d1dc4bf 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ml.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ml.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_mr.json b/components/omnibox/resources/omnibox_pedal_concepts_mr.json index 9fe7514..cd1d0d6 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_mr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_mr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ms.json b/components/omnibox/resources/omnibox_pedal_concepts_ms.json index 328997a..031c8ba 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ms.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ms.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "alih",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_nl.json b/components/omnibox/resources/omnibox_pedal_concepts_nl.json index 2b8b10e..c055e08 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_nl.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_nl.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "aan",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_pl.json b/components/omnibox/resources/omnibox_pedal_concepts_pl.json index 81033ab3..593e4e1 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_pl.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_pl.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json b/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json index 66449d66..535fc14 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_pt-BR.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "abrir",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json b/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json index 2c36730..018c80b 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_pt-PT.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "abrir",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ro.json b/components/omnibox/resources/omnibox_pedal_concepts_ro.json index a29a80b6..285096d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ro.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ro.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ru.json b/components/omnibox/resources/omnibox_pedal_concepts_ru.json index 6b0cf21..ad22f3e80 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ru.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ru.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sk.json b/components/omnibox/resources/omnibox_pedal_concepts_sk.json index 0a02ce89..f4fa4b5 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sk.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sk.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sl.json b/components/omnibox/resources/omnibox_pedal_concepts_sl.json index 02f7df5..a03419d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sl.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sl.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "beleženja",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sr.json b/components/omnibox/resources/omnibox_pedal_concepts_sr.json index 852fc49..26239af 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sv.json b/components/omnibox/resources/omnibox_pedal_concepts_sv.json index 1d5d0130..82ab143 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sv.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sv.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "aktivera",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_sw.json b/components/omnibox/resources/omnibox_pedal_concepts_sw.json index 7d484b66a..dcdd01e 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_sw.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_sw.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "anza",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_ta.json b/components/omnibox/resources/omnibox_pedal_concepts_ta.json index df3d548e..2f380f8f 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_ta.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_ta.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_te.json b/components/omnibox/resources/omnibox_pedal_concepts_te.json index b09a2b1..5ce7fd9 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_te.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_te.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_th.json b/components/omnibox/resources/omnibox_pedal_concepts_th.json index e521b78..14150d7 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_th.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_th.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_tr.json b/components/omnibox/resources/omnibox_pedal_concepts_tr.json index b891ce38..b6f58890 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_tr.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_tr.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "aç",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_uk.json b/components/omnibox/resources/omnibox_pedal_concepts_uk.json index 5fedd95b..6d72f21 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_uk.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_uk.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_vi.json b/components/omnibox/resources/omnibox_pedal_concepts_vi.json index 7060e33..052560d 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_vi.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_vi.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "a",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json b/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json index fa2103c..d79f1d9 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_zh-CN.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": true, "dictionary": [ " ",
diff --git a/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json b/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json index 7c19cc2..df4e489 100644 --- a/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json +++ b/components/omnibox/resources/omnibox_pedal_concepts_zh-TW.json
@@ -1,7 +1,7 @@ { "schema": "pedal_concepts_runtime", "schema_version": 3, - "data_version": 15787889, + "data_version": 15789351, "tokenize_each_character": false, "dictionary": [ "chrome",
diff --git a/components/reporting/proto/record_constants.proto b/components/reporting/proto/record_constants.proto index eab5c90..618fe9b 100644 --- a/components/reporting/proto/record_constants.proto +++ b/components/reporting/proto/record_constants.proto
@@ -45,9 +45,6 @@ // |EXTENSIONS_WORKFLOW| handler is for sending extension requests events, // sent for Chrome Browser Cloud Management (CBCM). EXTENSIONS_WORKFLOW = 10; - - // |DLP_EVENTS| events send from data leakage protection for Chrome OS - DLP_EVENTS = 11; } // |Priority| is used to determine when items from the queue should be rate
diff --git a/components/ui_devtools/dom_agent.cc b/components/ui_devtools/dom_agent.cc index a0eb0569..c1ae1d3 100644 --- a/components/ui_devtools/dom_agent.cc +++ b/components/ui_devtools/dom_agent.cc
@@ -393,4 +393,14 @@ return Response::Success(); } +protocol::Response DOMAgent::dispatchMouseEvent( + int node_id, + std::unique_ptr<protocol::DOM::MouseEvent> event) { + if (node_id_to_ui_element_.count(node_id) == 0) + return Response::ServerError("Element not found on node id"); + if (!node_id_to_ui_element_[node_id]->DispatchMouseEvent(event.get())) + return Response::ServerError("Failed to dispatch mouse event for node id"); + return Response::Success(); +} + } // namespace ui_devtools
diff --git a/components/ui_devtools/dom_agent.h b/components/ui_devtools/dom_agent.h index 2b06a42..7590748 100644 --- a/components/ui_devtools/dom_agent.h +++ b/components/ui_devtools/dom_agent.h
@@ -52,6 +52,9 @@ std::unique_ptr<protocol::Array<int>>* node_ids) override; protocol::Response discardSearchResults( const protocol::String& search_id) override; + protocol::Response dispatchMouseEvent( + int node_id, + std::unique_ptr<protocol::DOM::MouseEvent> event) override; // UIElementDelegate: void OnUIElementAdded(UIElement* parent, UIElement* child) override;
diff --git a/components/ui_devtools/protocol.json b/components/ui_devtools/protocol.json index 8f550cb..7d1d7cf 100644 --- a/components/ui_devtools/protocol.json +++ b/components/ui_devtools/protocol.json
@@ -89,8 +89,23 @@ ], "description": "Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.", "experimental": true + }, + { + "name": "dispatchMouseEvent", + "parameters": [ + { + "name": "nodeId", + "$ref": "NodeId", + "description": "Id of the node." + }, + { + "name": "event", + "$ref": "MouseEvent", + "description": "Mouse event to dispatch." + } + ], + "description": "Dispatch a mouse event for a given node. Only used for UI Devtools." } - ], "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object\nthat has an `id`. This `id` can be used to get additional information on the Node, resolve it into\nthe JavaScript object wrapper, etc. It is important that client receives DOM events only for the\nnodes that are known to the client. Backend keeps track of the nodes that were sent to the client\nand never sends the same node twice. It is client's responsibility to collect information about\nthe nodes that were sent to the client.<p>Note that `iframe` owner elements will return\ncorresponding document elements as their child nodes.</p>", "domain": "DOM", @@ -237,6 +252,62 @@ "description": "The alpha component, in the [0-1] range (default: 1)." } ] + }, + { + "id": "MouseEvent", + "description": "Used by dispatchMouseEvent. Only used for UI DevTools.", + "type": "object", + "properties" : [ + { + "name": "type", + "type": "string", + "enum": [ + "mousePressed", + "mouseDragged", + "mouseReleased", + "mouseMoved", + "mouseEntered", + "mouseExited", + "mouseWheel" + ], + "description": "Mouse event type." + }, + { + "name": "x", + "type": "integer", + "description": "x position relative to the node." + }, + { + "name": "y", + "type": "integer", + "description": "y position relative to the node." + }, + { + "name": "button", + "type": "string", + "enum": [ + "none", + "left", + "right", + "middle", + "back", + "forward" + ], + "description": "Mouse button type." + }, + { + "name": "wheelDirection", + "type": "string", + "enum": [ + "none", + "up", + "down", + "left", + "right" + ], + "description": "Only used for mouseWheel event." + } + ] } ] },
diff --git a/components/ui_devtools/ui_element.cc b/components/ui_devtools/ui_element.cc index 509ea5c..abe06fc3 100644 --- a/components/ui_devtools/ui_element.cc +++ b/components/ui_devtools/ui_element.cc
@@ -150,4 +150,8 @@ return sources_; } +bool UIElement::DispatchMouseEvent(protocol::DOM::MouseEvent* event) { + return false; +} + } // namespace ui_devtools
diff --git a/components/ui_devtools/ui_element.h b/components/ui_devtools/ui_element.h index 541b4ff..c95a8b0 100644 --- a/components/ui_devtools/ui_element.h +++ b/components/ui_devtools/ui_element.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/macros.h" +#include "components/ui_devtools/DOM.h" #include "components/ui_devtools/devtools_export.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/native_widget_types.h" @@ -136,6 +137,8 @@ // Get the sources for the element. std::vector<Source> GetSources(); + virtual bool DispatchMouseEvent(protocol::DOM::MouseEvent* event); + protected: UIElement(const UIElementType type, UIElementDelegate* delegate,
diff --git a/components/ui_devtools/views/view_element.cc b/components/ui_devtools/views/view_element.cc index 09673e5..50dc58d 100644 --- a/components/ui_devtools/views/view_element.cc +++ b/components/ui_devtools/views/view_element.cc
@@ -12,6 +12,7 @@ #include "components/ui_devtools/Protocol.h" #include "components/ui_devtools/ui_element_delegate.h" #include "components/ui_devtools/views/element_utility.h" +#include "ui/events/event_utils.h" #include "ui/gfx/color_utils.h" #include "ui/views/metadata/metadata_types.h" #include "ui/views/widget/widget.h" @@ -33,6 +34,58 @@ property_name.erase(property_name.cbegin(), cur); } +ui::EventType GetMouseEventType(const std::string& type) { + if (type == protocol::DOM::MouseEvent::TypeEnum::MousePressed) + return ui::ET_MOUSE_PRESSED; + if (type == protocol::DOM::MouseEvent::TypeEnum::MouseDragged) + return ui::ET_MOUSE_DRAGGED; + if (type == protocol::DOM::MouseEvent::TypeEnum::MouseReleased) + return ui::ET_MOUSE_RELEASED; + if (type == protocol::DOM::MouseEvent::TypeEnum::MouseMoved) + return ui::ET_MOUSE_MOVED; + if (type == protocol::DOM::MouseEvent::TypeEnum::MouseEntered) + return ui::ET_MOUSE_ENTERED; + if (type == protocol::DOM::MouseEvent::TypeEnum::MouseExited) + return ui::ET_MOUSE_EXITED; + if (type == protocol::DOM::MouseEvent::TypeEnum::MouseWheel) + return ui::ET_MOUSEWHEEL; + return ui::ET_UNKNOWN; +} + +int GetButtonFlags(const std::string& button) { + if (button == protocol::DOM::MouseEvent::ButtonEnum::Left) + return ui::EF_LEFT_MOUSE_BUTTON; + if (button == protocol::DOM::MouseEvent::ButtonEnum::Right) + return ui::EF_RIGHT_MOUSE_BUTTON; + if (button == protocol::DOM::MouseEvent::ButtonEnum::Middle) + return ui::EF_MIDDLE_MOUSE_BUTTON; + if (button == protocol::DOM::MouseEvent::ButtonEnum::Back) + return ui::EF_BACK_MOUSE_BUTTON; + if (button == protocol::DOM::MouseEvent::ButtonEnum::Forward) + return ui::EF_FORWARD_MOUSE_BUTTON; + return ui::EF_NONE; +} + +int GetMouseWheelXOffset(const std::string& mouse_wheel_direction) { + if (mouse_wheel_direction == + protocol::DOM::MouseEvent::WheelDirectionEnum::Left) + return ui::MouseWheelEvent::kWheelDelta; + if (mouse_wheel_direction == + protocol::DOM::MouseEvent::WheelDirectionEnum::Right) + return -ui::MouseWheelEvent::kWheelDelta; + return 0; +} + +int GetMouseWheelYOffset(const std::string& mouse_wheel_direction) { + if (mouse_wheel_direction == + protocol::DOM::MouseEvent::WheelDirectionEnum::Up) + return ui::MouseWheelEvent::kWheelDelta; + if (mouse_wheel_direction == + protocol::DOM::MouseEvent::WheelDirectionEnum::Down) + return -ui::MouseWheelEvent::kWheelDelta; + return 0; +} + } // namespace ViewElement::ViewElement(views::View* view, @@ -224,4 +277,26 @@ } } +bool ViewElement::DispatchMouseEvent(protocol::DOM::MouseEvent* event) { + ui::EventType event_type = GetMouseEventType(event->getType()); + int button_flags = GetButtonFlags(event->getButton()); + if (event_type == ui::ET_UNKNOWN) + return false; + gfx::Point location(event->getX(), event->getY()); + if (event_type == ui::ET_MOUSEWHEEL) { + int x_offset = GetMouseWheelXOffset(event->getWheelDirection()); + int y_offset = GetMouseWheelYOffset(event->getWheelDirection()); + ui::MouseWheelEvent mouse_wheel_event( + gfx::Vector2d(x_offset, y_offset), location, location, + ui::EventTimeForNow(), button_flags, button_flags); + view_->OnMouseWheel(mouse_wheel_event); + } else { + ui::MouseEvent mouse_event(event_type, location, location, + ui::EventTimeForNow(), button_flags, + button_flags); + view_->OnMouseEvent(&mouse_event); + } + return true; +} + } // namespace ui_devtools
diff --git a/components/ui_devtools/views/view_element.h b/components/ui_devtools/views/view_element.h index 6b286ad..034ae0c 100644 --- a/components/ui_devtools/views/view_element.h +++ b/components/ui_devtools/views/view_element.h
@@ -44,6 +44,7 @@ static views::View* From(const UIElement* element); void PaintRect() const override; void InitSources() override; + bool DispatchMouseEvent(protocol::DOM::MouseEvent* event) override; private: views::View* view_;
diff --git a/components/ui_devtools/views/view_element_unittest.cc b/components/ui_devtools/views/view_element_unittest.cc index d7359625..055d83f 100644 --- a/components/ui_devtools/views/view_element_unittest.cc +++ b/components/ui_devtools/views/view_element_unittest.cc
@@ -62,9 +62,9 @@ using ::testing::_; -class NamedTestView : public views::View { +class MockNamedTestView : public views::View { public: - METADATA_HEADER(NamedTestView); + METADATA_HEADER(MockNamedTestView); // For custom properties test. std::u16string GetTooltipText(const gfx::Point& p) const override { @@ -77,12 +77,20 @@ SkColor GetColorProperty() const { return color_property_; } void SetColorProperty(SkColor color) { color_property_ = color; } + MOCK_METHOD1(OnMousePressed, bool(const ui::MouseEvent&)); + MOCK_METHOD1(OnMouseDragged, bool(const ui::MouseEvent&)); + MOCK_METHOD1(OnMouseReleased, void(const ui::MouseEvent&)); + MOCK_METHOD1(OnMouseMoved, void(const ui::MouseEvent&)); + MOCK_METHOD1(OnMouseEntered, void(const ui::MouseEvent&)); + MOCK_METHOD1(OnMouseExited, void(const ui::MouseEvent&)); + MOCK_METHOD1(OnMouseWheel, bool(const ui::MouseWheelEvent&)); + private: bool bool_property_ = false; SkColor color_property_ = SK_ColorGRAY; }; -BEGIN_METADATA(NamedTestView, views::View) +BEGIN_METADATA(MockNamedTestView, views::View) ADD_PROPERTY_METADATA(bool, BoolProperty) ADD_PROPERTY_METADATA(SkColor, ColorProperty, views::metadata::SkColorConverter) END_METADATA @@ -95,19 +103,19 @@ protected: void SetUp() override { views::ViewsTestBase::SetUp(); - view_.reset(new NamedTestView); - delegate_.reset(new testing::NiceMock<MockUIElementDelegate>); + view_ = std::make_unique<testing::NiceMock<MockNamedTestView>>(); + delegate_ = std::make_unique<testing::NiceMock<MockUIElementDelegate>>(); // |OnUIElementAdded| is called on element creation. EXPECT_CALL(*delegate_, OnUIElementAdded(_, _)).Times(1); element_.reset(new ViewElement(view_.get(), delegate_.get(), nullptr)); } - NamedTestView* view() { return view_.get(); } + MockNamedTestView* view() { return view_.get(); } ViewElement* element() { return element_.get(); } MockUIElementDelegate* delegate() { return delegate_.get(); } private: - std::unique_ptr<NamedTestView> view_; + std::unique_ptr<MockNamedTestView> view_; std::unique_ptr<ViewElement> element_; std::unique_ptr<MockUIElementDelegate> delegate_; @@ -187,7 +195,7 @@ TEST_F(ViewElementTest, GetAttributes) { std::vector<std::string> attrs = element()->GetAttributes(); EXPECT_THAT(attrs, - testing::ElementsAre("name", NamedTestView::kViewClassName)); + testing::ElementsAre("name", MockNamedTestView::kViewClassName)); } TEST_F(ViewElementTest, GetCustomProperties) { @@ -288,11 +296,103 @@ TEST_F(ViewElementTest, GetSources) { std::vector<UIElement::Source> sources = element()->GetSources(); - // ViewElement should have two sources: from NamedTestView and from View. + // ViewElement should have two sources: from MockNamedTestView and from View. EXPECT_EQ(sources.size(), 2U); EXPECT_EQ(sources[0].path_, "components/ui_devtools/views/view_element_unittest.cc"); EXPECT_EQ(sources[1].path_, "ui/views/view.h"); } +TEST_F(ViewElementTest, DispatchMouseEvent) { + // The view must be in a widget in order to dispatch mouse event correctly. + auto widget = std::make_unique<views::Widget>(); + views::Widget::InitParams params = + CreateParams(views::Widget::InitParams::TYPE_WINDOW); + params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; + widget->Init(std::move(params)); + widget->GetContentsView()->AddChildView(view()); + widget->Show(); + gfx::Rect bounds(50, 60, 70, 80); + view()->SetBoundsRect(bounds); + std::pair<gfx::NativeWindow, gfx::Rect> window_and_bounds = + element()->GetNodeWindowAndScreenBounds(); + EXPECT_EQ(window_and_bounds.first, widget->GetNativeWindow()); + EXPECT_EQ(window_and_bounds.second, view()->GetBoundsInScreen()); + + EXPECT_CALL(*view(), OnMousePressed(_)).Times(1); + EXPECT_CALL(*view(), OnMouseDragged(_)).Times(1); + EXPECT_CALL(*view(), OnMouseReleased(_)).Times(1); + EXPECT_CALL(*view(), OnMouseMoved(_)).Times(1); + EXPECT_CALL(*view(), OnMouseEntered(_)).Times(1); + EXPECT_CALL(*view(), OnMouseExited(_)).Times(1); + EXPECT_CALL(*view(), OnMouseWheel(_)).Times(1); + std::vector<std::unique_ptr<protocol::DOM::MouseEvent>> events; + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MousePressed) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::Left) + .setWheelDirection( + protocol::DOM::MouseEvent::WheelDirectionEnum::None) + .build()); + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MouseDragged) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::Left) + .setWheelDirection( + protocol::DOM::MouseEvent::WheelDirectionEnum::None) + .build()); + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MouseReleased) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::Left) + .setWheelDirection( + protocol::DOM::MouseEvent::WheelDirectionEnum::None) + .build()); + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MouseMoved) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::None) + .setWheelDirection( + protocol::DOM::MouseEvent::WheelDirectionEnum::None) + .build()); + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MouseEntered) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::None) + .setWheelDirection( + protocol::DOM::MouseEvent::WheelDirectionEnum::None) + .build()); + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MouseExited) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::None) + .setWheelDirection( + protocol::DOM::MouseEvent::WheelDirectionEnum::None) + .build()); + events.emplace_back( + protocol::DOM::MouseEvent::create() + .setType(protocol::DOM::MouseEvent::TypeEnum::MouseWheel) + .setX(0) + .setY(0) + .setButton(protocol::DOM::MouseEvent::ButtonEnum::None) + .setWheelDirection(protocol::DOM::MouseEvent::WheelDirectionEnum::Up) + .build()); + for (auto& event : events) + element()->DispatchMouseEvent(event.get()); + + view()->parent()->RemoveChildView(view()); +} + } // namespace ui_devtools
diff --git a/components/user_manager/user.h b/components/user_manager/user.h index 0e89af4..1baf4c3 100644 --- a/components/user_manager/user.h +++ b/components/user_manager/user.h
@@ -18,15 +18,18 @@ #include "components/user_manager/user_manager_export.h" #include "components/user_manager/user_type.h" -namespace chromeos { +namespace ash { class ChromeUserManagerImpl; class FakeChromeUserManager; class MockUserManager; +class UserImageManagerImpl; +} // namespace ash + +namespace chromeos { class SupervisedUserManagerImpl; class UserAddingScreenTest; -class UserImageManagerImpl; class UserSessionManager; -} +} // namespace chromeos namespace gfx { class ImageSkia; @@ -210,15 +213,15 @@ protected: friend class UserManagerBase; - friend class chromeos::ChromeUserManagerImpl; + friend class ash::ChromeUserManagerImpl; friend class chromeos::SupervisedUserManagerImpl; - friend class chromeos::UserImageManagerImpl; + friend class ash::UserImageManagerImpl; friend class chromeos::UserSessionManager; // For testing: friend class FakeUserManager; - friend class chromeos::FakeChromeUserManager; - friend class chromeos::MockUserManager; + friend class ash::FakeChromeUserManager; + friend class ash::MockUserManager; friend class chromeos::UserAddingScreenTest; friend class policy::ProfilePolicyConnectorTest; FRIEND_TEST_ALL_PREFIXES(UserTest, DeviceLocalAccountAffiliation);
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm index 6c28015..efa9557 100644 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -3217,6 +3217,8 @@ DCHECK(startObject && endObject); DCHECK_GE(startOffset, 0); DCHECK_GE(endOffset, 0); + if (!startObject || !endObject || startOffset < 0 || endOffset < 0) + return nil; gfx::Rect rect = BrowserAccessibilityManager::GetRootFrameInnerTextRangeBoundsRect(
diff --git a/content/public/browser/browser_task_traits_unittest.nc b/content/browser/browser_task_traits_unittest.nc similarity index 100% rename from content/public/browser/browser_task_traits_unittest.nc rename to content/browser/browser_task_traits_unittest.nc
diff --git a/content/browser/histograms_internals_ui.cc b/content/browser/histograms_internals_ui.cc index ba8f123..9a4a4720 100644 --- a/content/browser/histograms_internals_ui.cc +++ b/content/browser/histograms_internals_ui.cc
@@ -30,6 +30,7 @@ namespace { const char kHistogramsUIJs[] = "histograms_internals.js"; +const char kHistogramsUICss[] = "histograms_internals.css"; const char kHistogramsUIRequestHistograms[] = "requestHistograms"; const char kHistogramsUIStartMonitoring[] = "startMonitoring"; const char kHistogramsUIFetchDiff[] = "fetchDiff"; @@ -44,6 +45,7 @@ WebUIDataSource* source = WebUIDataSource::Create(kChromeUIHistogramHost); source->AddResourcePath(kHistogramsUIJs, IDR_HISTOGRAMS_INTERNALS_JS); + source->AddResourcePath(kHistogramsUICss, IDR_HISTOGRAMS_INTERNALS_CSS); source->SetDefaultResource(IDR_HISTOGRAMS_INTERNALS_HTML); return source; }
diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc index 38fa3243..d90eb61 100644 --- a/content/browser/media/media_interface_proxy.cc +++ b/content/browser/media/media_interface_proxy.cc
@@ -82,7 +82,7 @@ constexpr base::TimeDelta kMediaFoundationServiceIdleTimeout = base::TimeDelta::FromSeconds(5); -// Gets an instance of the MF CDM Media service. +// Gets an instance of the MediaFoundationService. // Instances are started lazily as needed. media::mojom::MediaService& GetMediaFoundationService() { // NOTE: We use sequence-local storage to limit the lifetime of this Remote to @@ -491,7 +491,7 @@ DCHECK(thread_checker_.CalledOnValidThread()); DVLOG(1) << __func__ << ": this=" << this; - InterfaceFactory* factory = GetMFMediaInterfaceFactory(); + InterfaceFactory* factory = GetMediaFoundationServiceInterfaceFactory(); DCHECK(factory); if (factory) factory->CreateMediaFoundationRenderer( @@ -527,7 +527,7 @@ #if defined(OS_WIN) DVLOG(1) << __func__ << ": this=" << this << " key_system=" << key_system; if (ShouldUseMediaFoundationServiceForCdm(key_system, cdm_config)) { - InterfaceFactory* factory = GetMFMediaInterfaceFactory(); + InterfaceFactory* factory = GetMediaFoundationServiceInterfaceFactory(); if (factory) factory->CreateCdm(key_system, cdm_config, std::move(callback)); return; @@ -566,36 +566,36 @@ #if defined(OS_WIN) media::mojom::InterfaceFactory* -MediaInterfaceProxy::GetMFMediaInterfaceFactory() { +MediaInterfaceProxy::GetMediaFoundationServiceInterfaceFactory() { DVLOG(3) << __func__ << ": this=" << this; DCHECK(thread_checker_.CalledOnValidThread()); if (!mf_interface_factory_remote_) - ConnectToMFMediaService(); + ConnectToMediaFoundationService(); return mf_interface_factory_remote_.get(); } -void MediaInterfaceProxy::ConnectToMFMediaService() { +void MediaInterfaceProxy::ConnectToMediaFoundationService() { DVLOG(1) << __func__ << ": this=" << this; DCHECK(!mf_interface_factory_remote_); DCHECK(!mf_service_ptr_); mf_service_ptr_ = &GetMediaFoundationService(); - // Passing empty arguments to GetFrameServices() as MF CDMs don't use - // CdmStorage currently. + // Passing empty arguments to GetFrameServices() as MediaFoundation-based + // CDMs don't use CdmStorage currently. mf_service_ptr_->CreateInterfaceFactory( mf_interface_factory_remote_.BindNewPipeAndPassReceiver(), GetFrameServices(base::Token{}, std::string())); - // Handle unexpected mojo pipe disconnection such as "mf_cdm" utility process - // crashed or killed in Browser task manager. - mf_interface_factory_remote_.set_disconnect_handler( - base::BindOnce(&MediaInterfaceProxy::OnMFMediaServiceConnectionError, - base::Unretained(this))); + // Handle unexpected mojo pipe disconnection such as MediaFoundationService + // process crashed or killed in the browser task manager. + mf_interface_factory_remote_.set_disconnect_handler(base::BindOnce( + &MediaInterfaceProxy::OnMediaFoundationServiceConnectionError, + base::Unretained(this))); } -void MediaInterfaceProxy::OnMFMediaServiceConnectionError() { +void MediaInterfaceProxy::OnMediaFoundationServiceConnectionError() { DVLOG(1) << __func__ << ": this=" << this; DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/content/browser/media/media_interface_proxy.h b/content/browser/media/media_interface_proxy.h index 61fec193..9abad7b 100644 --- a/content/browser/media/media_interface_proxy.h +++ b/content/browser/media/media_interface_proxy.h
@@ -132,9 +132,9 @@ #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS) #if defined(OS_WIN) - void ConnectToMFMediaService(); - InterfaceFactory* GetMFMediaInterfaceFactory(); - void OnMFMediaServiceConnectionError(); + void ConnectToMediaFoundationService(); + InterfaceFactory* GetMediaFoundationServiceInterfaceFactory(); + void OnMediaFoundationServiceConnectionError(); bool ShouldUseMediaFoundationServiceForCdm( const std::string& key_system, const media::CdmConfig& cdm_config);
diff --git a/content/browser/resources/histograms/histograms_internals.css b/content/browser/resources/histograms/histograms_internals.css new file mode 100644 index 0000000..674e357 --- /dev/null +++ b/content/browser/resources/histograms/histograms_internals.css
@@ -0,0 +1,22 @@ +/* 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. */ + +.histograms { + margin-top: 10px; +} + +.histogram-header { + background-color: #f5f5f5; + cursor: pointer; + font-size: large; + font-weight: bold; + margin: 2px; + padding-bottom: 5px; + padding-inline-start: 5px; + padding-top: 5px; +} + +.histogram-body { + padding-inline-start: 15px; +} \ No newline at end of file
diff --git a/content/browser/resources/histograms/histograms_internals.html b/content/browser/resources/histograms/histograms_internals.html index 3429d70..441832b 100644 --- a/content/browser/resources/histograms/histograms_internals.html +++ b/content/browser/resources/histograms/histograms_internals.html
@@ -5,6 +5,7 @@ <html dir="ltr" lang="en"> <head> <meta charset="utf-8"> + <link rel="stylesheet" href="histograms_internals.css"> <script type="module" src="histograms_internals.js"></script> <title>Histograms</title> </head> @@ -21,5 +22,14 @@ Monitoring mode. The page will automatically refresh every 1 second.</p> </div> <div id="histograms"></div> -<template id="histogram-template"><pre><h4></h4><p></p></pre><br><hr><br></template> +<template id="histogram-template"> + <div> + <div class="histogram-header"> + <span class="expand">+</span> + <span class="collapse" style="display: none">-</span> + <span class="histogram-header-text"></span> + </div> + <div class="histogram-body"><pre><p></p></pre></div> + </div> +</template> </html>
diff --git a/content/browser/resources/histograms/histograms_internals.js b/content/browser/resources/histograms/histograms_internals.js index 79fc79d7..c882ac47 100644 --- a/content/browser/resources/histograms/histograms_internals.js +++ b/content/browser/resources/histograms/histograms_internals.js
@@ -8,6 +8,12 @@ // Timer for automatic update in monitoring mode. let fetchDiffScheduler = null; +// Contains names for expanded histograms. +const expandedEntries = new Set(); + +// Whether the page is in Monitoring mode. +let inMonitoringMode = false; + /** * Initiates the request for histograms. */ @@ -51,9 +57,11 @@ * Callback function when users switch to Monitoring mode. */ function enableMonitoring() { + inMonitoringMode = true; $('accumulating_section').style.display = 'none'; $('monitoring_section').style.display = 'block'; $('histograms').innerHTML = trustedTypes.emptyHTML; + expandedEntries.clear(); startMonitoring(); } @@ -61,6 +69,7 @@ * Callback function when users switch away from Monitoring mode. */ function disableMonitoring() { + inMonitoringMode = false; if (fetchDiffScheduler) { clearTimeout(fetchDiffScheduler); fetchDiffScheduler = null; @@ -68,23 +77,63 @@ $('accumulating_section').style.display = 'block'; $('monitoring_section').style.display = 'none'; $('histograms').innerHTML = trustedTypes.emptyHTML; + expandedEntries.clear(); requestHistograms(); } +function onHistogramHeaderClick(event) { + const headerElement = + event.composedPath().find((e) => e.className === 'histogram-header'); + const name = headerElement.getAttribute('histogram-name'); + const shouldExpand = !expandedEntries.has(name); + if (shouldExpand) { + expandedEntries.add(name); + } else { + expandedEntries.delete(name); + } + setExpanded(headerElement.parentNode, shouldExpand); +} + +/** + * Expands or collapses a histogram node. + * @param {Element} histogramNode the histogram element to expand or collapse + * @param {boolean} expanded whether to expand or collapse the node + */ +function setExpanded(histogramNode, expanded) { + if (expanded) { + histogramNode.querySelector('.histogram-body').style.display = 'block'; + histogramNode.querySelector('.expand').style.display = 'none'; + histogramNode.querySelector('.collapse').style.display = 'inline'; + } else { + histogramNode.querySelector('.histogram-body').style.display = 'none'; + histogramNode.querySelector('.expand').style.display = 'inline'; + histogramNode.querySelector('.collapse').style.display = 'none'; + } +} + /** * Callback from backend with the list of histograms. Builds the UI. - * @param {!Array<{header: string, body: string}>} histograms A list - * of header and body strings representing histograms. + * @param {!Array<{name: string, header: string, body: string}>} histograms + * A list of name, header and body strings representing histograms. */ function addHistograms(histograms) { $('histograms').innerHTML = trustedTypes.emptyHTML; // TBD(jar) Write a nice HTML bar chart, with divs an mouse-overs etc. for (const histogram of histograms) { - const {header, body} = histogram; + const {name, header, body} = histogram; const clone = $('histogram-template').content.cloneNode(true); - - clone.querySelector('h4').textContent = header; + const headerNode = clone.querySelector('.histogram-header'); + headerNode.setAttribute('histogram-name', name); + headerNode.onclick = onHistogramHeaderClick; + clone.querySelector('.histogram-header-text').textContent = header; clone.querySelector('p').textContent = body; + // If we are not in monitoring mode, default to expand. + if (!inMonitoringMode) { + expandedEntries.add(name); + } + // In monitoring mode, we want to preserve the expanded/collapsed status + // between reloads. + setExpanded(clone, expandedEntries.has(name)); $('histograms').appendChild(clone); } $('histograms').dispatchEvent(new CustomEvent('histograms-updated-for-test'));
diff --git a/content/public/browser/site_isolation_policy_unittest.cc b/content/browser/site_isolation_policy_unittest.cc similarity index 100% rename from content/public/browser/site_isolation_policy_unittest.cc rename to content/browser/site_isolation_policy_unittest.cc
diff --git a/content/public/browser/storage_partition_config_unittest.cc b/content/browser/storage_partition_config_unittest.cc similarity index 100% rename from content/public/browser/storage_partition_config_unittest.cc rename to content/browser/storage_partition_config_unittest.cc
diff --git a/content/public/common/drop_data_unittest.cc b/content/common/drop_data_unittest.cc similarity index 100% rename from content/public/common/drop_data_unittest.cc rename to content/common/drop_data_unittest.cc
diff --git a/content/public/common/url_utils_unittest.cc b/content/common/url_utils_unittest.cc similarity index 100% rename from content/public/common/url_utils_unittest.cc rename to content/common/url_utils_unittest.cc
diff --git a/content/content_resources.grd b/content/content_resources.grd index c6fa046..7bb6b730 100644 --- a/content/content_resources.grd +++ b/content/content_resources.grd
@@ -26,6 +26,7 @@ <include name="IDR_DEVTOOLS_TOUCH_CURSOR_ICON_2X" file="browser/resources/devtools/devtools_touch_cursor_2x.png" type="BINDATA" /> <include name="IDR_HISTOGRAMS_INTERNALS_HTML" file="browser/resources/histograms/histograms_internals.html" type="BINDATA" /> <include name="IDR_HISTOGRAMS_INTERNALS_JS" file="browser/resources/histograms/histograms_internals.js" type="BINDATA" /> + <include name="IDR_HISTOGRAMS_INTERNALS_CSS" file="browser/resources/histograms/histograms_internals.css" type="BINDATA" /> <include name="IDR_ORIGIN_MOJO_HTML" file="${root_gen_dir}/url/mojom/origin.mojom.html" resource_path="mojo/url/mojom/origin.mojom.html" use_base_dir="false" type="BINDATA" /> <include name="IDR_ORIGIN_MOJO_JS" file="${root_gen_dir}/url/mojom/origin.mojom-lite.js" resource_path="mojo/url/mojom/origin.mojom-lite.js" use_base_dir="false" type="BINDATA" /> <include name="IDR_ORIGIN_MOJO_WEBUI_JS" file="${root_gen_dir}/mojom-webui/url/mojom/origin.mojom-webui.js" resource_path="mojo/url/mojom/origin.mojom-webui.js" use_base_dir="false" type="BINDATA" />
diff --git a/content/public/README.md b/content/public/README.md index 59e6ce33..6897e11d 100644 --- a/content/public/README.md +++ b/content/public/README.md
@@ -17,6 +17,8 @@ static functions. - An exception is `//content/public/test`. We allow concrete classes that chrome test classes derive from or use in here. +- Tests for files in `//content/public` should be inside implementation directories, +e.g. `//content/browser`, `//content/renderer` etc... - While we don't allow old-style Chrome IPC `_messages.h` files in `//content/public`, we do allow `.mojom` files (see [discussion](https://groups.google.com/a/chromium.org/forum/#!searchin/chromium-mojo/cross-module/chromium-mojo/ZR2YlRV7Uxs/Ce-h_AaWCgAJ)).
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn index 574ed2a..698a8d7 100644 --- a/content/public/common/BUILD.gn +++ b/content/public/common/BUILD.gn
@@ -166,10 +166,7 @@ ] if (is_win) { - sources += [ - "font_cache_dispatcher_win.h", - "injection_test_win.h", - ] + sources += [ "font_cache_dispatcher_win.h" ] } if (is_android) {
diff --git a/content/public/common/injection_test_win.h b/content/public/common/injection_test_win.h deleted file mode 100644 index 67e8428d..0000000 --- a/content/public/common/injection_test_win.h +++ /dev/null
@@ -1,26 +0,0 @@ -// 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. - -#ifndef CONTENT_PUBLIC_COMMON_INJECTION_TEST_WIN_H_ -#define CONTENT_PUBLIC_COMMON_INJECTION_TEST_WIN_H_ - -// This file defines the entry points for any DLL that can be loaded into the -// renderer or plugin process for the purposes of testing. The DLL code must -// define TEST_INJECTION_DLL so the entry point definitions cause the linker -// to generate exported functions. - -const char kRenderTestCall[] = "RunRendererTests"; -const char kPluginTestCall[] = "RunPluginTests"; - -extern "C" { -#ifdef TEST_INJECTION_DLL -BOOL extern __declspec(dllexport) __cdecl RunRendererTests(int* test_count); -BOOL extern __declspec(dllexport) __cdecl RunPluginTests(int* test_count); -#else -typedef BOOL (__cdecl *RunRendererTests)(int* test_count); -typedef BOOL (__cdecl *RunPluginTests)(int* test_count); -#endif -} - -#endif // CONTENT_PUBLIC_COMMON_INJECTION_TEST_WIN_H_
diff --git a/content/renderer/renderer_main_platform_delegate_win.cc b/content/renderer/renderer_main_platform_delegate_win.cc index 748a1884..c3dc3c9c 100644 --- a/content/renderer/renderer_main_platform_delegate_win.cc +++ b/content/renderer/renderer_main_platform_delegate_win.cc
@@ -14,7 +14,6 @@ #include "base/win/windows_version.h" #include "content/child/dwrite_font_proxy/dwrite_font_proxy_init_impl_win.h" #include "content/child/font_warmup_win.h" -#include "content/public/common/injection_test_win.h" #include "content/public/renderer/render_thread.h" #include "content/renderer/render_thread_impl.h" #include "sandbox/policy/switches.h"
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index e459063..486a1e8 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -2070,12 +2070,14 @@ "../browser/service_worker/service_worker_version_unittest.cc", "../browser/shareable_file_reference_unittest.cc", "../browser/site_instance_impl_unittest.cc", + "../browser/site_isolation_policy_unittest.cc", "../browser/sms/sms_fetcher_impl_unittest.cc", "../browser/sms/sms_parser_unittest.cc", "../browser/sms/user_consent_handler_unittest.cc", "../browser/sms/webotp_service_unittest.cc", "../browser/speech/tts_controller_unittest.cc", "../browser/startup_task_runner_unittest.cc", + "../browser/storage_partition_config_unittest.cc", "../browser/storage_partition_impl_map_unittest.cc", "../browser/storage_partition_impl_unittest.cc", "../browser/tracing/background_startup_tracing_observer_unittest.cc", @@ -2127,6 +2129,7 @@ "../common/common_param_traits_unittest.cc", "../common/content_switches_internal_unittest.cc", "../common/cursors/webcursor_unittest.cc", + "../common/drop_data_unittest.cc", "../common/fetch/fetch_api_request_proto_unittest.cc", "../common/font_list_unittest.cc", "../common/input/actions_parser_test_driver_unittest.cc", @@ -2136,14 +2139,9 @@ "../common/input/touch_event_stream_validator_unittest.cc", "../common/service_worker/service_worker_utils_unittest.cc", "../common/state_transitions_unittest.cc", + "../common/url_utils_unittest.cc", "../common/user_agent_unittest.cc", "../common/webplugininfo_unittest.cc", - "../public/browser/site_isolation_policy_unittest.cc", - "../public/browser/storage_partition_config_unittest.cc", - - # TODO(jam): move these network/ tests to services/network. - "../public/common/drop_data_unittest.cc", - "../public/common/url_utils_unittest.cc", "../public/test/browser_task_environment_unittest.cc", "../public/test/devtools_permission_overrides_unittest.cc", "../public/test/dump_accessibility_test_helper_unittest.cc", @@ -2607,7 +2605,7 @@ if (enable_nocompile_tests) { nocompile_test("content_nocompile_tests") { - sources = [ "../public/browser/browser_task_traits_unittest.nc" ] + sources = [ "../browser/browser_task_traits_unittest.nc" ] deps = [ ":run_all_unittests",
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn index e70245b..c7299891 100644 --- a/fuchsia/engine/BUILD.gn +++ b/fuchsia/engine/BUILD.gn
@@ -394,6 +394,13 @@ "//ui/gfx", "//ui/ozone", ] + additional_manifests = [ + "//build/config/fuchsia/test/jit_capabilities.test-cmx", + "//build/config/fuchsia/test/network_capabilities.test-cmx", + "//build/config/fuchsia/test/present_view_capabilities.test-cmx", + "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", + "//build/config/fuchsia/test/web_engine_required_capabilities.test-cmx", + ] } test("web_engine_unittests") { @@ -431,10 +438,18 @@ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp", ] + additional_manifests = [ + "//build/config/fuchsia/test/access_test_data_dir.test-cmx", + + # TODO(crbug.com/1185811): Figure out why jit_capabilities is needed. + "//build/config/fuchsia/test/jit_capabilities.test-cmx", + + "//build/config/fuchsia/test/network_capabilities.test-cmx", + "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", + ] } test("web_engine_integration_tests") { - manifest = "web_engine_integration_tests.cmx" sources = [ "test_debug_listener.cc", "test_debug_listener.h", @@ -462,6 +477,12 @@ ":web_engine", "web_engine", ] ] + additional_manifests = [ + "//build/config/fuchsia/test/network_capabilities.test-cmx", + "//build/config/fuchsia/test/read_debug_data.test-cmx", + "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", + "//build/config/fuchsia/test/web_engine_required_capabilities.test-cmx", + ] } cr_fuchsia_package("web_engine_shell_pkg") {
diff --git a/fuchsia/engine/web_engine_integration_tests.cmx b/fuchsia/engine/web_engine_integration_tests.cmx deleted file mode 100644 index a389cdc..0000000 --- a/fuchsia/engine/web_engine_integration_tests.cmx +++ /dev/null
@@ -1,28 +0,0 @@ -{ - "sandbox": { - "features": [ - "hub", - "isolated-persistent-storage", - "isolated-temp" - ], - "services": [ - "fuchsia.accessibility.semantics.SemanticsManager", - "fuchsia.device.NameProvider", - "fuchsia.fonts.Provider", - "fuchsia.intl.PropertyProvider", - "fuchsia.logger.Log", - "fuchsia.logger.LogSink", - "fuchsia.media.Audio", - "fuchsia.media.SessionAudioConsumerFactory", - "fuchsia.memorypressure.Provider", - "fuchsia.net.NameLookup", - "fuchsia.net.interfaces.State", - "fuchsia.posix.socket.Provider", - "fuchsia.process.Launcher", - "fuchsia.sys.Launcher", - "fuchsia.sysmem.Allocator", - "fuchsia.vulkan.loader.Loader", - "fuchsia.web.ContextProvider" - ] - } -}
diff --git a/fuchsia/runners/BUILD.gn b/fuchsia/runners/BUILD.gn index e5e6bc4..183c6d9c 100644 --- a/fuchsia/runners/BUILD.gn +++ b/fuchsia/runners/BUILD.gn
@@ -198,7 +198,11 @@ "web_engine", ], ] - manifest = "runners_integration_tests.test-cmx" + additional_manifests = [ + "//build/config/fuchsia/test/network_capabilities.test-cmx", + "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", + "//build/config/fuchsia/test/web_engine_required_capabilities.test-cmx", + ] } test("cast_runner_browsertests") { @@ -223,6 +227,11 @@ "//testing/gtest", "//ui/ozone", ] + additional_manifests = [ + "//build/config/fuchsia/test/jit_capabilities.test-cmx", + "//build/config/fuchsia/test/network_capabilities.test-cmx", + "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", + ] } executable("web_runner_exe") { @@ -274,7 +283,11 @@ "web_runner", ], ] - manifest = "runners_integration_tests.test-cmx" + additional_manifests = [ + "//build/config/fuchsia/test/network_capabilities.test-cmx", + "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", + "//build/config/fuchsia/test/web_engine_required_capabilities.test-cmx", + ] } if (is_official_build) {
diff --git a/fuchsia/runners/runners_integration_tests.test-cmx b/fuchsia/runners/runners_integration_tests.test-cmx deleted file mode 100644 index b981562..0000000 --- a/fuchsia/runners/runners_integration_tests.test-cmx +++ /dev/null
@@ -1,37 +0,0 @@ -{ - "facets": { - "fuchsia.test": { - "injected-services": { - "fuchsia.fonts.Provider": "fuchsia-pkg://fuchsia.com/fonts#meta/fonts.cmx", - "fuchsia.intl.PropertyProvider": "fuchsia-pkg://fuchsia.com/intl_property_manager#meta/intl_property_manager.cmx", - "fuchsia.memorypressure.Provider": "fuchsia-pkg://fuchsia.com/memory_monitor#meta/memory_monitor.cmx", - "fuchsia.net.interfaces.State": "fuchsia-pkg://fuchsia.com/netstack#meta/netstack.cmx", - "fuchsia.posix.socket.Provider": "fuchsia-pkg://fuchsia.com/netstack#meta/netstack.cmx", - "fuchsia.web.ContextProvider": "fuchsia-pkg://fuchsia.com/web_engine#meta/context_provider.cmx" - }, - "system-services": [ - "fuchsia.device.NameProvider", - "fuchsia.scheduler.ProfileProvider", - "fuchsia.sysmem.Allocator", - "fuchsia.vulkan.loader.Loader" - ] - } - }, - "sandbox": { - "features": [ - "isolated-persistent-storage", - "isolated-temp" - ], - "services": [ - "fuchsia.fonts.Provider", - "fuchsia.intl.PropertyProvider", - "fuchsia.logger.LogSink", - "fuchsia.memorypressure.Provider", - "fuchsia.net.interfaces.State", - "fuchsia.posix.socket.Provider", - "fuchsia.process.Launcher", - "fuchsia.sys.Launcher", - "fuchsia.web.ContextProvider" - ] - } -}
diff --git a/ios/chrome/browser/ui/authentication/signin/add_account_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/add_account_signin/BUILD.gn index 21a4a24..d70fea9 100644 --- a/ios/chrome/browser/ui/authentication/signin/add_account_signin/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signin/add_account_signin/BUILD.gn
@@ -14,14 +14,18 @@ "add_account_signin_manager.mm", ] deps = [ + "//components/google/core/common", "//components/prefs", + "//components/signin/ios/browser:features", "//components/signin/public/identity_manager", + "//ios/chrome/browser", "//ios/chrome/browser/browser_state", "//ios/chrome/browser/main", "//ios/chrome/browser/signin", "//ios/chrome/browser/ui/alert_coordinator", "//ios/chrome/browser/ui/authentication", "//ios/chrome/browser/ui/authentication/signin:signin_protected", + "//ios/chrome/browser/ui/commands", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/signin", ]
diff --git a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm index 30eb9bb..d2871dd 100644 --- a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm
@@ -4,7 +4,10 @@ #import "ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.h" +#import "components/google/core/common/google_util.h" +#import "components/signin/ios/browser/features.h" #import "components/signin/public/identity_manager/identity_manager.h" +#import "ios/chrome/browser/application_context.h" #import "ios/chrome/browser/browser_state/chrome_browser_state.h" #import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/signin/authentication_service.h" @@ -14,9 +17,13 @@ #import "ios/chrome/browser/ui/authentication/authentication_ui_util.h" #import "ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.h" #import "ios/chrome/browser/ui/authentication/signin/signin_coordinator+protected.h" +#import "ios/chrome/browser/ui/commands/application_commands.h" +#import "ios/chrome/browser/ui/commands/command_dispatcher.h" +#import "ios/chrome/browser/ui/commands/open_new_tab_command.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.h" #import "ios/public/provider/chrome/browser/signin/chrome_identity_service.h" +#import "net/base/mac/url_conversions.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -44,6 +51,11 @@ @property(nonatomic, assign) PromoAction promoAction; // Add account sign-in intent. @property(nonatomic, assign, readonly) AddAccountSigninIntent signinIntent; +// Stores the account creation URL. This URL is received by: +// |self.manager.openAccountCreationURLCallback|, and used once |self.manager| +// is fully dismissed (when |addAccountSigninManagerFinishedWithSigninResult: +// identity:| is called). +@property(nonatomic, strong) NSURL* openAccountCreationURL; @end @@ -117,6 +129,12 @@ ->GetPrefs() identityManager:identityManager]; self.manager.delegate = self; + __weak __typeof(self) weakSelf = self; + if (signin::IsSSOAccountCreationInChromeTabEnabled()) { + self.manager.openAccountCreationURLCallback = ^(NSURL* url) { + weakSelf.openAccountCreationURL = url; + }; + } [self.manager showSigninWithIntent:self.signinIntent]; } @@ -174,8 +192,17 @@ // is already stopped. This call can be ignored. return; } + // Add account is done, we don't need |self.identityInteractionManager| + // anymore. + self.identityInteractionManager = nil; switch (self.signinIntent) { case AddAccountSigninIntentReauthPrimaryAccount: { + if (self.openAccountCreationURL) { + // The user asked to create a new account. Reauth has to be interrupted, + // to open the account creation URL. + [self addAccountDoneWithSigninResult:signinResult identity:nil]; + return; + } [self presentUserConsentWithIdentity:identity]; break; } @@ -196,10 +223,19 @@ // |identity| is set, only and only if the sign-in is successful. DCHECK(((signinResult == SigninCoordinatorResultSuccess) && identity) || ((signinResult != SigninCoordinatorResultSuccess) && !identity)); - self.identityInteractionManager = nil; [self runCompletionCallbackWithSigninResult:signinResult identity:identity showAdvancedSettingsSignin:NO]; + if (self.openAccountCreationURL) { + // The user asked to create a new account. + DCHECK_EQ(SigninCoordinatorResultCanceledByUser, signinResult); + id<ApplicationCommands> handler = HandlerForProtocol( + self.browser->GetCommandDispatcher(), ApplicationCommands); + OpenNewTabCommand* command = [OpenNewTabCommand + commandWithURLFromChrome:net::GURLWithNSURL( + self.openAccountCreationURL)]; + [handler closeSettingsUIAndOpenURL:command]; + } } // Presents the user consent screen with |identity| pre-selected.
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm index 6a961a0..d45e1c5 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm
@@ -545,6 +545,8 @@ break; } case SigninCoordinatorInterruptActionDismissWithAnimation: { + // The first run is in charge to dismiss the sign-in view controller. + DCHECK_NE(UserSigninIntentFirstRun, self.signinIntent); [self.mediator cancelAndDismissAuthenticationFlowAnimated:YES]; [self.viewController.presentingViewController dismissViewControllerAnimated:YES @@ -552,6 +554,8 @@ break; } case SigninCoordinatorInterruptActionDismissWithoutAnimation: { + // The first run is in charge to dismiss the sign-in view controller. + DCHECK_NE(UserSigninIntentFirstRun, self.signinIntent); [self.mediator cancelAndDismissAuthenticationFlowAnimated:NO]; [self.viewController.presentingViewController dismissViewControllerAnimated:NO
diff --git a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm index bd936785..421f399 100644 --- a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm +++ b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
@@ -74,6 +74,10 @@ // Holds the state of the first run flow. @property(nonatomic, strong) FirstRunConfiguration* firstRunConfig; +// Stores the interrupt completion block to be invoked once the first run is +// dismissed. +@property(nonatomic, copy) void (^interruptCompletion)(void); + @end @implementation WelcomeToChromeViewController @@ -118,9 +122,18 @@ } - (void)interruptSigninCoordinatorWithCompletion:(void (^)(void))completion { + // The first run can only be dismissed on the sign-in view. + DCHECK(self.coordinator); + // The sign-in coordinator is part of the navigation controller, so the + // sign-in coordinator didn't present itself. Therefore the interrupt action + // must be SigninCoordinatorInterruptActionNoDismiss. + // |completion| has to be stored in order to be invoked when + // |firstRunDismissedWithPresentingViewController:needsAdvancedSignin:| is + // called. + self.interruptCompletion = completion; [self.coordinator - interruptWithAction:SigninCoordinatorInterruptActionDismissWithAnimation - completion:completion]; + interruptWithAction:SigninCoordinatorInterruptActionNoDismiss + completion:nil]; } - (void)loadView { @@ -261,23 +274,35 @@ FinishFirstRun(_browser->GetBrowserState(), currentWebState, self.firstRunConfig, self.presenter); + __weak __typeof(self) weakSelf = self; UIViewController* presentingViewController = self.navigationController.presentingViewController; - [self.navigationController.presentingViewController - dismissViewControllerAnimated:YES - completion:^{ - FirstRunDismissed(); - if (needsAvancedSettingsSignin) { - [self.dispatcher - showAdvancedSigninSettingsFromViewController: - presentingViewController]; - } else if (location_permissions_field_trial:: - IsInFirstRunModalGroup()) { - [self.dispatcher - showLocationPermissionsFromViewController: - presentingViewController]; - } - }]; + void (^completion)(void) = ^{ + [weakSelf + firstRunDismissedWithPresentingViewController:presentingViewController + needsAdvancedSignin: + needsAvancedSettingsSignin]; + }; + [presentingViewController dismissViewControllerAnimated:YES + completion:completion]; +} + +// Triggers all the events after the first run is dismissed. +- (void)firstRunDismissedWithPresentingViewController: + (UIViewController*)presentingViewController + needsAdvancedSignin: + (BOOL)needsAvancedSettingsSignin { + FirstRunDismissed(); + if (needsAvancedSettingsSignin) { + DCHECK(!self.interruptCompletion); + [self.dispatcher + showAdvancedSigninSettingsFromViewController:presentingViewController]; + } else if (self.interruptCompletion) { + self.interruptCompletion(); + } else if (location_permissions_field_trial::IsInFirstRunModalGroup()) { + [self.dispatcher + showLocationPermissionsFromViewController:presentingViewController]; + } } #pragma mark - Notifications
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm index a795ef19..632565ac 100644 --- a/ios/chrome/browser/ui/main/scene_controller.mm +++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -343,7 +343,8 @@ - (BOOL)isSettingsViewPresented { return self.settingsNavigationController || - self.signinCoordinator.isSettingsViewPresented; + self.signinCoordinator.isSettingsViewPresented || + self.welcomeToChromeController; } - (void)setStartupParameters:(AppStartupParameters*)parameters { @@ -2517,9 +2518,12 @@ completion:nil]; } +// TODO(crbug.com/1192019): Rename this method in -[SceneController +// closeUIAnimated:completion:]. - (void)closeSettingsAnimated:(BOOL)animated completion:(ProceduralBlock)completion { if (self.settingsNavigationController) { + DCHECK(!self.welcomeToChromeController); ProceduralBlock dismissSettings = ^() { [self.settingsNavigationController cleanUpSettings]; UIViewController* presentingViewController = @@ -2540,20 +2544,30 @@ } else if (dismissSettings) { dismissSettings(); } - return; + } else if (self.welcomeToChromeController) { + DCHECK(!self.signinCoordinator); + // If kSSOAccountCreationInChromeTab is set, the FRE has to be interrupted, + // to open the account creation URL. + [self.welcomeToChromeController + interruptSigninCoordinatorWithCompletion:completion]; + } else if (self.signinCoordinator) { + // |self.signinCoordinator| can also present settings, like + // the advanced sign-in settings navigation controller. If the settings has + // to be closed, it is thus the responsibility of the main controller to + // dismiss the advanced sign-in settings by dismssing the settings + // presented by |self.signinCoordinator|. + // To reproduce this case: + // - open Bookmark view + // - start sign-in + // - tap on "Settings" to open the advanced sign-in settings + // - tap on "Manage Your Google Account" + [self interruptSigninCoordinatorAnimated:animated completion:completion]; + } else { + // This can happens when starting a reauth coordinator and the user choose + // "Create account". The coordinator dismisses itself, calls its completion + // block and then open the create account URL. + completion(); } - // |self.signinCoordinator| can also present settings, like - // the advanced sign-in settings navigation controller. If the settings has - // to be closed, it is thus the responsibility of the main controller to - // dismiss the advanced sign-in settings by dismssing the settings - // presented by |self.signinCoordinator|. - // To reproduce this case: - // - open Bookmark view - // - start sign-in - // - tap on "Settings" to open the advanced sign-in settings - // - tap on "Manage Your Google Account" - DCHECK(self.signinCoordinator); - [self interruptSigninCoordinatorAnimated:animated completion:completion]; } - (UIViewController*)topPresentedViewController { @@ -2567,6 +2581,7 @@ // with or without animation. - (void)interruptSigninCoordinatorAnimated:(BOOL)animated completion:(ProceduralBlock)completion { + DCHECK(self.signinCoordinator); SigninCoordinatorInterruptAction action = animated ? SigninCoordinatorInterruptActionDismissWithAnimation : SigninCoordinatorInterruptActionDismissWithoutAnimation;
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 index 4439ad5..bc68075 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -d3a45e75f6a1386a188fc7ce7ffd9615aea0c2fb \ No newline at end of file +7f51d7d7a7d415b9a5b63473bede92398f939f3a \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 index 57921d8c..b9de498 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -93b4c46ef4fefd3be94ee6e911973e6586a7a9b8 \ No newline at end of file +dfabaa8d8a5fd68622dfbc13d56722f3fc283df5 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 index c79c4c6e..3cf43cb2 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -97261f757ae9b73d81140fd48cb639822ed40e3e \ No newline at end of file +0efcc619eadd56f8704deed4f7fbe4fa9c8a6f79 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 index d3225bcb..3d8fdf3 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -18e9faec63fc193ff4f4ed9c3a5906b15316b2ad \ No newline at end of file +1ec3e0950c657add267ec110b9891eac6299e1a5 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 index 5804018..404149ff 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -e99fc23110e2e6417c344084f07989f858909a04 \ No newline at end of file +04f924c729125a1a62f51eeb9fbcdc13fed19966 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 index 88efb296..e504739 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -60ad3baf017e23780cfb6bad4c007b4b7495e46c \ No newline at end of file +54d9f65ed4ee86aa1ebe84b59a51f8b877426b5a \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 index 1ff1217..9423f96 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -d38d3f26c9d207310888a24118fbfa338aae1c46 \ No newline at end of file +504b09535952d8cb9639bf4643353094147550f0 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 index 9844510a..c900a00 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -aef9d7a08fddfb1dd6177f844b877f9c9444e0ab \ No newline at end of file +b3ce9b84880be7feff4a89f318c064e073abb932 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 index 744b9f1..468e3fa8c 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -ee9a636b9e7505b90fddf0a2730505808d5ffc34 \ No newline at end of file +d4baa1ce528696851c21bfc0b9871fa9fb644325 \ No newline at end of file
diff --git a/media/gpu/android/codec_allocator.cc b/media/gpu/android/codec_allocator.cc index af534db..6e2547d 100644 --- a/media/gpu/android/codec_allocator.cc +++ b/media/gpu/android/codec_allocator.cc
@@ -103,8 +103,8 @@ // low resolution. https://crbug.com/1166833 // Software decoders on Lollipop refuse to decode media that played // everywhere else, so let's not force it. https://crbug.com/1175322 - bool lollipop = base::android::BuildInfo::GetInstance()->sdk_int() == - base::android::SDK_VERSION_LOLLIPOP; + bool lollipop = base::android::BuildInfo::GetInstance()->sdk_int() < + base::android::SDK_VERSION_MARSHMALLOW; if (!lollipop && codec_config->codec_type == CodecType::kAny && (codec_config->initial_expected_coded_size.width() < kMinHardwareResolution.width() ||
diff --git a/media/gpu/android/codec_allocator_unittest.cc b/media/gpu/android/codec_allocator_unittest.cc index 7b08de5..09a02a3 100644 --- a/media/gpu/android/codec_allocator_unittest.cc +++ b/media/gpu/android/codec_allocator_unittest.cc
@@ -8,6 +8,7 @@ #include <memory> +#include "base/android/build_info.h" #include "base/bind.h" #include "base/callback_helpers.h" #include "base/check.h" @@ -392,7 +393,13 @@ base::Unretained(this), run_loop.QuitClosure()), std::move(config)); - EXPECT_CALL(*this, OnCodecCreated(CodecType::kSoftware)); + bool lollipop = base::android::BuildInfo::GetInstance()->sdk_int() < + base::android::SDK_VERSION_MARSHMALLOW; + if (lollipop) + EXPECT_CALL(*this, OnCodecCreated(CodecType::kAny)); + else + EXPECT_CALL(*this, OnCodecCreated(CodecType::kSoftware)); + run_loop.Run(); }
diff --git a/media/gpu/vaapi/test/decode.cc b/media/gpu/vaapi/test/decode.cc index 40817d2..c2c444f 100644 --- a/media/gpu/vaapi/test/decode.cc +++ b/media/gpu/vaapi/test/decode.cc
@@ -5,10 +5,12 @@ #include <va/va.h> #include <iostream> +#include <sstream> #include <string> #include "base/command_line.h" #include "base/files/memory_mapped_file.h" +#include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h"
diff --git a/media/mojo/clients/mojo_cdm_unittest.cc b/media/mojo/clients/mojo_cdm_unittest.cc index a09a31c..3eb54fe 100644 --- a/media/mojo/clients/mojo_cdm_unittest.cc +++ b/media/mojo/clients/mojo_cdm_unittest.cc
@@ -88,18 +88,17 @@ &MojoCdmTest::ForceConnectionError, base::Unretained(this))); } - MojoCdmService::Create( - &cdm_factory_, &mojo_cdm_service_context_, kClearKeyKeySystem, - CdmConfig(), - base::BindOnce(&MojoCdmTest::OnCdmServiceCreated, + mojo_cdm_service_ = + std::make_unique<MojoCdmService>(&mojo_cdm_service_context_); + mojo_cdm_service_->Initialize( + &cdm_factory_, kClearKeyKeySystem, CdmConfig(), + base::BindOnce(&MojoCdmTest::OnCdmServiceInitialized, base::Unretained(this), expected_result)); } - void OnCdmServiceCreated(ExpectedResult expected_result, - std::unique_ptr<MojoCdmService> cdm_service, - mojom::CdmContextPtr cdm_context, - const std::string& error_message) { - mojo_cdm_service_ = std::move(cdm_service); + void OnCdmServiceInitialized(ExpectedResult expected_result, + mojom::CdmContextPtr cdm_context, + const std::string& error_message) { cdm_receiver_ = std::make_unique<mojo::Receiver<mojom::ContentDecryptionModule>>( mojo_cdm_service_.get());
diff --git a/media/mojo/clients/mojo_renderer_unittest.cc b/media/mojo/clients/mojo_renderer_unittest.cc index 2cba83e..34929af 100644 --- a/media/mojo/clients/mojo_renderer_unittest.cc +++ b/media/mojo/clients/mojo_renderer_unittest.cc
@@ -168,19 +168,17 @@ base::RunLoop().RunUntilIdle(); } - void OnCdmServiceCreated(std::unique_ptr<MojoCdmService> cdm_service, - mojom::CdmContextPtr cdm_context, - const std::string& error_message) { - EXPECT_TRUE(cdm_service); + void OnCdmServiceInitialized(mojom::CdmContextPtr cdm_context, + const std::string& error_message) { cdm_context_.set_cdm_id(cdm_context->cdm_id); - mojo_cdm_service_ = std::move(cdm_service); } void CreateCdm() { - MojoCdmService::Create( - &cdm_factory_, &mojo_cdm_service_context_, kClearKeyKeySystem, - CdmConfig(), - base::BindOnce(&MojoRendererTest::OnCdmServiceCreated, + mojo_cdm_service_ = + std::make_unique<MojoCdmService>(&mojo_cdm_service_context_); + mojo_cdm_service_->Initialize( + &cdm_factory_, kClearKeyKeySystem, CdmConfig(), + base::BindOnce(&MojoRendererTest::OnCdmServiceInitialized, base::Unretained(this))); base::RunLoop().RunUntilIdle(); }
diff --git a/media/mojo/services/cdm_service.cc b/media/mojo/services/cdm_service.cc index 73067fb..9e1babd 100644 --- a/media/mojo/services/cdm_service.cc +++ b/media/mojo/services/cdm_service.cc
@@ -71,10 +71,17 @@ return; } - MojoCdmService::Create( - cdm_factory, &cdm_service_context_, key_system, cdm_config, - base::BindOnce(&CdmFactoryImpl::OnCdmServiceCreated, - weak_ptr_factory_.GetWeakPtr(), std::move(callback))); + auto mojo_cdm_service = + std::make_unique<MojoCdmService>(&cdm_service_context_); + auto* raw_mojo_cdm_service = mojo_cdm_service.get(); + DCHECK(!pending_mojo_cdm_services_.count(raw_mojo_cdm_service)); + pending_mojo_cdm_services_[raw_mojo_cdm_service] = + std::move(mojo_cdm_service); + raw_mojo_cdm_service->Initialize( + cdm_factory, key_system, cdm_config, + base::BindOnce(&CdmFactoryImpl::OnCdmServiceInitialized, + weak_ptr_factory_.GetWeakPtr(), raw_mojo_cdm_service, + std::move(callback))); } // DeferredDestroy<mojom::CdmFactory> implemenation. @@ -99,19 +106,25 @@ std::move(destroy_cb_).Run(); } - void OnCdmServiceCreated(CreateCdmCallback callback, - std::unique_ptr<MojoCdmService> cdm_service, - mojom::CdmContextPtr cdm_context, - const std::string& error_message) { - if (!cdm_service) { + void OnCdmServiceInitialized(MojoCdmService* raw_mojo_cdm_service, + CreateCdmCallback callback, + mojom::CdmContextPtr cdm_context, + const std::string& error_message) { + DCHECK(raw_mojo_cdm_service); + + // Remove pending MojoCdmService from the mapping in all cases. + DCHECK(pending_mojo_cdm_services_.count(raw_mojo_cdm_service)); + auto mojo_cdm_service = + std::move(pending_mojo_cdm_services_[raw_mojo_cdm_service]); + pending_mojo_cdm_services_.erase(raw_mojo_cdm_service); + + if (!cdm_context) { std::move(callback).Run(mojo::NullRemote(), nullptr, error_message); return; } - DCHECK(cdm_context); - mojo::PendingRemote<mojom::ContentDecryptionModule> remote; - cdm_receivers_.Add(std::move(cdm_service), + cdm_receivers_.Add(std::move(mojo_cdm_service), remote.InitWithNewPipeAndPassReceiver()); std::move(callback).Run(std::move(remote), std::move(cdm_context), ""); } @@ -127,6 +140,10 @@ std::unique_ptr<media::CdmFactory> cdm_factory_; base::OnceClosure destroy_cb_; + // MojoCdmServices pending initialization. + std::map<MojoCdmService*, std::unique_ptr<MojoCdmService>> + pending_mojo_cdm_services_; + // NOTE: Weak pointers must be invalidated before all other member variables. base::WeakPtrFactory<CdmFactoryImpl> weak_ptr_factory_{this};
diff --git a/media/mojo/services/cdm_service_unittest.cc b/media/mojo/services/cdm_service_unittest.cc index 5a193c16..6c43549c 100644 --- a/media/mojo/services/cdm_service_unittest.cc +++ b/media/mojo/services/cdm_service_unittest.cc
@@ -10,6 +10,7 @@ #include "base/test/task_environment.h" #include "base/unguessable_token.h" #include "build/build_config.h" +#include "media/base/mock_filters.h" #include "media/cdm/default_cdm_factory.h" #include "media/media_buildflags.h" #include "media/mojo/services/cdm_service.h" @@ -26,17 +27,46 @@ using testing::_; using testing::Invoke; using testing::InvokeWithoutArgs; +using testing::NiceMock; +using testing::Return; MATCHER_P(MatchesResult, success, "") { return arg->success == success; } -const char kClearKeyKeySystem[] = "org.w3.clearkey"; -const char kInvalidKeySystem[] = "invalid.key.system"; +// MockCdmFactory treats any non-empty key system as valid and the empty key +// system as invalid. +const char kValidKeySystem[] = "org.w3.clearkey"; +const char kInvalidKeySystem[] = ""; + +// Needed since MockCdmServiceClient needs to return unique_ptr of CdmFactory. +class CdmFactoryWrapper : public CdmFactory { + public: + explicit CdmFactoryWrapper(CdmFactory* cdm_factory) + : cdm_factory_(cdm_factory) {} + + // CdmFactory implementation. + void Create(const std::string& key_system, + const CdmConfig& cdm_config, + const SessionMessageCB& session_message_cb, + const SessionClosedCB& session_closed_cb, + const SessionKeysChangeCB& session_keys_change_cb, + const SessionExpirationUpdateCB& session_expiration_update_cb, + CdmCreatedCB cdm_created_cb) override { + cdm_factory_->Create(key_system, cdm_config, session_message_cb, + session_closed_cb, session_keys_change_cb, + session_expiration_update_cb, + std::move(cdm_created_cb)); + } + + private: + CdmFactory* const cdm_factory_; +}; class MockCdmServiceClient : public media::CdmService::Client { public: - MockCdmServiceClient() = default; + explicit MockCdmServiceClient(CdmFactory* cdm_factory) + : cdm_factory_(cdm_factory) {} ~MockCdmServiceClient() override = default; // media::CdmService::Client implementation. @@ -44,12 +74,15 @@ std::unique_ptr<media::CdmFactory> CreateCdmFactory( mojom::FrameInterfaceFactory* frame_interfaces) override { - return std::make_unique<media::DefaultCdmFactory>(); + return std::make_unique<CdmFactoryWrapper>(cdm_factory_); } #if BUILDFLAG(ENABLE_CDM_HOST_VERIFICATION) void AddCdmHostFilePaths(std::vector<media::CdmHostFilePath>*) override {} #endif // BUILDFLAG(ENABLE_CDM_HOST_VERIFICATION) + + private: + CdmFactory* const cdm_factory_; }; class CdmServiceTest : public testing::Test { @@ -62,7 +95,11 @@ MOCK_METHOD0(CdmConnectionClosed, void()); void Initialize() { - auto mock_cdm_service_client = std::make_unique<MockCdmServiceClient>(); + EXPECT_CALL(*mock_cdm_, GetCdmContext()) + .WillRepeatedly(Return(&cdm_context_)); + + auto mock_cdm_service_client = + std::make_unique<MockCdmServiceClient>(&mock_cdm_factory_); mock_cdm_service_client_ = mock_cdm_service_client.get(); service_ = std::make_unique<CdmService>( @@ -106,6 +143,12 @@ mojo::Remote<mojom::CdmFactory> cdm_factory_remote_; mojo::Remote<mojom::ContentDecryptionModule> cdm_remote_; + // MojoCdmService will always create/use `mock_cdm_factory_` and `mock_cdm_`, + // so it's easier to set expectations on them. + scoped_refptr<MockCdm> mock_cdm_{new MockCdm()}; + MockCdmFactory mock_cdm_factory_{mock_cdm_}; + NiceMock<MockCdmContext> cdm_context_; + private: void OnCdmCreated(bool expected_result, mojo::PendingRemote<mojom::ContentDecryptionModule> remote, @@ -151,7 +194,7 @@ TEST_F(CdmServiceTest, InitializeCdm_Success) { Initialize(); - InitializeCdm(kClearKeyKeySystem, true); + InitializeCdm(kValidKeySystem, true); } TEST_F(CdmServiceTest, InitializeCdm_InvalidKeySystem) { @@ -161,9 +204,9 @@ TEST_F(CdmServiceTest, DestroyAndRecreateCdm) { Initialize(); - InitializeCdm(kClearKeyKeySystem, true); + InitializeCdm(kValidKeySystem, true); cdm_remote_.reset(); - InitializeCdm(kClearKeyKeySystem, true); + InitializeCdm(kValidKeySystem, true); } // CdmFactory disconnection will cause the service to idle. @@ -171,7 +214,7 @@ Initialize(); auto* service = cdm_service(); - InitializeCdm(kClearKeyKeySystem, true); + InitializeCdm(kValidKeySystem, true); EXPECT_EQ(service->BoundCdmFactorySizeForTesting(), 1u); EXPECT_EQ(service->UnboundCdmFactorySizeForTesting(), 0u); @@ -183,9 +226,9 @@ } // Destroy service will destroy the CdmFactory and all CDMs. -TEST_F(CdmServiceTest, DestroyCdmService) { +TEST_F(CdmServiceTest, DestroyCdmService_AfterCdmCreation) { Initialize(); - InitializeCdm(kClearKeyKeySystem, true); + InitializeCdm(kValidKeySystem, true); base::RunLoop run_loop; // Ideally we should not care about order, and should only quit the loop when @@ -197,4 +240,17 @@ run_loop.Run(); } +// Before the CDM is fully created, CdmService has been destroyed. We should +// fail gracefully instead of a crash. See crbug.com/1190319. +TEST_F(CdmServiceTest, DestroyCdmService_DuringCdmCreation) { + base::RunLoop run_loop; + EXPECT_CALL(*this, CdmFactoryConnectionClosed()) + .WillOnce(Invoke(&run_loop, &base::RunLoop::Quit)); + mock_cdm_factory_.SetBeforeCreationCB(base::BindRepeating( + &CdmServiceTest::DestroyService, base::Unretained(this))); + Initialize(); + InitializeCdm(kValidKeySystem, true); + run_loop.Run(); +} + } // namespace media
diff --git a/media/mojo/services/interface_factory_impl.cc b/media/mojo/services/interface_factory_impl.cc index 7fa9868..09338997 100644 --- a/media/mojo/services/interface_factory_impl.cc +++ b/media/mojo/services/interface_factory_impl.cc
@@ -168,10 +168,17 @@ return; } - MojoCdmService::Create( - cdm_factory, &cdm_service_context_, key_system, cdm_config, - base::BindOnce(&InterfaceFactoryImpl::OnCdmServiceCreated, - weak_ptr_factory_.GetWeakPtr(), std::move(callback))); + auto mojo_cdm_service = + std::make_unique<MojoCdmService>(&cdm_service_context_); + auto* raw_mojo_cdm_service = mojo_cdm_service.get(); + DCHECK(!pending_mojo_cdm_services_.count(raw_mojo_cdm_service)); + pending_mojo_cdm_services_[raw_mojo_cdm_service] = + std::move(mojo_cdm_service); + raw_mojo_cdm_service->Initialize( + cdm_factory, key_system, cdm_config, + base::BindOnce(&InterfaceFactoryImpl::OnCdmServiceInitialized, + weak_ptr_factory_.GetWeakPtr(), raw_mojo_cdm_service, + std::move(callback))); #else // BUILDFLAG(ENABLE_MOJO_CDM) std::move(callback).Run(mojo::NullRemote(), nullptr, "Mojo CDM not supported"); @@ -267,18 +274,26 @@ return cdm_factory_.get(); } -void InterfaceFactoryImpl::OnCdmServiceCreated( +void InterfaceFactoryImpl::OnCdmServiceInitialized( + MojoCdmService* raw_mojo_cdm_service, CreateCdmCallback callback, - std::unique_ptr<MojoCdmService> cdm_service, mojom::CdmContextPtr cdm_context, const std::string& error_message) { - if (!cdm_service) { + DCHECK(raw_mojo_cdm_service); + + // Remove pending MojoCdmService from the mapping in all cases. + DCHECK(pending_mojo_cdm_services_.count(raw_mojo_cdm_service)); + auto mojo_cdm_service = + std::move(pending_mojo_cdm_services_[raw_mojo_cdm_service]); + pending_mojo_cdm_services_.erase(raw_mojo_cdm_service); + + if (!cdm_context) { std::move(callback).Run(mojo::NullRemote(), nullptr, error_message); return; } mojo::PendingRemote<mojom::ContentDecryptionModule> remote; - cdm_receivers_.Add(std::move(cdm_service), + cdm_receivers_.Add(std::move(mojo_cdm_service), remote.InitWithNewPipeAndPassReceiver()); std::move(callback).Run(std::move(remote), std::move(cdm_context), ""); }
diff --git a/media/mojo/services/interface_factory_impl.h b/media/mojo/services/interface_factory_impl.h index 8c98cc1..d238edb 100644 --- a/media/mojo/services/interface_factory_impl.h +++ b/media/mojo/services/interface_factory_impl.h
@@ -101,10 +101,10 @@ #if BUILDFLAG(ENABLE_MOJO_CDM) CdmFactory* GetCdmFactory(); - void OnCdmServiceCreated(CreateCdmCallback callback, - std::unique_ptr<MojoCdmService> cdm_service, - mojom::CdmContextPtr cdm_context, - const std::string& error_message); + void OnCdmServiceInitialized(MojoCdmService* raw_mojo_cdm_service, + CreateCdmCallback callback, + mojom::CdmContextPtr cdm_context, + const std::string& error_message); #endif // BUILDFLAG(ENABLE_MOJO_CDM) // Must be declared before the receivers below because the bound objects might @@ -130,6 +130,10 @@ #if BUILDFLAG(ENABLE_MOJO_CDM) std::unique_ptr<CdmFactory> cdm_factory_; mojo::UniqueReceiverSet<mojom::ContentDecryptionModule> cdm_receivers_; + + // MojoCdmServices pending initialization. + std::map<MojoCdmService*, std::unique_ptr<MojoCdmService>> + pending_mojo_cdm_services_; #endif // BUILDFLAG(ENABLE_MOJO_CDM) mojo::Remote<mojom::FrameInterfaceFactory> frame_interfaces_;
diff --git a/media/mojo/services/mojo_cdm_service.cc b/media/mojo/services/mojo_cdm_service.cc index 95de96b..785f2c9 100644 --- a/media/mojo/services/mojo_cdm_service.cc +++ b/media/mojo/services/mojo_cdm_service.cc
@@ -33,34 +33,9 @@ MojoCdmPromise<void(mojom::CdmPromiseResultPtr, const std::string&), std::string>; -// static -void MojoCdmService::Create(CdmFactory* cdm_factory, - MojoCdmServiceContext* context, - const std::string& key_system, - const CdmConfig& cdm_config, - CdmServiceCreatedCB callback) { - std::unique_ptr<MojoCdmService> mojo_cdm_service( - new MojoCdmService(cdm_factory, context)); - auto weak_this = mojo_cdm_service->weak_factory_.GetWeakPtr(); - cdm_factory->Create( - key_system, cdm_config, - base::BindRepeating(&MojoCdmService::OnSessionMessage, weak_this), - base::BindRepeating(&MojoCdmService::OnSessionClosed, weak_this), - base::BindRepeating(&MojoCdmService::OnSessionKeysChange, weak_this), - base::BindRepeating(&MojoCdmService::OnSessionExpirationUpdate, - weak_this), - base::BindOnce(&MojoCdmService::OnCdmCreated, weak_this, - std::move(mojo_cdm_service), - mojo::WrapCallbackWithDefaultInvokeIfNotRun( - std::move(callback), nullptr, nullptr, - "Mojo CDM Service creation failure"))); -} - -MojoCdmService::MojoCdmService(CdmFactory* cdm_factory, - MojoCdmServiceContext* context) - : cdm_factory_(cdm_factory), context_(context) { +MojoCdmService::MojoCdmService(MojoCdmServiceContext* context) + : context_(context) { DVLOG(1) << __func__; - DCHECK(cdm_factory_); DCHECK(context_); } @@ -73,6 +48,24 @@ context_->UnregisterCdm(cdm_id_.value()); } +void MojoCdmService::Initialize(CdmFactory* cdm_factory, + const std::string& key_system, + const CdmConfig& cdm_config, + InitializeCB init_cb) { + auto weak_this = weak_factory_.GetWeakPtr(); + cdm_factory->Create( + key_system, cdm_config, + base::BindRepeating(&MojoCdmService::OnSessionMessage, weak_this), + base::BindRepeating(&MojoCdmService::OnSessionClosed, weak_this), + base::BindRepeating(&MojoCdmService::OnSessionKeysChange, weak_this), + base::BindRepeating(&MojoCdmService::OnSessionExpirationUpdate, + weak_this), + base::BindOnce(&MojoCdmService::OnCdmCreated, weak_this, + mojo::WrapCallbackWithDefaultInvokeIfNotRun( + std::move(init_cb), nullptr, + "Mojo CDM Service creation aborted"))); +} + void MojoCdmService::SetClient( mojo::PendingAssociatedRemote<mojom::ContentDecryptionModuleClient> client) { @@ -144,8 +137,7 @@ } void MojoCdmService::OnCdmCreated( - std::unique_ptr<MojoCdmService> mojo_cdm_service, - CdmServiceCreatedCB callback, + InitializeCB init_cb, const scoped_refptr<::media::ContentDecryptionModule>& cdm, const std::string& error_message) { // TODO(xhwang): This should not happen when KeySystemInfo is properly @@ -155,7 +147,7 @@ auto non_empty_error_message = error_message.empty() ? "CDM creation failed" : error_message; DVLOG(1) << __func__ << ": " << non_empty_error_message; - std::move(callback).Run(nullptr, nullptr, non_empty_error_message); + std::move(init_cb).Run(nullptr, non_empty_error_message); return; } @@ -196,8 +188,7 @@ #endif // defined(OS_WIN) } - std::move(callback).Run(std::move(mojo_cdm_service), - std::move(mojo_cdm_context), ""); + std::move(init_cb).Run(std::move(mojo_cdm_context), ""); } void MojoCdmService::OnSessionMessage(const std::string& session_id,
diff --git a/media/mojo/services/mojo_cdm_service.h b/media/mojo/services/mojo_cdm_service.h index 486c57d..18195fb 100644 --- a/media/mojo/services/mojo_cdm_service.h +++ b/media/mojo/services/mojo_cdm_service.h
@@ -35,24 +35,23 @@ class MEDIA_MOJO_EXPORT MojoCdmService final : public mojom::ContentDecryptionModule { public: - using CdmServiceCreatedCB = - base::OnceCallback<void(std::unique_ptr<MojoCdmService> mojo_cdm_service, - mojom::CdmContextPtr cdm_context, + // Callback for Initialize(). Non-null `cdm_context` indicates success. Null + // `cdm_context` indicates failure and the `error_message` provides a reason. + using InitializeCB = + base::OnceCallback<void(mojom::CdmContextPtr cdm_context, const std::string& error_message)>; - // Creates a MojoCdmService. Callback will have |mojo_cdm_service| be non-null - // on success, on failure it will be null and the |error_message| will - // indicate a reason. - // - |cdm_factory| is used to create CDM instances. Must not be null. - // - |context| is used to keep track of all CDM instances such that we can - // connect the CDM with a media player (e.g. decoder). Must not be null. - static void Create(CdmFactory* cdm_factory, - MojoCdmServiceContext* context, - const std::string& key_system, - const CdmConfig& cdm_config, - CdmServiceCreatedCB callback); - + explicit MojoCdmService(MojoCdmServiceContext* context); ~MojoCdmService() final; + + // Initialize the MojoCdmService, including creating the real CDM using the + // `cdm_factory`, which must not be null. The MojoCdmService should NOT be + // used before the `init_cb` is returned. + void Initialize(CdmFactory* cdm_factory, + const std::string& key_system, + const CdmConfig& cdm_config, + InitializeCB init_cb); + // mojom::ContentDecryptionModule implementation. void SetClient( mojo::PendingAssociatedRemote<mojom::ContentDecryptionModuleClient> @@ -84,11 +83,8 @@ base::UnguessableToken cdm_id() const { return cdm_id_.value(); } private: - MojoCdmService(CdmFactory* cdm_factory, MojoCdmServiceContext* context); - // Callback for CdmFactory::Create(). - void OnCdmCreated(std::unique_ptr<MojoCdmService> mojo_cdm_service, - CdmServiceCreatedCB callback, + void OnCdmCreated(InitializeCB callback, const scoped_refptr<::media::ContentDecryptionModule>& cdm, const std::string& error_message); @@ -106,7 +102,6 @@ // Callback for when |decryptor_| loses connectivity. void OnDecryptorConnectionError(); - CdmFactory* const cdm_factory_; MojoCdmServiceContext* const context_; scoped_refptr<::media::ContentDecryptionModule> cdm_;
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc index 55e992a..3fba00f 100644 --- a/pdf/out_of_process_instance.cc +++ b/pdf/out_of_process_instance.cc
@@ -934,10 +934,10 @@ SetTickmarks(tickmarks_); recently_sent_find_update_ = true; ScheduleTaskOnMainThread( - kFindResultCooldown, + FROM_HERE, base::BindOnce(&OutOfProcessInstance::ResetRecentlySentFindUpdate, weak_factory_.GetWeakPtr()), - 0); + /*result=*/0, kFindResultCooldown); } void OutOfProcessInstance::NotifySelectedFindResultChanged( @@ -974,10 +974,10 @@ return; } - ScheduleTaskOnMainThread(base::TimeDelta(), + ScheduleTaskOnMainThread(FROM_HERE, base::BindOnce(&OutOfProcessInstance::OnPrint, weak_factory_.GetWeakPtr()), - 0); + /*result=*/0, base::TimeDelta()); } void OutOfProcessInstance::SubmitForm(const std::string& url, @@ -1344,12 +1344,12 @@ } void OutOfProcessInstance::ScheduleTaskOnMainThread( - base::TimeDelta delay, + const base::Location& from_here, ResultCallback callback, int32_t result, - const base::Location& from_here) { + base::TimeDelta delay) { int64_t delay_in_msec = delay.InMilliseconds(); - DCHECK(delay_in_msec <= INT32_MAX); + DCHECK_LE(delay_in_msec, INT32_MAX); pp::Module::Get()->core()->CallOnMainThread( static_cast<int32_t>(delay_in_msec), PPCompletionCallbackFromResultCallback(std::move(callback)), result);
diff --git a/pdf/out_of_process_instance.h b/pdf/out_of_process_instance.h index ca935356..f3ad0bab 100644 --- a/pdf/out_of_process_instance.h +++ b/pdf/out_of_process_instance.h
@@ -16,7 +16,6 @@ #include "base/callback.h" #include "base/containers/queue.h" -#include "base/location.h" #include "base/memory/weak_ptr.h" #include "pdf/pdf_view_plugin_base.h" #include "pdf/preview_mode_client.h" @@ -123,11 +122,10 @@ bool IsValidLink(const std::string& url) override; std::unique_ptr<Graphics> CreatePaintGraphics(const gfx::Size& size) override; bool BindPaintGraphics(Graphics& graphics) override; - void ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here = base::Location::Current()) override; + void ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) override; // PreviewModeClient::Client: void PreviewDocumentLoadComplete() override;
diff --git a/pdf/paint_manager.cc b/pdf/paint_manager.cc index 1b71b3a..ef492c1 100644 --- a/pdf/paint_manager.cc +++ b/pdf/paint_manager.cc
@@ -13,6 +13,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/check.h" +#include "base/location.h" #include "base/time/time.h" #include "pdf/paint_ready_rect.h" #include "pdf/ppapi_migration/callback.h" @@ -163,10 +164,10 @@ return; client_->ScheduleTaskOnMainThread( - base::TimeDelta(), + FROM_HERE, base::BindOnce(&PaintManager::OnManualCallbackComplete, weak_factory_.GetWeakPtr()), - 0); + /*result=*/0, base::TimeDelta()); manual_callback_pending_ = true; }
diff --git a/pdf/paint_manager.h b/pdf/paint_manager.h index 02b0324..100d27f 100644 --- a/pdf/paint_manager.h +++ b/pdf/paint_manager.h
@@ -10,14 +10,14 @@ #include <memory> #include <vector> -#include "base/location.h" #include "base/memory/weak_ptr.h" +#include "base/time/time.h" #include "pdf/paint_aggregator.h" #include "pdf/ppapi_migration/callback.h" #include "ui/gfx/geometry/size.h" namespace base { -class TimeDelta; +class Location; } // namespace base namespace gfx { @@ -78,11 +78,10 @@ // not always needed. `delay` should be no longer than `INT32_MAX` // milliseconds for the Pepper plugin implementation to prevent integer // overflow. - virtual void ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here = base::Location::Current()) = 0; + virtual void ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) = 0; protected: // You shouldn't be doing deleting through this interface.
diff --git a/pdf/pdf_engine.h b/pdf/pdf_engine.h index 6075955..9ecba9d 100644 --- a/pdf/pdf_engine.h +++ b/pdf/pdf_engine.h
@@ -13,7 +13,6 @@ #include "base/callback.h" #include "base/containers/span.h" -#include "base/location.h" #include "base/optional.h" #include "base/time/time.h" #include "base/values.h" @@ -45,6 +44,10 @@ struct PP_PdfPrintSettings_Dev; class SkBitmap; +namespace base { +class Location; +} // namespace base + namespace gfx { class Point; class Rect; @@ -119,7 +122,7 @@ // The interface that's provided to the rendering engine. class Client { public: - virtual ~Client() {} + virtual ~Client() = default; // Proposes a document layout to the client. For the proposed layout to // become effective, the client must call PDFEngine::ApplyDocumentLayout() @@ -278,14 +281,13 @@ // not always needed. `delay` should be no longer than `INT32_MAX` // milliseconds for the Pepper plugin implementation to prevent integer // overflow. - virtual void ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here = base::Location::Current()) = 0; + virtual void ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) = 0; }; - virtual ~PDFEngine() {} + virtual ~PDFEngine() = default; // Most of these functions are similar to the Pepper functions of the same // name, so not repeating the description here unless it's different.
diff --git a/pdf/pdf_view_plugin_base.cc b/pdf/pdf_view_plugin_base.cc index 482d5da..88bf25e 100644 --- a/pdf/pdf_view_plugin_base.cc +++ b/pdf/pdf_view_plugin_base.cc
@@ -20,6 +20,7 @@ #include "base/containers/span.h" #include "base/feature_list.h" #include "base/i18n/time_formatting.h" +#include "base/location.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/notreached.h" @@ -479,10 +480,10 @@ return; ScheduleTaskOnMainThread( - base::TimeDelta(), + FROM_HERE, base::BindOnce(&PdfViewPluginBase::ClearDeferredInvalidates, GetWeakPtr()), - 0); + /*result=*/0, base::TimeDelta()); } void PdfViewPluginBase::OnGeometryChanged(double old_zoom, @@ -639,10 +640,10 @@ // Schedule loading the next page. ScheduleTaskOnMainThread( - kAccessibilityPageDelay, + FROM_HERE, base::BindOnce(&PdfViewPluginBase::PrepareAndSetAccessibilityPageInfo, GetWeakPtr()), - page_index + 1); + /*result=*/page_index + 1, kAccessibilityPageDelay); } void PdfViewPluginBase::PrepareAndSetAccessibilityViewportInfo() { @@ -1110,10 +1111,10 @@ // Schedule loading the first page. ScheduleTaskOnMainThread( - kAccessibilityPageDelay, + FROM_HERE, base::BindOnce(&PdfViewPluginBase::PrepareAndSetAccessibilityPageInfo, GetWeakPtr()), - 0); + /*result=*/0, kAccessibilityPageDelay); } namespace {
diff --git a/pdf/pdf_view_plugin_base_unittest.cc b/pdf/pdf_view_plugin_base_unittest.cc index 9bae332..3b8b7e25e 100644 --- a/pdf/pdf_view_plugin_base_unittest.cc +++ b/pdf/pdf_view_plugin_base_unittest.cc
@@ -9,7 +9,6 @@ #include <utility> #include <vector> -#include "base/location.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "base/values.h" @@ -70,7 +69,7 @@ MOCK_METHOD(void, ScheduleTaskOnMainThread, - (base::TimeDelta, ResultCallback, int32_t, const base::Location&), + (const base::Location&, ResultCallback, int32_t, base::TimeDelta), (override)); MOCK_METHOD(base::WeakPtr<PdfViewPluginBase>, GetWeakPtr, (), (override));
diff --git a/pdf/pdf_view_web_plugin.cc b/pdf/pdf_view_web_plugin.cc index 0dd22c4..5424228 100644 --- a/pdf/pdf_view_web_plugin.cc +++ b/pdf/pdf_view_web_plugin.cc
@@ -12,7 +12,6 @@ #include <vector> #include "base/check_op.h" -#include "base/location.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" #include "base/notreached.h" @@ -324,11 +323,10 @@ return false; } -void PdfViewWebPlugin::ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here) { +void PdfViewWebPlugin::ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) { base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( from_here, base::BindOnce(std::move(callback), result), delay); } @@ -458,7 +456,7 @@ base::RecordAction(base::UserMetricsAction(action.c_str())); } -void PdfViewWebPlugin::OnViewportChanged(gfx::Rect view_rect, +void PdfViewWebPlugin::OnViewportChanged(const gfx::Rect& view_rect, float new_device_scale) { UpdateGeometryOnViewChanged(view_rect, new_device_scale);
diff --git a/pdf/pdf_view_web_plugin.h b/pdf/pdf_view_web_plugin.h index be99abd..6d93939 100644 --- a/pdf/pdf_view_web_plugin.h +++ b/pdf/pdf_view_web_plugin.h
@@ -5,7 +5,6 @@ #ifndef PDF_PDF_VIEW_WEB_PLUGIN_H_ #define PDF_PDF_VIEW_WEB_PLUGIN_H_ -#include "base/location.h" #include "base/memory/weak_ptr.h" #include "cc/paint/paint_image.h" #include "pdf/pdf_view_plugin_base.h" @@ -15,15 +14,8 @@ #include "pdf/ppapi_migration/url_loader.h" #include "third_party/blink/public/web/web_plugin.h" #include "third_party/blink/public/web/web_plugin_params.h" -#include "third_party/skia/include/core/SkRefCnt.h" #include "v8/include/v8.h" -class SkImage; - -namespace base { -class Value; -} // namespace base - namespace blink { class WebPluginContainer; } // namespace blink @@ -90,11 +82,10 @@ bool IsValidLink(const std::string& url) override; std::unique_ptr<Graphics> CreatePaintGraphics(const gfx::Size& size) override; bool BindPaintGraphics(Graphics& graphics) override; - void ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here = base::Location::Current()) override; + void ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) override; // BlinkUrlLoader::Client: bool IsValid() const override; @@ -138,7 +129,7 @@ // Call `Destroy()` instead. ~PdfViewWebPlugin() override; - void OnViewportChanged(gfx::Rect view_rect, float new_device_scale); + void OnViewportChanged(const gfx::Rect& view_rect, float new_device_scale); blink::WebPluginParams initial_params_; blink::WebPluginContainer* container_ = nullptr;
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc index a5270ab..64b4133 100644 --- a/pdf/pdfium/pdfium_engine.cc +++ b/pdf/pdfium/pdfium_engine.cc
@@ -20,6 +20,7 @@ #include "base/check_op.h" #include "base/debug/alias.h" #include "base/feature_list.h" +#include "base/location.h" #include "base/notreached.h" #include "base/stl_util.h" #include "base/strings/string_util.h" @@ -1817,10 +1818,10 @@ ContinueFind(case_sensitive ? 1 : 0); } else { client_->ScheduleTaskOnMainThread( - base::TimeDelta(), + FROM_HERE, base::BindOnce(&PDFiumEngine::ContinueFind, find_weak_factory_.GetWeakPtr()), - case_sensitive ? 1 : 0); + case_sensitive ? 1 : 0, base::TimeDelta()); } }
diff --git a/pdf/pdfium/pdfium_form_filler.cc b/pdf/pdfium/pdfium_form_filler.cc index 205cfb2..b2ac56a 100644 --- a/pdf/pdfium/pdfium_form_filler.cc +++ b/pdf/pdfium/pdfium_form_filler.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/feature_list.h" +#include "base/location.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "pdf/pdf_features.h"
diff --git a/pdf/post_message_receiver.cc b/pdf/post_message_receiver.cc index a3d477e..6ea63203 100644 --- a/pdf/post_message_receiver.cc +++ b/pdf/post_message_receiver.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/bind.h" +#include "base/location.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/notreached.h"
diff --git a/pdf/ppapi_migration/graphics.cc b/pdf/ppapi_migration/graphics.cc index 350cafca..166f546f 100644 --- a/pdf/ppapi_migration/graphics.cc +++ b/pdf/ppapi_migration/graphics.cc
@@ -10,6 +10,7 @@ #include "base/callback.h" #include "base/check_op.h" +#include "base/location.h" #include "base/memory/ptr_util.h" #include "base/threading/sequenced_task_runner_handle.h" #include "pdf/ppapi_migration/callback.h"
diff --git a/pdf/preview_mode_client.cc b/pdf/preview_mode_client.cc index 6d60f8d..3bd6845 100644 --- a/pdf/preview_mode_client.cc +++ b/pdf/preview_mode_client.cc
@@ -11,7 +11,6 @@ #include <utility> #include "base/callback.h" -#include "base/location.h" #include "base/notreached.h" #include "base/time/time.h" #include "pdf/document_layout.h" @@ -23,6 +22,8 @@ PreviewModeClient::PreviewModeClient(Client* client) : client_(client) {} +PreviewModeClient::~PreviewModeClient() = default; + void PreviewModeClient::ProposeDocumentLayout(const DocumentLayout& layout) { // This will be invoked if the PreviewModeClient is used, which currently // occurs if and only if loading a non-PDF document with more than 1 page. @@ -177,10 +178,10 @@ } void PreviewModeClient::ScheduleTaskOnMainThread( - base::TimeDelta delay, + const base::Location& from_here, ResultCallback callback, int32_t result, - const base::Location& from_here) { + base::TimeDelta delay) { NOTREACHED(); }
diff --git a/pdf/preview_mode_client.h b/pdf/preview_mode_client.h index 785451d..5e992ca 100644 --- a/pdf/preview_mode_client.h +++ b/pdf/preview_mode_client.h
@@ -11,14 +11,8 @@ #include <vector> #include "base/callback_forward.h" -#include "base/location.h" #include "pdf/pdf_engine.h" -namespace gfx { -class Rect; -class Vector2d; -} // namespace gfx - namespace chrome_pdf { // The interface that's provided to the print preview rendering engine. @@ -31,7 +25,7 @@ }; explicit PreviewModeClient(Client* client); - ~PreviewModeClient() override {} + ~PreviewModeClient() override; // PDFEngine::Client implementation. void ProposeDocumentLayout(const DocumentLayout& layout) override; @@ -77,11 +71,10 @@ void SetSelectedText(const std::string& selected_text) override; void SetLinkUnderCursor(const std::string& link_under_cursor) override; bool IsValidLink(const std::string& url) override; - void ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here = base::Location::Current()) override; + void ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) override; private: Client* const client_;
diff --git a/pdf/test/test_client.cc b/pdf/test/test_client.cc index 7532f1c..11e2f05 100644 --- a/pdf/test/test_client.cc +++ b/pdf/test/test_client.cc
@@ -6,7 +6,6 @@ #include <memory> -#include "base/location.h" #include "base/time/time.h" #include "pdf/document_layout.h" #include "pdf/ppapi_migration/url_loader.h" @@ -70,9 +69,9 @@ return !url.empty(); } -void TestClient::ScheduleTaskOnMainThread(base::TimeDelta delay, +void TestClient::ScheduleTaskOnMainThread(const base::Location& from_here, ResultCallback callback, int32_t result, - const base::Location& from_here) {} + base::TimeDelta delay) {} } // namespace chrome_pdf
diff --git a/pdf/test/test_client.h b/pdf/test/test_client.h index d0d45766..748233b 100644 --- a/pdf/test/test_client.h +++ b/pdf/test/test_client.h
@@ -8,7 +8,6 @@ #include <string> #include <vector> -#include "base/location.h" #include "pdf/pdf_engine.h" namespace chrome_pdf { @@ -41,11 +40,10 @@ void SetSelectedText(const std::string& selected_text) override; void SetLinkUnderCursor(const std::string& link_under_cursor) override; bool IsValidLink(const std::string& url) override; - void ScheduleTaskOnMainThread( - base::TimeDelta delay, - ResultCallback callback, - int32_t result, - const base::Location& from_here = base::Location::Current()) override; + void ScheduleTaskOnMainThread(const base::Location& from_here, + ResultCallback callback, + int32_t result, + base::TimeDelta delay) override; private: // Not owned. Expected to dangle briefly, as the engine usually is destroyed
diff --git a/pdf/url_loader_wrapper_impl.cc b/pdf/url_loader_wrapper_impl.cc index 5396b639..d740ac3 100644 --- a/pdf/url_loader_wrapper_impl.cc +++ b/pdf/url_loader_wrapper_impl.cc
@@ -17,6 +17,7 @@ #include "base/callback.h" #include "base/check_op.h" #include "base/containers/span.h" +#include "base/location.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "net/http/http_util.h"
diff --git a/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc index 62adb78..52079b16 100644 --- a/printing/backend/cups_helper.cc +++ b/printing/backend/cups_helper.cc
@@ -4,6 +4,7 @@ #include "printing/backend/cups_helper.h" +#include <cups/ppd.h> #include <stddef.h> #include <stdio.h> @@ -14,7 +15,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/time/time.h" -#include "base/values.h" #include "build/build_config.h" #include "printing/backend/print_backend.h" #include "printing/backend/print_backend_consts.h"
diff --git a/printing/backend/cups_helper.h b/printing/backend/cups_helper.h index 8d90531e..5a1ee119 100644 --- a/printing/backend/cups_helper.h +++ b/printing/backend/cups_helper.h
@@ -6,7 +6,6 @@ #define PRINTING_BACKEND_CUPS_HELPER_H_ #include <cups/cups.h> -#include <cups/ppd.h> #include "base/strings/string_piece.h" #include "printing/printing_export.h"
diff --git a/printing/backend/print_backend_cups.cc b/printing/backend/print_backend_cups.cc index 5289f6b..c047368c 100644 --- a/printing/backend/print_backend_cups.cc +++ b/printing/backend/print_backend_cups.cc
@@ -12,9 +12,8 @@ #include <string> #include "base/files/file_util.h" -#include "base/lazy_instance.h" #include "base/logging.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/no_destructor.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" @@ -26,6 +25,7 @@ #include "url/gurl.h" #if defined(OS_MAC) +#include "base/feature_list.h" #include "printing/backend/cups_connection.h" #include "printing/backend/cups_ipp_utils.h" #include "printing/backend/print_backend_cups_ipp.h" @@ -43,6 +43,8 @@ cups_encryption_(encryption), blocking_(blocking) {} +PrintBackendCUPS::~PrintBackendCUPS() = default; + // static bool PrintBackendCUPS::PrinterBasicInfoFromCUPS( const cups_dest_t& printer, @@ -103,6 +105,16 @@ return true; } +// static +std::string PrintBackendCUPS::PrinterDriverInfoFromCUPS( + const cups_dest_t& printer) { + // base::StringPiece will correctly handle nullptrs from cupsGetOption(), + // whereas std::string will not. Thus do not directly assign to `result`. + base::StringPiece info( + cupsGetOption(kDriverNameTagName, printer.num_options, printer.options)); + return std::string(info); +} + void PrintBackendCUPS::DestinationDeleter::operator()(cups_dest_t* dest) const { cupsFreeDests(1, dest); } @@ -207,11 +219,7 @@ ScopedDestination dest = GetNamedDest(printer_name); if (dest) { DCHECK_EQ(printer_name, dest->name); - // base::StringPiece will correctly handle nullptrs from cupsGetOption(), - // whereas std::string will not. Thus do not directly assign to `result`. - base::StringPiece info( - cupsGetOption(kDriverNameTagName, dest->num_options, dest->options)); - result = std::string(info); + result = PrinterDriverInfoFromCUPS(*dest); } return result;
diff --git a/printing/backend/print_backend_cups.h b/printing/backend/print_backend_cups.h index 65fba0ef..2a07f2bd 100644 --- a/printing/backend/print_backend_cups.h +++ b/printing/backend/print_backend_cups.h
@@ -5,11 +5,12 @@ #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_ #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_ +#include <cups/cups.h> + #include <memory> #include <string> -#include "base/files/file_util.h" -#include "printing/backend/cups_helper.h" +#include "base/files/file_path.h" #include "printing/backend/print_backend.h" #include "printing/printing_export.h" #include "url/gurl.h" @@ -23,10 +24,12 @@ bool blocking, const std::string& locale); - // This static function is exposed here for use in the tests. + // 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); private: struct DestinationDeleter { @@ -34,7 +37,7 @@ }; using ScopedDestination = std::unique_ptr<cups_dest_t, DestinationDeleter>; - ~PrintBackendCUPS() override {} + ~PrintBackendCUPS() override; // PrintBackend implementation. bool EnumeratePrinters(PrinterList* printer_list) override;
diff --git a/printing/backend/print_backend_cups_unittest.cc b/printing/backend/print_backend_cups_unittest.cc index aef089e..8be08cd 100644 --- a/printing/backend/print_backend_cups_unittest.cc +++ b/printing/backend/print_backend_cups_unittest.cc
@@ -44,6 +44,7 @@ TEST(PrintBackendCupsTest, PrinterBasicInfoFromCUPS) { constexpr char kName[] = "printer"; + constexpr char kDescription[] = "description"; cups_dest_t* printer = nullptr; ASSERT_EQ( 1, cupsAddDest(kName, /*instance=*/nullptr, /*num_dests=*/0, &printer)); @@ -51,13 +52,18 @@ int num_options = 0; cups_option_t* options = nullptr; #if defined(OS_MAC) + constexpr char kInfo[] = "info"; num_options = - cupsAddOption(kCUPSOptPrinterInfo, "info", num_options, &options); - num_options = cupsAddOption(kCUPSOptPrinterMakeAndModel, "description", + cupsAddOption(kCUPSOptPrinterInfo, kInfo, num_options, &options); + num_options = cupsAddOption(kCUPSOptPrinterMakeAndModel, kDescription, num_options, &options); + ASSERT_EQ(2, num_options); + ASSERT_TRUE(options); #else num_options = - cupsAddOption(kCUPSOptPrinterInfo, "description", num_options, &options); + cupsAddOption(kCUPSOptPrinterInfo, kDescription, num_options, &options); + ASSERT_EQ(1, num_options); + ASSERT_TRUE(options); #endif printer->num_options = num_options; printer->options = options; @@ -69,11 +75,33 @@ EXPECT_EQ(kName, printer_info.printer_name); #if defined(OS_MAC) - EXPECT_EQ("info", printer_info.display_name); + EXPECT_EQ(kInfo, printer_info.display_name); #else EXPECT_EQ(kName, printer_info.display_name); #endif - EXPECT_EQ("description", printer_info.printer_description); + EXPECT_EQ(kDescription, printer_info.printer_description); +} + +TEST(PrintBackendCupsTest, PrinterDriverInfoFromCUPS) { + constexpr char kName[] = "test-printer-name"; + constexpr char kDescription[] = "A test printer"; + cups_dest_t* printer = nullptr; + ASSERT_EQ( + 1, cupsAddDest(kName, /*instance=*/nullptr, /*num_dests=*/0, &printer)); + + int num_options = 0; + cups_option_t* options = nullptr; + num_options = cupsAddOption(kCUPSOptPrinterMakeAndModel, kDescription, + num_options, &options); + ASSERT_EQ(1, num_options); + ASSERT_TRUE(options); + printer->num_options = num_options; + printer->options = options; + + EXPECT_EQ(kDescription, + PrintBackendCUPS::PrinterDriverInfoFromCUPS(*printer)); + + cupsFreeDests(/*num_dests=*/1, printer); } TEST(PrintBackendCupsTest, EligibleDestTypes) {
diff --git a/remoting/host/clipboard_x11.cc b/remoting/host/clipboard_x11.cc index d30c53b..64be1bb 100644 --- a/remoting/host/clipboard_x11.cc +++ b/remoting/host/clipboard_x11.cc
@@ -4,7 +4,7 @@ #include "remoting/host/clipboard.h" -#include "base/memory/ptr_util.h" +#include <memory> #include "base/bind.h" #include "base/logging.h" @@ -23,6 +23,8 @@ ClipboardX11(); ~ClipboardX11() override; + void Init(); + // Clipboard interface. void Start( std::unique_ptr<protocol::ClipboardStub> client_clipboard) override; @@ -55,17 +57,19 @@ } } -void ClipboardX11::Start( - std::unique_ptr<protocol::ClipboardStub> client_clipboard) { +void ClipboardX11::Init() { connection_ = x11::Connection::Get(); connection_->AddEventObserver(this); - client_clipboard_.swap(client_clipboard); - x_server_clipboard_.Init( connection_, base::BindRepeating(&ClipboardX11::OnClipboardChanged, base::Unretained(this))); } +void ClipboardX11::Start( + std::unique_ptr<protocol::ClipboardStub> client_clipboard) { + client_clipboard_.swap(client_clipboard); +} + void ClipboardX11::InjectClipboardEvent(const protocol::ClipboardEvent& event) { x_server_clipboard_.SetClipboard(event.mime_type(), event.data()); } @@ -86,7 +90,9 @@ } std::unique_ptr<Clipboard> Clipboard::Create() { - return base::WrapUnique(new ClipboardX11()); + auto clipboard = std::make_unique<ClipboardX11>(); + clipboard->Init(); + return clipboard; } } // namespace remoting
diff --git a/remoting/protocol/BUILD.gn b/remoting/protocol/BUILD.gn index 3a39add..30ef11c 100644 --- a/remoting/protocol/BUILD.gn +++ b/remoting/protocol/BUILD.gn
@@ -209,6 +209,8 @@ "webrtc_transport.h", "webrtc_video_renderer_adapter.cc", "webrtc_video_renderer_adapter.h", + "webrtc_video_track_source.cc", + "webrtc_video_track_source.h", ] configs += [
diff --git a/remoting/protocol/webrtc_video_stream.cc b/remoting/protocol/webrtc_video_stream.cc index 8fba166..795631a 100644 --- a/remoting/protocol/webrtc_video_stream.cc +++ b/remoting/protocol/webrtc_video_stream.cc
@@ -17,6 +17,7 @@ #include "remoting/protocol/host_video_stats_dispatcher.h" #include "remoting/protocol/webrtc_frame_scheduler_simple.h" #include "remoting/protocol/webrtc_transport.h" +#include "remoting/protocol/webrtc_video_track_source.h" #include "third_party/webrtc/api/media_stream_interface.h" #include "third_party/webrtc/api/notifier.h" #include "third_party/webrtc/api/peer_connection_interface.h" @@ -49,27 +50,6 @@ return ""; } -class DummyVideoTrackSource - : public webrtc::Notifier<webrtc::VideoTrackSourceInterface> { - public: - SourceState state() const override { return kLive; } - bool remote() const override { return false; } - bool is_screencast() const override { return true; } - absl::optional<bool> needs_denoising() const override { - return absl::nullopt; - } - bool GetStats(Stats* stats) override { return false; } - void AddOrUpdateSink(rtc::VideoSinkInterface<webrtc::VideoFrame>* sink, - const rtc::VideoSinkWants& wants) override {} - void RemoveSink(rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) override {} - bool SupportsEncodedOutput() const override { return false; } - void GenerateKeyFrame() override {} - void AddEncodedSink( - rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override {} - void RemoveEncodedSink( - rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override {} -}; - } // namespace struct WebrtcVideoStream::FrameStats { @@ -144,7 +124,7 @@ capturer_->Start(this); rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> src = - new rtc::RefCountedObject<DummyVideoTrackSource>(); + new rtc::RefCountedObject<WebrtcVideoTrackSource>(); rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track = peer_connection_factory->CreateVideoTrack(kVideoLabel, src);
diff --git a/remoting/protocol/webrtc_video_track_source.cc b/remoting/protocol/webrtc_video_track_source.cc new file mode 100644 index 0000000..03f410f --- /dev/null +++ b/remoting/protocol/webrtc_video_track_source.cc
@@ -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. + +#include "remoting/protocol/webrtc_video_track_source.h" + +namespace remoting { +namespace protocol { + +WebrtcVideoTrackSource::WebrtcVideoTrackSource() = default; +WebrtcVideoTrackSource::~WebrtcVideoTrackSource() = default; + +webrtc::MediaSourceInterface::SourceState WebrtcVideoTrackSource::state() + const { + return kLive; +} + +bool WebrtcVideoTrackSource::remote() const { + return false; +} + +bool WebrtcVideoTrackSource::is_screencast() const { + return true; +} + +absl::optional<bool> WebrtcVideoTrackSource::needs_denoising() const { + return absl::nullopt; +} + +bool WebrtcVideoTrackSource::GetStats( + webrtc::VideoTrackSourceInterface::Stats* stats) { + return false; +} + +void WebrtcVideoTrackSource::AddOrUpdateSink( + rtc::VideoSinkInterface<webrtc::VideoFrame>* sink, + const rtc::VideoSinkWants& wants) {} + +void WebrtcVideoTrackSource::RemoveSink( + rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) {} + +bool WebrtcVideoTrackSource::SupportsEncodedOutput() const { + return false; +} + +void WebrtcVideoTrackSource::GenerateKeyFrame() {} + +void WebrtcVideoTrackSource::AddEncodedSink( + rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) {} + +void WebrtcVideoTrackSource::RemoveEncodedSink( + rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) {} + +} // namespace protocol +} // namespace remoting
diff --git a/remoting/protocol/webrtc_video_track_source.h b/remoting/protocol/webrtc_video_track_source.h new file mode 100644 index 0000000..0d919b7 --- /dev/null +++ b/remoting/protocol/webrtc_video_track_source.h
@@ -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. + +#ifndef REMOTING_PROTOCOL_WEBRTC_VIDEO_TRACK_SOURCE_H_ +#define REMOTING_PROTOCOL_WEBRTC_VIDEO_TRACK_SOURCE_H_ + +#include "third_party/webrtc/api/media_stream_interface.h" +#include "third_party/webrtc/api/notifier.h" + +namespace remoting { +namespace protocol { + +class WebrtcVideoTrackSource + : public webrtc::Notifier<webrtc::VideoTrackSourceInterface> { + public: + WebrtcVideoTrackSource(); + ~WebrtcVideoTrackSource() override; + WebrtcVideoTrackSource(const WebrtcVideoTrackSource&) = delete; + WebrtcVideoTrackSource& operator=(const WebrtcVideoTrackSource&) = delete; + + // VideoTrackSourceInterface implementation. + SourceState state() const override; + bool remote() const override; + bool is_screencast() const override; + absl::optional<bool> needs_denoising() const override; + bool GetStats(Stats* stats) override; + void AddOrUpdateSink(rtc::VideoSinkInterface<webrtc::VideoFrame>* sink, + const rtc::VideoSinkWants& wants) override; + void RemoveSink(rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) override; + bool SupportsEncodedOutput() const override; + void GenerateKeyFrame() override; + void AddEncodedSink( + rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override; + void RemoveEncodedSink( + rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override; +}; + +} // namespace protocol +} // namespace remoting + +#endif // REMOTING_PROTOCOL_WEBRTC_VIDEO_TRACK_SOURCE_H_
diff --git a/skia/BUILD.gn b/skia/BUILD.gn index 28066d3..98cc74c 100644 --- a/skia/BUILD.gn +++ b/skia/BUILD.gn
@@ -959,8 +959,6 @@ "//third_party/test_fonts", ] data_deps = [ "//third_party/test_fonts" ] - additional_manifests = - [ "//build/config/fuchsia/test/sys_launcher_capabilities.test-cmx" ] } if (skia_support_skottie) {
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index f85a45e..817fa113 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -4534,11 +4534,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -4548,7 +4548,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -4613,11 +4613,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -4627,7 +4627,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -4771,11 +4771,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -4785,7 +4785,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -4850,11 +4850,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -4864,7 +4864,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -5076,11 +5076,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -5090,7 +5090,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -5155,11 +5155,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -5169,7 +5169,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -5313,11 +5313,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -5327,7 +5327,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -5392,11 +5392,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -5406,7 +5406,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index bee14d2..977dc89 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -46456,11 +46456,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -46470,7 +46470,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -46535,11 +46535,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -46549,7 +46549,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -46693,11 +46693,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -46707,7 +46707,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -46772,11 +46772,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -46786,7 +46786,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -46997,11 +46997,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -47011,7 +47011,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47076,11 +47076,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -47090,7 +47090,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47234,11 +47234,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.109", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 89.0.4389.110", "resultdb": { "enable": true }, @@ -47248,7 +47248,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M89", - "revision": "version:89.0.4389.109" + "revision": "version:89.0.4389.110" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47313,11 +47313,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.42", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 90.0.4430.43", "resultdb": { "enable": true }, @@ -47327,7 +47327,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M90", - "revision": "version:90.0.4430.42" + "revision": "version:90.0.4430.43" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 17c3b64..aec2f9e 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -311,13 +311,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=90', ], - 'identifier': 'Implementation Library Skew Tests For 90.0.4430.42', + 'identifier': 'Implementation Library Skew Tests For 90.0.4430.43', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M90', - 'revision': 'version:90.0.4430.42', + 'revision': 'version:90.0.4430.43', } ], }, @@ -335,13 +335,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=89', ], - 'identifier': 'Implementation Library Skew Tests For 89.0.4389.109', + 'identifier': 'Implementation Library Skew Tests For 89.0.4389.110', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M89', - 'revision': 'version:89.0.4389.109', + 'revision': 'version:89.0.4389.110', } ], }, @@ -383,13 +383,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=90', ], - 'identifier': 'Implementation Library Skew Tests For 90.0.4430.42', + 'identifier': 'Implementation Library Skew Tests For 90.0.4430.43', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M90', - 'revision': 'version:90.0.4430.42', + 'revision': 'version:90.0.4430.43', } ], }, @@ -407,13 +407,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=89', ], - 'identifier': 'Implementation Library Skew Tests For 89.0.4389.109', + 'identifier': 'Implementation Library Skew Tests For 89.0.4389.110', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M89', - 'revision': 'version:89.0.4389.109', + 'revision': 'version:89.0.4389.110', } ], }, @@ -455,13 +455,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--client-version=90', ], - 'identifier': 'Client Library Skew Tests For 90.0.4430.42', + 'identifier': 'Client Library Skew Tests For 90.0.4430.43', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M90', - 'revision': 'version:90.0.4430.42', + 'revision': 'version:90.0.4430.43', } ], }, @@ -479,13 +479,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--client-version=89', ], - 'identifier': 'Client Library Skew Tests For 89.0.4389.109', + 'identifier': 'Client Library Skew Tests For 89.0.4389.110', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M89', - 'revision': 'version:89.0.4389.109', + 'revision': 'version:89.0.4389.110', } ], },
diff --git a/third_party/blink/renderer/core/animation/compositor_animations.cc b/third_party/blink/renderer/core/animation/compositor_animations.cc index ae6e01ac..142d5854 100644 --- a/third_party/blink/renderer/core/animation/compositor_animations.cc +++ b/third_party/blink/renderer/core/animation/compositor_animations.cc
@@ -283,18 +283,28 @@ // Backdrop-filter pixel moving filters do not change the layer bounds // like regular filters do, so they can still be composited. break; - case CSSPropertyID::kBackgroundColor: + case CSSPropertyID::kBackgroundColor: { + // When this is true, we have a background-color animation in the body + // element, while the view is responsible for painting the body's + // background. In this case, we need to let the background-color + // animation run on the main thread because the body is not painted + // with BackgroundColorPaintWorklet. + bool background_transfers_to_view = + target_element.GetLayoutBoxModelObject() && + target_element.GetLayoutBoxModelObject() + ->BackgroundTransfersToView(); // The table rows and table cols are painted into table cells, which // means their background is never painted using // BackgroundColorPaintWorklet, as a result, we should not composite // the background color animation on the table rows or cols. if (!RuntimeEnabledFeatures::CompositeBGColorAnimationEnabled() || layout_object->IsLayoutTableCol() || - layout_object->IsTableRow()) { + layout_object->IsTableRow() || background_transfers_to_view) { DefaultToUnsupportedProperty(unsupported_properties, property, &reasons); } break; + } case CSSPropertyID::kVariable: { // Custom properties are supported only in the case of // OffMainThreadCSSPaintEnabled, and even then only for some specific
diff --git a/third_party/blink/renderer/core/clipboard/raw_system_clipboard.h b/third_party/blink/renderer/core/clipboard/raw_system_clipboard.h index 61bf9c1..e78f93e1 100644 --- a/third_party/blink/renderer/core/clipboard/raw_system_clipboard.h +++ b/third_party/blink/renderer/core/clipboard/raw_system_clipboard.h
@@ -42,9 +42,7 @@ void Trace(Visitor*) const; private: - HeapMojoRemote<mojom::blink::RawClipboardHost, - HeapMojoWrapperMode::kWithoutContextObserver> - clipboard_; + HeapMojoRemote<mojom::blink::RawClipboardHost> clipboard_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.cc b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.cc index 0633e80..7085338 100644 --- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.cc +++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.cc
@@ -4,60 +4,79 @@ #include "third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.h" -#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h" +#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_frame.h" namespace blink { -TextSuggestionBackendImpl::TextSuggestionBackendImpl(LocalFrame& frame) - : frame_(frame) {} +// static +const char TextSuggestionBackendImpl::kSupplementName[] = + "TextSuggestionBackendImpl"; // static -void TextSuggestionBackendImpl::Create( +TextSuggestionBackendImpl* TextSuggestionBackendImpl::From(LocalFrame& frame) { + return Supplement<LocalFrame>::From<TextSuggestionBackendImpl>(frame); +} + +// static +void TextSuggestionBackendImpl::Bind( LocalFrame* frame, mojo::PendingReceiver<mojom::blink::TextSuggestionBackend> receiver) { - mojo::MakeSelfOwnedReceiver(std::unique_ptr<TextSuggestionBackendImpl>( - new TextSuggestionBackendImpl(*frame)), - std::move(receiver)); + DCHECK(frame); + DCHECK(!TextSuggestionBackendImpl::From(*frame)); + auto* text_suggestion = MakeGarbageCollected<TextSuggestionBackendImpl>( + base::PassKey<TextSuggestionBackendImpl>(), *frame, std::move(receiver)); + Supplement<LocalFrame>::ProvideTo(*frame, text_suggestion); +} + +TextSuggestionBackendImpl::TextSuggestionBackendImpl( + base::PassKey<TextSuggestionBackendImpl>, + LocalFrame& frame, + mojo::PendingReceiver<mojom::blink::TextSuggestionBackend> receiver) + : Supplement<LocalFrame>(frame), receiver_(this, frame.DomWindow()) { + receiver_.Bind(std::move(receiver), + frame.GetTaskRunner(TaskType::kInternalUserInteraction)); +} + +void TextSuggestionBackendImpl::Trace(Visitor* visitor) const { + visitor->Trace(receiver_); + Supplement<LocalFrame>::Trace(visitor); } void TextSuggestionBackendImpl::ApplySpellCheckSuggestion( const WTF::String& suggestion) { - if (frame_) - frame_->GetTextSuggestionController().ApplySpellCheckSuggestion(suggestion); + GetSupplementable()->GetTextSuggestionController().ApplySpellCheckSuggestion( + suggestion); } void TextSuggestionBackendImpl::ApplyTextSuggestion(int32_t marker_tag, int32_t suggestion_index) { - if (frame_) { - frame_->GetTextSuggestionController().ApplyTextSuggestion(marker_tag, - suggestion_index); - } + GetSupplementable()->GetTextSuggestionController().ApplyTextSuggestion( + marker_tag, suggestion_index); } void TextSuggestionBackendImpl::DeleteActiveSuggestionRange() { - if (frame_) - frame_->GetTextSuggestionController().DeleteActiveSuggestionRange(); + GetSupplementable() + ->GetTextSuggestionController() + .DeleteActiveSuggestionRange(); } void TextSuggestionBackendImpl::OnNewWordAddedToDictionary( const WTF::String& word) { - if (frame_) - frame_->GetTextSuggestionController().OnNewWordAddedToDictionary(word); + GetSupplementable()->GetTextSuggestionController().OnNewWordAddedToDictionary( + word); } void TextSuggestionBackendImpl::OnSuggestionMenuClosed() { - if (frame_) - frame_->GetTextSuggestionController().OnSuggestionMenuClosed(); + GetSupplementable()->GetTextSuggestionController().OnSuggestionMenuClosed(); } void TextSuggestionBackendImpl::SuggestionMenuTimeoutCallback( int32_t max_number_of_suggestions) { - if (frame_) { - frame_->GetTextSuggestionController().SuggestionMenuTimeoutCallback( - max_number_of_suggestions); - } + GetSupplementable() + ->GetTextSuggestionController() + .SuggestionMenuTimeoutCallback(max_number_of_suggestions); } } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.h b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.h index 6d5930af..62051bc1 100644 --- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.h +++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_backend_impl.h
@@ -5,10 +5,14 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SUGGESTION_TEXT_SUGGESTION_BACKEND_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SUGGESTION_TEXT_SUGGESTION_BACKEND_IMPL_H_ +#include "base/types/pass_key.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "third_party/blink/public/mojom/input/input_messages.mojom-blink.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/heap/persistent.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" +#include "third_party/blink/renderer/platform/supplementable.h" namespace blink { @@ -16,11 +20,26 @@ // Implementation of mojom::blink::TextSuggestionBackend class CORE_EXPORT TextSuggestionBackendImpl final - : public mojom::blink::TextSuggestionBackend { + : public GarbageCollected<TextSuggestionBackendImpl>, + public mojom::blink::TextSuggestionBackend, + public Supplement<LocalFrame> { public: - static void Create( - LocalFrame*, - mojo::PendingReceiver<mojom::blink::TextSuggestionBackend>); + static const char kSupplementName[]; + static TextSuggestionBackendImpl* From(LocalFrame&); + static void Bind(LocalFrame*, + mojo::PendingReceiver<mojom::blink::TextSuggestionBackend>); + + explicit TextSuggestionBackendImpl( + base::PassKey<TextSuggestionBackendImpl>, + LocalFrame&, + mojo::PendingReceiver<mojom::blink::TextSuggestionBackend> receiver); + + // Not copyable or movable + TextSuggestionBackendImpl(const TextSuggestionBackendImpl&) = delete; + TextSuggestionBackendImpl& operator=(const TextSuggestionBackendImpl&) = + delete; + + void Trace(Visitor* visitor) const override; void ApplySpellCheckSuggestion(const String& suggestion) final; void ApplyTextSuggestion(int32_t marker_tag, int32_t suggestion_index) final; @@ -30,11 +49,10 @@ void SuggestionMenuTimeoutCallback(int32_t max_number_of_suggestions) final; private: - explicit TextSuggestionBackendImpl(LocalFrame&); - - WeakPersistent<LocalFrame> frame_; - - DISALLOW_COPY_AND_ASSIGN(TextSuggestionBackendImpl); + HeapMojoReceiver<mojom::blink::TextSuggestionBackend, + TextSuggestionBackendImpl, + HeapMojoWrapperMode::kForceWithoutContextObserver> + receiver_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h index adf8768..4fedba4 100644 --- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h +++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h
@@ -72,9 +72,7 @@ bool is_suggestion_menu_open_; const Member<LocalDOMWindow> window_; - HeapMojoRemote<mojom::blink::TextSuggestionHost, - HeapMojoWrapperMode::kWithoutContextObserver> - text_suggestion_host_; + HeapMojoRemote<mojom::blink::TextSuggestionHost> text_suggestion_host_; DISALLOW_COPY_AND_ASSIGN(TextSuggestionController); };
diff --git a/third_party/blink/renderer/core/fetch/fetch_request_data.h b/third_party/blink/renderer/core/fetch/fetch_request_data.h index 0d4ce70..e93726a 100644 --- a/third_party/blink/renderer/core/fetch/fetch_request_data.h +++ b/third_party/blink/renderer/core/fetch/fetch_request_data.h
@@ -178,9 +178,7 @@ // the system would otherwise decide to use to load this request. // Currently used for blob: URLs, to ensure they can still be loaded even if // the URL got revoked after creating the request. - HeapMojoRemote<network::mojom::blink::URLLoaderFactory, - HeapMojoWrapperMode::kWithoutContextObserver> - url_loader_factory_; + HeapMojoRemote<network::mojom::blink::URLLoaderFactory> url_loader_factory_; base::UnguessableToken window_id_; Member<ExecutionContext> execution_context_; bool allow_http1_for_streaming_upload_ = false;
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h index 6cc8855..5bc2396 100644 --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -874,10 +874,7 @@ // them explicitly or the pipe closing to delete them. // // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoUniqueReceiverSet< - blink::mojom::blink::PauseSubresourceLoadingHandle, - std::default_delete<blink::mojom::blink::PauseSubresourceLoadingHandle>, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoUniqueReceiverSet<blink::mojom::blink::PauseSubresourceLoadingHandle> pause_handle_receivers_{nullptr}; // Keeps track of all the registered VK observers. @@ -941,15 +938,12 @@ // const methods. // // LocalFrame can be reused by multiple ExecutionContext. - mutable HeapMojoRemote<mojom::blink::ReportingServiceProxy, - HeapMojoWrapperMode::kWithoutContextObserver> + mutable HeapMojoRemote<mojom::blink::ReportingServiceProxy> reporting_service_{nullptr}; #if defined(OS_MAC) // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoRemote<mojom::blink::TextInputHost, - HeapMojoWrapperMode::kWithoutContextObserver> - text_input_host_{nullptr}; + HeapMojoRemote<mojom::blink::TextInputHost> text_input_host_{nullptr}; #endif mojom::blink::ViewportIntersectionState intersection_state_; @@ -980,32 +974,23 @@ std::unique_ptr<WebPrescientNetworking> prescient_networking_; // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoAssociatedRemote<mojom::blink::LocalFrameHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedRemote<mojom::blink::LocalFrameHost> local_frame_host_remote_{nullptr}; // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoAssociatedRemote<mojom::blink::BackForwardCacheControllerHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedRemote<mojom::blink::BackForwardCacheControllerHost> back_forward_cache_controller_host_remote_{nullptr}; // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoAssociatedReceiver<mojom::blink::LocalFrame, - LocalFrame, - HeapMojoWrapperMode::kWithoutContextObserver> - receiver_{this, nullptr}; + HeapMojoAssociatedReceiver<mojom::blink::LocalFrame, LocalFrame> receiver_{ + this, nullptr}; // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoAssociatedReceiver<mojom::blink::LocalMainFrame, - LocalFrame, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedReceiver<mojom::blink::LocalMainFrame, LocalFrame> main_frame_receiver_{this, nullptr}; // LocalFrame can be reused by multiple ExecutionContext. - HeapMojoReceiver<mojom::blink::HighPriorityLocalFrame, - LocalFrame, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<mojom::blink::HighPriorityLocalFrame, LocalFrame> high_priority_frame_receiver_{this, nullptr}; // LocalFrame can be reused by multiple ExecutionContext. HeapMojoAssociatedReceiver<mojom::blink::FullscreenVideoElementHandler, - LocalFrame, - HeapMojoWrapperMode::kWithoutContextObserver> + LocalFrame> fullscreen_video_receiver_{this, nullptr}; // Variable to control burst of download requests.
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h index 59d85d7..c70ed381 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h
@@ -926,17 +926,12 @@ scoped_refptr<base::SingleThreadTaskRunner> paint_task_runner_; // WebFrameWidgetImpl is not tied to ExecutionContext - HeapMojoAssociatedRemote<mojom::blink::FrameWidgetHost, - HeapMojoWrapperMode::kWithoutContextObserver> - frame_widget_host_{nullptr}; + HeapMojoAssociatedRemote<mojom::blink::FrameWidgetHost> frame_widget_host_{ + nullptr}; // WebFrameWidgetImpl is not tied to ExecutionContext - HeapMojoAssociatedReceiver<mojom::blink::FrameWidget, - WebFrameWidgetImpl, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedReceiver<mojom::blink::FrameWidget, WebFrameWidgetImpl> receiver_{this, nullptr}; - HeapMojoReceiver<viz::mojom::blink::InputTargetClient, - WebFrameWidgetImpl, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<viz::mojom::blink::InputTargetClient, WebFrameWidgetImpl> input_target_receiver_{this, nullptr}; // Different consumers in the browser process makes different assumptions, so
diff --git a/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.h b/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.h index 62be6d5..60463d88 100644 --- a/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.h +++ b/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.h
@@ -81,9 +81,7 @@ Member<ChromeClient> chrome_client_; PagePopup* popup_; Locale& locale_; - HeapMojoRemote<mojom::blink::EyeDropperChooser, - HeapMojoWrapperMode::kWithoutContextObserver> - eye_dropper_chooser_; + HeapMojoRemote<mojom::blink::EyeDropperChooser> eye_dropper_chooser_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.h b/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.h index d0ed49f..45879cc 100644 --- a/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.h +++ b/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.h
@@ -71,9 +71,7 @@ private: mojo::Remote<mojom::blink::ColorChooserFactory> color_chooser_factory_; - HeapMojoReceiver<mojom::blink::ColorChooserClient, - ColorChooserUIController, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<mojom::blink::ColorChooserClient, ColorChooserUIController> receiver_; };
diff --git a/third_party/blink/renderer/core/html/forms/external_popup_menu.h b/third_party/blink/renderer/core/html/forms/external_popup_menu.h index 061b856..973d890 100644 --- a/third_party/blink/renderer/core/html/forms/external_popup_menu.h +++ b/third_party/blink/renderer/core/html/forms/external_popup_menu.h
@@ -92,10 +92,7 @@ std::unique_ptr<WebMouseEvent> synthetic_event_; HeapTaskRunnerTimer<ExternalPopupMenu> dispatch_event_timer_; // The actual implementor of the show menu. - HeapMojoReceiver<mojom::blink::PopupMenuClient, - ExternalPopupMenu, - HeapMojoWrapperMode::kWithoutContextObserver> - receiver_; + HeapMojoReceiver<mojom::blink::PopupMenuClient, ExternalPopupMenu> receiver_; bool needs_update_ = false; };
diff --git a/third_party/blink/renderer/core/inspector/devtools_agent.h b/third_party/blink/renderer/core/inspector/devtools_agent.h index d595648c..b61547ec2 100644 --- a/third_party/blink/renderer/core/inspector/devtools_agent.h +++ b/third_party/blink/renderer/core/inspector/devtools_agent.h
@@ -126,17 +126,12 @@ Client* client_; // DevToolsAgent is not tied to ExecutionContext - HeapMojoAssociatedReceiver<mojom::blink::DevToolsAgent, - DevToolsAgent, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedReceiver<mojom::blink::DevToolsAgent, DevToolsAgent> associated_receiver_{this, nullptr}; // DevToolsAgent is not tied to ExecutionContext - HeapMojoRemote<mojom::blink::DevToolsAgentHost, - HeapMojoWrapperMode::kWithoutContextObserver> - host_remote_{nullptr}; + HeapMojoRemote<mojom::blink::DevToolsAgentHost> host_remote_{nullptr}; // DevToolsAgent is not tied to ExecutionContext - HeapMojoAssociatedRemote<mojom::blink::DevToolsAgentHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedRemote<mojom::blink::DevToolsAgentHost> associated_host_remote_{nullptr}; Member<InspectedFrames> inspected_frames_; Member<CoreProbeSink> probe_sink_;
diff --git a/third_party/blink/renderer/core/inspector/devtools_session.h b/third_party/blink/renderer/core/inspector/devtools_session.h index 1a7018d..1fb9aa9e 100644 --- a/third_party/blink/renderer/core/inspector/devtools_session.h +++ b/third_party/blink/renderer/core/inspector/devtools_session.h
@@ -105,14 +105,11 @@ Member<DevToolsAgent> agent_; // DevToolsSession is not tied to ExecutionContext - HeapMojoAssociatedReceiver<mojom::blink::DevToolsSession, - DevToolsSession, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedReceiver<mojom::blink::DevToolsSession, DevToolsSession> receiver_{this, nullptr}; // DevToolsSession is not tied to ExecutionContext - HeapMojoAssociatedRemote<mojom::blink::DevToolsSessionHost, - HeapMojoWrapperMode::kWithoutContextObserver> - host_remote_{nullptr}; + HeapMojoAssociatedRemote<mojom::blink::DevToolsSessionHost> host_remote_{ + nullptr}; IOSession* io_session_; std::unique_ptr<v8_inspector::V8InspectorSession> v8_session_; std::unique_ptr<protocol::UberDispatcher> inspector_backend_dispatcher_;
diff --git a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_column.cc b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_column.cc index 4b9d4cd..00f7f32 100644 --- a/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_column.cc +++ b/third_party/blink/renderer/core/layout/ng/table/layout_ng_table_column.cc
@@ -50,17 +50,21 @@ void LayoutNGTableColumn::InsertedIntoTree() { NOT_DESTROYED(); LayoutBox::InsertedIntoTree(); - DCHECK(Table()); + LayoutNGTable* table = Table(); + DCHECK(table); if (StyleRef().HasBackground()) - Table()->SetBackgroundNeedsFullPaintInvalidation(); + table->SetBackgroundNeedsFullPaintInvalidation(); + table->TableGridStructureChanged(); } void LayoutNGTableColumn::WillBeRemovedFromTree() { NOT_DESTROYED(); LayoutBox::WillBeRemovedFromTree(); - DCHECK(Table()); + LayoutNGTable* table = Table(); + DCHECK(table); if (StyleRef().HasBackground()) - Table()->SetBackgroundNeedsFullPaintInvalidation(); + table->SetBackgroundNeedsFullPaintInvalidation(); + table->TableGridStructureChanged(); } bool LayoutNGTableColumn::IsChildAllowed(LayoutObject* child,
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc index 698c121..33e2846 100644 --- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc
@@ -524,6 +524,8 @@ column_constraints->data[column_index].is_mergeable) { --column_index; } + if (column_index == 0 && column_constraints->data[0].is_mergeable) + return 0; return column_index + 1; }
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/third_party/blink/renderer/core/page/context_menu_controller.h index 8aea0b8..76225d5 100644 --- a/third_party/blink/renderer/core/page/context_menu_controller.h +++ b/third_party/blink/renderer/core/page/context_menu_controller.h
@@ -115,8 +115,7 @@ void UpdateTextFragmentSelectorGenerator(LocalFrame*); HeapMojoAssociatedReceiver<mojom::blink::ContextMenuClient, - ContextMenuController, - HeapMojoWrapperMode::kWithoutContextObserver> + ContextMenuController> context_menu_client_receiver_{this, nullptr}; Member<Page> page_;
diff --git a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h index c871c56..835c81d 100644 --- a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h +++ b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h
@@ -80,12 +80,8 @@ void BannerAccepted(const String& platform) override; void BannerDismissed() override; - HeapMojoRemote<mojom::blink::AppBannerService, - HeapMojoWrapperMode::kWithoutContextObserver> - banner_service_remote_; - HeapMojoReceiver<mojom::blink::AppBannerEvent, - BeforeInstallPromptEvent, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<mojom::blink::AppBannerService> banner_service_remote_; + HeapMojoReceiver<mojom::blink::AppBannerEvent, BeforeInstallPromptEvent> receiver_; Vector<String> platforms_; Member<UserChoiceProperty> user_choice_;
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h b/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h index 44c0e2d..35f0c798 100644 --- a/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h +++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h
@@ -137,8 +137,7 @@ registration_service_; HeapMojoReceiver<blink::mojom::blink::BackgroundFetchRegistrationObserver, - BackgroundFetchRegistration, - HeapMojoWrapperMode::kWithoutContextObserver> + BackgroundFetchRegistration> observer_receiver_; };
diff --git a/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.h b/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.h index 303ea5b..eeddf3f8 100644 --- a/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.h +++ b/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.h
@@ -59,8 +59,7 @@ Member<ServiceWorkerRegistration> registration_; scoped_refptr<base::SequencedTaskRunner> task_runner_; - HeapMojoRemote<mojom::blink::PeriodicBackgroundSyncService, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<mojom::blink::PeriodicBackgroundSyncService> background_sync_service_; };
diff --git a/third_party/blink/renderer/modules/background_sync/sync_manager.h b/third_party/blink/renderer/modules/background_sync/sync_manager.h index 3f7cf4a00..2e03474 100644 --- a/third_party/blink/renderer/modules/background_sync/sync_manager.h +++ b/third_party/blink/renderer/modules/background_sync/sync_manager.h
@@ -47,8 +47,7 @@ WTF::Vector<mojom::blink::SyncRegistrationOptionsPtr> registrations); Member<ServiceWorkerRegistration> registration_; - HeapMojoRemote<mojom::blink::OneShotBackgroundSyncService, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<mojom::blink::OneShotBackgroundSyncService> background_sync_service_; };
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_storage_blob_client_list.cc b/third_party/blink/renderer/modules/cache_storage/cache_storage_blob_client_list.cc index ccd7ab7..36d39a9 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache_storage_blob_client_list.cc +++ b/third_party/blink/renderer/modules/cache_storage/cache_storage_blob_client_list.cc
@@ -69,10 +69,7 @@ } WeakMember<CacheStorageBlobClientList> owner_; - HeapMojoReceiver<mojom::blink::BlobReaderClient, - Client, - HeapMojoWrapperMode::kWithoutContextObserver> - client_receiver_; + HeapMojoReceiver<mojom::blink::BlobReaderClient, Client> client_receiver_; Member<DataPipeBytesConsumer::CompletionNotifier> completion_notifier_; DISALLOW_COPY_AND_ASSIGN(Client);
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_promise.h b/third_party/blink/renderer/modules/clipboard/clipboard_promise.h index 62abb810..8cd5387 100644 --- a/third_party/blink/renderer/modules/clipboard/clipboard_promise.h +++ b/third_party/blink/renderer/modules/clipboard/clipboard_promise.h
@@ -95,9 +95,7 @@ Member<ClipboardWriter> clipboard_writer_; // Checks for Read and Write permission. - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; // Only for use in writeText(). String plain_text_;
diff --git a/third_party/blink/renderer/modules/contacts_picker/contacts_manager.h b/third_party/blink/renderer/modules/contacts_picker/contacts_manager.h index 5337aee..9d3e0b19 100644 --- a/third_party/blink/renderer/modules/contacts_picker/contacts_manager.h +++ b/third_party/blink/renderer/modules/contacts_picker/contacts_manager.h
@@ -56,9 +56,7 @@ const Vector<String>& GetProperties(ScriptState* script_state); // Created lazily. - HeapMojoRemote<mojom::blink::ContactsManager, - HeapMojoWrapperMode::kWithoutContextObserver> - contacts_manager_; + HeapMojoRemote<mojom::blink::ContactsManager> contacts_manager_; bool contact_picker_in_use_ = false; Vector<String> properties_; };
diff --git a/third_party/blink/renderer/modules/content_index/content_index.h b/third_party/blink/renderer/modules/content_index/content_index.h index f159dd7c..ee24d162 100644 --- a/third_party/blink/renderer/modules/content_index/content_index.h +++ b/third_party/blink/renderer/modules/content_index/content_index.h
@@ -69,9 +69,7 @@ Member<ServiceWorkerRegistration> registration_; scoped_refptr<base::SequencedTaskRunner> task_runner_; - HeapMojoRemote<mojom::blink::ContentIndexService, - HeapMojoWrapperMode::kWithoutContextObserver> - content_index_service_; + HeapMojoRemote<mojom::blink::ContentIndexService> content_index_service_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store_manager.h b/third_party/blink/renderer/modules/cookie_store/cookie_store_manager.h index ffbc4f9..071b04d 100644 --- a/third_party/blink/renderer/modules/cookie_store/cookie_store_manager.h +++ b/third_party/blink/renderer/modules/cookie_store/cookie_store_manager.h
@@ -67,9 +67,7 @@ Member<ServiceWorkerRegistration> registration_; // Wraps a Mojo pipe for managing service worker cookie change subscriptions. - HeapMojoRemote<mojom::blink::CookieStore, - HeapMojoWrapperMode::kWithoutContextObserver> - backend_; + HeapMojoRemote<mojom::blink::CookieStore> backend_; // Default for cookie_url in CookieStoreGetOptions. //
diff --git a/third_party/blink/renderer/modules/device_orientation/device_sensor_entry.h b/third_party/blink/renderer/modules/device_orientation/device_sensor_entry.h index 1754edf..8cc7a5c4 100644 --- a/third_party/blink/renderer/modules/device_orientation/device_sensor_entry.h +++ b/third_party/blink/renderer/modules/device_orientation/device_sensor_entry.h
@@ -75,12 +75,8 @@ State state_ = State::NOT_INITIALIZED; - HeapMojoRemote<device::mojom::blink::Sensor, - HeapMojoWrapperMode::kWithoutContextObserver> - sensor_remote_; - HeapMojoReceiver<device::mojom::blink::SensorClient, - DeviceSensorEntry, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<device::mojom::blink::Sensor> sensor_remote_; + HeapMojoReceiver<device::mojom::blink::SensorClient, DeviceSensorEntry> client_receiver_; device::mojom::blink::SensorType type_;
diff --git a/third_party/blink/renderer/modules/device_orientation/device_sensor_event_pump.h b/third_party/blink/renderer/modules/device_orientation/device_sensor_event_pump.h index 7434c724..6f4e2ef 100644 --- a/third_party/blink/renderer/modules/device_orientation/device_sensor_event_pump.h +++ b/third_party/blink/renderer/modules/device_orientation/device_sensor_event_pump.h
@@ -66,9 +66,7 @@ virtual void DidStartIfPossible(); - HeapMojoRemote<device::mojom::blink::SensorProvider, - HeapMojoWrapperMode::kWithoutContextObserver> - sensor_provider_; + HeapMojoRemote<device::mojom::blink::SensorProvider> sensor_provider_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
diff --git a/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.h b/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.h index c1dca83..cddaacad 100644 --- a/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.h +++ b/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.h
@@ -55,8 +55,7 @@ Member<ScriptPromiseResolver> pending_next_; Member<FileSystemDirectoryHandle> directory_; HeapMojoReceiver<mojom::blink::FileSystemAccessDirectoryEntriesListener, - FileSystemDirectoryIterator, - HeapMojoWrapperMode::kWithoutContextObserver> + FileSystemDirectoryIterator> receiver_; };
diff --git a/third_party/blink/renderer/modules/gamepad/gamepad_dispatcher.h b/third_party/blink/renderer/modules/gamepad/gamepad_dispatcher.h index 51357217..ec2f800 100644 --- a/third_party/blink/renderer/modules/gamepad/gamepad_dispatcher.h +++ b/third_party/blink/renderer/modules/gamepad/gamepad_dispatcher.h
@@ -62,8 +62,7 @@ WeakMember<ExecutionContext> execution_context_; Member<GamepadSharedMemoryReader> reader_; - HeapMojoRemote<device::mojom::blink::GamepadHapticsManager, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<device::mojom::blink::GamepadHapticsManager> gamepad_haptics_manager_remote_; };
diff --git a/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h b/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h index 5959c78..449fde4 100644 --- a/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h +++ b/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h
@@ -66,12 +66,9 @@ bool ever_interacted_with_ = false; HeapMojoReceiver<device::mojom::blink::GamepadObserver, - GamepadSharedMemoryReader, - HeapMojoWrapperMode::kWithoutContextObserver> + GamepadSharedMemoryReader> receiver_; - HeapMojoRemote<device::mojom::blink::GamepadMonitor, - HeapMojoWrapperMode::kWithoutContextObserver> - gamepad_monitor_remote_; + HeapMojoRemote<device::mojom::blink::GamepadMonitor> gamepad_monitor_remote_; blink::GamepadListener* listener_ = nullptr; };
diff --git a/third_party/blink/renderer/modules/hid/hid.h b/third_party/blink/renderer/modules/hid/hid.h index 7bfc66c83..1581f406 100644 --- a/third_party/blink/renderer/modules/hid/hid.h +++ b/third_party/blink/renderer/modules/hid/hid.h
@@ -83,9 +83,7 @@ void FinishRequestDevice(ScriptPromiseResolver*, Vector<device::mojom::blink::HidDeviceInfoPtr>); - HeapMojoRemote<mojom::blink::HidService, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; + HeapMojoRemote<mojom::blink::HidService> service_; mojo::AssociatedReceiver<device::mojom::blink::HidManagerClient> receiver_{ this}; HeapHashSet<Member<ScriptPromiseResolver>> get_devices_promises_;
diff --git a/third_party/blink/renderer/modules/idle/idle_detector.h b/third_party/blink/renderer/modules/idle/idle_detector.h index ccc6d65..8aa19ee6 100644 --- a/third_party/blink/renderer/modules/idle/idle_detector.h +++ b/third_party/blink/renderer/modules/idle/idle_detector.h
@@ -75,10 +75,7 @@ // Holds a pipe which the service uses to notify this object // when the idle state has changed. - HeapMojoReceiver<mojom::blink::IdleMonitor, - IdleDetector, - HeapMojoWrapperMode::kWithoutContextObserver> - receiver_; + HeapMojoReceiver<mojom::blink::IdleMonitor, IdleDetector> receiver_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/idle/idle_manager.h b/third_party/blink/renderer/modules/idle/idle_manager.h index 66c22c75..44f96df 100644 --- a/third_party/blink/renderer/modules/idle/idle_manager.h +++ b/third_party/blink/renderer/modules/idle/idle_manager.h
@@ -40,12 +40,8 @@ void OnPermissionRequestComplete(ScriptPromiseResolver*, mojom::blink::PermissionStatus); - HeapMojoRemote<mojom::blink::IdleManager, - HeapMojoWrapperMode::kWithoutContextObserver> - idle_service_; - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::IdleManager> idle_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/imagecapture/image_capture.h b/third_party/blink/renderer/modules/imagecapture/image_capture.h index 1bc62982..36aafc85 100644 --- a/third_party/blink/renderer/modules/imagecapture/image_capture.h +++ b/third_party/blink/renderer/modules/imagecapture/image_capture.h
@@ -136,9 +136,7 @@ Member<MediaStreamTrack> stream_track_; std::unique_ptr<ImageCaptureFrameGrabber> frame_grabber_; - HeapMojoRemote<media::mojom::blink::ImageCapture, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; + HeapMojoRemote<media::mojom::blink::ImageCapture> service_; // Whether the user has granted permission for the user to control camera PTZ. mojom::blink::PermissionStatus pan_tilt_zoom_permission_;
diff --git a/third_party/blink/renderer/modules/keyboard/keyboard_layout.h b/third_party/blink/renderer/modules/keyboard/keyboard_layout.h index 5dab945..6239820 100644 --- a/third_party/blink/renderer/modules/keyboard/keyboard_layout.h +++ b/third_party/blink/renderer/modules/keyboard/keyboard_layout.h
@@ -44,9 +44,7 @@ Member<ScriptPromiseResolver> script_promise_resolver_; - HeapMojoRemote<mojom::blink::KeyboardLockService, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; + HeapMojoRemote<mojom::blink::KeyboardLockService> service_; DISALLOW_COPY_AND_ASSIGN(KeyboardLayout); };
diff --git a/third_party/blink/renderer/modules/keyboard/keyboard_lock.h b/third_party/blink/renderer/modules/keyboard/keyboard_lock.h index 2588a55..723888c 100644 --- a/third_party/blink/renderer/modules/keyboard/keyboard_lock.h +++ b/third_party/blink/renderer/modules/keyboard/keyboard_lock.h
@@ -43,9 +43,7 @@ void LockRequestFinished(ScriptPromiseResolver*, mojom::KeyboardLockRequestResult); - HeapMojoRemote<mojom::blink::KeyboardLockService, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; + HeapMojoRemote<mojom::blink::KeyboardLockService> service_; Member<ScriptPromiseResolver> request_keylock_resolver_; DISALLOW_COPY_AND_ASSIGN(KeyboardLock);
diff --git a/third_party/blink/renderer/modules/locks/lock_manager.h b/third_party/blink/renderer/modules/locks/lock_manager.h index 94e3f15..dcee9871 100644 --- a/third_party/blink/renderer/modules/locks/lock_manager.h +++ b/third_party/blink/renderer/modules/locks/lock_manager.h
@@ -82,12 +82,8 @@ HeapHashSet<Member<LockRequestImpl>> pending_requests_; HeapHashSet<Member<Lock>> held_locks_; - HeapMojoRemote<mojom::blink::LockManager, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; - HeapMojoRemote<mojom::blink::FeatureObserver, - HeapMojoWrapperMode::kWithoutContextObserver> - observer_; + HeapMojoRemote<mojom::blink::LockManager> service_; + HeapMojoRemote<mojom::blink::FeatureObserver> observer_; base::Optional<bool> cached_allowed_;
diff --git a/third_party/blink/renderer/modules/managed_device/device_service.h b/third_party/blink/renderer/modules/managed_device/device_service.h index 91191dc..153c485 100644 --- a/third_party/blink/renderer/modules/managed_device/device_service.h +++ b/third_party/blink/renderer/modules/managed_device/device_service.h
@@ -84,9 +84,7 @@ void OnServiceConnectionError(); void StopObserving(); - HeapMojoRemote<mojom::blink::DeviceAPIService, - HeapMojoWrapperMode::kWithoutContextObserver> - device_api_service_; + HeapMojoRemote<mojom::blink::DeviceAPIService> device_api_service_; HeapMojoReceiver<mojom::blink::ManagedConfigurationObserver, DeviceService> configuration_observer_; HeapHashSet<Member<ScriptPromiseResolver>> pending_promises_;
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h index 833c899..8216f304 100644 --- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h +++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h
@@ -144,22 +144,19 @@ // mapping in |pending_cb_map_|. int CreateCallbackId(); - HeapMojoRemote<media::mojom::blink::VideoDecodePerfHistory, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<media::mojom::blink::VideoDecodePerfHistory> decode_history_service_; // Connection to a browser-process LearningTaskController for predicting the // number of consecutive "bad" dropped frame windows during a playback. See // media::SmoothnessHelper. - HeapMojoRemote<media::learning::mojom::blink::LearningTaskController, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<media::learning::mojom::blink::LearningTaskController> bad_window_predictor_; // Connects to a browser-process LearningTaskController for predicting the // number of consecutive non-network re-buffers (NNRs). See // media::SmoothnessHelper. - HeapMojoRemote<media::learning::mojom::blink::LearningTaskController, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<media::learning::mojom::blink::LearningTaskController> nnr_predictor_; // Holds the last key for callbacks in the map below. Incremented for each
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate.h b/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate.h index 1cb0e9b2..f9f6cf0 100644 --- a/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate.h +++ b/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate.h
@@ -135,9 +135,7 @@ TaskHandle lock_to_any_task_; - HeapMojoRemote<device::mojom::blink::ScreenOrientationListener, - HeapMojoWrapperMode::kWithoutContextObserver> - monitor_; + HeapMojoRemote<device::mojom::blink::ScreenOrientationListener> monitor_; base::Optional<bool> is_auto_rotate_enabled_by_user_override_for_testing_;
diff --git a/third_party/blink/renderer/modules/mediasession/media_session.h b/third_party/blink/renderer/modules/mediasession/media_session.h index 1bc16f9..6865e6d 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session.h +++ b/third_party/blink/renderer/modules/mediasession/media_session.h
@@ -91,9 +91,7 @@ Member<MediaMetadata> metadata_; HeapHashMap<String, Member<V8MediaSessionActionHandler>> action_handlers_; mojo::Remote<mojom::blink::MediaSessionService> service_; - HeapMojoReceiver<blink::mojom::blink::MediaSessionClient, - MediaSession, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<blink::mojom::blink::MediaSessionClient, MediaSession> client_receiver_; };
diff --git a/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.cc b/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.cc index a2e54cf..5b5b113 100644 --- a/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.cc +++ b/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.cc
@@ -79,12 +79,17 @@ template <typename NativeFrameType> void FrameQueueUnderlyingSource<NativeFrameType>::Close() { DCHECK(realm_task_runner_->RunsTasksInCurrentSequence()); + if (is_closed_) + return; + StopFrameDelivery(); CloseController(); queue_.clear(); pending_transfer_queue_.clear(); transfer_frames_cb_.Reset(); transfer_done_cb_.Reset(); + + is_closed_ = true; } template <typename NativeFrameType>
diff --git a/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.h b/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.h index 8b49347..9c5fc6f 100644 --- a/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.h +++ b/third_party/blink/renderer/modules/mediastream/frame_queue_underlying_source.h
@@ -40,6 +40,8 @@ // Must be called on |realm_task_runner_|. void Close(); + bool IsClosed() { return is_closed_; } + // Adds a frame to |queue_|, dropping the oldest frame if it is full. // Can be called from any task runner, and will jump to |realm_task_runner_|. void QueueFrame(NativeFrameType media_frame); @@ -93,6 +95,8 @@ // QueueFrame() should never be called after this. void FinalizeQueueTransferOnTransferRunner(); + bool is_closed_ = false; + // Main task runner for the window or worker context. const scoped_refptr<base::SequencedTaskRunner> realm_task_runner_;
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.cc b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.cc index d39b82e..fd9e846 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.cc
@@ -61,47 +61,33 @@ : public GarbageCollected<UnderlyingSourceCloser>, public MediaStreamTrack::Observer { public: - UnderlyingSourceCloser( - MediaStreamTrack* track, - MediaStreamAudioTrackUnderlyingSource* audio_underlying_source) - : track_(track), - audio_underlying_source_(audio_underlying_source), - video_underlying_source_() {} - UnderlyingSourceCloser( - MediaStreamTrack* track, - MediaStreamVideoTrackUnderlyingSource* video_underlying_source) - : track_(track), - audio_underlying_source_(), - video_underlying_source_(video_underlying_source) {} + UnderlyingSourceCloser(MediaStreamTrack* track, + MediaStreamTrackProcessor* processor) + : track_(track), processor_(processor) {} void TrackChangedState() override { if (track_->GetReadyState() == MediaStreamSource::kReadyStateEnded) { - if (audio_underlying_source_ != nullptr) { - audio_underlying_source_->Close(); - } - if (video_underlying_source_ != nullptr) { - video_underlying_source_->Close(); - } + processor_->CloseSources(); } } void Trace(Visitor* visitor) const override { visitor->Trace(track_); - visitor->Trace(audio_underlying_source_); - visitor->Trace(video_underlying_source_); + visitor->Trace(processor_); } private: Member<MediaStreamTrack> track_; - Member<MediaStreamAudioTrackUnderlyingSource> audio_underlying_source_; - Member<MediaStreamVideoTrackUnderlyingSource> video_underlying_source_; + Member<MediaStreamTrackProcessor> processor_; }; MediaStreamTrackProcessor::MediaStreamTrackProcessor( ScriptState* script_state, MediaStreamTrack* input_track, uint16_t buffer_size) - : input_track_(input_track), buffer_size_(buffer_size) { + : ExecutionContextLifecycleObserver(ExecutionContext::From(script_state)), + input_track_(input_track), + buffer_size_(buffer_size) { DCHECK(input_track_); UseCounter::Count(ExecutionContext::From(script_state), WebFeature::kMediaStreamTrackProcessor); @@ -118,6 +104,10 @@ CreateAudioSourceStream(script_state); } + source_closer_ = + MakeGarbageCollected<UnderlyingSourceCloser>(input_track_, this); + input_track_->AddObserver(source_closer_); + return source_stream_; } @@ -145,10 +135,6 @@ script_state, video_underlying_source_, /*high_water_mark=*/0, video_underlying_source_->GetStreamTransferOptimizer()); - - source_closer_ = MakeGarbageCollected<UnderlyingSourceCloser>( - input_track_, video_underlying_source_); - input_track_->AddObserver(source_closer_); } void MediaStreamTrackProcessor::CreateAudioSourceStream( @@ -159,10 +145,6 @@ script_state, input_track_->Component(), buffer_size_); source_stream_ = ReadableStream::CreateWithCountQueueingStrategy( script_state, audio_underlying_source_, /*high_water_mark=*/0); - - source_closer_ = MakeGarbageCollected<UnderlyingSourceCloser>( - input_track_, audio_underlying_source_); - input_track_->AddObserver(source_closer_); } void MediaStreamTrackProcessor::CreateVideoControlStream( @@ -236,6 +218,24 @@ return Create(script_state, init->track(), exception_state); } +void MediaStreamTrackProcessor::CloseSources() { + if (audio_underlying_source_ != nullptr) { + audio_underlying_source_->Close(); + } + if (video_underlying_source_ != nullptr) { + video_underlying_source_->Close(); + } +} + +void MediaStreamTrackProcessor::ContextDestroyed() { + CloseSources(); +} + +bool MediaStreamTrackProcessor::HasPendingActivity() const { + return (audio_underlying_source_ && !audio_underlying_source_->IsClosed()) || + (video_underlying_source_ && !video_underlying_source_->IsClosed()); +} + void MediaStreamTrackProcessor::Trace(Visitor* visitor) const { visitor->Trace(input_track_); visitor->Trace(audio_underlying_source_); @@ -245,6 +245,7 @@ visitor->Trace(control_stream_); visitor->Trace(source_closer_); ScriptWrappable::Trace(visitor); + ExecutionContextLifecycleObserver::Trace(visitor); } } // namespace blink
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.h b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.h index 92057f3..8ca8cbd 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.h +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.h
@@ -5,6 +5,8 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_TRACK_PROCESSOR_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_TRACK_PROCESSOR_H_ +#include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h" +#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" #include "third_party/blink/renderer/platform/heap/heap.h" @@ -21,7 +23,10 @@ class UnderlyingSinkBase; class WritableStream; -class MODULES_EXPORT MediaStreamTrackProcessor : public ScriptWrappable { +class MODULES_EXPORT MediaStreamTrackProcessor + : public ScriptWrappable, + public ActiveScriptWrappable<MediaStreamTrackProcessor>, + public ExecutionContextLifecycleObserver { DEFINE_WRAPPERTYPEINFO(); public: @@ -46,6 +51,16 @@ ReadableStream* readable(ScriptState* script_state); WritableStream* writableControl(ScriptState* script_state); + // ScriptWrappable interface + bool HasPendingActivity() const final; + + // ExecutionContextLifecycleObserver interface + void ContextDestroyed() override; + + // Closes |audio_underlying_source_| and |video_underlying_source_| if they + // exist. + void CloseSources(); + MediaStreamTrack* InputTrack() { return input_track_; } void Trace(Visitor* visitor) const override;
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.idl b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.idl index a9e7997..7cb7673 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.idl +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor.idl
@@ -6,6 +6,7 @@ // https://w3c.github.io/mediacapture-insertable-streams/ [ Exposed=Window, + ActiveScriptWrappable, RuntimeEnabled=MediaStreamInsertableStreams ] interface MediaStreamTrackProcessor {
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor_test.cc index fedf14ab..0d5b6ed5 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track_processor_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_processor_test.cc
@@ -316,12 +316,19 @@ auto* readable = track_processor->readable(script_state); EXPECT_EQ(video_track->CountSinks(), 2u); + // The processor should not be garbage collected now that its readable has + // active sources. + EXPECT_TRUE(track_processor->HasPendingActivity()); + ScriptPromiseTester cancel_tester( script_state, readable->cancel(script_state, exception_state)); cancel_tester.WaitUntilSettled(); EXPECT_FALSE(exception_state.HadException()); EXPECT_EQ(video_track->CountSinks(), 1u); + // The processor can be garbage collected now that the source has been closed. + EXPECT_FALSE(track_processor->HasPendingActivity()); + // Cancelling the readable does not stop the track. // Push a frame and expect delivery to the mock sink. base::RunLoop sink_loop;
diff --git a/third_party/blink/renderer/modules/mediastream/transferred_frame_queue_underlying_source.cc b/third_party/blink/renderer/modules/mediastream/transferred_frame_queue_underlying_source.cc index 24d74c05..6cef4adb 100644 --- a/third_party/blink/renderer/modules/mediastream/transferred_frame_queue_underlying_source.cc +++ b/third_party/blink/renderer/modules/mediastream/transferred_frame_queue_underlying_source.cc
@@ -45,9 +45,8 @@ void TransferredFrameQueueUnderlyingSource< NativeFrameType>::StopFrameDelivery() { if (auto host = host_.Lock()) { - PostCrossThreadTask( - *host_runner_.get(), FROM_HERE, - CrossThreadBindOnce(&FrameQueueHost::StopFrameDelivery, host)); + PostCrossThreadTask(*host_runner_.get(), FROM_HERE, + CrossThreadBindOnce(&FrameQueueHost::Close, host)); } }
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_client.h b/third_party/blink/renderer/modules/mediastream/user_media_client.h index f56f66e7..0b169af 100644 --- a/third_party/blink/renderer/modules/mediastream/user_media_client.h +++ b/third_party/blink/renderer/modules/mediastream/user_media_client.h
@@ -115,8 +115,7 @@ // problems in builds that do not include WebRTC. Member<ApplyConstraintsProcessor> apply_constraints_processor_; - HeapMojoRemote<blink::mojom::blink::MediaDevicesDispatcherHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<blink::mojom::blink::MediaDevicesDispatcherHost> media_devices_dispatcher_; // UserMedia requests are processed sequentially. |is_processing_request_|
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_processor.h b/third_party/blink/renderer/modules/mediastream/user_media_processor.h index 6c49015..1886e14 100644 --- a/third_party/blink/renderer/modules/mediastream/user_media_processor.h +++ b/third_party/blink/renderer/modules/mediastream/user_media_processor.h
@@ -285,8 +285,7 @@ LocalStreamSources local_sources_; LocalStreamSources pending_local_sources_; - HeapMojoRemote<blink::mojom::blink::MediaStreamDispatcherHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<blink::mojom::blink::MediaStreamDispatcherHost> dispatcher_host_; // UserMedia requests are processed sequentially. |current_request_info_|
diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc index 759057e..eef11d7 100644 --- a/third_party/blink/renderer/modules/modules_initializer.cc +++ b/third_party/blink/renderer/modules/modules_initializer.cc
@@ -176,7 +176,7 @@ frame.GetInterfaceRegistry()->AddInterface(WTF::BindRepeating( &AppBannerController::BindMojoRequest, WrapWeakPersistent(&frame))); frame.GetInterfaceRegistry()->AddInterface(WTF::BindRepeating( - &TextSuggestionBackendImpl::Create, WrapWeakPersistent(&frame))); + &TextSuggestionBackendImpl::Bind, WrapWeakPersistent(&frame))); #if defined(OS_ANDROID) frame.GetInterfaceRegistry()->AddInterface(WTF::BindRepeating( &RemoteObjectGatewayFactoryImpl::Bind, WrapWeakPersistent(&frame)));
diff --git a/third_party/blink/renderer/modules/nfc/ndef_reader.h b/third_party/blink/renderer/modules/nfc/ndef_reader.h index 9f18556..c3390d5 100644 --- a/third_party/blink/renderer/modules/nfc/ndef_reader.h +++ b/third_party/blink/renderer/modules/nfc/ndef_reader.h
@@ -98,9 +98,7 @@ // mojo::WrapCallbackWithDefaultInvokeIfNotRun() is forbidden in Blink. Member<ScriptPromiseResolver> scan_resolver_; - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; mojom::blink::PermissionService* GetPermissionService(); // |write_requests_| are kept here to handle Mojo connection failures because
diff --git a/third_party/blink/renderer/modules/nfc/nfc_proxy.h b/third_party/blink/renderer/modules/nfc/nfc_proxy.h index 751dcd9..dfa072d 100644 --- a/third_party/blink/renderer/modules/nfc/nfc_proxy.h +++ b/third_party/blink/renderer/modules/nfc/nfc_proxy.h
@@ -77,10 +77,7 @@ WriterSet writers_; mojo::Remote<device::mojom::blink::NFC> nfc_remote_; - HeapMojoReceiver<device::mojom::blink::NFCClient, - NFCProxy, - HeapMojoWrapperMode::kWithoutContextObserver> - client_receiver_; + HeapMojoReceiver<device::mojom::blink::NFCClient, NFCProxy> client_receiver_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/notifications/notification_manager.h b/third_party/blink/renderer/modules/notifications/notification_manager.h index 8824b728..5fa5d7b 100644 --- a/third_party/blink/renderer/modules/notifications/notification_manager.h +++ b/third_party/blink/renderer/modules/notifications/notification_manager.h
@@ -102,12 +102,8 @@ void OnNotificationServiceConnectionError(); void OnPermissionServiceConnectionError(); - HeapMojoRemote<mojom::blink::NotificationService, - HeapMojoWrapperMode::kWithoutContextObserver> - notification_service_; - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::NotificationService> notification_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; DISALLOW_COPY_AND_ASSIGN(NotificationManager); };
diff --git a/third_party/blink/renderer/modules/payments/payment_instruments.cc b/third_party/blink/renderer/modules/payments/payment_instruments.cc index 58e64f7..462787c0 100644 --- a/third_party/blink/renderer/modules/payments/payment_instruments.cc +++ b/third_party/blink/renderer/modules/payments/payment_instruments.cc
@@ -97,8 +97,7 @@ } // namespace PaymentInstruments::PaymentInstruments( - const HeapMojoRemote<payments::mojom::blink::PaymentManager, - HeapMojoWrapperMode::kWithoutContextObserver>& manager, + const HeapMojoRemote<payments::mojom::blink::PaymentManager>& manager, ExecutionContext* context) : manager_(manager), permission_service_(context) {}
diff --git a/third_party/blink/renderer/modules/payments/payment_instruments.h b/third_party/blink/renderer/modules/payments/payment_instruments.h index 75ba6a9..6242ca2a 100644 --- a/third_party/blink/renderer/modules/payments/payment_instruments.h +++ b/third_party/blink/renderer/modules/payments/payment_instruments.h
@@ -28,8 +28,7 @@ public: explicit PaymentInstruments( - const HeapMojoRemote<payments::mojom::blink::PaymentManager, - HeapMojoWrapperMode::kWithoutContextObserver>&, + const HeapMojoRemote<payments::mojom::blink::PaymentManager>&, ExecutionContext*); ScriptPromise deleteInstrument(ScriptState*, @@ -72,12 +71,9 @@ void onClearPaymentInstruments(ScriptPromiseResolver*, payments::mojom::blink::PaymentHandlerStatus); - const HeapMojoRemote<payments::mojom::blink::PaymentManager, - HeapMojoWrapperMode::kWithoutContextObserver>& manager_; + const HeapMojoRemote<payments::mojom::blink::PaymentManager>& manager_; - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; DISALLOW_COPY_AND_ASSIGN(PaymentInstruments); };
diff --git a/third_party/blink/renderer/modules/payments/payment_manager.h b/third_party/blink/renderer/modules/payments/payment_manager.h index 05c28db..172282c 100644 --- a/third_party/blink/renderer/modules/payments/payment_manager.h +++ b/third_party/blink/renderer/modules/payments/payment_manager.h
@@ -47,9 +47,7 @@ payments::mojom::blink::PaymentHandlerStatus status); Member<ServiceWorkerRegistration> registration_; - HeapMojoRemote<payments::mojom::blink::PaymentManager, - HeapMojoWrapperMode::kWithoutContextObserver> - manager_; + HeapMojoRemote<payments::mojom::blink::PaymentManager> manager_; Member<PaymentInstruments> instruments_; String user_hint_; Member<ScriptPromiseResolver> enable_delegations_resolver_;
diff --git a/third_party/blink/renderer/modules/payments/payment_request_event.h b/third_party/blink/renderer/modules/payments/payment_request_event.h index 3c4756e6..523ccdf8 100644 --- a/third_party/blink/renderer/modules/payments/payment_request_event.h +++ b/third_party/blink/renderer/modules/payments/payment_request_event.h
@@ -99,8 +99,7 @@ Member<ScriptPromiseResolver> change_payment_request_details_resolver_; Member<RespondWithObserver> observer_; - HeapMojoRemote<payments::mojom::blink::PaymentHandlerHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<payments::mojom::blink::PaymentHandlerHost> payment_handler_host_; DISALLOW_COPY_AND_ASSIGN(PaymentRequestEvent);
diff --git a/third_party/blink/renderer/modules/permissions/permissions.h b/third_party/blink/renderer/modules/permissions/permissions.h index f59c126..ef92360 100644 --- a/third_party/blink/renderer/modules/permissions/permissions.h +++ b/third_party/blink/renderer/modules/permissions/permissions.h
@@ -54,9 +54,7 @@ Vector<int>, const Vector<mojom::blink::PermissionStatus>&); - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; + HeapMojoRemote<mojom::blink::PermissionService> service_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h index 27b68813..f00571f 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h +++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
@@ -127,8 +127,7 @@ picture_in_picture_service_; // Instance of the Picture-in-Picture session sent back by the service. - HeapMojoRemote<mojom::blink::PictureInPictureSession, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<mojom::blink::PictureInPictureSession> picture_in_picture_session_; DISALLOW_COPY_AND_ASSIGN(PictureInPictureControllerImpl);
diff --git a/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h b/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h index 6368ae2..e8c2236 100644 --- a/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h +++ b/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h
@@ -47,9 +47,7 @@ void DidGetPermissionState(ScriptPromiseResolver* resolver, mojom::blink::PermissionStatus status); - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; DISALLOW_COPY_AND_ASSIGN(PushMessagingBridge); };
diff --git a/third_party/blink/renderer/modules/push_messaging/push_messaging_client.h b/third_party/blink/renderer/modules/push_messaging/push_messaging_client.h index 57546f98..12672fd1 100644 --- a/third_party/blink/renderer/modules/push_messaging/push_messaging_client.h +++ b/third_party/blink/renderer/modules/push_messaging/push_messaging_client.h
@@ -65,9 +65,7 @@ mojom::blink::PushRegistrationStatus status, mojom::blink::PushSubscriptionPtr subscription); - HeapMojoRemote<mojom::blink::PushMessaging, - HeapMojoWrapperMode::kWithoutContextObserver> - push_messaging_manager_; + HeapMojoRemote<mojom::blink::PushMessaging> push_messaging_manager_; DISALLOW_COPY_AND_ASSIGN(PushMessagingClient); };
diff --git a/third_party/blink/renderer/modules/push_messaging/push_provider.h b/third_party/blink/renderer/modules/push_messaging/push_provider.h index 57436ee..b9cb8cc 100644 --- a/third_party/blink/renderer/modules/push_messaging/push_provider.h +++ b/third_party/blink/renderer/modules/push_messaging/push_provider.h
@@ -65,9 +65,7 @@ mojom::blink::PushGetRegistrationStatus status, mojom::blink::PushSubscriptionPtr subscription); - HeapMojoRemote<mojom::blink::PushMessaging, - HeapMojoWrapperMode::kWithoutContextObserver> - push_messaging_manager_; + HeapMojoRemote<mojom::blink::PushMessaging> push_messaging_manager_; DISALLOW_COPY_AND_ASSIGN(PushProvider); };
diff --git a/third_party/blink/renderer/modules/quota/deprecated_storage_quota.h b/third_party/blink/renderer/modules/quota/deprecated_storage_quota.h index c4e57cc9..ad99ba9 100644 --- a/third_party/blink/renderer/modules/quota/deprecated_storage_quota.h +++ b/third_party/blink/renderer/modules/quota/deprecated_storage_quota.h
@@ -79,9 +79,7 @@ mojom::blink::QuotaManagerHost* GetQuotaHost(ExecutionContext*); Type type_; - HeapMojoRemote<mojom::blink::QuotaManagerHost, - HeapMojoWrapperMode::kWithoutContextObserver> - quota_host_; + HeapMojoRemote<mojom::blink::QuotaManagerHost> quota_host_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/quota/storage_manager.h b/third_party/blink/renderer/modules/quota/storage_manager.h index b0c02c1..0658bf0 100644 --- a/third_party/blink/renderer/modules/quota/storage_manager.h +++ b/third_party/blink/renderer/modules/quota/storage_manager.h
@@ -71,12 +71,8 @@ // provider, and returns it, mojom::blink::QuotaManagerHost* GetQuotaHost(ExecutionContext*); - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; - HeapMojoRemote<mojom::blink::QuotaManagerHost, - HeapMojoWrapperMode::kWithoutContextObserver> - quota_host_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; + HeapMojoRemote<mojom::blink::QuotaManagerHost> quota_host_; HeapMojoReceiver<mojom::blink::QuotaChangeListener, StorageManager> change_listener_receiver_;
diff --git a/third_party/blink/renderer/modules/sensor/sensor_provider_proxy.h b/third_party/blink/renderer/modules/sensor/sensor_provider_proxy.h index 4d81cdc..7c002d4 100644 --- a/third_party/blink/renderer/modules/sensor/sensor_provider_proxy.h +++ b/third_party/blink/renderer/modules/sensor/sensor_provider_proxy.h
@@ -53,9 +53,7 @@ void OnSensorProviderConnectionError(); HeapHashSet<WeakMember<SensorProxy>> sensor_proxies_; - HeapMojoRemote<device::mojom::blink::SensorProvider, - HeapMojoWrapperMode::kWithoutContextObserver> - sensor_provider_; + HeapMojoRemote<device::mojom::blink::SensorProvider> sensor_provider_; bool inspector_mode_; DISALLOW_COPY_AND_ASSIGN(SensorProviderProxy);
diff --git a/third_party/blink/renderer/modules/serial/serial.h b/third_party/blink/renderer/modules/serial/serial.h index 7eb8896..4f9e66bb 100644 --- a/third_party/blink/renderer/modules/serial/serial.h +++ b/third_party/blink/renderer/modules/serial/serial.h
@@ -80,13 +80,8 @@ Vector<mojom::blink::SerialPortInfoPtr>); void OnRequestPort(ScriptPromiseResolver*, mojom::blink::SerialPortInfoPtr); - HeapMojoRemote<mojom::blink::SerialService, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; - HeapMojoReceiver<mojom::blink::SerialServiceClient, - Serial, - HeapMojoWrapperMode::kWithoutContextObserver> - receiver_; + HeapMojoRemote<mojom::blink::SerialService> service_; + HeapMojoReceiver<mojom::blink::SerialServiceClient, Serial> receiver_; HeapHashSet<Member<ScriptPromiseResolver>> get_ports_promises_; HeapHashSet<Member<ScriptPromiseResolver>> request_port_promises_; HeapHashMap<String, WeakMember<SerialPort>> port_cache_;
diff --git a/third_party/blink/renderer/modules/serial/serial_port.h b/third_party/blink/renderer/modules/serial/serial_port.h index 13fa4983..7a23b9c99 100644 --- a/third_party/blink/renderer/modules/serial/serial_port.h +++ b/third_party/blink/renderer/modules/serial/serial_port.h
@@ -102,9 +102,7 @@ uint32_t buffer_size_ = 0; HeapMojoRemote<device::mojom::blink::SerialPort> port_; - HeapMojoReceiver<device::mojom::blink::SerialPortClient, - SerialPort, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<device::mojom::blink::SerialPortClient, SerialPort> client_receiver_; Member<ReadableStream> readable_;
diff --git a/third_party/blink/renderer/modules/service_worker/fetch_event.h b/third_party/blink/renderer/modules/service_worker/fetch_event.h index bfaf6b34..53dcac0 100644 --- a/third_party/blink/renderer/modules/service_worker/fetch_event.h +++ b/third_party/blink/renderer/modules/service_worker/fetch_event.h
@@ -107,9 +107,7 @@ handled_property_; // This is currently null for navigation while https://crbug.com/900700 is // being implemented. - HeapMojoRemote<mojom::blink::WorkerTimingContainer, - HeapMojoWrapperMode::kWithoutContextObserver> - worker_timing_remote_; + HeapMojoRemote<mojom::blink::WorkerTimingContainer> worker_timing_remote_; String client_id_; String resulting_client_id_; bool is_reload_;
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker.h b/third_party/blink/renderer/modules/service_worker/service_worker.h index 8d22e56..47f24b1 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker.h
@@ -115,14 +115,10 @@ // |host_| keeps the Mojo connection to the // browser-side ServiceWorkerObjectHost, whose lifetime is bound // to |host_| via the Mojo connection. - HeapMojoAssociatedRemote<mojom::blink::ServiceWorkerObjectHost, - HeapMojoWrapperMode::kWithoutContextObserver> - host_; + HeapMojoAssociatedRemote<mojom::blink::ServiceWorkerObjectHost> host_; // Receives messages from the content::ServiceWorkerObjectHost in the browser // process. - HeapMojoAssociatedReceiver<mojom::blink::ServiceWorkerObject, - ServiceWorker, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedReceiver<mojom::blink::ServiceWorkerObject, ServiceWorker> receiver_; };
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc index 862a8a7..db4dcc7 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
@@ -1581,9 +1581,7 @@ const int event_id = event_queue_->NextEventId(); fetch_event_callbacks_.Set(event_id, std::move(callback)); - HeapMojoRemote<mojom::blink::ServiceWorkerFetchResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver> - remote(this); + HeapMojoRemote<mojom::blink::ServiceWorkerFetchResponseCallback> remote(this); remote.Bind(std::move(response_callback), GetThread()->GetTaskRunner(TaskType::kNetworking)); fetch_response_callbacks_.Set(event_id, WrapDisallowNew(std::move(remote))); @@ -1975,9 +1973,7 @@ const int event_id = event_queue_->NextEventId(); fetch_event_callbacks_.Set(event_id, std::move(callback)); - HeapMojoRemote<mojom::blink::ServiceWorkerFetchResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver> - remote(this); + HeapMojoRemote<mojom::blink::ServiceWorkerFetchResponseCallback> remote(this); remote.Bind(std::move(response_callback), GetThread()->GetTaskRunner(TaskType::kNetworking)); fetch_response_callbacks_.Set(event_id, WrapDisallowNew(std::move(remote))); @@ -2252,9 +2248,8 @@ response_callback, int event_id) { DCHECK(IsContextThread()); - HeapMojoRemote<payments::mojom::blink::PaymentHandlerResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver> - remote(this); + HeapMojoRemote<payments::mojom::blink::PaymentHandlerResponseCallback> remote( + this); // Payment task need to be processed on the user interaction task // runner (TaskType::kUserInteraction). // See: @@ -2306,9 +2301,8 @@ response_callback, int event_id) { DCHECK(IsContextThread()); - HeapMojoRemote<payments::mojom::blink::PaymentHandlerResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver> - remote(this); + HeapMojoRemote<payments::mojom::blink::PaymentHandlerResponseCallback> remote( + this); // Payment task need to be processed on the user interaction task // runner (TaskType::kUserInteraction). // See: @@ -2362,9 +2356,8 @@ response_callback, int event_id) { DCHECK(IsContextThread()); - HeapMojoRemote<payments::mojom::blink::PaymentHandlerResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver> - remote(this); + HeapMojoRemote<payments::mojom::blink::PaymentHandlerResponseCallback> remote( + this); // Payment task need to be processed on the user interaction task // runner (TaskType::kUserInteraction). // See:
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h index d345f83..524866a 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
@@ -604,13 +604,10 @@ // Bound by the first Mojo call received on the service worker thread // mojom::blink::ServiceWorker::InitializeGlobalScope(). - HeapMojoAssociatedRemote<mojom::blink::ServiceWorkerHost, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedRemote<mojom::blink::ServiceWorkerHost> service_worker_host_{this}; - HeapMojoReceiver<mojom::blink::ServiceWorker, - ServiceWorkerGlobalScope, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<mojom::blink::ServiceWorker, ServiceWorkerGlobalScope> receiver_{this, this}; // Maps for inflight event callbacks. @@ -631,8 +628,7 @@ periodic_sync_event_callbacks_; HeapHashMap<int, Member<DisallowNewWrapper<HeapMojoRemote< - payments::mojom::blink::PaymentHandlerResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver>>>> + payments::mojom::blink::PaymentHandlerResponseCallback>>>> abort_payment_result_callbacks_; HashMap<int, DispatchCanMakePaymentEventCallback> abort_payment_event_callbacks_; @@ -658,18 +654,15 @@ // passed from the relevant DispatchSomeEvent() method. HeapHashMap<int, Member<DisallowNewWrapper<HeapMojoRemote< - payments::mojom::blink::PaymentHandlerResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver>>>> + payments::mojom::blink::PaymentHandlerResponseCallback>>>> can_make_payment_result_callbacks_; HeapHashMap<int, Member<DisallowNewWrapper<HeapMojoRemote< - payments::mojom::blink::PaymentHandlerResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver>>>> + payments::mojom::blink::PaymentHandlerResponseCallback>>>> payment_response_callbacks_; HeapHashMap<int, Member<DisallowNewWrapper<HeapMojoRemote< - mojom::blink::ServiceWorkerFetchResponseCallback, - HeapMojoWrapperMode::kWithoutContextObserver>>>> + mojom::blink::ServiceWorkerFetchResponseCallback>>>> fetch_response_callbacks_; HeapHashMap<int, Member<FetchEvent>> pending_preload_fetch_events_; @@ -702,7 +695,7 @@ // response back to the client. HeapMojoReceiverSet<mojom::blink::ControllerServiceWorker, ServiceWorkerGlobalScope, - HeapMojoWrapperMode::kWithoutContextObserver, + HeapMojoWrapperMode::kWithContextObserver, std::unique_ptr<CrossOriginResourcePolicyChecker>> controller_receivers_{this, this};
diff --git a/third_party/blink/renderer/modules/shapedetection/barcode_detector.h b/third_party/blink/renderer/modules/shapedetection/barcode_detector.h index a1898d9..a37ccc7 100644 --- a/third_party/blink/renderer/modules/shapedetection/barcode_detector.h +++ b/third_party/blink/renderer/modules/shapedetection/barcode_detector.h
@@ -48,9 +48,7 @@ void OnConnectionError(); - HeapMojoRemote<shape_detection::mojom::blink::BarcodeDetection, - HeapMojoWrapperMode::kWithoutContextObserver> - service_; + HeapMojoRemote<shape_detection::mojom::blink::BarcodeDetection> service_; HeapHashSet<Member<ScriptPromiseResolver>> detect_requests_; };
diff --git a/third_party/blink/renderer/modules/shapedetection/barcode_detector_statics.h b/third_party/blink/renderer/modules/shapedetection/barcode_detector_statics.h index 8ed9408c..c15462d 100644 --- a/third_party/blink/renderer/modules/shapedetection/barcode_detector_statics.h +++ b/third_party/blink/renderer/modules/shapedetection/barcode_detector_statics.h
@@ -46,8 +46,7 @@ const Vector<shape_detection::mojom::blink::BarcodeFormat>&); void OnConnectionError(); - HeapMojoRemote<shape_detection::mojom::blink::BarcodeDetectionProvider, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<shape_detection::mojom::blink::BarcodeDetectionProvider> service_; // Holds Promises returned by EnumerateSupportedFormats() so that they can be
diff --git a/third_party/blink/renderer/modules/shapedetection/face_detector.h b/third_party/blink/renderer/modules/shapedetection/face_detector.h index 5938516..b9b9538 100644 --- a/third_party/blink/renderer/modules/shapedetection/face_detector.h +++ b/third_party/blink/renderer/modules/shapedetection/face_detector.h
@@ -37,9 +37,7 @@ Vector<shape_detection::mojom::blink::FaceDetectionResultPtr>); void OnFaceServiceConnectionError(); - HeapMojoRemote<shape_detection::mojom::blink::FaceDetection, - HeapMojoWrapperMode::kWithoutContextObserver> - face_service_; + HeapMojoRemote<shape_detection::mojom::blink::FaceDetection> face_service_; HeapHashSet<Member<ScriptPromiseResolver>> face_service_requests_; };
diff --git a/third_party/blink/renderer/modules/shapedetection/text_detector.h b/third_party/blink/renderer/modules/shapedetection/text_detector.h index 7213528..fefd4a7 100644 --- a/third_party/blink/renderer/modules/shapedetection/text_detector.h +++ b/third_party/blink/renderer/modules/shapedetection/text_detector.h
@@ -36,9 +36,7 @@ Vector<shape_detection::mojom::blink::TextDetectionResultPtr>); void OnTextServiceConnectionError(); - HeapMojoRemote<shape_detection::mojom::blink::TextDetection, - HeapMojoWrapperMode::kWithoutContextObserver> - text_service_; + HeapMojoRemote<shape_detection::mojom::blink::TextDetection> text_service_; HeapHashSet<Member<ScriptPromiseResolver>> text_service_requests_; };
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition_controller.h b/third_party/blink/renderer/modules/speech/speech_recognition_controller.h index a6ba65f..807a804 100644 --- a/third_party/blink/renderer/modules/speech/speech_recognition_controller.h +++ b/third_party/blink/renderer/modules/speech/speech_recognition_controller.h
@@ -68,9 +68,7 @@ private: mojom::blink::SpeechRecognizer* GetSpeechRecognizer(); - HeapMojoRemote<mojom::blink::SpeechRecognizer, - HeapMojoWrapperMode::kWithoutContextObserver> - speech_recognizer_; + HeapMojoRemote<mojom::blink::SpeechRecognizer> speech_recognizer_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/storage/storage_namespace.h b/third_party/blink/renderer/modules/storage/storage_namespace.h index 9eed615..0f7752f9 100644 --- a/third_party/blink/renderer/modules/storage/storage_namespace.h +++ b/third_party/blink/renderer/modules/storage/storage_namespace.h
@@ -130,9 +130,7 @@ String namespace_id_; // |StorageNamespace| is a per-Page object and doesn't have any // |ExecutionContext|. - HeapMojoRemote<mojom::blink::SessionStorageNamespace, - HeapMojoWrapperMode::kWithoutContextObserver> - namespace_{nullptr}; + HeapMojoRemote<mojom::blink::SessionStorageNamespace> namespace_{nullptr}; HashMap<scoped_refptr<const SecurityOrigin>, scoped_refptr<CachedStorageArea>, SecurityOriginHash>
diff --git a/third_party/blink/renderer/modules/wake_lock/wake_lock.h b/third_party/blink/renderer/modules/wake_lock/wake_lock.h index f405b0b..92d166a 100644 --- a/third_party/blink/renderer/modules/wake_lock/wake_lock.h +++ b/third_party/blink/renderer/modules/wake_lock/wake_lock.h
@@ -75,9 +75,7 @@ base::OnceCallback<void(mojom::blink::PermissionStatus)> callback); mojom::blink::PermissionService* GetPermissionService(); - HeapMojoRemote<mojom::blink::PermissionService, - HeapMojoWrapperMode::kWithoutContextObserver> - permission_service_; + HeapMojoRemote<mojom::blink::PermissionService> permission_service_; // https://w3c.github.io/screen-wake-lock/#concepts-and-state-record // Each platform wake lock (one per wake lock type) has an associated state
diff --git a/third_party/blink/renderer/modules/wake_lock/wake_lock_manager.h b/third_party/blink/renderer/modules/wake_lock/wake_lock_manager.h index ad23acd..ab44539b 100644 --- a/third_party/blink/renderer/modules/wake_lock/wake_lock_manager.h +++ b/third_party/blink/renderer/modules/wake_lock/wake_lock_manager.h
@@ -43,9 +43,7 @@ // An actual platform WakeLock. If bound, it means there is an active wake // lock for a given type. - HeapMojoRemote<device::mojom::blink::WakeLock, - HeapMojoWrapperMode::kWithoutContextObserver> - wake_lock_; + HeapMojoRemote<device::mojom::blink::WakeLock> wake_lock_; WakeLockType wake_lock_type_; // ExecutionContext from which we will connect to |wake_lock_service_|.
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.h b/third_party/blink/renderer/modules/webaudio/audio_context.h index 1002e68..3c3adda 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_context.h +++ b/third_party/blink/renderer/modules/webaudio/audio_context.h
@@ -193,9 +193,7 @@ double base_latency_ = 0; // AudioContextManager for reporting audibility. - HeapMojoRemote<mojom::blink::AudioContextManager, - HeapMojoWrapperMode::kWithoutContextObserver> - audio_context_manager_; + HeapMojoRemote<mojom::blink::AudioContextManager> audio_context_manager_; // Keeps track if the output of this destination was audible, before the // current rendering quantum. Used for recording "playback" time.
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc index d4295e6b..97bbd813b 100644 --- a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc
@@ -374,7 +374,7 @@ DCHECK(IsTypeSupportedInternal(mime_type_)); decoder_ = ImageDecoder::CreateByMimeType( mime_type_, segment_reader_, data_complete_, alpha_option_, - ImageDecoder::kHighBitDepthToHalfFloat, color_behavior_, desired_size_, + ImageDecoder::kDefaultBitDepth, color_behavior_, desired_size_, animation_option_); // CreateByImageType() can't fail if we use a supported image type. Which we
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h index 67b62299..8667e7b8 100644 --- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h +++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h
@@ -325,16 +325,11 @@ // throttle response when DidConnect is called. std::unique_ptr<ConnectInfo> connect_info_; - HeapMojoRemote<network::mojom::blink::WebSocket, - HeapMojoWrapperMode::kWithoutContextObserver> - websocket_; + HeapMojoRemote<network::mojom::blink::WebSocket> websocket_; HeapMojoReceiver<network::mojom::blink::WebSocketHandshakeClient, - WebSocketChannelImpl, - HeapMojoWrapperMode::kWithoutContextObserver> + WebSocketChannelImpl> handshake_client_receiver_; - HeapMojoReceiver<network::mojom::blink::WebSocketClient, - WebSocketChannelImpl, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<network::mojom::blink::WebSocketClient, WebSocketChannelImpl> client_receiver_; mojo::ScopedDataPipeConsumerHandle readable_;
diff --git a/third_party/blink/renderer/modules/webusb/usb.h b/third_party/blink/renderer/modules/webusb/usb.h index 181b50c97..9758e50 100644 --- a/third_party/blink/renderer/modules/webusb/usb.h +++ b/third_party/blink/renderer/modules/webusb/usb.h
@@ -92,9 +92,7 @@ HeapMojoRemote<mojom::blink::WebUsbService> service_; HeapHashSet<Member<ScriptPromiseResolver>> get_devices_requests_; HeapHashSet<Member<ScriptPromiseResolver>> get_permission_requests_; - HeapMojoAssociatedReceiver<device::mojom::blink::UsbDeviceManagerClient, - USB, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoAssociatedReceiver<device::mojom::blink::UsbDeviceManagerClient, USB> client_receiver_; HeapHashMap<String, WeakMember<USBDevice>> device_cache_; };
diff --git a/third_party/blink/renderer/modules/xr/xr_frame_provider.cc b/third_party/blink/renderer/modules/xr/xr_frame_provider.cc index de1b36b..58ce16ba 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame_provider.cc +++ b/third_party/blink/renderer/modules/xr/xr_frame_provider.cc
@@ -105,9 +105,8 @@ return; } - HeapMojoRemote<device::mojom::blink::XRFrameDataProvider, - HeapMojoWrapperMode::kWithoutContextObserver> - data_provider(xr_->GetExecutionContext()); + HeapMojoRemote<device::mojom::blink::XRFrameDataProvider> data_provider( + xr_->GetExecutionContext()); data_provider.Bind( std::move(session_ptr->data_provider), xr_->GetExecutionContext()->GetTaskRunner(TaskType::kMiscPlatformAPI));
diff --git a/third_party/blink/renderer/modules/xr/xr_frame_provider.h b/third_party/blink/renderer/modules/xr/xr_frame_provider.h index b827363..2eb8120 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame_provider.h +++ b/third_party/blink/renderer/modules/xr/xr_frame_provider.h
@@ -108,11 +108,9 @@ // Immersive session state Member<XRSession> immersive_session_; Member<XRFrameTransport> frame_transport_; - HeapMojoRemote<device::mojom::blink::XRFrameDataProvider, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<device::mojom::blink::XRFrameDataProvider> immersive_data_provider_; - HeapMojoRemote<device::mojom::blink::XRPresentationProvider, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoRemote<device::mojom::blink::XRPresentationProvider> immersive_presentation_provider_; device::mojom::blink::VRPosePtr immersive_frame_pose_; bool is_immersive_frame_position_emulated_ = false; @@ -129,9 +127,8 @@ // Non-immersive session state HeapHashMap<Member<XRSession>, - Member<DisallowNewWrapper<HeapMojoRemote< - device::mojom::blink::XRFrameDataProvider, - HeapMojoWrapperMode::kWithoutContextObserver>>>> + Member<DisallowNewWrapper< + HeapMojoRemote<device::mojom::blink::XRFrameDataProvider>>>> non_immersive_data_providers_; HeapHashMap<Member<XRSession>, device::mojom::blink::XRFrameDataPtr> requesting_sessions_;
diff --git a/third_party/blink/renderer/modules/xr/xr_session.h b/third_party/blink/renderer/modules/xr/xr_session.h index d8373d17..26f4be7 100644 --- a/third_party/blink/renderer/modules/xr/xr_session.h +++ b/third_party/blink/renderer/modules/xr/xr_session.h
@@ -564,13 +564,10 @@ uint32_t stage_parameters_id_ = 0; device::mojom::blink::VRStageParametersPtr stage_parameters_; - HeapMojoReceiver<device::mojom::blink::XRSessionClient, - XRSession, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<device::mojom::blink::XRSessionClient, XRSession> client_receiver_; HeapMojoAssociatedReceiver<device::mojom::blink::XRInputSourceButtonListener, - XRSession, - HeapMojoWrapperMode::kWithoutContextObserver> + XRSession> input_receiver_; // Used to schedule video.rVFC callbacks for immersive sessions.
diff --git a/third_party/blink/renderer/modules/xr/xr_system.h b/third_party/blink/renderer/modules/xr/xr_system.h index fb649c8..3719d02 100644 --- a/third_party/blink/renderer/modules/xr/xr_system.h +++ b/third_party/blink/renderer/modules/xr/xr_system.h
@@ -469,8 +469,7 @@ HeapHashSet<WeakMember<XRSession>> sessions_; HeapMojoRemote<device::mojom::blink::VRService> service_; HeapMojoAssociatedRemote< - device::mojom::blink::XREnvironmentIntegrationProvider, - HeapMojoWrapperMode::kWithoutContextObserver> + device::mojom::blink::XREnvironmentIntegrationProvider> environment_provider_; HeapMojoReceiver<device::mojom::blink::VRServiceClient, XRSystem> receiver_;
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index 305a3a25f..d17ff18c7 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -1255,8 +1255,6 @@ "mojo/bluetooth_mojom_traits.h", "mojo/drag_mojom_traits.cc", "mojo/drag_mojom_traits.h", - "mojo/features.cc", - "mojo/features.h", "mojo/fetch_api_request_headers_mojom_traits.h", "mojo/heap_mojo_associated_receiver.h", "mojo/heap_mojo_associated_receiver_set.h",
diff --git a/third_party/blink/renderer/platform/graphics/begin_frame_provider.h b/third_party/blink/renderer/platform/graphics/begin_frame_provider.h index f930065..46f39d9 100644 --- a/third_party/blink/renderer/platform/graphics/begin_frame_provider.h +++ b/third_party/blink/renderer/platform/graphics/begin_frame_provider.h
@@ -86,19 +86,14 @@ bool requested_needs_begin_frame_; HeapMojoReceiver<viz::mojom::blink::CompositorFrameSinkClient, - BeginFrameProvider, - HeapMojoWrapperMode::kWithoutContextObserver> + BeginFrameProvider> cfs_receiver_; - HeapMojoReceiver<mojom::blink::EmbeddedFrameSinkClient, - BeginFrameProvider, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<mojom::blink::EmbeddedFrameSinkClient, BeginFrameProvider> efs_receiver_; viz::FrameSinkId frame_sink_id_; viz::FrameSinkId parent_frame_sink_id_; - HeapMojoRemote<viz::mojom::blink::CompositorFrameSink, - HeapMojoWrapperMode::kWithoutContextObserver> - compositor_frame_sink_; + HeapMojoRemote<viz::mojom::blink::CompositorFrameSink> compositor_frame_sink_; Member<BeginFrameProviderClient> begin_frame_client_; std::unique_ptr<power_scheduler::PowerModeVoter> animation_power_mode_voter_;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/xr_frame_transport.h b/third_party/blink/renderer/platform/graphics/gpu/xr_frame_transport.h index 1f987a2..420b4a4d 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/xr_frame_transport.h +++ b/third_party/blink/renderer/platform/graphics/gpu/xr_frame_transport.h
@@ -74,9 +74,7 @@ void OnSubmitFrameRendered() override; void OnSubmitFrameGpuFence(gfx::GpuFenceHandle) override; - HeapMojoReceiver<device::mojom::blink::XRPresentationClient, - XRFrameTransport, - HeapMojoWrapperMode::kWithoutContextObserver> + HeapMojoReceiver<device::mojom::blink::XRPresentationClient, XRFrameTransport> submit_frame_client_receiver_; // Used to keep the image alive until the next frame if using
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h index 7bfb1e0..1296676 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
@@ -475,9 +475,7 @@ uint32_t inflight_keepalive_bytes_ = 0; - HeapMojoRemote<mojom::blink::BlobRegistry, - HeapMojoWrapperMode::kWithoutContextObserver> - blob_registry_remote_; + HeapMojoRemote<mojom::blink::BlobRegistry> blob_registry_remote_; HeapHashSet<Member<SubresourceWebBundle>> subresource_web_bundles_;
diff --git a/third_party/blink/renderer/platform/mojo/features.cc b/third_party/blink/renderer/platform/mojo/features.cc deleted file mode 100644 index 934f5ab..0000000 --- a/third_party/blink/renderer/platform/mojo/features.cc +++ /dev/null
@@ -1,11 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/platform/mojo/features.h" - -namespace blink { -// HeapMojo experiments to deprecate kWithoutContextObserver -const base::Feature kHeapMojoUseContextObserver{ - "HeapMojoUseContextObserver", base::FEATURE_ENABLED_BY_DEFAULT}; -} // namespace blink
diff --git a/third_party/blink/renderer/platform/mojo/features.h b/third_party/blink/renderer/platform/mojo/features.h deleted file mode 100644 index 742150c7..0000000 --- a/third_party/blink/renderer/platform/mojo/features.h +++ /dev/null
@@ -1,15 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_FEATURES_H_ -#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_FEATURES_H_ - -#include "base/feature_list.h" -#include "third_party/blink/renderer/platform/platform_export.h" - -namespace blink { -PLATFORM_EXPORT extern const base::Feature kHeapMojoUseContextObserver; -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_FEATURES_H_
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h index 0fd2f4a..3cd7bad 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h
@@ -10,7 +10,6 @@ #include "mojo/public/cpp/bindings/associated_receiver.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -101,9 +100,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) associated_receiver_.reset(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h index 80bb913..ad3d26eb 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set.h
@@ -11,7 +11,6 @@ #include "mojo/public/cpp/bindings/associated_receiver_set.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -101,9 +100,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) associated_receiver_set_.Clear(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote.h b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote.h index ed70fb9..9fc2d21 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote.h
@@ -10,7 +10,6 @@ #include "mojo/public/cpp/bindings/associated_remote.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -104,9 +103,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) associated_remote_.reset(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h index 6ab5368..b4bf2cb 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set.h
@@ -10,7 +10,6 @@ #include "mojo/public/cpp/bindings/remote_set.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -101,9 +100,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) associated_remote_set_.Clear(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h index 58978f28..74641989 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h
@@ -8,7 +8,6 @@ #include "mojo/public/cpp/bindings/receiver.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -102,9 +101,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) receiver_.reset(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set.h index 5b816808..8295128f 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set.h
@@ -9,7 +9,6 @@ #include "mojo/public/cpp/bindings/receiver_set.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -107,9 +106,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) receiver_set_.Clear(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc index 6a927ce..cfb765a 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc
@@ -12,7 +12,6 @@ #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h" #include "third_party/blink/renderer/platform/heap/persistent.h" #include "third_party/blink/renderer/platform/heap_observer_set.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" #include "third_party/blink/renderer/platform/testing/mock_context_lifecycle_notifier.h" @@ -156,9 +155,6 @@ class HeapMojoReceiverDestroyContextWithContextObserverTest : public HeapMojoReceiverDestroyContextBaseTest< HeapMojoWrapperMode::kWithContextObserver> {}; -class HeapMojoReceiverDestroyContextWithoutContextObserverTest - : public HeapMojoReceiverDestroyContextBaseTest< - HeapMojoWrapperMode::kWithoutContextObserver> {}; class HeapMojoReceiverDestroyContextForceWithoutContextObserverTest : public HeapMojoReceiverDestroyContextBaseTest< HeapMojoWrapperMode::kForceWithoutContextObserver> {}; @@ -212,29 +208,6 @@ EXPECT_FALSE(owner_->receiver().is_bound()); } -// Destroy the context with context observer and check that the connection is -// disconnected. -TEST_F(HeapMojoReceiverDestroyContextWithoutContextObserverTest, - ResetsOnContextDestroyedWhenFinchEnabled) { - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeaturesAndParameters( - {{kHeapMojoUseContextObserver, {}}}, {}); - EXPECT_TRUE(owner_->receiver().is_bound()); - context_->NotifyContextDestroyed(); - EXPECT_FALSE(owner_->receiver().is_bound()); -} - -// Destroy the context without context observer and check that the connection is -// still connected. -TEST_F(HeapMojoReceiverDestroyContextWithoutContextObserverTest, - ResetsOnContextDestroyedWhenFinchDisabled) { - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeaturesAndParameters({}, {kHeapMojoUseContextObserver}); - EXPECT_TRUE(owner_->receiver().is_bound()); - context_->NotifyContextDestroyed(); - EXPECT_TRUE(owner_->receiver().is_bound()); -} - // Destroy the context without context observer and check that the connection is // still connected. TEST_F(HeapMojoReceiverDestroyContextForceWithoutContextObserverTest,
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_remote.h b/third_party/blink/renderer/platform/mojo/heap_mojo_remote.h index cae3ed99..00d52ea 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_remote.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_remote.h
@@ -10,7 +10,6 @@ #include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -95,9 +94,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) remote_.reset(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set.h index 41894b49..74da2893 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set.h
@@ -13,7 +13,6 @@ #include "mojo/public/cpp/bindings/remote_set.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -105,9 +104,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) remote_set_.Clear(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc index ac3bc72..95a783f 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc
@@ -12,7 +12,6 @@ #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h" #include "third_party/blink/renderer/platform/heap/persistent.h" #include "third_party/blink/renderer/platform/heap_observer_set.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" #include "third_party/blink/renderer/platform/testing/mock_context_lifecycle_notifier.h" @@ -125,9 +124,6 @@ class HeapMojoRemoteDestroyContextWithContextObserverTest : public HeapMojoRemoteDestroyContextBaseTest< HeapMojoWrapperMode::kWithContextObserver> {}; -class HeapMojoRemoteDestroyContextWithoutContextObserverTest - : public HeapMojoRemoteDestroyContextBaseTest< - HeapMojoWrapperMode::kWithoutContextObserver> {}; class HeapMojoRemoteDestroyContextForceWithoutContextObserverTest : public HeapMojoRemoteDestroyContextBaseTest< HeapMojoWrapperMode::kForceWithoutContextObserver> {}; @@ -154,29 +150,6 @@ } // Destroy the context without context observer and check that the connection is -// disconnected. -TEST_F(HeapMojoRemoteDestroyContextWithoutContextObserverTest, - ResetsOnContextDestroyedWhenFinchEnabled) { - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeaturesAndParameters( - {{kHeapMojoUseContextObserver, {}}}, {}); - EXPECT_TRUE(owner_->remote().is_bound()); - context_->NotifyContextDestroyed(); - EXPECT_FALSE(owner_->remote().is_bound()); -} - -// Destroy the context without context observer and check that the connection is -// still connected. -TEST_F(HeapMojoRemoteDestroyContextWithoutContextObserverTest, - ResetsOnContextDestroyedWhenFinchDisabled) { - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeaturesAndParameters({}, {kHeapMojoUseContextObserver}); - EXPECT_TRUE(owner_->remote().is_bound()); - context_->NotifyContextDestroyed(); - EXPECT_TRUE(owner_->remote().is_bound()); -} - -// Destroy the context without context observer and check that the connection is // still connected. TEST_F(HeapMojoRemoteDestroyContextForceWithoutContextObserverTest, ResetsOnContextDestroyed) {
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set.h b/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set.h index ae6158a8..d7af19e 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set.h
@@ -9,7 +9,6 @@ #include "mojo/public/cpp/bindings/unique_receiver_set.h" #include "third_party/blink/renderer/platform/context_lifecycle_observer.h" #include "third_party/blink/renderer/platform/heap/heap.h" -#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" #include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h" @@ -77,9 +76,7 @@ // ContextLifecycleObserver methods void ContextDestroyed() override { - if (Mode == HeapMojoWrapperMode::kWithContextObserver || - (Mode == HeapMojoWrapperMode::kWithoutContextObserver && - base::FeatureList::IsEnabled(kHeapMojoUseContextObserver))) + if (Mode == HeapMojoWrapperMode::kWithContextObserver) receiver_set_.Clear(); }
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h b/third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h index 8a6f8714cb..c62ca3c 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h
@@ -19,11 +19,6 @@ // garbage-collected. // But, it will not reset the mojo connection when the associated // ExecutionContext is detached. - kWithoutContextObserver, - // [Deprecated] We are now experimenting with deprecating - // kWithoutContextObserver. - // kWithoutContextObserver is ignored in the Finch experiment. To enforce - // kWithoutContextObserver, use kForceWithoutContextObserver. kForceWithoutContextObserver, };
diff --git a/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor.py b/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor.py index c9cf7f6..f6d20ae 100644 --- a/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor.py +++ b/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor.py
@@ -1,7 +1,7 @@ # Copyright 2017 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. -"""A limited finder & parser for Chromium OWNERS files. +"""A limited finder & parser for Chromium OWNERS and DIR_METADATA files. This module is intended to be used within web_tests/external and is informative only. For authoritative uses, please rely on `git cl owners`. @@ -19,11 +19,12 @@ # In our use case (under external/wpt), we only process the first enclosing # OWNERS file for any given path (i.e. always assuming "set noparent"), and we # ignore "per-file:" lines, "file:" directives, etc. +# +# For DIR_METADATA files, we rely on the dirmd tool from depot_tools to parse +# them into a JSON blob. # Recognizes 'X@Y' email addresses. Very simplistic. (from owners.py) BASIC_EMAIL_REGEXP = r'^[\w\-\+\%\.]+\@[\w\-\+\%\.]+$' -WPT_NOTIFY_REGEXP = r'^# *WPT-NOTIFY: *true$' -COMPONENT_REGEXP = r'^# *COMPONENT: *(.+)$' class DirectoryOwnersExtractor(object): @@ -120,40 +121,31 @@ addresses.append(line) return addresses - def extract_component(self, owners_file): - """Extracts the component from an OWNERS file. + def extract_component(self, metadata_file): + """Extracts the component from an DIR_METADATA file. Args: - owners_file: An absolute path to an OWNERS file. + metadata_file: An absolute path to an DIR_METADATA file. Returns: A string, or None if not found. """ - dir_metadata = self._read_dir_metadata(owners_file) + dir_metadata = self._read_dir_metadata(metadata_file) if dir_metadata and dir_metadata.component: return dir_metadata.component - - contents = self._read_text_file(owners_file) - search = re.search(COMPONENT_REGEXP, contents, re.MULTILINE) - if search: - return search.group(1) return None - def is_wpt_notify_enabled(self, owners_file): - """Checks if the OWNERS file enables WPT-NOTIFY. + def is_wpt_notify_enabled(self, metadata_file): + """Checks if the DIR_METADATA file enables WPT-NOTIFY. Args: - owners_file: An absolute path to an OWNERS file. + metadata_file: An absolute path to an DIR_METADATA file. Returns: A boolean. """ - dir_metadata = self._read_dir_metadata(owners_file) - if dir_metadata and dir_metadata.should_notify is not None: - return dir_metadata.should_notify - - contents = self._read_text_file(owners_file) - return bool(re.search(WPT_NOTIFY_REGEXP, contents, re.MULTILINE)) + dir_metadata = self._read_dir_metadata(metadata_file) + return dir_metadata and dir_metadata.should_notify @memoized def _read_text_file(self, path): @@ -169,16 +161,19 @@ Returns: A WPTDirMetadata object, or None if not found. """ + print('_read_dir_metadata %s' % path) root_path = self.finder.web_tests_dir() dir_path = self.filesystem.dirname(path) # dirmd starts with an absolute directory path, `dir_path`, traverses all # parent directories and stops at `root_path` to find the first available DIR_METADATA # file. `root_path` is the web_tests directory. + print(self.executive) json_data = self.executive.run_command([ self.finder.path_from_depot_tools_base('dirmd'), 'compute', '-root', root_path, dir_path ]) + print(json_data) try: data = json.loads(json_data) except ValueError:
diff --git a/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor_unittest.py b/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor_unittest.py index 1d94129..19e75e7 100644 --- a/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor_unittest.py +++ b/third_party/blink/tools/blinkpy/w3c/directory_owners_extractor_unittest.py
@@ -176,50 +176,7 @@ self.extractor.extract_owners(ABS_WPT_BASE + '/foo/OWNERS'), ['foo@chromium.org', 'bar@chromium.org']) - def test_extract_component(self): - self.host.filesystem.files = { - ABS_WPT_BASE + '/foo/OWNERS': - '# TEAM: some-team@chromium.org\n' - '# COMPONENT: Blink>Layout\n' - } - self.assertEqual( - self.extractor.extract_component(ABS_WPT_BASE + '/foo/OWNERS'), - 'Blink>Layout') - def test_is_wpt_notify_enabled_true(self): - self.host.filesystem.files = { - ABS_WPT_BASE + '/foo/OWNERS': - '# COMPONENT: Blink>Layout\n' - '# WPT-NOTIFY: true\n' - } - self.assertTrue( - self.extractor.is_wpt_notify_enabled(ABS_WPT_BASE + '/foo/OWNERS')) - - def test_is_wpt_notify_enabled_false(self): - self.host.filesystem.files = { - ABS_WPT_BASE + '/foo/OWNERS': - '# COMPONENT: Blink>Layout\n' - '# WPT-NOTIFY: false\n' - } - self.assertFalse( - self.extractor.is_wpt_notify_enabled(ABS_WPT_BASE + '/foo/OWNERS')) - - def test_is_wpt_notify_enabled_absence_is_false(self): - self.host.filesystem.files = { - ABS_WPT_BASE + '/foo/OWNERS': - '# TEAM: some-team@chromium.org\n' - '# COMPONENT: Blink>Layout\n' - } - self.assertFalse( - self.extractor.is_wpt_notify_enabled(ABS_WPT_BASE + '/foo/OWNERS')) - - def test_is_wpt_notify_enabled_with_dir_metadata(self): - self.host.filesystem.files = { - ABS_WPT_BASE + '/foo/OWNERS': - '# TEAM: some-team@chromium.org\n' - '# COMPONENT: Blink>Layout\n' - '# WPT-NOTIFY: true\n' - } data = ( '{"dirs":{"a/b":{"monorail":' '{"component":"foo"},"teamEmail":"bar","wpt":{"notify":"YES"}}}}') @@ -227,21 +184,29 @@ extractor = DirectoryOwnersExtractor(self.host) self.assertTrue( - extractor.is_wpt_notify_enabled(MOCK_WEB_TESTS + 'a/b/OWNERS')) + extractor.is_wpt_notify_enabled(MOCK_WEB_TESTS + + 'a/b/DIR_METADATA')) - def test_is_wpt_notify_enabled_with_dir_metadata_none(self): - self.host.filesystem.files = { - ABS_WPT_BASE + '/foo/OWNERS': - '# COMPONENT: Blink>Layout\n' - '# WPT-NOTIFY: true\n' - } + def test_is_wpt_notify_enabled_false(self): + data = ( + '{"dirs":{"a/b":{"monorail":' + '{"component":"foo"},"teamEmail":"bar","wpt":{"notify":"NO"}}}}') + self.host.executive = MockExecutive(output=data) + extractor = DirectoryOwnersExtractor(self.host) + + self.assertFalse( + extractor.is_wpt_notify_enabled(MOCK_WEB_TESTS + + 'a/b/DIR_METADATA')) + + def test_is_wpt_notify_enabled_error(self): self.host.executive = MockExecutive(output='error') extractor = DirectoryOwnersExtractor(self.host) - self.assertTrue( - extractor.is_wpt_notify_enabled(ABS_WPT_BASE + '/foo/OWNERS')) + self.assertFalse( + extractor.is_wpt_notify_enabled(ABS_WPT_BASE + + '/foo/DIR_METADATA')) - def test_extract_component_with_dir_metadata(self): + def test_extract_component(self): data = ( '{"dirs":{"a/b":{"monorail":' '{"component":"foo"},"teamEmail":"bar","wpt":{"notify":"YES"}}}}') @@ -249,7 +214,8 @@ extractor = DirectoryOwnersExtractor(self.host) self.assertEqual( - extractor.extract_component(MOCK_WEB_TESTS + 'a/b/OWNERS'), 'foo') + extractor.extract_component(MOCK_WEB_TESTS + 'a/b/DIR_METADATA'), + 'foo') def test_read_dir_metadata_success(self): data = (
diff --git a/third_party/blink/tools/blinkpy/w3c/import_notifier.py b/third_party/blink/tools/blinkpy/w3c/import_notifier.py index 6c36ce4..4a1179d1 100644 --- a/third_party/blink/tools/blinkpy/w3c/import_notifier.py +++ b/third_party/blink/tools/blinkpy/w3c/import_notifier.py
@@ -196,14 +196,16 @@ full_directory = self.host.filesystem.join( self.finder.web_tests_dir(), directory) owners_file = self.host.filesystem.join(full_directory, 'OWNERS') + metadata_file = self.host.filesystem.join(full_directory, + 'WPT_METADATA') is_wpt_notify_enabled = self.owners_extractor.is_wpt_notify_enabled( - owners_file) + metadata_file) owners = self.owners_extractor.extract_owners(owners_file) # owners may be empty but not None. cc = owners - component = self.owners_extractor.extract_component(owners_file) + component = self.owners_extractor.extract_component(metadata_file) # component could be None. components = [component] if component else None
diff --git a/third_party/blink/tools/blinkpy/w3c/import_notifier_unittest.py b/third_party/blink/tools/blinkpy/w3c/import_notifier_unittest.py index 1eb5324..aad95bc 100644 --- a/third_party/blink/tools/blinkpy/w3c/import_notifier_unittest.py +++ b/third_party/blink/tools/blinkpy/w3c/import_notifier_unittest.py
@@ -8,7 +8,7 @@ from blinkpy.common.checkout.git_mock import MockGit from blinkpy.common.host_mock import MockHost from blinkpy.common.path_finder import RELATIVE_WEB_TESTS -from blinkpy.common.system.executive_mock import mock_git_commands +from blinkpy.common.system.executive_mock import mock_git_commands, MockExecutive from blinkpy.common.system.filesystem_mock import MockFileSystem from blinkpy.w3c.local_wpt_mock import MockLocalWPT from blinkpy.w3c.import_notifier import ImportNotifier, TestFailure @@ -262,12 +262,22 @@ def test_create_bugs_from_new_failures(self): self.host.filesystem.write_text_file( - MOCK_WEB_TESTS + 'external/wpt/foo/OWNERS', - '# COMPONENT: Blink>Infra>Ecosystem\n' - '# WPT-NOTIFY: true\n' - 'foolip@chromium.org\n') + MOCK_WEB_TESTS + 'external/wpt/foo/OWNERS', 'foolip@chromium.org') self.host.filesystem.write_text_file( MOCK_WEB_TESTS + 'external/wpt/bar/OWNERS', 'test@chromium.org') + + data = ('{"dirs":{"external/wpt/foo":{"monorail":{"component":' + '"Blink>Infra>Ecosystem"},"teamEmail":"email","wpt":{' + '"notify":"YES"}}}}') + + def mock_run_command(args): + if args[-1].endswith('external/wpt/foo'): + return data + return '' + + self.notifier.owners_extractor.executive = MockExecutive( + run_command_fn=mock_run_command) + self.notifier.new_failures_by_directory = { 'external/wpt/foo': [ TestFailure(
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py index b1f3344..f558f7f 100644 --- a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py +++ b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py
@@ -372,14 +372,18 @@ elif target[key] == source[key]: pass else: - # Temporary logging for https://crbug.com/1154650. + # We have two different SimpleTestResults for the same test + # from two different builders. This can happen when a CQ bot + # and a blink-rel bot run on the same platform. We union the + # actual statuses from both builders. _log.info( - 'Error: mismatching key values in merge_dicts.\n' - 'target[key]: %s\nsource[key]: %s', target[key], - source[key]) - raise ValueError( - 'The key: %s already exists in the target dictionary.' - % '.'.join(path)) + "Joining differing results for path %s, key %s\n target:%s\nsource:%s" + % (path, key, target[key], source[key])) + target[key] = SimpleTestResult( + expected=target[key].expected, + actual='%s %s' % + (target[key].actual, source[key].actual), + bug=target[key].bug) else: target[key] = source[key] return target
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py index 81b808e..9d8511d 100644 --- a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py +++ b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py
@@ -661,33 +661,30 @@ DesktopConfig('test-win-win10')]), ['Win']) - def test_merge_dicts_with_conflict_raise_exception(self): + def test_merge_dicts_with_differing_status_is_merged(self): updater = WPTExpectationsUpdater(self.mock_host()) - # Both dicts here have the key "one", and the value is not equal. - with self.assertRaises(ValueError): - updater.merge_dicts({ + # Both dicts here have the key "one", and the value is not equal. The + # actual fields get joined together. + result = updater.merge_dicts( + { 'external/wpt/test/path.html': { - 'one': { - 'expected': 'FAIL', - 'actual': 'PASS' - }, - 'two': { - 'expected': 'FAIL', - 'actual': 'TIMEOUT' - }, - 'three': { - 'expected': 'FAIL', - 'actual': 'PASS' - }, + 'one': SimpleTestResult('FAIL', 'PASS', 'bug'), + 'two': SimpleTestResult('FAIL', 'TIMEOUT', 'bug'), + 'three': SimpleTestResult('FAIL', 'PASS', 'bug'), }, }, { 'external/wpt/test/path.html': { - 'one': { - 'expected': 'FAIL', - 'actual': 'TIMEOUT' - }, + 'one': SimpleTestResult('FAIL', 'TIMEOUT', 'bug'), } }) + expected_result = { + 'external/wpt/test/path.html': { + 'one': SimpleTestResult('FAIL', 'PASS TIMEOUT', 'bug'), + 'two': SimpleTestResult('FAIL', 'TIMEOUT', 'bug'), + 'three': SimpleTestResult('FAIL', 'PASS', 'bug'), + }, + } + self.assertEqual(result, expected_result) def test_merge_dicts_merges_second_dict_into_first(self): updater = WPTExpectationsUpdater(self.mock_host())
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index cdbaa5e..20e2b35 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -3558,7 +3558,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-gaps-001.html [ Crash Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html [ Crash Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html [ Crash ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001.html [ Crash Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html [ Crash Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-overflow.html [ Failure ] @@ -3580,7 +3579,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html [ Failure Crash ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html [ Crash Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html [ Failure ] @@ -3588,10 +3586,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/animation/grid-template-columns-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/animation/grid-template-rows-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/flex-content-resolution-rows-002.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001.html [ Failure Crash ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001.html [ Failure Crash ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001.html [ Failure Crash ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001.html [ Failure Crash ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-repeat-intrinsic-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-change-intrinsic-size-with-auto-repeat-tracks-001.html [ Failure ] @@ -3609,7 +3603,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-024.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-025.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-layout-properties.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-model/iner-ignores-first-letter-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-002.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/flex-sizing-rows-min-max-height-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-automatic-minimum-for-auto-columns-001.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-animation-in-body-ref.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-animation-in-body-ref.html new file mode 100644 index 0000000..5d3d419 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-animation-in-body-ref.html
@@ -0,0 +1,8 @@ +<!DOCTYPE html> +<style> +body { + background-color: rgb(100, 100, 0); +} +</style> +<body> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-animation-in-body.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-animation-in-body.html new file mode 100644 index 0000000..e5783f2b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-animation-in-body.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-color"> +<link rel="match" href="background-color-animation-in-body-ref.html"> +<style> +body { + /* Use a long animation that start at 50% progress where the slope of the + selected timing function is zero. By setting up the animation in this way, + we accommodate lengthy delays in running the test without a potential drift + in the animated property value. This is important for avoiding flakes, + especially on debug builds. The screenshots are taken as soon as the + animation is ready, thus the long animation duration has no bearing on + the actual duration of the test. */ + animation: bgcolor 1000000s cubic-bezier(0,1,1,0) -500000s; +} +@keyframes bgcolor { + 0% { background-color: rgb(0, 200, 0); } + 100% { background-color: rgb(200, 0, 0); } +} +</style> +<body> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-transparent-animation-in-body-ref.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-transparent-animation-in-body-ref.html new file mode 100644 index 0000000..72c0c83 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-transparent-animation-in-body-ref.html
@@ -0,0 +1,3 @@ +<!DOCTYPE html> +<body> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-transparent-animation-in-body.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-transparent-animation-in-body.html new file mode 100644 index 0000000..f156f91 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-color-transparent-animation-in-body.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-color"> +<link rel="match" href="background-color-transparent-animation-in-body-ref.html"> +<style> +body { + /* Use a long animation that start at 50% progress where the slope of the + selected timing function is zero. By setting up the animation in this way, + we accommodate lengthy delays in running the test without a potential drift + in the animated property value. This is important for avoiding flakes, + especially on debug builds. The screenshots are taken as soon as the + animation is ready, thus the long animation duration has no bearing on + the actual duration of the test. */ + animation: bgcolor 1000000s cubic-bezier(0,1,1,0) -500000s; +} +@keyframes bgcolor { + 0% { background-color: rgba(0, 200, 0, 0); } + 100% { background-color: rgba(200, 0, 0, 0); } +} +</style> +<body> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/col_removal.html b/third_party/blink/web_tests/external/wpt/css/css-tables/col_removal.html new file mode 100644 index 0000000..ee5efa9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-tables/col_removal.html
@@ -0,0 +1,31 @@ +<!doctype html> +<title>Table grid syncs after COL removal</title> +<link rel="author" href="mailto:atotic@google.com"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://crbug.com/1191940"> + +<style> + main td { + width:30px; + height:30px; + padding:0; + } +</style> +<main> + <table style="border-collapse: collapse;"> + <col style="border: 2px solid green;"></col> + <col id="target" style="border: 50px solid red;"></col> + <td>x</td> + <td>x</td> + </table> +</main> +<script> + test(() => { + let table = document.querySelector("main table"); + document.body.offsetTop; + assert_equals(table.offsetWidth, 162); + document.getElementById('target').remove(); + assert_equals(table.offsetWidth, 64, "table shrinks after column is removed"); + }); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/crashtests/empty_table_with_cols.html b/third_party/blink/web_tests/external/wpt/css/css-tables/crashtests/empty_table_with_cols.html new file mode 100644 index 0000000..a2b817f8 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-tables/crashtests/empty_table_with_cols.html
@@ -0,0 +1,3 @@ +<table style="border:1px solid black;border-collapse: collapse"> + <colgroup > + <tr></tr>
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/README.md b/third_party/blink/web_tests/external/wpt/webcodecs/README.md index 46de814..c0983b0b 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/README.md +++ b/third_party/blink/web_tests/external/wpt/webcodecs/README.md
@@ -46,6 +46,11 @@ mp4box -add-image ref:primary:tk=1:samp=1 -ab avis -ab avif -ab miaf -brand avis four-colors-flip.mp4 -out four-colors-flip.avif ``` +### four-colors-full-range-bt2020-pq-444-10bpc.avif +``` +avifenc -r f -d 10 -y 444 -s 0 --nclx 9/16/9 four-colors.png four-colors-full-range-bt2020-pq-444-10bpc.avif +``` + ### four-colors.jpg Used [Sqoosh.app](https://squoosh.app/) with MozJPEG compression then used exiftool to add an orientation marker.
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/four-colors-full-range-bt2020-pq-444-10bpc.avif b/third_party/blink/web_tests/external/wpt/webcodecs/four-colors-full-range-bt2020-pq-444-10bpc.avif new file mode 100644 index 0000000..512a2b85 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/four-colors-full-range-bt2020-pq-444-10bpc.avif Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/image-decoder.any.js b/third_party/blink/web_tests/external/wpt/webcodecs/image-decoder.any.js index 08ef96f..12dc955 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/image-decoder.any.js +++ b/third_party/blink/web_tests/external/wpt/webcodecs/image-decoder.any.js
@@ -88,6 +88,11 @@ }, 'Test AVIF image decoding.'); promise_test(t => { + return testFourColorsDecode( + 'four-colors-full-range-bt2020-pq-444-10bpc.avif', 'image/avif'); +}, 'Test high bit depth HDR AVIF image decoding.'); + +promise_test(t => { return testFourColorsDecode('four-colors-flip.avif', 'image/avif', false); }, 'Test multi-track AVIF image decoding w/ preferAnimation=false.');
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001-expected.txt deleted file mode 100644 index ee98a6f..0000000 --- a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001-expected.txt +++ /dev/null
@@ -1,163 +0,0 @@ -This is a testharness.js-based test. -FAIL .grid 1 assert_equals: -<div class="grid"> - <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: auto / 1;" data-offset-x="15" data-offset-y="0" data-expected-width="100" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: auto / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="15" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / auto; grid-row: 3 / auto;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / auto;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / auto; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 2 assert_equals: -<div class="grid"> - <div class="absolute" style="grid-column: -5 / 1; grid-row: -5 / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: -5 / 1;" data-offset-x="15" data-offset-y="0" data-expected-width="100" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: -5 / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="15" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / 5; grid-row: 3 / 5;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / 5;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / 5; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 3 assert_equals: -<div class="grid"> - <div class="absolute" style="grid-column: span 2 / 1; grid-row: span 2 / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: span 2 / 1;" data-offset-x="15" data-offset-y="0" data-expected-width="100" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: span 2 / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="15" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / span 2; grid-row: 3 / span 2;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / span 2;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / span 2; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 4 assert_equals: -<div class="grid"> - <div class="absolute" style="grid-column: foo / 1; grid-row: foo / 1;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="315"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: foo / 1;" data-offset-x="15" data-offset-y="15" data-expected-width="100" data-expected-height="315"> - </div> - <div class="absolute" style="grid-column: foo / 1; grid-row: 1 / 2;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / foo; grid-row: 3 / foo;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / foo;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / foo; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 215 but got 530 -FAIL .grid 5 assert_equals: -<div class="grid directionRTL"> - <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: auto / 1;" data-offset-x="415" data-offset-y="0" data-expected-width="100" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: auto / 1; grid-row: 1 / 2;" data-offset-x="515" data-offset-y="15" data-expected-width="15" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / auto; grid-row: 3 / auto;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / auto;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / auto; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 6 assert_equals: -<div class="grid directionRTL"> - <div class="absolute" style="grid-column: -5 / 1; grid-row: -5 / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: -5 / 1;" data-offset-x="415" data-offset-y="0" data-expected-width="100" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: -5 / 1; grid-row: 1 / 2;" data-offset-x="515" data-offset-y="15" data-expected-width="15" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / 5; grid-row: 3 / 5;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / 5;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / 5; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 7 assert_equals: -<div class="grid directionRTL"> - <div class="absolute" style="grid-column: span 2 / 1; grid-row: span 2 / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: span 2 / 1;" data-offset-x="415" data-offset-y="0" data-expected-width="100" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: span 2 / 1; grid-row: 1 / 2;" data-offset-x="515" data-offset-y="15" data-expected-width="15" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / span 2; grid-row: 3 / span 2;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / span 2;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / span 2; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 8 assert_equals: -<div class="grid directionRTL"> - <div class="absolute" style="grid-column: foo / 1; grid-row: foo / 1;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315"> - </div> - <div class="absolute" style="grid-column: 1 / 2; grid-row: foo / 1;" data-offset-x="415" data-offset-y="15" data-expected-width="100" data-expected-height="315"> - </div> - <div class="absolute" style="grid-column: foo / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="50"> - </div> - <div class="absolute" style="grid-column: 3 / foo; grid-row: 3 / foo;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / foo;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115"> - </div> - <div class="absolute" style="grid-column: 3 / foo; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150"> - </div> -</div> -width expected 215 but got 530 -FAIL .grid 9 assert_equals: -<div class="grid autoFit gap"> - <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: -1 / auto; grid-row: -1 / auto;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="315"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 10 assert_equals: -<div class="grid autoFit gap"> - <div class="absolute" style="grid-column: auto / 2; grid-row: auto / 2;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: -2 / auto; grid-row: -2 / auto;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="315"> - </div> -</div> -width expected 15 but got 45 -FAIL .grid 11 assert_equals: -<div class="grid autoFit directionRTL gap"> - <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: -1 / auto; grid-row: -1 / auto;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315"> - </div> -</div> -width expected 15 but got 530 -FAIL .grid 12 assert_equals: -<div class="grid autoFit directionRTL gap"> - <div class="absolute" style="grid-column: auto / 2; grid-row: auto / 2;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15"> - </div> - <div class="absolute" style="grid-column: -2 / auto; grid-row: -2 / auto;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315"> - </div> -</div> -width expected 15 but got 45 -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt new file mode 100644 index 0000000..c6d0531 --- /dev/null +++ b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +PASS .grid 1 +PASS .grid 2 +PASS .grid 3 +PASS .grid 4 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt new file mode 100644 index 0000000..4166e14 --- /dev/null +++ b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-columns-001-expected.txt
@@ -0,0 +1,36 @@ +This is a testharness.js-based test. +PASS .grid 1 +PASS .grid 2 +PASS .grid 3 +PASS .grid 4 +PASS .grid 5 +PASS .grid 6 +PASS .grid 7 +PASS .grid 8 +PASS .grid 9 +PASS .grid 10 +PASS .grid 11 +PASS .grid 12 +PASS .grid 13 +PASS .grid 14 +PASS .grid 15 +PASS .grid 16 +PASS .grid 17 +PASS .grid 18 +PASS .grid 19 +PASS .grid 20 +PASS .grid 21 +PASS .grid 22 +PASS .grid 23 +PASS .grid 24 +PASS .grid 25 +PASS .grid 26 +PASS .grid 27 +PASS .grid 28 +PASS .grid 29 +PASS .grid 30 +PASS .grid 31 +PASS .grid 32 +PASS .grid 33 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt new file mode 100644 index 0000000..f95a4a7 --- /dev/null +++ b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fill-rows-001-expected.txt
@@ -0,0 +1,38 @@ +This is a testharness.js-based test. +PASS .grid 1 +PASS .grid 2 +PASS .grid 3 +PASS .grid 4 +PASS .grid 5 +PASS .grid 6 +PASS .grid 7 +PASS .grid 8 +PASS .grid 9 +PASS .grid 10 +PASS .grid 11 +PASS .grid 12 +PASS .grid 13 +PASS .grid 14 +PASS .grid 15 +PASS .grid 16 +PASS .grid 17 +PASS .grid 18 +PASS .grid 19 +PASS .grid 20 +PASS .grid 21 +PASS .grid 22 +PASS .grid 23 +PASS .grid 24 +PASS .grid 25 +PASS .grid 26 +PASS .grid 27 +PASS .grid 28 +PASS .grid 29 +PASS .grid 30 +PASS .grid 31 +PASS .grid 32 +PASS .grid 33 +PASS .grid 34 +PASS .grid 35 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt new file mode 100644 index 0000000..f95a4a7 --- /dev/null +++ b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001-expected.txt
@@ -0,0 +1,38 @@ +This is a testharness.js-based test. +PASS .grid 1 +PASS .grid 2 +PASS .grid 3 +PASS .grid 4 +PASS .grid 5 +PASS .grid 6 +PASS .grid 7 +PASS .grid 8 +PASS .grid 9 +PASS .grid 10 +PASS .grid 11 +PASS .grid 12 +PASS .grid 13 +PASS .grid 14 +PASS .grid 15 +PASS .grid 16 +PASS .grid 17 +PASS .grid 18 +PASS .grid 19 +PASS .grid 20 +PASS .grid 21 +PASS .grid 22 +PASS .grid 23 +PASS .grid 24 +PASS .grid 25 +PASS .grid 26 +PASS .grid 27 +PASS .grid 28 +PASS .grid 29 +PASS .grid 30 +PASS .grid 31 +PASS .grid 32 +PASS .grid 33 +PASS .grid 34 +PASS .grid 35 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt new file mode 100644 index 0000000..4166e14 --- /dev/null +++ b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/grid-definition/grid-auto-fit-rows-001-expected.txt
@@ -0,0 +1,36 @@ +This is a testharness.js-based test. +PASS .grid 1 +PASS .grid 2 +PASS .grid 3 +PASS .grid 4 +PASS .grid 5 +PASS .grid 6 +PASS .grid 7 +PASS .grid 8 +PASS .grid 9 +PASS .grid 10 +PASS .grid 11 +PASS .grid 12 +PASS .grid 13 +PASS .grid 14 +PASS .grid 15 +PASS .grid 16 +PASS .grid 17 +PASS .grid 18 +PASS .grid 19 +PASS .grid 20 +PASS .grid 21 +PASS .grid 22 +PASS .grid 23 +PASS .grid 24 +PASS .grid 25 +PASS .grid 26 +PASS .grid 27 +PASS .grid 28 +PASS .grid 29 +PASS .grid 30 +PASS .grid 31 +PASS .grid 32 +PASS .grid 33 +Harness: the test ran to completion. +
diff --git a/third_party/google_input_tools/closure.gni b/third_party/google_input_tools/closure.gni index 815c6d7..950a534f 100644 --- a/third_party/google_input_tools/closure.gni +++ b/third_party/google_input_tools/closure.gni
@@ -2,10 +2,14 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/python.gni") + template("build_closure") { assert(defined(invoker.sources)) assert(defined(invoker.target)) - action(target_name) { + + # TODO(crbug.com/1112471): Get this to run cleanly under Python 3. + python2_action(target_name) { script = "//third_party/google_input_tools/builder.py" sources = invoker.sources outputs = [ invoker.target ]
diff --git a/third_party/libgav1/README.chromium b/third_party/libgav1/README.chromium index 62f705d..34fdfef 100644 --- a/third_party/libgav1/README.chromium +++ b/third_party/libgav1/README.chromium
@@ -2,9 +2,9 @@ Short Name: libgav1 URL: https://chromium.googlesource.com/codecs/libgav1/ Version: 0 -Date: Wednesday February 03 2021 +Date: Friday March 12 2021 Branch: master -Commit: e58166ec6163f51e48382bec17d109b742d0c5f6 +Commit: 1c4e344cb1c15aff1c94cb542b98260244a3da4b License: Apache 2.0 License File: libgav1/LICENSE Security Critical: yes
diff --git a/third_party/libgav1/libgav1_srcs.gni b/third_party/libgav1/libgav1_srcs.gni index dca2988..abcb887e 100644 --- a/third_party/libgav1/libgav1_srcs.gni +++ b/third_party/libgav1/libgav1_srcs.gni
@@ -53,6 +53,7 @@ "//third_party/libgav1/src/src/dsp/arm/intrapred_filter_intra_neon.cc", "//third_party/libgav1/src/src/dsp/arm/intrapred_neon.cc", "//third_party/libgav1/src/src/dsp/arm/intrapred_smooth_neon.cc", + "//third_party/libgav1/src/src/dsp/arm/inverse_transform_10bit_neon.cc", "//third_party/libgav1/src/src/dsp/arm/inverse_transform_neon.cc", "//third_party/libgav1/src/src/dsp/arm/loop_filter_neon.cc", "//third_party/libgav1/src/src/dsp/arm/loop_restoration_neon.cc", @@ -145,6 +146,7 @@ "//third_party/libgav1/src/src/dsp/x86/cdef_sse4.cc", "//third_party/libgav1/src/src/dsp/x86/convolve_sse4.cc", "//third_party/libgav1/src/src/dsp/x86/distance_weighted_blend_sse4.cc", + "//third_party/libgav1/src/src/dsp/x86/film_grain_sse4.cc", "//third_party/libgav1/src/src/dsp/x86/intra_edge_sse4.cc", "//third_party/libgav1/src/src/dsp/x86/intrapred_cfl_sse4.cc", "//third_party/libgav1/src/src/dsp/x86/intrapred_smooth_sse4.cc", @@ -168,6 +170,7 @@ "//third_party/libgav1/src/src/dsp/x86/common_sse4.h", "//third_party/libgav1/src/src/dsp/x86/convolve_sse4.h", "//third_party/libgav1/src/src/dsp/x86/distance_weighted_blend_sse4.h", + "//third_party/libgav1/src/src/dsp/x86/film_grain_sse4.h", "//third_party/libgav1/src/src/dsp/x86/intra_edge_sse4.h", "//third_party/libgav1/src/src/dsp/x86/intrapred_sse4.h", "//third_party/libgav1/src/src/dsp/x86/inverse_transform_sse4.h", @@ -236,8 +239,6 @@ "//third_party/libgav1/src/src/utils/logging.cc", "//third_party/libgav1/src/src/utils/logging.h", "//third_party/libgav1/src/src/utils/memory.h", - "//third_party/libgav1/src/src/utils/parameter_tree.cc", - "//third_party/libgav1/src/src/utils/parameter_tree.h", "//third_party/libgav1/src/src/utils/queue.h", "//third_party/libgav1/src/src/utils/raw_bit_reader.cc", "//third_party/libgav1/src/src/utils/raw_bit_reader.h",
diff --git a/tools/generate_stubs/generate_stubs.py b/tools/generate_stubs/generate_stubs.py index ed3b89c..f9ff0e0 100755 --- a/tools/generate_stubs/generate_stubs.py +++ b/tools/generate_stubs/generate_stubs.py
@@ -48,6 +48,7 @@ class SubprocessError(Error): + def __init__(self, message, error_code): Error.__init__(self) self.message = message @@ -152,13 +153,10 @@ #ifndef %(guard_name)s #define %(guard_name)s -#include <stdarg.h> #include <map> #include <string> #include <vector> -#include "%(logging_include)s" - namespace %(namespace)s { """ @@ -175,15 +173,14 @@ # string substitution with the path to the associated stub header file. IMPLEMENTATION_PREAMBLE = """// This is generated file. Do not modify directly. -#include "%s" +#include "%(header_path)s" -#include <stdlib.h> // For NULL. -#include <dlfcn.h> // For dlsym, dlopen. +#include <dlfcn.h> // For dlsym, dlopen, RTLD_LAZY. -#include <map> -#include <vector> +#include <cstdarg> #include "base/compiler_specific.h" +#include "%(logging_include)s" """ # The start and end templates for the enum definitions used by the Umbrella @@ -228,11 +225,7 @@ MODULE_INITIALIZATION_CHECK_FUNCTION = ( """// Returns true if all stubs have been properly initialized. bool %s() { - if (%s) { - return true; - } else { - return false; - } + return %s; } """) @@ -243,13 +236,18 @@ # return_type: The return type. # params: The parameters to the function. # logging_function: Function call for error logging. -STUB_POINTER_INITIALIZER = """ %(name)s_ptr = +STUB_POINTER_INITIALIZER = """ const char %(name)s_name[] = "%(name)s"; + %(name)s_ptr = reinterpret_cast<%(return_type)s (*)(%(parameters)s)>( - dlsym(module, "%(name)s")); - if (!%(name)s_ptr) { - %(logging_function)s << "Couldn't load %(name)s, dlerror() says:\\n" - << dlerror(); - } + dlsym(module, %(name)s_name)); + if (!%(name)s_ptr) + LogDlerror(%(name)s_name); +""" + +LOG_DLERROR = """void LogDlerror(const char* symbol) { + %s << "Couldn't load " << symbol << ", dlerror() says:\\n" << dlerror(); +} + """ # Template for module initializer function start and end. This template takes @@ -264,14 +262,13 @@ # Template for module uninitializer function start and end. This template # takes one parameter which is the initializer function name. MODULE_UNINITIALIZE_START = ( - """// Uninitialize the module stubs. Reset pointers to NULL. + """// Uninitialize the module stubs. Reset pointers to nullptr. void %s() { """) MODULE_UNINITIALIZE_END = """} """ - # Open namespace and add typedef for internal data structures used by the # umbrella initializer. UMBRELLA_INITIALIZER_START = """namespace %s { @@ -312,7 +309,7 @@ !module_opened && dso_path != paths.end(); ++dso_path) { void* handle = dlopen(dso_path->c_str(), RTLD_LAZY); - if (handle != NULL) { + if (handle) { module_opened = true; opened_libraries[cur_module] = handle; } else { @@ -359,7 +356,7 @@ # Template for umbrella initializer declaration and associated datatypes. UMBRELLA_INITIALIZER_PROTOTYPE = ( - """typedef std::map<StubModules, std::vector<std::string> > StubPathMap; + """typedef std::map<StubModules, std::vector<std::string>> StubPathMap; // Umbrella initializer for all the modules in this stub file. bool InitializeStubs(const StubPathMap& path_map); @@ -429,10 +426,13 @@ m = SIGNATURE_REGEX.match(line) if m is None: raise BadSignatureError('Unparsable line: %s' % line) - signatures.append( - {'return_type': m.group('return_type').strip(), - 'name': m.group('name').strip(), - 'params': [arg.strip() for arg in m.group('params').split(',')]}) + signatures.append({ + 'return_type': + m.group('return_type').strip(), + 'name': + m.group('name').strip(), + 'params': [arg.strip() for arg in m.group('params').split(',')] + }) return signatures @@ -487,10 +487,8 @@ SubprocessError: If invoking the Windows "lib" tool fails, this is raised with the error code. """ - def_file_path = os.path.join(intermediate_dir, - module_name + '.def') - lib_file_path = os.path.join(outdir_path, - module_name + '.lib') + def_file_path = os.path.join(intermediate_dir, module_name + '.def') + lib_file_path = os.path.join(outdir_path, module_name + '.lib') outfile = open(def_file_path, 'w') try: WriteWindowsDefFile(module_name, signatures, outfile) @@ -500,15 +498,14 @@ # Invoke the "lib" program on Windows to create stub .lib files for the # generated definitions. These .lib files can then be used during # delay loading of the dynamic libraries. - ret = QuietRun(['lib', '/nologo', - '/machine:' + machine, - '/def:' + def_file_path, - '/out:' + lib_file_path], + ret = QuietRun([ + 'lib', '/nologo', '/machine:' + machine, '/def:' + def_file_path, + '/out:' + lib_file_path + ], filter=' Creating library') if ret != 0: raise SubprocessError( - 'Failed creating %s for %s' % (lib_file_path, def_file_path), - ret) + 'Failed creating %s for %s' % (lib_file_path, def_file_path), ret) class PosixStubWriter(object): @@ -638,9 +635,9 @@ Returns: A string with the declaration of the function pointer for the signature. """ - return 'static %s (*%s_ptr)(%s) = NULL;' % (signature['return_type'], - signature['name'], - ', '.join(signature['params'])) + return 'static %s (*%s_ptr)(%s) = nullptr;' % (signature['return_type'], + signature['name'], ', '.join( + signature['params'])) @classmethod def StubFunction(cls, signature): @@ -662,8 +659,9 @@ return_prefix = 'return ' # Generate the argument list. - arguments = [re.split('[\*& ]', arg)[-1].strip() for arg in - signature['params']] + arguments = [ + re.split('[\*& ]', arg)[-1].strip() for arg in signature['params'] + ] # Remove square brackets from arrays, otherwise we will end with a # compilation failure. for i in range(0, len(arguments)): @@ -683,14 +681,16 @@ 'params': ', '.join(signature['params']), 'arg_list': ', '.join(arguments[0:-1]), 'last_named_arg': arguments[-2], - 'export': signature.get('export', '')} + 'export': signature.get('export', '') + } else: return VOID_VARIADIC_STUB_FUNCTION_DEFINITION % { 'name': signature['name'], 'params': ', '.join(signature['params']), 'arg_list': ', '.join(arguments[0:-1]), 'last_named_arg': arguments[-2], - 'export': signature.get('export', '')} + 'export': signature.get('export', '') + } else: # This is a regular function. return STUB_FUNCTION_DEFINITION % { @@ -699,17 +699,21 @@ 'params': ', '.join(signature['params']), 'return_prefix': return_prefix, 'arg_list': arg_list, - 'export': signature.get('export', '')} + 'export': signature.get('export', '') + } @classmethod - def WriteImplementationPreamble(cls, header_path, outfile): + def WriteImplementationPreamble(cls, header_path, outfile, logging_include): """Write the necessary includes for the implementation file. Args: header_path: The path to the header file. outfile: The file handle to populate. """ - outfile.write(IMPLEMENTATION_PREAMBLE % header_path) + outfile.write(IMPLEMENTATION_PREAMBLE % { + 'header_path': header_path, + 'logging_include': logging_include + }) @classmethod def WriteUmbrellaInitializer(cls, module_names, namespace, outfile, @@ -735,8 +739,8 @@ # Create the initialization function that calls all module initializers, # checks if they succeeded, and backs out module loads on an error. - outfile.write(UMBRELLA_INITIALIZER_INITIALIZE_FUNCTION_START % { - 'logging_function': logging_function}) + outfile.write(UMBRELLA_INITIALIZER_INITIALIZE_FUNCTION_START % + {'logging_function': logging_function}) outfile.write( '\n // Initialize each module if we have not already failed.\n') for module in module_names: @@ -746,18 +750,23 @@ outfile.write('\n') # Output code to check the initialization status, clean up on error. - initializer_checks = ['!%s()' % PosixStubWriter.IsInitializedName(name) - for name in module_names] - uninitializers = ['%s()' % PosixStubWriter.UninitializeModuleName(name) - for name in module_names] - outfile.write(UMBRELLA_INITIALIZER_CHECK_AND_CLEANUP % { - 'conditional': ' ||\n '.join(initializer_checks), - 'uninitializers': ';\n '.join(uninitializers)}) + initializer_checks = [ + '!%s()' % PosixStubWriter.IsInitializedName(name) + for name in module_names + ] + uninitializers = [ + '%s()' % PosixStubWriter.UninitializeModuleName(name) + for name in module_names + ] + outfile.write( + UMBRELLA_INITIALIZER_CHECK_AND_CLEANUP % { + 'conditional': ' ||\n '.join(initializer_checks), + 'uninitializers': ';\n '.join(uninitializers) + }) outfile.write('\n} // namespace %s\n' % namespace) @classmethod - def WriteHeaderContents(cls, module_names, namespace, header_guard, outfile, - logging_include): + def WriteHeaderContents(cls, module_names, namespace, header_guard, outfile): """Writes a header file for the stub file generated for module_names. The header file exposes the following: @@ -774,17 +783,20 @@ outfile: The output handle to populate. logging_include: Header file where the logging function is defined. """ - outfile.write(STUB_HEADER_PREAMBLE % - {'guard_name': header_guard, 'namespace': namespace, - 'logging_include': logging_include}) + outfile.write(STUB_HEADER_PREAMBLE % { + 'guard_name': header_guard, + 'namespace': namespace + }) # Generate the Initializer prototypes for each module. outfile.write('// Individual module initializer functions.\n') for name in module_names: - outfile.write(MODULE_FUNCTION_PROTOTYPES % { - 'is_initialized': PosixStubWriter.IsInitializedName(name), - 'initialize': PosixStubWriter.InitializeModuleName(name), - 'uninitialize': PosixStubWriter.UninitializeModuleName(name)}) + outfile.write( + MODULE_FUNCTION_PROTOTYPES % { + 'is_initialized': PosixStubWriter.IsInitializedName(name), + 'initialize': PosixStubWriter.InitializeModuleName(name), + 'uninitialize': PosixStubWriter.UninitializeModuleName(name) + }) # Generate the enum for umbrella initializer. outfile.write(UMBRELLA_ENUM_START) @@ -795,8 +807,9 @@ outfile.write(UMBRELLA_INITIALIZER_PROTOTYPE) outfile.write(STUB_HEADER_CLOSER % { - 'namespace': namespace, 'guard_name': - header_guard}) + 'namespace': namespace, + 'guard_name': header_guard + }) def WriteImplementationContents(self, namespace, outfile): """Given a file handle, write out the stub definitions for this module. @@ -865,7 +878,7 @@ and attempts to assign each function pointer above via dlsym. The IsModuleInitialized returns true if none of the required functions - pointers are NULL. + pointers are nullptr. Args: outfile: The file handle to populate. @@ -876,29 +889,31 @@ # all the function pointers above. It should generate a conjunction # with each pointer on its own line, indented by six spaces to match # the indentation level of MODULE_INITIALIZATION_CHECK_FUNCTION. - initialization_conditional = ' &&\n '.join(ptr_names) + initialization_conditional = ' &&\n '.join(ptr_names) - outfile.write(MODULE_INITIALIZATION_CHECK_FUNCTION % ( - PosixStubWriter.IsInitializedName(self.module_name), - initialization_conditional)) + outfile.write(MODULE_INITIALIZATION_CHECK_FUNCTION % + (PosixStubWriter.IsInitializedName( + self.module_name), initialization_conditional)) # Create function that initializes the module. outfile.write(MODULE_INITIALIZE_START % PosixStubWriter.InitializeModuleName(self.module_name)) for sig in self.signatures: - outfile.write(STUB_POINTER_INITIALIZER % { - 'name': sig['name'], - 'return_type': sig['return_type'], - 'parameters': ', '.join(sig['params']), - 'logging_function': self.logging_function}) + outfile.write( + STUB_POINTER_INITIALIZER % { + 'name': sig['name'], + 'return_type': sig['return_type'], + 'parameters': ', '.join(sig['params']), + 'logging_function': self.logging_function + }) outfile.write(MODULE_INITIALIZE_END) # Create function that uninitializes the module (sets all pointers to - # NULL). + # nullptr). outfile.write(MODULE_UNINITIALIZE_START % PosixStubWriter.UninitializeModuleName(self.module_name)) for sig in self.signatures: - outfile.write(' %s_ptr = NULL;\n' % sig['name']) + outfile.write(' %s_ptr = nullptr;\n' % sig['name']) outfile.write(MODULE_UNINITIALIZE_END) @@ -914,20 +929,20 @@ dest='out_dir', default=None, help='Output location.') - parser.add_option('-i', - '--intermediate_dir', - dest='intermediate_dir', - default=None, - help=('Location of intermediate files. Ignored for %s type' - % FILE_TYPE_WIN_DEF)) + parser.add_option( + '-i', + '--intermediate_dir', + dest='intermediate_dir', + default=None, + help=('Location of intermediate files. Ignored for %s type' % + FILE_TYPE_WIN_DEF)) parser.add_option('-t', '--type', dest='type', default=None, help=('Type of file. Valid types are "%s" or "%s" or "%s" ' - 'or "%s"' % - (FILE_TYPE_POSIX_STUB, FILE_TYPE_WIN_X86, - FILE_TYPE_WIN_X64, FILE_TYPE_WIN_DEF))) + 'or "%s"' % (FILE_TYPE_POSIX_STUB, FILE_TYPE_WIN_X86, + FILE_TYPE_WIN_X64, FILE_TYPE_WIN_DEF))) parser.add_option('-s', '--stubfile_name', dest='stubfile_name', @@ -997,9 +1012,10 @@ if options.out_dir is None: parser.error('Output location not specified') - if (options.type not in - [FILE_TYPE_WIN_X86, FILE_TYPE_WIN_X64, FILE_TYPE_POSIX_STUB, - FILE_TYPE_WIN_DEF]): + if (options.type not in [ + FILE_TYPE_WIN_X86, FILE_TYPE_WIN_X64, FILE_TYPE_POSIX_STUB, + FILE_TYPE_WIN_DEF + ]): parser.error('Invalid output file type: %s' % options.type) if options.type == FILE_TYPE_POSIX_STUB: @@ -1094,7 +1110,8 @@ infile.close() def_file_path = os.path.join( - out_dir, os.path.splitext(os.path.basename(module_name))[0] + '.def') + out_dir, + os.path.splitext(os.path.basename(module_name))[0] + '.def') outfile = open(def_file_path, 'w') try: @@ -1103,10 +1120,10 @@ outfile.close() -def CreatePosixStubsForSigFiles(sig_files, stub_name, out_dir, - intermediate_dir, path_from_source, - extra_stub_header, export_macro, - logging_function, logging_include): +def CreatePosixStubsForSigFiles(sig_files, stub_name, out_dir, intermediate_dir, + path_from_source, extra_stub_header, + export_macro, logging_function, + logging_include): """Create a POSIX stub library with a module for each signature file. Args: @@ -1129,7 +1146,7 @@ module_names = [ExtractModuleName(path) for path in sig_files] namespace = path_from_source.replace('/', '_').lower() - header_guard = '%s_' % namespace.upper() + header_guard = 'GEN_%s_%s_H_' % (namespace.upper(), stub_name.upper()) header_include_path = os.path.join(path_from_source, header_base_name) # First create the implementation file. @@ -1137,8 +1154,8 @@ try: # Open the file, and create the preamble which consists of a file # header plus any necessary includes. - PosixStubWriter.WriteImplementationPreamble(header_include_path, - impl_file) + PosixStubWriter.WriteImplementationPreamble(header_include_path, impl_file, + logging_include) if extra_stub_header is not None: extra_header_file = open(extra_stub_header, 'r') try: @@ -1149,6 +1166,10 @@ finally: extra_header_file.close() + impl_file.write(NAMESPACE_START % '') + impl_file.write(LOG_DLERROR % logging_function) + impl_file.write(NAMESPACE_END % '') + # For each signature file, generate the stub population functions # for that file. Each file represents one module. for input_path in sig_files: @@ -1163,17 +1184,16 @@ writer.WriteImplementationContents(namespace, impl_file) # Lastly, output the umbrella function for the file. - PosixStubWriter.WriteUmbrellaInitializer(module_names, namespace, - impl_file, logging_function) + PosixStubWriter.WriteUmbrellaInitializer(module_names, namespace, impl_file, + logging_function) finally: impl_file.close() # Then create the associated header file. header_file = open(header_path, 'w') try: - PosixStubWriter.WriteHeaderContents(module_names, namespace, - header_guard, header_file, - logging_include) + PosixStubWriter.WriteHeaderContents(module_names, namespace, header_guard, + header_file) finally: header_file.close()
diff --git a/tools/json_schema_compiler/json_schema_api.gni b/tools/json_schema_compiler/json_schema_api.gni index 4bc2138b..16bed8b4 100644 --- a/tools/json_schema_compiler/json_schema_api.gni +++ b/tools/json_schema_compiler/json_schema_api.gni
@@ -111,7 +111,9 @@ root_target_name = target_name bundle_generator_schema_name = target_name + "_bundle_generator_schema" - action(bundle_generator_schema_name) { + + # TODO(crbug.com/1112471): Get this to run cleanly under Python 3. + python2_action(bundle_generator_schema_name) { visibility = [ ":$root_target_name" ] script = compiler_script inputs = compiler_sources + invoker.sources @@ -227,7 +229,9 @@ bundle_generator_registration_name = target_name + "_bundle_generator_registration" - action(bundle_generator_registration_name) { + + # TODO(crbug.com/1112471): Get this to run cleanly under Python 3. + python2_action(bundle_generator_registration_name) { visibility = [ ":$root_target_name" ] script = compiler_script inputs = compiler_sources + invoker.sources
diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni index 29afcb2..8bf2e30 100644 --- a/tools/json_to_struct/json_to_struct.gni +++ b/tools/json_to_struct/json_to_struct.gni
@@ -2,6 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/python.gni") + # Converts a .json file to a C++ struct. # # Variables: @@ -25,7 +27,8 @@ action_name = target_name + "_action" source_set_name = target_name - action(action_name) { + # TODO(crbug.com/1112471): Get this to run cleanly under Python 3. + python2_action(action_name) { visibility = [ ":$source_set_name" ] script = "//tools/json_to_struct/json_to_struct.py"
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 52aa920..c0614f3 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -35367,6 +35367,9 @@ <int value="1936155204" label="gap.device_name"/> <int value="1940300093" label="Tacx trainer; 6e40fec2-b5a3-f393-e0a9-e50e24dcca9e"/> + <int value="1941001682" + label="LEGO Hub Boot Loader Characteristic; + 00001626-1212-efde-1623-785feabcd123"/> <int value="1945497075" label="PocketLab; f000aa24-0452-4000-b000-000000000000"/> <int value="1954594648" label="temperature"/> @@ -35428,6 +35431,8 @@ label="PocketLab (from service 11); f000aa12-0452-4000-b000-000000000000"/> <int value="2125906618" label="gap.appearance"/> + <int value="2129421706" + label="LEGO Hub Characteristic; 00001624-1212-efde-1623-785feabcd123"/> <int value="2140490935" label="gatt.service_changed"/> </enum> @@ -35507,6 +35512,9 @@ <int value="91953454" label="fe7b"/> <int value="107684477" label="PocketLab; f000aa2d-0452-4000-b000-000000000000"/> + <int value="108999394" + label="LEGO Hub Boot Loader Service; + 00001625-1212-efde-1623-785feabcd123"/> <int value="109066436" label="Printer; 18f0"/> <int value="117033282" label="fe1e"/> <int value="119232939" label="fe16"/> @@ -35679,6 +35687,8 @@ label="PocketLab; f000aa2a-0452-4000-b000-000000000000"/> <int value="869059214" label="next_dst_change"/> <int value="869682406" label="fe60"/> + <int value="873412183" + label="LEGO Hub Service; 00001623-1212-efde-1623-785feabcd123"/> <int value="876407493" label="location_and_navigation"/> <int value="878416856" label="fe85"/> <int value="879242624" @@ -35768,6 +35778,8 @@ <int value="1276692887" label="fe09"/> <int value="1280998251" label="blood_pressure"/> <int value="1289827687" label="fe7c"/> + <int value="1291799273" + label="littleBits; ded1c5a0-536c-11e6-beb8-9e71128cae77"/> <int value="1293391247" label="fea4"/> <int value="1295501517" label="fef3"/> <int value="1300474367" label="fe70"/>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 2e6b97a..e6c4080 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -2,15 +2,15 @@ "trace_processor_shell": { "win": { "hash": "ddae94b5aa30b34dcecd00f6e8576d49ff08fc94", - "remote_path": "perfetto_binaries/trace_processor_shell/win/91b4f68052b4d97bd4c803605b7f9577be2f0410/trace_processor_shell.exe" + "remote_path": "perfetto_binaries/trace_processor_shell/win/acb2e677b426b56b2a6c8a82b5e273aa11916666/trace_processor_shell.exe" }, "mac": { "hash": "adadc8e1518cdebac9360e9653d7df0cf9fb0e0d", - "remote_path": "perfetto_binaries/trace_processor_shell/mac/91b4f68052b4d97bd4c803605b7f9577be2f0410/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/mac/acb2e677b426b56b2a6c8a82b5e273aa11916666/trace_processor_shell" }, "linux": { "hash": "61904a302a04bc406a1ce09d34c56215f50063bb", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/2fde995f9d7c1014e35dcae0afe403bb9d1eca7b/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/linux/acb2e677b426b56b2a6c8a82b5e273aa11916666/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn index bfba53d..cdc6924f 100644 --- a/ui/aura/BUILD.gn +++ b/ui/aura/BUILD.gn
@@ -376,10 +376,8 @@ } if (is_fuchsia) { - additional_manifests = [ - "//build/config/fuchsia/test/present_capabilities.test-cmx", - "//build/config/fuchsia/test/view_creation_capabilities.test-cmx", - ] + additional_manifests = + [ "//build/config/fuchsia/test/present_view_capabilities.test-cmx" ] } data_deps = [ "//third_party/mesa_headers" ]
diff --git a/ui/compositor/BUILD.gn b/ui/compositor/BUILD.gn index 61a99fd..f9a14c8 100644 --- a/ui/compositor/BUILD.gn +++ b/ui/compositor/BUILD.gn
@@ -281,8 +281,7 @@ # TODO(crbug.com/1185811): Figure out why jit_capabilities is needed. "//build/config/fuchsia/test/jit_capabilities.test-cmx", - "//build/config/fuchsia/test/present_capabilities.test-cmx", - "//build/config/fuchsia/test/view_creation_capabilities.test-cmx", + "//build/config/fuchsia/test/present_view_capabilities.test-cmx", ] } }
diff --git a/ui/gfx/x/x11_atom_cache.cc b/ui/gfx/x/x11_atom_cache.cc index db030cc..fdedf9a 100644 --- a/ui/gfx/x/x11_atom_cache.cc +++ b/ui/gfx/x/x11_atom_cache.cc
@@ -134,6 +134,7 @@ "_NET_WM_USER_TIME", "_NET_WM_WINDOW_OPACITY", "_NET_WM_WINDOW_TYPE", + "_NET_WM_WINDOW_TYPE_DIALOG", "_NET_WM_WINDOW_TYPE_DND", "_NET_WM_WINDOW_TYPE_MENU", "_NET_WM_WINDOW_TYPE_NORMAL",
diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc index 0d5d5b34..8765fa62 100644 --- a/ui/gtk/gtk_ui.cc +++ b/ui/gtk/gtk_ui.cc
@@ -513,20 +513,16 @@ auto* paintable = GDK_PAINTABLE(icon_paintable); auto* snapshot = gtk_snapshot_new(); gdk_paintable_snapshot(paintable, snapshot, size, size); - auto node = TakeGObject(gtk_snapshot_free_to_node(snapshot)); - auto rect = GRAPHENE_RECT_INIT(0, 0, size, size); - auto renderer = TakeGObject(gsk_cairo_renderer_new()); - auto texture = - TakeGObject(gsk_renderer_render_texture(renderer, node, &rect)); + auto* node = gtk_snapshot_free_to_node(snapshot); + GdkTexture* texture = GetTextureFromRenderNode(node); SkBitmap bitmap; - bitmap.allocN32Pixels(size, size); - bitmap.eraseColor(SK_ColorTRANSPARENT); + bitmap.allocN32Pixels(gdk_texture_get_width(texture), + gdk_texture_get_height(texture)); + gdk_texture_download(texture, static_cast<guchar*>(bitmap.getAddr(0, 0)), + bitmap.rowBytes()); - CairoSurface surface(bitmap); - cairo_t* cr = surface.cairo(); - gtk_render_icon(gtk_widget_get_style_context(GetDummyWindow()), cr, texture, - 0, 0); + gsk_render_node_unref(node); #else auto icon_info = TakeGObject(gtk_icon_theme_lookup_by_gicon( theme, icon.get(), size, @@ -1002,8 +998,7 @@ void GtkUi::UpdateDefaultFont() { gfx::SetFontRenderParamsDeviceScaleFactor(device_scale_factor_); - GtkWidget* fake_label = gtk_label_new(nullptr); - g_object_ref_sink(fake_label); // Remove the floating reference. + auto fake_label = TakeGObject(gtk_label_new(nullptr)); PangoContext* pc = gtk_widget_get_pango_context(fake_label); const PangoFontDescription* desc = pango_context_get_font_description(pc); @@ -1040,9 +1035,6 @@ default_font_render_params_ = gfx::GetFontRenderParams(query, &default_font_family_); default_font_style_ = query.style; - - GtkWindowDestroy(fake_label); - g_object_unref(fake_label); } float GtkUi::GetRawDeviceScaleFactor() {
diff --git a/ui/gtk/gtk_ui_delegate.h b/ui/gtk/gtk_ui_delegate.h index 983dace..07a50008 100644 --- a/ui/gtk/gtk_ui_delegate.h +++ b/ui/gtk/gtk_ui_delegate.h
@@ -12,12 +12,7 @@ using GdkKeymap = struct _GdkKeymap; using GtkWindow = struct _GtkWindow; using GtkWidget = struct _GtkWidget; - -#if BUILDFLAG(GTK_VERSION) == 3 using GdkWindow = struct _GdkWindow; -#else -using GdkWindow = struct _GdkSurface; -#endif namespace ui { @@ -56,7 +51,7 @@ // Gtk dialog windows must be set transient for the browser window. This // function abstracts away such functionality. - virtual bool SetGdkWindowTransientFor(GdkWindow* window, + virtual bool SetGtkWidgetTransientFor(GtkWidget* widget, gfx::AcceleratedWidget parent) = 0; virtual void ClearTransientFor(gfx::AcceleratedWidget parent) = 0;
diff --git a/ui/gtk/gtk_util.cc b/ui/gtk/gtk_util.cc index 9243ad4..a9ccc980 100644 --- a/ui/gtk/gtk_util.cc +++ b/ui/gtk/gtk_util.cc
@@ -88,20 +88,14 @@ << ui::kPropertyKeyboardIBusFlagOffset); } -#if BUILDFLAG(GTK_VERSION) < 4 -float GetDeviceScaleFactor() { - views::LinuxUI* linux_ui = views::LinuxUI::instance(); - return linux_ui ? linux_ui->GetDeviceScaleFactor() : 1; -} -#endif - GtkCssContext AppendCssNodeToStyleContextImpl( GtkCssContext context, GType gtype, const std::string& name, const std::string& object_name, const std::vector<std::string>& classes, - GtkStateFlags state) { + GtkStateFlags state, + float scale) { #if BUILDFLAG(GTK_VERSION) >= 4 // GTK_TYPE_BOX is used instead of GTK_TYPE_WIDGET because: // 1. Widgets are abstract and cannot be created directly. @@ -127,6 +121,9 @@ if (context) gtk_widget_set_parent(widget, context); + + gtk_style_context_set_scale(gtk_widget_get_style_context(widget), scale); + return GtkCssContext(widget, context ? context.root() : widget); #else GtkWidgetPath* path = @@ -166,8 +163,11 @@ } gtk_style_context_set_state(child_context, child_state); } - gtk_style_context_set_scale(child_context, std::ceil(GetDeviceScaleFactor())); + + gtk_style_context_set_scale(child_context, scale); + gtk_style_context_set_parent(child_context, context); + gtk_widget_path_unref(path); return GtkCssContext(child_context); #endif @@ -194,13 +194,8 @@ return; gtk_widget_realize(dialog); -#if BUILDFLAG(GTK_VERSION) >= 4 - GdkWindow* gdk_window = gtk_native_get_surface(gtk_widget_get_native(dialog)); -#else - GdkWindow* gdk_window = gtk_widget_get_window(dialog); -#endif gfx::AcceleratedWidget parent_id = parent->GetHost()->GetAcceleratedWidget(); - GtkUi::GetDelegate()->SetGdkWindowTransientFor(gdk_window, parent_id); + GtkUi::GetDelegate()->SetGtkWidgetTransientFor(dialog, parent_id); // We also set the |parent| as a property of |dialog|, so that we can unlink // the two later. @@ -436,8 +431,10 @@ // widgets specially if they want to. classes.push_back("chromium"); + float scale = std::round(GetDeviceScaleFactor()); + return AppendCssNodeToStyleContextImpl(context, gtype, name, object_name, - classes, state); + classes, state, scale); } GtkCssContext GetStyleContextFromCss(const std::string& css_selector) { @@ -453,7 +450,7 @@ return context; } -SkColor GetFgColorFromStyleContext(GtkCssContext context) { +SkColor GetFgColorFromStyleContext(GtkStyleContext* context) { GdkRGBA color; #if GTK_CHECK_VERSION(3, 90, 0) gtk_style_context_get_color(context, &color); @@ -714,4 +711,61 @@ return {natural_size.width, natural_size.height}; } +float GetDeviceScaleFactor() { + views::LinuxUI* linux_ui = views::LinuxUI::instance(); + return linux_ui ? linux_ui->GetDeviceScaleFactor() : 1; +} + +#if BUILDFLAG(GTK_VERSION) >= 4 +GdkTexture* GetTextureFromRenderNode(GskRenderNode* node) { + struct { + GskRenderNodeType node_type; + GskRenderNode* (*get_child)(GskRenderNode*); + } constexpr simple_getters[] = { + {GSK_TRANSFORM_NODE, gsk_transform_node_get_child}, + {GSK_OPACITY_NODE, gsk_opacity_node_get_child}, + {GSK_COLOR_MATRIX_NODE, gsk_color_matrix_node_get_child}, + {GSK_REPEAT_NODE, gsk_repeat_node_get_child}, + {GSK_CLIP_NODE, gsk_clip_node_get_child}, + {GSK_ROUNDED_CLIP_NODE, gsk_rounded_clip_node_get_child}, + {GSK_SHADOW_NODE, gsk_shadow_node_get_child}, + {GSK_BLUR_NODE, gsk_blur_node_get_child}, + {GSK_DEBUG_NODE, gsk_debug_node_get_child}, + }; + struct { + GskRenderNodeType node_type; + guint (*get_n_children)(GskRenderNode*); + GskRenderNode* (*get_child)(GskRenderNode*, guint); + } constexpr container_getters[] = { + {GSK_CONTAINER_NODE, gsk_container_node_get_n_children, + gsk_container_node_get_child}, + {GSK_GL_SHADER_NODE, gsk_gl_shader_node_get_n_children, + gsk_gl_shader_node_get_child}, + }; + + if (!node) + return nullptr; + + auto node_type = gsk_render_node_get_node_type(node); + if (node_type == GSK_TEXTURE_NODE) + return gsk_texture_node_get_texture(node); + for (const auto& getter : simple_getters) { + if (node_type == getter.node_type) { + if (auto* texture = GetTextureFromRenderNode(getter.get_child(node))) + return texture; + } + } + for (const auto& getter : container_getters) { + if (node_type != getter.node_type) + continue; + for (guint i = 0; i < getter.get_n_children(node); ++i) { + if (auto* texture = GetTextureFromRenderNode(getter.get_child(node, i))) + return texture; + } + return nullptr; + } + return nullptr; +} +#endif + } // namespace gtk
diff --git a/ui/gtk/gtk_util.h b/ui/gtk/gtk_util.h index 7fc2a2a..1d4ace77 100644 --- a/ui/gtk/gtk_util.h +++ b/ui/gtk/gtk_util.h
@@ -180,7 +180,7 @@ // must g_object_unref() the returned context. GtkCssContext GetStyleContextFromCss(const std::string& css_selector); -SkColor GetFgColorFromStyleContext(GtkCssContext context); +SkColor GetFgColorFromStyleContext(GtkStyleContext* context); SkColor GetBgColorFromStyleContext(GtkCssContext context); @@ -254,6 +254,12 @@ gfx::Size GetSeparatorSize(bool horizontal); +float GetDeviceScaleFactor(); + +#if BUILDFLAG(GTK_VERSION) >= 4 +GdkTexture* GetTextureFromRenderNode(GskRenderNode* node); +#endif + } // namespace gtk #endif // UI_GTK_GTK_UTIL_H_
diff --git a/ui/gtk/input_method_context_impl_gtk.cc b/ui/gtk/input_method_context_impl_gtk.cc index 74b8922ad..b977f42 100644 --- a/ui/gtk/input_method_context_impl_gtk.cc +++ b/ui/gtk/input_method_context_impl_gtk.cc
@@ -116,20 +116,13 @@ // Convert the last known caret bounds relative to the screen coordinates // to a GdkRectangle relative to the client window. - gint win_x = 0; - gint win_y = 0; -#if BUILDFLAG(GTK_VERSION) >= 4 - gint factor = gtk_widget_get_scale_factor(GetDummyWindow()); -#else - gdk_window_get_origin(target_window, &win_x, &win_y); - gint factor = gdk_window_get_scale_factor(target_window); -#endif - - gint caret_x = last_caret_bounds_.x() / factor; - gint caret_y = last_caret_bounds_.y() / factor; - gint caret_w = last_caret_bounds_.width() / factor; - gint caret_h = last_caret_bounds_.height() / factor; - + aura::Window* window = static_cast<aura::Window*>(key_event.target()); + gint win_x = window->GetBoundsInScreen().x(); + gint win_y = window->GetBoundsInScreen().y(); + gint caret_x = last_caret_bounds_.x(); + gint caret_y = last_caret_bounds_.y(); + gint caret_w = last_caret_bounds_.width(); + gint caret_h = last_caret_bounds_.height(); GdkRectangle gdk_rect = {caret_x - win_x, caret_y - win_y, caret_w, caret_h}; gtk_im_context_set_cursor_location(gtk_context_, &gdk_rect); @@ -183,14 +176,9 @@ // Remember the caret bounds so that we can set the cursor location later. // gtk_im_context_set_cursor_location() takes the location relative to the // client window, which is unknown at this point. So we'll call - // gtk_im_context_set_cursor_location() later in ProcessKeyEvent() where + // gtk_im_context_set_cursor_location() later in DispatchKeyEvent() where // (and only where) we know the client window. - if (views::LinuxUI::instance()) { - last_caret_bounds_ = gfx::ToEnclosingRect(gfx::ConvertRectToPixels( - rect, views::LinuxUI::instance()->GetDeviceScaleFactor())); - } else { - last_caret_bounds_ = rect; - } + last_caret_bounds_ = rect; } void InputMethodContextImplGtk::SetSurroundingText(
diff --git a/ui/gtk/input_method_context_impl_gtk.h b/ui/gtk/input_method_context_impl_gtk.h index 08a5c3a..d086e5a 100644 --- a/ui/gtk/input_method_context_impl_gtk.h +++ b/ui/gtk/input_method_context_impl_gtk.h
@@ -14,13 +14,8 @@ #include "ui/gfx/geometry/rect.h" #include "ui/gtk/gtk_buildflags.h" -typedef struct _GtkIMContext GtkIMContext; - -#if BUILDFLAG(GTK_VERSION) == 3 +using GtkIMContext = struct _GtkIMContext; using GdkWindow = struct _GdkWindow; -#else -using GdkWindow = struct _GdkSurface; -#endif namespace gtk { @@ -84,7 +79,7 @@ gpointer gdk_last_set_client_window_ = nullptr; #endif - // Last known caret bounds relative to the screen coordinates. + // Last known caret bounds relative to the screen coordinates, in DIPs. gfx::Rect last_caret_bounds_; DISALLOW_COPY_AND_ASSIGN(InputMethodContextImplGtk);
diff --git a/ui/gtk/native_theme_gtk.cc b/ui/gtk/native_theme_gtk.cc index d2448180..72a9e088 100644 --- a/ui/gtk/native_theme_gtk.cc +++ b/ui/gtk/native_theme_gtk.cc
@@ -14,6 +14,16 @@ #include "ui/native_theme/common_theme.h" #include "ui/native_theme/native_theme_aura.h" +#if BUILDFLAG(GTK_VERSION) >= 4 +#define CSS_MENU "#popover.background.menu #contents" +#define CSS_MENUITEM "#modelbutton.flat" +#define CSS_SCROLLBAR "#scrollbar #range" +#else +#define CSS_MENU "GtkMenu#menu" +#define CSS_MENUITEM "GtkMenuItem#menuitem" +#define CSS_SCROLLBAR "GtkScrollbar#scrollbar #trough" +#endif + namespace gtk { namespace { @@ -101,57 +111,56 @@ case ui::NativeTheme::kColorId_HighlightedMenuItemBackgroundColor: case ui::NativeTheme::kColorId_MenuItemInitialAlertBackgroundColor: case ui::NativeTheme::kColorId_MenuItemTargetAlertBackgroundColor: - return GetBgColor("GtkMenu#menu"); + return GetBgColor(CSS_MENU); case ui::NativeTheme::kColorId_MenuBorderColor: - return GetBorderColor("GtkMenu#menu"); + return GetBorderColor(CSS_MENU); case ui::NativeTheme::kColorId_FocusedMenuItemBackgroundColor: - return GetBgColor("GtkMenu#menu GtkMenuItem#menuitem:hover"); + return GetBgColor(CSS_MENU " " CSS_MENUITEM ":hover"); case ui::NativeTheme::kColorId_EnabledMenuItemForegroundColor: case ui::NativeTheme::kColorId_MenuDropIndicator: case ui::NativeTheme::kColorId_HighlightedMenuItemForegroundColor: - return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem GtkLabel#label"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM " GtkLabel#label"); case ui::NativeTheme::kColorId_SelectedMenuItemForegroundColor: - return GetFgColor( - "GtkMenu#menu GtkMenuItem#menuitem:hover GtkLabel#label"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM ":hover GtkLabel#label"); case ui::NativeTheme::kColorId_DisabledMenuItemForegroundColor: - return GetFgColor( - "GtkMenu#menu GtkMenuItem#menuitem:disabled GtkLabel#label"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM ":disabled GtkLabel#label"); case ui::NativeTheme::kColorId_AvatarIconGuest: case ui::NativeTheme::kColorId_MenuItemMinorTextColor: if (GtkCheckVersion(3, 20)) { - return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem #accelerator"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM " #accelerator"); } - return GetFgColor( - "GtkMenu#menu GtkMenuItem#menuitem GtkLabel#label.accelerator"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM + " GtkLabel#label.accelerator"); case ui::NativeTheme::kColorId_MenuSeparatorColor: case ui::NativeTheme::kColorId_AvatarHeaderArt: if (GtkCheckVersion(3, 20)) { - return GetSeparatorColor( - "GtkMenu#menu GtkSeparator#separator.horizontal"); + return GetSeparatorColor(CSS_MENU " GtkSeparator#separator.horizontal"); } - return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem.separator"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM ".separator"); // Dropdown case ui::NativeTheme::kColorId_DropdownBackgroundColor: return GetBgColor( "GtkComboBoxText#combobox GtkWindow#window.background.popup " - "GtkTreeMenu#menu(gtk-combobox-popup-menu) GtkMenuItem#menuitem " + "GtkTreeMenu#menu(gtk-combobox-popup-menu) " CSS_MENUITEM + " " "GtkCellView#cellview"); case ui::NativeTheme::kColorId_DropdownForegroundColor: return GetFgColor( "GtkComboBoxText#combobox GtkWindow#window.background.popup " - "GtkTreeMenu#menu(gtk-combobox-popup-menu) GtkMenuItem#menuitem " + "GtkTreeMenu#menu(gtk-combobox-popup-menu) " CSS_MENUITEM + " " "GtkCellView#cellview"); case ui::NativeTheme::kColorId_DropdownSelectedBackgroundColor: return GetBgColor( "GtkComboBoxText#combobox GtkWindow#window.background.popup " - "GtkTreeMenu#menu(gtk-combobox-popup-menu) " - "GtkMenuItem#menuitem:hover GtkCellView#cellview"); + "GtkTreeMenu#menu(gtk-combobox-popup-menu) " CSS_MENUITEM + ":hover GtkCellView#cellview"); case ui::NativeTheme::kColorId_DropdownSelectedForegroundColor: return GetFgColor( "GtkComboBoxText#combobox GtkWindow#window.background.popup " - "GtkTreeMenu#menu(gtk-combobox-popup-menu) " - "GtkMenuItem#menuitem:hover GtkCellView#cellview"); + "GtkTreeMenu#menu(gtk-combobox-popup-menu) " CSS_MENUITEM + ":hover GtkCellView#cellview"); // Label case ui::NativeTheme::kColorId_LabelEnabledColor: @@ -381,8 +390,8 @@ case ui::NativeTheme::kColorId_MenuIconColor: if (GtkCheckVersion(3, 20)) - return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem #radio"); - return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem.radio"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM " #radio"); + return GetFgColor(CSS_MENU " " CSS_MENUITEM ".radio"); case ui::NativeTheme::kColorId_DefaultIconColor: return GetFgColor("GtkButton#button.flat.scale GtkImage#image"); @@ -563,10 +572,12 @@ State state, ColorScheme color_scheme, const ScrollbarArrowExtraParams& arrow) const { + // Add the "flat" styleclass to avoid drawing a border. auto context = GetStyleContextFromCss( - GtkCheckVersion(3, 20) - ? "GtkScrollbar#scrollbar #contents GtkButton#button" - : "GtkRange.scrollbar.button"); + GtkCheckVersion(3, 20) ? CSS_SCROLLBAR " #range GtkButton#button.flat" + : "GtkRange.scrollbar.button.flat"); + // Remove any rounded corners since arrow scrollbar buttons are tiny. + ApplyCssToContext(context, "* { border-radius: 0px; }"); GtkStateFlags state_flags = StateToStateFlags(state); gtk_style_context_set_state(context, state_flags); @@ -587,7 +598,7 @@ NOTREACHED(); } - PaintWidget(canvas, rect, context, BG_RENDER_NORMAL, true); + PaintWidget(canvas, rect, context, BG_RENDER_NORMAL, false); PaintArrow(canvas, rect, direction, GetFgColorFromStyleContext(context)); } @@ -598,12 +609,11 @@ const ScrollbarTrackExtraParams& extra_params, const gfx::Rect& rect, ColorScheme color_scheme) const { - PaintWidget( - canvas, rect, - GetStyleContextFromCss(GtkCheckVersion(3, 20) - ? "GtkScrollbar#scrollbar #contents #trough" - : "GtkScrollbar.scrollbar.trough"), - BG_RENDER_NORMAL, true); + PaintWidget(canvas, rect, + GetStyleContextFromCss(GtkCheckVersion(3, 20) + ? CSS_SCROLLBAR " #trough" + : "GtkScrollbar.scrollbar.trough"), + BG_RENDER_NORMAL, true); } void NativeThemeGtk::PaintScrollbarThumb( @@ -613,10 +623,9 @@ const gfx::Rect& rect, NativeTheme::ScrollbarOverlayColorTheme theme, ColorScheme color_scheme) const { - auto context = GetStyleContextFromCss( - GtkCheckVersion(3, 20) - ? "GtkScrollbar#scrollbar #contents #trough #slider" - : "GtkScrollbar.scrollbar.slider"); + auto context = GetStyleContextFromCss(GtkCheckVersion(3, 20) + ? CSS_SCROLLBAR " #trough #slider" + : "GtkScrollbar.scrollbar.slider"); gtk_style_context_set_state(context, StateToStateFlags(state)); PaintWidget(canvas, rect, context, BG_RENDER_NORMAL, true); } @@ -637,8 +646,10 @@ const gfx::Size& size, const MenuBackgroundExtraParams& menu_background, ColorScheme color_scheme) const { - PaintWidget(canvas, gfx::Rect(size), GetStyleContextFromCss("GtkMenu#menu"), - BG_RENDER_RECURSIVE, false); + auto context = GetStyleContextFromCss(CSS_MENU); + // Chrome menus aren't rendered with transparency, so avoid rounded corners. + ApplyCssToContext(context, "* { border-radius: 0px; }"); + PaintWidget(canvas, gfx::Rect(size), context, BG_RENDER_RECURSIVE, false); } void NativeThemeGtk::PaintMenuItemBackground( @@ -647,7 +658,7 @@ const gfx::Rect& rect, const MenuItemExtraParams& menu_item, ColorScheme color_scheme) const { - auto context = GetStyleContextFromCss("GtkMenu#menu GtkMenuItem#menuitem"); + auto context = GetStyleContextFromCss(CSS_MENU " " CSS_MENUITEM); gtk_style_context_set_state(context, StateToStateFlags(state)); PaintWidget(canvas, rect, context, BG_RENDER_NORMAL, true); } @@ -680,8 +691,8 @@ } }; if (GtkCheckVersion(3, 20)) { - auto context = GetStyleContextFromCss( - "GtkMenu#menu GtkSeparator#separator.horizontal"); + auto context = + GetStyleContextFromCss(CSS_MENU " GtkSeparator#separator.horizontal"); GtkBorder margin, border, padding; int min_height = 1; #if GTK_CHECK_VERSION(3, 90, 0) @@ -705,8 +716,8 @@ PaintWidget(canvas, gfx::Rect(x, y, w, h), context, BG_RENDER_NORMAL, true); } else { #if !GTK_CHECK_VERSION(3, 90, 0) - auto context = GetStyleContextFromCss( - "GtkMenu#menu GtkMenuItem#menuitem.separator.horizontal"); + auto context = GetStyleContextFromCss(CSS_MENU " " CSS_MENUITEM + ".separator.horizontal"); gboolean wide_separators = false; gint separator_height = 0; gtk_style_context_get_style(context, "wide-separators", &wide_separators,
diff --git a/ui/gtk/nav_button_provider_gtk.cc b/ui/gtk/nav_button_provider_gtk.cc index 40370bf..f249d1e 100644 --- a/ui/gtk/nav_button_provider_gtk.cc +++ b/ui/gtk/nav_button_provider_gtk.cc
@@ -6,6 +6,7 @@ #include <gtk/gtk.h> +#include "base/notreached.h" #include "ui/base/glib/scoped_gobject.h" #include "ui/gfx/image/image_skia.h" #include "ui/gfx/image/image_skia_source.h" @@ -125,16 +126,25 @@ auto icon_paintable = TakeGObject(gtk_icon_theme_lookup_icon( GetDefaultIconTheme(), icon_name, nullptr, kNavButtonIconSize, scale, GTK_TEXT_DIR_NONE, static_cast<GtkIconLookupFlags>(0))); - auto* paintable = GDK_PAINTABLE(icon_paintable); - int width = gdk_paintable_get_intrinsic_width(paintable); - int height = gdk_paintable_get_intrinsic_height(paintable); + auto* paintable = GDK_PAINTABLE(icon_paintable.get()); + int width = scale * gdk_paintable_get_intrinsic_width(paintable); + int height = scale * gdk_paintable_get_intrinsic_height(paintable); if (icon) { auto* snapshot = gtk_snapshot_new(); gdk_paintable_snapshot(paintable, snapshot, width, height); - auto node = TakeGObject(gtk_snapshot_free_to_node(snapshot)); - auto rect = GRAPHENE_RECT_INIT(0, 0, width, height); - auto renderer = TakeGObject(gsk_cairo_renderer_new()); - *icon = TakeGObject(gsk_renderer_render_texture(renderer, node, &rect)); + auto* node = gtk_snapshot_free_to_node(snapshot); + GdkTexture* texture = GetTextureFromRenderNode(node); + size_t nbytes = width * height * sizeof(SkColor); + SkColor* pixels = reinterpret_cast<SkColor*>(g_malloc(nbytes)); + size_t stride = sizeof(SkColor) * width; + gdk_texture_download(texture, reinterpret_cast<guchar*>(pixels), stride); + SkColor fg = GetFgColorFromStyleContext(button_context); + for (int i = 0; i < width * height; ++i) + pixels[i] = SkColorSetA(fg, SkColorGetA(pixels[i])); + *icon = TakeGObject( + gdk_memory_texture_new(width, height, GDK_MEMORY_B8G8R8A8, + g_bytes_new_take(pixels, nbytes), stride)); + gsk_render_node_unref(node); } return {width, height}; #else @@ -154,27 +164,51 @@ gfx::Size GetMinimumWidgetSize(gfx::Size content_size, GtkStyleContext* content_context, - GtkStyleContext* widget_context, + GtkCssContext widget_context, GtkStateFlags state) { gfx::Rect widget_rect = gfx::Rect(content_size); if (content_context) widget_rect.Inset(-MarginFromStyleContext(content_context, state)); -#if !GTK_CHECK_VERSION(3, 90, 0) + + int min_width = 0; + int min_height = 0; + // On GTK3, get the min size from the CSS directly. +#if BUILDFLAG(GTK_VERSION) < 4 if (GtkCheckVersion(3, 20)) { - int min_width, min_height; gtk_style_context_get(widget_context, state, "min-width", &min_width, "min-height", &min_height, nullptr); - widget_rect.set_width(std::max(widget_rect.width(), min_width)); - widget_rect.set_height(std::max(widget_rect.height(), min_height)); } + widget_rect.set_width(std::max(widget_rect.width(), min_width)); + widget_rect.set_height(std::max(widget_rect.height(), min_height)); #endif + widget_rect.Inset(-PaddingFromStyleContext(widget_context, state)); widget_rect.Inset(-BorderFromStyleContext(widget_context, state)); + + // On GTK4, the CSS properties are hidden, so compute the min size indirectly, + // which will include the border, margin, and padding. We can't take this + // codepath on GTK3 since we only have a widget available in GTK4. +#if BUILDFLAG(GTK_VERSION) >= 4 + gtk_widget_measure(widget_context, GTK_ORIENTATION_HORIZONTAL, -1, &min_width, + nullptr, nullptr, nullptr); + gtk_widget_measure(widget_context, GTK_ORIENTATION_VERTICAL, -1, &min_height, + nullptr, nullptr, nullptr); + + // The returned "minimum size" is the drawn size of the widget, which doesn't + // include the margin. However, GTK includes this size in its calculation. So + // remove the margin, recompute the min size, then add it back. + auto margin = MarginFromStyleContext(widget_context, state); + widget_rect.Inset(-margin); + widget_rect.set_width(std::max(widget_rect.width(), min_width)); + widget_rect.set_height(std::max(widget_rect.height(), min_height)); + widget_rect.Inset(margin); +#endif + return widget_rect.size(); } GtkCssContext CreateHeaderContext(bool maximized) { - std::string window_selector = "GtkWindow#window.background"; + std::string window_selector = "GtkWindow#window.background.csd"; if (maximized) window_selector += ".maximized"; return AppendCssNodeToStyleContext( @@ -182,6 +216,11 @@ "GtkHeaderBar#headerbar.header-bar.titlebar"); } +GtkCssContext CreateWindowControlsContext(bool maximized) { + return AppendCssNodeToStyleContext(CreateHeaderContext(maximized), + "#windowcontrols"); +} + void CalculateUnscaledButtonSize( views::NavButtonProvider::FrameButtonDisplayType type, bool maximized, @@ -192,7 +231,7 @@ // button for each state. For this reason, render buttons for all // states at the size of a GTK_STATE_FLAG_NORMAL button. auto button_context = AppendCssNodeToStyleContext( - CreateHeaderContext(maximized), + CreateWindowControlsContext(maximized), "GtkButton#button.titlebutton." + std::string(ButtonStyleClassFromButtonType(type))); @@ -232,8 +271,9 @@ if (button_size_.IsEmpty()) return gfx::ImageSkiaRep(); - auto button_context = AppendCssNodeToStyleContext( - CreateHeaderContext(maximized_), "GtkButton#button.titlebutton"); + auto button_context = + AppendCssNodeToStyleContext(CreateWindowControlsContext(maximized_), + "GtkButton#button.titlebutton"); gtk_style_context_add_class(button_context, ButtonStyleClassFromButtonType(type_)); GtkStateFlags button_state = GtkStateFlagsFromButtonState(state_); @@ -257,26 +297,39 @@ // be downsized when it would have clipped. In GTK, the image is always // scaled to fit the drawing region (preserving aspect ratio). Only add // "contain" if clipping would occur. + int bg_width = 0; + int bg_height = 0; +#if GTK_CHECK_VERSION(3, 90, 0) + auto* snapshot = gtk_snapshot_new(); + gtk_snapshot_render_background(snapshot, button_context, 0, 0, + button_size_.width(), button_size_.height()); + if (auto* node = gtk_snapshot_free_to_node(snapshot)) { + if (GdkTexture* texture = GetTextureFromRenderNode(node)) { + bg_width = gdk_texture_get_width(texture); + bg_height = gdk_texture_get_height(texture); + } + gsk_render_node_unref(node); + } +#else cairo_pattern_t* cr_pattern = nullptr; cairo_surface_t* cr_surface = nullptr; -#if GTK_CHECK_VERSION(3, 90, 0) - NOTIMPLEMENTED_LOG_ONCE(); -#else gtk_style_context_get(button_context, button_state, GTK_STYLE_PROPERTY_BACKGROUND_IMAGE, &cr_pattern, nullptr); + if (cr_pattern) { + cairo_pattern_get_surface(cr_pattern, &cr_surface); + if (cr_surface && + cairo_surface_get_type(cr_surface) == CAIRO_SURFACE_TYPE_IMAGE) { + bg_width = cairo_image_surface_get_width(cr_surface); + bg_height = cairo_image_surface_get_height(cr_surface); + } + cairo_pattern_destroy(cr_pattern); + } #endif - if (cr_pattern && - cairo_pattern_get_surface(cr_pattern, &cr_surface) == - CAIRO_STATUS_SUCCESS && - cr_surface && - cairo_surface_get_type(cr_surface) == CAIRO_SURFACE_TYPE_IMAGE && - (cairo_image_surface_get_width(cr_surface) > button_size_.width() || - cairo_image_surface_get_height(cr_surface) > button_size_.height())) { + if (bg_width > button_size_.width() || bg_height > button_size_.height()) { ApplyCssToContext(button_context, ".titlebutton { background-size: contain; }"); } - cairo_pattern_destroy(cr_pattern); // Gtk doesn't support fractional scale factors, but chrome does. // Rendering the button background and border at a fractional @@ -339,13 +392,8 @@ bool active) { auto header_context = CreateHeaderContext(maximized); - GtkBorder header_padding; -#if GTK_CHECK_VERSION(3, 90, 0) - gtk_style_context_get_padding(header_context, &header_padding); -#else - gtk_style_context_get_padding(header_context, GTK_STATE_FLAG_NORMAL, - &header_padding); -#endif + auto header_padding = + PaddingFromStyleContext(header_context, GTK_STATE_FLAG_NORMAL); double scale = 1.0f; std::map<views::NavButtonProvider::FrameButtonDisplayType, gfx::Size> @@ -365,20 +413,18 @@ button_margins[type].top() + button_margins[type].bottom(); - int needed_height = header_padding.top + button_unconstrained_height + - header_padding.bottom; + int needed_height = header_padding.top() + button_unconstrained_height + + header_padding.bottom(); if (needed_height > top_area_height) scale = std::min(scale, static_cast<double>(top_area_height) / needed_height); } - top_area_spacing_ = InsetsFromGtkBorder(header_padding); - top_area_spacing_ = - gfx::Insets(std::round(scale * top_area_spacing_.top()), - std::round(scale * top_area_spacing_.left()), - std::round(scale * top_area_spacing_.bottom()), - std::round(scale * top_area_spacing_.right())); + top_area_spacing_ = gfx::Insets(std::round(scale * header_padding.top()), + std::round(scale * header_padding.left()), + std::round(scale * header_padding.bottom()), + std::round(scale * header_padding.right())); inter_button_spacing_ = std::round(scale * kHeaderSpacing); @@ -387,7 +433,8 @@ scale * (button_sizes[type].height() + button_margins[type].top() + button_margins[type].bottom()); double available_height = - top_area_height - scale * (header_padding.top + header_padding.bottom); + top_area_height - + scale * (header_padding.top() + header_padding.bottom()); double scaled_button_offset = (available_height - button_height) / 2; gfx::Size size = button_sizes[type]; @@ -395,7 +442,7 @@ std::round(scale * size.height())); gfx::Insets margin = button_margins[type]; margin = - gfx::Insets(std::round(scale * (header_padding.top + margin.top()) + + gfx::Insets(std::round(scale * (header_padding.top() + margin.top()) + scaled_button_offset), std::round(scale * margin.left()), 0, std::round(scale * margin.right()));
diff --git a/ui/gtk/select_file_dialog_impl_gtk.cc b/ui/gtk/select_file_dialog_impl_gtk.cc index 633e362..3d50df1 100644 --- a/ui/gtk/select_file_dialog_impl_gtk.cc +++ b/ui/gtk/select_file_dialog_impl_gtk.cc
@@ -4,6 +4,7 @@ #include "ui/gtk/select_file_dialog_impl_gtk.h" +#include <glib/gi18n.h> #include <gtk/gtk.h> #include <stddef.h> #include <sys/stat.h> @@ -17,6 +18,8 @@ #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/no_destructor.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" @@ -36,19 +39,45 @@ namespace { #if GTK_CHECK_VERSION(3, 90, 0) -// GTK stock items have been deprecated. The docs say to switch to using the -// strings "_Open", etc. However this breaks i18n. We could supply our own -// internationalized strings, but the "_" in these strings is significant: it's -// the keyboard shortcut to select these actions. TODO(thomasanderson): Provide -// internationalized strings when GTK provides support for it. -const char kCancelLabel[] = "_Cancel"; -const char kOpenLabel[] = "_Open"; -const char kSaveLabel[] = "_Save"; +// TODO(https://crbug.com/981309): These getters will be unnecessary after +// migrating to GtkFileChooserNative. +const char* GettextPackage() { + static base::NoDestructor<std::string> gettext_package( + "gtk" + base::NumberToString(BUILDFLAG(GTK_VERSION)) + "0"); + return gettext_package->c_str(); +} + +const char* GtkGettext(const char* str) { + return g_dgettext(GettextPackage(), str); +} + +const char* GetCancelLabel() { + static const char* cancel = GtkGettext("_Cancel"); + return cancel; +} + +const char* GetOpenLabel() { + static const char* open = GtkGettext("_Open"); + return open; +} + +const char* GetSaveLabel() { + static const char* save = GtkGettext("_Save"); + return save; +} #else G_GNUC_BEGIN_IGNORE_DEPRECATIONS -const char* const kCancelLabel = GTK_STOCK_CANCEL; -const char* const kOpenLabel = GTK_STOCK_OPEN; -const char* const kSaveLabel = GTK_STOCK_SAVE; +const char* GetCancelLabel() { + return GTK_STOCK_CANCEL; +} + +const char* GetOpenLabel() { + return GTK_STOCK_OPEN; +} + +const char* GetSaveLabel() { + return GTK_STOCK_SAVE; +} G_GNUC_END_IGNORE_DEPRECATIONS #endif @@ -147,7 +176,7 @@ #if !GTK_CHECK_VERSION(3, 90, 0) // The size of the preview we display for selected image files. We set height // larger than width because generally there is more free space vertically -// than horiztonally (setting the preview image will alway expand the width of +// than horiztonally (setting the preview image will always expand the width of // the dialog, but usually not the height). The image's aspect ratio will always // be preserved. static const int kPreviewWidth = 256; @@ -168,9 +197,13 @@ SelectFileDialogImplGTK::~SelectFileDialogImplGTK() { for (auto* window : parents_) window->RemoveObserver(this); - while (!dialogs_.empty()) { - auto* widget = *(dialogs_.begin()); - GtkWindowDestroy(widget); + auto dialogs = dialogs_; + for (auto dialog_signal : dialogs) { + auto* dialog = dialog_signal.first; + auto signal_id = dialog_signal.second; + g_signal_handler_disconnect(dialog, signal_id); + GtkWindowDestroy(dialog); + OnFileChooserDestroy(dialog); } } @@ -184,7 +217,8 @@ void SelectFileDialogImplGTK::OnWindowDestroying(aura::Window* window) { // Remove the |parent| property associated with the |dialog|. - for (auto* dialog : dialogs_) { + for (auto dialog_signal : dialogs_) { + auto* dialog = dialog_signal.first; aura::Window* parent = GetAuraTransientParent(dialog); if (parent == window) ClearAuraTransientParent(dialog, parent); @@ -247,10 +281,9 @@ g_signal_connect(dialog, "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), nullptr); #endif - dialogs_.insert(dialog); - g_signal_connect(dialog, "destroy", G_CALLBACK(OnFileChooserDestroyThunk), - this); + dialogs_[dialog] = g_signal_connect( + dialog, "destroy", G_CALLBACK(OnFileChooserDestroyThunk), this); #if !GTK_CHECK_VERSION(3, 90, 0) preview_ = gtk_image_new(); @@ -383,8 +416,8 @@ const base::FilePath& default_path, gfx::NativeWindow parent) { GtkWidget* dialog = gtk_file_chooser_dialog_new( - title.c_str(), nullptr, GTK_FILE_CHOOSER_ACTION_OPEN, kCancelLabel, - GTK_RESPONSE_CANCEL, kOpenLabel, GTK_RESPONSE_ACCEPT, nullptr); + title.c_str(), nullptr, GTK_FILE_CHOOSER_ACTION_OPEN, GetCancelLabel(), + GTK_RESPONSE_CANCEL, GetOpenLabel(), GTK_RESPONSE_ACCEPT, nullptr); SetGtkTransientForAura(dialog, parent); AddFilters(GTK_FILE_CHOOSER(dialog)); @@ -419,11 +452,11 @@ (type == SELECT_UPLOAD_FOLDER) ? l10n_util::GetStringUTF8( IDS_SELECT_UPLOAD_FOLDER_DIALOG_UPLOAD_BUTTON) - : kOpenLabel; + : GetOpenLabel(); GtkWidget* dialog = gtk_file_chooser_dialog_new( title_string.c_str(), nullptr, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, - kCancelLabel, GTK_RESPONSE_CANCEL, accept_button_label.c_str(), + GetCancelLabel(), GTK_RESPONSE_CANCEL, accept_button_label.c_str(), GTK_RESPONSE_ACCEPT, nullptr); SetGtkTransientForAura(dialog, parent); GtkFileChooser* chooser = GTK_FILE_CHOOSER(dialog); @@ -486,8 +519,9 @@ : l10n_util::GetStringUTF8(IDS_SAVE_AS_DIALOG_TITLE); GtkWidget* dialog = gtk_file_chooser_dialog_new( - title_string.c_str(), nullptr, GTK_FILE_CHOOSER_ACTION_SAVE, kCancelLabel, - GTK_RESPONSE_CANCEL, kSaveLabel, GTK_RESPONSE_ACCEPT, nullptr); + title_string.c_str(), nullptr, GTK_FILE_CHOOSER_ACTION_SAVE, + GetCancelLabel(), GTK_RESPONSE_CANCEL, GetSaveLabel(), + GTK_RESPONSE_ACCEPT, nullptr); SetGtkTransientForAura(dialog, parent); AddFilters(GTK_FILE_CHOOSER(dialog));
diff --git a/ui/gtk/select_file_dialog_impl_gtk.h b/ui/gtk/select_file_dialog_impl_gtk.h index 27ac613..8e0e99d 100644 --- a/ui/gtk/select_file_dialog_impl_gtk.h +++ b/ui/gtk/select_file_dialog_impl_gtk.h
@@ -5,6 +5,8 @@ #ifndef UI_GTK_SELECT_FILE_DIALOG_IMPL_GTK_H_ #define UI_GTK_SELECT_FILE_DIALOG_IMPL_GTK_H_ +#include <map> + #include "base/macros.h" #include "ui/base/glib/glib_signal.h" #include "ui/gtk/gtk_util.h" @@ -139,8 +141,8 @@ GtkWidget* preview_ = nullptr; #endif - // All our dialogs. - std::set<GtkWidget*> dialogs_; + // Maps from dialogs to signal handler IDs. + std::map<GtkWidget*, unsigned long> dialogs_; // The set of all parent windows for which we are currently running dialogs. std::set<aura::Window*> parents_;
diff --git a/ui/gtk/x/gtk_ui_delegate_x11.cc b/ui/gtk/x/gtk_ui_delegate_x11.cc index b1bd174..618d0865 100644 --- a/ui/gtk/x/gtk_ui_delegate_x11.cc +++ b/ui/gtk/x/gtk_ui_delegate_x11.cc
@@ -11,6 +11,7 @@ #include "ui/base/x/x11_util.h" #include "ui/events/platform/x11/x11_event_source.h" #include "ui/gfx/native_widget_types.h" +#include "ui/gfx/x/x11_atom_cache.h" #include "ui/gfx/x/xlib_support.h" #include "ui/gfx/x/xproto.h" #include "ui/gfx/x/xproto_util.h" @@ -68,8 +69,8 @@ GdkWindow* GtkUiDelegateX11::GetGdkWindow(gfx::AcceleratedWidget window_id) { #if BUILDFLAG(GTK_VERSION) >= 4 - // GTK4 dropped support for foreign windows. - NOTIMPLEMENTED_LOG_ONCE(); + // This function is only used by InputMethodContextImplGtk with GTK3. + NOTREACHED(); return nullptr; #else GdkDisplay* display = GetGdkDisplay(); @@ -84,16 +85,19 @@ #endif } -bool GtkUiDelegateX11::SetGdkWindowTransientFor(GdkWindow* window, +bool GtkUiDelegateX11::SetGtkWidgetTransientFor(GtkWidget* widget, gfx::AcceleratedWidget parent) { #if BUILDFLAG(GTK_VERSION) >= 4 auto x11_window = static_cast<x11::Window>(gdk_x11_surface_get_xid( - gtk_native_get_surface(gtk_widget_get_native(GTK_WIDGET(window))))); + gtk_native_get_surface(gtk_widget_get_native(widget)))); #else - auto x11_window = static_cast<x11::Window>(gdk_x11_window_get_xid(window)); + auto x11_window = static_cast<x11::Window>( + gdk_x11_window_get_xid(gtk_widget_get_window(widget))); #endif SetProperty(x11_window, x11::Atom::WM_TRANSIENT_FOR, x11::Atom::WINDOW, parent); + SetProperty(x11_window, x11::GetAtom("_NET_WM_WINDOW_TYPE"), x11::Atom::ATOM, + x11::GetAtom("_NET_WM_WINDOW_TYPE_DIALOG")); ui::X11Window* parent_window = ui::X11WindowManager::GetInstance()->GetWindow(parent);
diff --git a/ui/gtk/x/gtk_ui_delegate_x11.h b/ui/gtk/x/gtk_ui_delegate_x11.h index a33a09e..334f799 100644 --- a/ui/gtk/x/gtk_ui_delegate_x11.h +++ b/ui/gtk/x/gtk_ui_delegate_x11.h
@@ -11,7 +11,6 @@ #include "ui/gtk/gtk_ui_delegate.h" using GdkDisplay = struct _GdkDisplay; -using GtkWidget = struct _GtkWidget; namespace ui { @@ -33,7 +32,7 @@ void OnInitialized(GtkWidget* widget) override; GdkKeymap* GetGdkKeymap() override; GdkWindow* GetGdkWindow(gfx::AcceleratedWidget window_id) override; - bool SetGdkWindowTransientFor(GdkWindow* window, + bool SetGtkWidgetTransientFor(GtkWidget* widget, gfx::AcceleratedWidget parent) override; void ClearTransientFor(gfx::AcceleratedWidget parent) override; void ShowGtkWindow(GtkWindow* window) override;
diff --git a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc index 0e46288..0e419c8 100644 --- a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc +++ b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc
@@ -47,30 +47,20 @@ return false; const uint32_t fourcc_format = GetFourCCFormatFromBufferFormat(format); - const uint32_t gbm_flags = ui::BufferUsageToGbmFlags(usage); - - // When, either buffer |usage| implies on GBM_BO_USE_LINEAR or no supported - // modifiers are provided by the Wayland compositor for a given |format|, - // which may happen with GPU drivers/versions that, for example, do not - // support EGL_EXT_image_dma_buf_import_modifiers extension), pass in - // DRM_FORMAT_MOD_LINEAR, i.e: no tiling, when creating gbm buffers. - const bool use_linear_layout = gbm_flags & GBM_BO_USE_LINEAR; - auto modifiers = buffer_manager_->GetModifiersForBufferFormat(format); - if (use_linear_layout || modifiers.empty()) - modifiers = {DRM_FORMAT_MOD_LINEAR}; + auto gbm_usage = ui::BufferUsageToGbmFlags(usage); + std::vector<uint64_t> modifiers; + if (!(gbm_usage & GBM_BO_USE_LINEAR)) + modifiers = buffer_manager_->GetModifiersForBufferFormat(format); gbm_bo_ = buffer_manager_->gbm_device()->CreateBufferWithModifiers( - fourcc_format, size, gbm_flags, modifiers); + fourcc_format, size, gbm_usage, modifiers); if (!gbm_bo_) { LOG(ERROR) << "Cannot create bo with format= " - << gfx::BufferFormatToString(format) - << " and usage=" << gfx::BufferUsageToString(usage); + << gfx::BufferFormatToString(format) << " and usage " + << gfx::BufferUsageToString(usage); return false; } - DVLOG(3) << "Creating gbm buffer. format= " - << gfx::BufferFormatToString(format) - << " usage=" << gfx::BufferUsageToString(usage); CreateDmabufBasedBuffer(); return true; }
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc index 7c24257..64331f7 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
@@ -2,20 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include <drm_fourcc.h> - -#include <cstdint> #include <memory> #include <utility> -#include <vector> -#include "base/containers/flat_map.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/test/mock_callback.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkSurface.h" -#include "ui/gfx/buffer_types.h" #include "ui/gfx/linux/gbm_buffer.h" #include "ui/gfx/linux/gbm_device.h" #include "ui/gfx/linux/test/mock_gbm_device.h" @@ -181,18 +175,11 @@ ~WaylandSurfaceFactoryTest() override = default; void SetUp() override { - const base::flat_map<gfx::BufferFormat, std::vector<uint64_t>> - kSupportedFormatsWithModifiers{ - {gfx::BufferFormat::BGRA_8888, {DRM_FORMAT_MOD_LINEAR}}}; - WaylandTest::SetUp(); auto manager_ptr = connection_->buffer_manager_host()->BindInterface(); - buffer_manager_gpu_->Initialize(std::move(manager_ptr), - kSupportedFormatsWithModifiers, - /*supports_dma_buf=*/false, - /*supports_viewporter=*/true, - /*supports_acquire_fence=*/false); + buffer_manager_gpu_->Initialize(std::move(manager_ptr), {}, false, true, + false); // Wait until initialization and mojo calls go through. base::RunLoop().RunUntilIdle();
diff --git a/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.cc b/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.cc index e6f18db..37a49fb 100644 --- a/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.cc +++ b/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.cc
@@ -58,8 +58,8 @@ return nullptr; } -bool GtkUiDelegateWayland::SetGdkWindowTransientFor( - GdkWindow* window, +bool GtkUiDelegateWayland::SetGtkWidgetTransientFor( + GtkWidget* widget, gfx::AcceleratedWidget parent) { #if !GTK_CHECK_VERSION(3, 90, 0) if (!gdk_wayland_window_set_transient_for_exported) { @@ -80,7 +80,7 @@ foreign->ExportSurfaceToForeign( parent_window, base::BindOnce(&GtkUiDelegateWayland::OnHandle, - weak_factory_.GetWeakPtr(), window)); + weak_factory_.GetWeakPtr(), widget)); return true; } @@ -99,13 +99,16 @@ return connection_->event_source()->keyboard_modifiers(); } -void GtkUiDelegateWayland::OnHandle(GdkWindow* window, +void GtkUiDelegateWayland::OnHandle(GtkWidget* widget, const std::string& handle) { char* parent = const_cast<char*>(handle.c_str()); #if GTK_CHECK_VERSION(3, 90, 0) - gdk_wayland_toplevel_set_transient_for_exported(GDK_TOPLEVEL(window), parent); + auto* toplevel = + GDK_TOPLEVEL(gtk_native_get_surface(gtk_widget_get_native(widget))); + gdk_wayland_toplevel_set_transient_for_exported(toplevel, parent); #else - gdk_wayland_window_set_transient_for_exported(window, parent); + gdk_wayland_window_set_transient_for_exported(gtk_widget_get_window(widget), + parent); #endif }
diff --git a/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.h b/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.h index f05bd6a3..b9a1d9f 100644 --- a/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.h +++ b/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.h
@@ -26,7 +26,7 @@ void OnInitialized(GtkWidget* widget) override; GdkKeymap* GetGdkKeymap() override; GdkWindow* GetGdkWindow(gfx::AcceleratedWidget window_id) override; - bool SetGdkWindowTransientFor(GdkWindow* window, + bool SetGtkWidgetTransientFor(GtkWidget* widget, gfx::AcceleratedWidget parent) override; void ClearTransientFor(gfx::AcceleratedWidget parent) override; void ShowGtkWindow(GtkWindow* window) override; @@ -34,8 +34,8 @@ private: // Called when xdg-foreign exports a parent window passed in - // SetGdkWindowTransientFor. - void OnHandle(GdkWindow* window, const std::string& handle); + // SetGtkWidgetTransientFor. + void OnHandle(GtkWidget* widget, const std::string& handle); WaylandConnection* const connection_;
diff --git a/ui/snapshot/BUILD.gn b/ui/snapshot/BUILD.gn index e11413b..df8dd44 100644 --- a/ui/snapshot/BUILD.gn +++ b/ui/snapshot/BUILD.gn
@@ -123,8 +123,7 @@ # TODO(crbug.com/1185811): Figure out why jit_capabilities is needed. "//build/config/fuchsia/test/jit_capabilities.test-cmx", - "//build/config/fuchsia/test/present_capabilities.test-cmx", - "//build/config/fuchsia/test/view_creation_capabilities.test-cmx", + "//build/config/fuchsia/test/present_view_capabilities.test-cmx", ] } }
diff --git a/ui/views/color_chooser/color_chooser_view.cc b/ui/views/color_chooser/color_chooser_view.cc index ec719f0..c92dde7 100644 --- a/ui/views/color_chooser/color_chooser_view.cc +++ b/ui/views/color_chooser/color_chooser_view.cc
@@ -18,13 +18,16 @@ #include "base/strings/utf_string_conversions.h" #include "cc/paint/paint_flags.h" #include "cc/paint/paint_shader.h" +#include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkPath.h" #include "third_party/skia/include/effects/SkGradientShader.h" #include "ui/base/l10n/l10n_util.h" #include "ui/events/event.h" #include "ui/events/keycodes/keyboard_codes.h" #include "ui/gfx/canvas.h" +#include "ui/gfx/color_palette.h" #include "ui/gfx/geometry/insets.h" +#include "ui/native_theme/native_theme.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/background.h" #include "ui/views/border.h" @@ -83,7 +86,7 @@ // Handles an event (mouse or gesture) at the specified location. virtual void ProcessEventAtLocation(const gfx::Point& location) = 0; - // views::View overrides: + // views::View bool OnMousePressed(const ui::MouseEvent& event) override { ProcessEventAtLocation(event.location()); return true; @@ -142,24 +145,39 @@ explicit HueView(const HueChangedCallback& changed_callback); HueView(const HueView&) = delete; HueView& operator=(const HueView&) = delete; + ~HueView() override = default; + + // views::View + void OnThemeChanged() override; void OnHueChanged(SkScalar hue); private: - // LocatedEventHandlerView overrides: + // LocatedEventHandlerView void ProcessEventAtLocation(const gfx::Point& point) override; - // View overrides: + // views::View gfx::Size CalculatePreferredSize() const override; void OnPaint(gfx::Canvas* canvas) override; HueChangedCallback changed_callback_; int level_; + SkColor background_color_; + SkColor indicator_color_; }; HueView::HueView(const HueChangedCallback& changed_callback) : changed_callback_(changed_callback), level_(0) {} +void HueView::OnThemeChanged() { + LocatedEventHandlerView::OnThemeChanged(); + background_color_ = GetNativeTheme()->GetSystemColor( + ui::NativeTheme::kColorId_WindowBackground); + indicator_color_ = GetNativeTheme()->GetSystemColor( + ui::NativeTheme::kColorId_MenuDropIndicator); + SchedulePaint(); +} + void HueView::OnHueChanged(SkScalar hue) { SkScalar height = SkIntToScalar(kSaturationValueSize - 1); SkScalar hue_max = SkIntToScalar(360); @@ -194,7 +212,7 @@ canvas->FillRect(gfx::Rect(kHueIndicatorSize, 0, kHueBarWidth + kBorderWidth, height() - 1), - SK_ColorGRAY); + background_color_); int base_left = kHueIndicatorSize + kBorderWidth; for (int y = 0; y < kSaturationValueSize; ++y) { hsv[0] = @@ -224,7 +242,7 @@ SkIntToScalar(level_ - kHueIndicatorSize)); cc::PaintFlags indicator_flags; - indicator_flags.setColor(SK_ColorBLACK); + indicator_flags.setColor(indicator_color_); indicator_flags.setStyle(cc::PaintFlags::kFill_Style); canvas->DrawPath(left_indicator_path, indicator_flags); canvas->DrawPath(right_indicator_path, indicator_flags); @@ -249,15 +267,19 @@ const SaturationValueChangedCallback& changed_callback); SaturationValueView(const SaturationValueView&) = delete; SaturationValueView& operator=(const SaturationValueView&) = delete; + ~SaturationValueView() override = default; + + // views::View + void OnThemeChanged() override; void OnHueChanged(SkScalar hue); void OnSaturationValueChanged(SkScalar saturation, SkScalar value); private: - // LocatedEventHandlerView overrides: + // LocatedEventHandlerView void ProcessEventAtLocation(const gfx::Point& point) override; - // View overrides: + // views::View gfx::Size CalculatePreferredSize() const override; void OnPaint(gfx::Canvas* canvas) override; @@ -269,7 +291,14 @@ SaturationValueView::SaturationValueView( const SaturationValueChangedCallback& changed_callback) : changed_callback_(changed_callback), hue_(0) { - SetBorder(CreateSolidBorder(kBorderWidth, SK_ColorGRAY)); + SetBorder(CreateSolidBorder(kBorderWidth, gfx::kPlaceholderColor)); +} + +void SaturationValueView::OnThemeChanged() { + LocatedEventHandlerView::OnThemeChanged(); + border()->set_color(GetNativeTheme()->GetSystemColor( + ui::NativeTheme::kColorId_UnfocusedBorderColor)); + SchedulePaint(); } void SaturationValueView::OnHueChanged(SkScalar hue) { @@ -354,13 +383,24 @@ SelectedColorPatchView(); SelectedColorPatchView(const SelectedColorPatchView&) = delete; SelectedColorPatchView& operator=(const SelectedColorPatchView&) = delete; + ~SelectedColorPatchView() override = default; + + // views::View + void OnThemeChanged() override; void SetColor(SkColor color); }; SelectedColorPatchView::SelectedColorPatchView() { SetVisible(true); - SetBorder(CreateSolidBorder(kBorderWidth, SK_ColorGRAY)); + SetBorder(CreateSolidBorder(kBorderWidth, gfx::kPlaceholderColor)); +} + +void SelectedColorPatchView::OnThemeChanged() { + views::View::OnThemeChanged(); + border()->set_color(GetNativeTheme()->GetSystemColor( + ui::NativeTheme::kColorId_UnfocusedBorderColor)); + SchedulePaint(); } void SelectedColorPatchView::SetColor(SkColor color) { @@ -377,7 +417,8 @@ std::unique_ptr<View> ColorChooser::BuildView() { auto view = std::make_unique<View>(); tracker_.SetView(view.get()); - view->SetBackground(CreateSolidBackground(SK_ColorLTGRAY)); + view->SetBackground(CreateThemedSolidBackground( + view.get(), ui::NativeTheme::kColorId_WindowBackground)); view->SetLayoutManager( std::make_unique<BoxLayout>(BoxLayout::Orientation::kVertical, gfx::Insets(kMarginWidth), kMarginWidth)); @@ -468,7 +509,7 @@ const std::u16string& new_contents) { DCHECK(IsViewAttached()); - SkColor color = SK_ColorBLACK; + SkColor color = gfx::kPlaceholderColor; if (GetColorFromText(new_contents, &color)) { SetColor(color); hue_->OnHueChanged(hue());
diff --git a/ui/views/view.h b/ui/views/view.h index 47cdf752..b13e80f 100644 --- a/ui/views/view.h +++ b/ui/views/view.h
@@ -1392,7 +1392,7 @@ void PossibleDrag(const gfx::Point& p); // Whether the press may generate a drag. - bool possible_drag; + bool possible_drag = false; // Coordinates of the mouse press. gfx::Point start_pt;