diff --git a/DEPS b/DEPS index b23b0ad5..608fc20 100644 --- a/DEPS +++ b/DEPS
@@ -199,11 +199,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': '8f282f5d9f30aeb5e3122735723b403203511370', + 'skia_revision': '2199cde1f52b39182a21f5ff41ab8aafde1f3731', # 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': '6bb19707a491fda7a4dc04dbbeb188d48f6d641d', + 'v8_revision': '5d60a181de0863d8d00ae42ec0ee3521f51b501a', # 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. @@ -211,11 +211,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '6e909d9407534e3b7e4eb42e49941256a14066b5', + 'angle_revision': '0b90eef09f607336330f318bc8e65fa981634160', # 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': '588d32cb3f172d1a6092c2b3c7e5a5c5d8b3b06e', + 'swiftshader_revision': '348ba200aa29d5b3a36d696d48d8f619e055219f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -274,7 +274,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': 'ba12c16f393a978fe8d3f7ad9d9db4d3ad1125b0', + 'devtools_frontend_revision': '56e9ceb621af13f4d35ff0a65e1206f7b50772a1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -314,7 +314,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': 'c9a22bcb93db27e200a184c1f7b9bf0f288815c7', + 'dawn_revision': '3a0405597374c9ae12fb93e33aac35826455a958', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -1344,7 +1344,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': 'luM2HIHgfBKxr1C7UPo8RdQPAvyLNd74T9rYfhWFOC8C' + 'version': 'xAHa1IXmKteChkPvba9ezjSnKL7IyDePQRzWVUEAx9UC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia', @@ -1485,7 +1485,7 @@ 'src/third_party/usrsctp/usrsctplib': Var('chromium_git') + '/external/github.com/sctplab/usrsctp' + '@' + 'a3c3ef666b7a5e4c93ebae5a7462add6f86f5cf2', - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@b229877c6d2dd194a61794fa12e69405b09d8677', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@e59ae1af7571c2994183768c2a36fff8b1854437', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + '6c656df63da5995a932aafd45b32af1974e497d9', @@ -1518,7 +1518,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '783278a3109df8d2e362861e52fd0deea851633c', + Var('webrtc_git') + '/src.git' + '@' + '42082f9045e74e65b9e3a66b51093e0dc2f9375a', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1590,7 +1590,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@a51f14911dda538375d1f4da1925ce667ac3ca6f', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ae141f7298b13c959b64a3cff9ffcc191c8f5f2c', 'condition': 'checkout_src_internal', }, @@ -1598,7 +1598,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'iymm0X4k86dP1qOJ7zLR6r45tSnluDcJ8ticed31c9wC', + 'version': 'XqRO5qpWAA_j5rN924obLa6cvXOAk7XsrvyzobooTOoC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -1609,7 +1609,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': 'G2hKrv9siNlrFfUOPnGITX-1vPXVfef552IDKjdJcgoC', + 'version': 'R77YnQ53JE-EhrDRTHfTXpK36kcw2lVngfX8hLaV5OQC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/base/allocator/partition_allocator/page_allocator_internals_posix.h b/base/allocator/partition_allocator/page_allocator_internals_posix.h index f3c1c53..078e33a 100644 --- a/base/allocator/partition_allocator/page_allocator_internals_posix.h +++ b/base/allocator/partition_allocator/page_allocator_internals_posix.h
@@ -8,6 +8,7 @@ #include <errno.h> #include <sys/mman.h> +#include "base/allocator/partition_allocator/oom.h" #include "base/allocator/partition_allocator/partition_alloc_check.h" #include "base/check_op.h" #include "base/notreached.h" @@ -216,8 +217,11 @@ void* address, size_t length, PageAccessibilityConfiguration accessibility) { - PA_PCHECK(0 == HANDLE_EINTR( - mprotect(address, length, GetAccessFlags(accessibility)))); + const int ret = + HANDLE_EINTR(mprotect(address, length, GetAccessFlags(accessibility))); + if (ret == -1 && errno == ENOMEM) + OOM_CRASH(length); + PA_PCHECK(0 == ret); } void FreePagesInternal(void* address, size_t length) {
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index e163596..ae34d0f 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20210108.2.1 +0.20210110.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index e163596..ae34d0f 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20210108.2.1 +0.20210110.2.1
diff --git a/chrome/VERSION b/chrome/VERSION index 976092f..391f4ad 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=89 MINOR=0 -BUILD=4384 +BUILD=4385 PATCH=0
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index e0d2f42..da0660e 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-89.0.4381.0_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-89.0.4383.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc index 354f4a3..944e278 100644 --- a/chrome/app/chrome_main_delegate.cc +++ b/chrome/app/chrome_main_delegate.cc
@@ -578,6 +578,10 @@ #if defined(OS_ANDROID) UmaSessionStats::OnStartup(); #endif + +#if defined(OS_MAC) + chrome::CacheChannelInfo(); +#endif } bool ChromeMainDelegate::ShouldCreateFeatureList() {
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index f0d4bf1..3523ee4 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1460,6 +1460,8 @@ "first_run/first_run.h", "full_restore/app_launch_handler.cc", "full_restore/app_launch_handler.h", + "full_restore/full_restore_data_handler.cc", + "full_restore/full_restore_data_handler.h", "full_restore/full_restore_prefs.cc", "full_restore/full_restore_prefs.h", "full_restore/full_restore_service.cc",
diff --git a/chrome/browser/chromeos/full_restore/full_restore_data_handler.cc b/chrome/browser/chromeos/full_restore/full_restore_data_handler.cc new file mode 100644 index 0000000..946b2a29 --- /dev/null +++ b/chrome/browser/chromeos/full_restore/full_restore_data_handler.cc
@@ -0,0 +1,49 @@ +// 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/full_restore/full_restore_data_handler.h" + +#include "chrome/browser/apps/app_service/app_service_proxy.h" +#include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "components/full_restore/full_restore_read_handler.h" +#include "components/full_restore/full_restore_save_handler.h" +#include "components/services/app_service/public/cpp/app_update.h" + +namespace chromeos { +namespace full_restore { + +FullRestoreDataHandler::FullRestoreDataHandler(Profile* profile) + : profile_(profile) { + DCHECK( + apps::AppServiceProxyFactory::IsAppServiceAvailableForProfile(profile_)); + Observe(&apps::AppServiceProxyFactory::GetForProfile(profile_) + ->AppRegistryCache()); +} + +FullRestoreDataHandler::~FullRestoreDataHandler() = default; + +void FullRestoreDataHandler::OnAppUpdate(const apps::AppUpdate& update) { + if (!update.ReadinessChanged() || + update.Readiness() != apps::mojom::Readiness::kUninstalledByUser) { + return; + } + + // If the user uninstalls an app, then installs it again at the system + // startup phase, its restore data will be removed if the app isn't reopened. + ::full_restore::FullRestoreReadHandler* read_handler = + ::full_restore::FullRestoreReadHandler::GetInstance(); + read_handler->RemoveApp(profile_->GetPath(), update.AppId()); + + ::full_restore::FullRestoreSaveHandler::GetInstance()->RemoveApp( + profile_->GetPath(), update.AppId()); +} + +void FullRestoreDataHandler::OnAppRegistryCacheWillBeDestroyed( + apps::AppRegistryCache* cache) { + apps::AppRegistryCache::Observer::Observe(nullptr); +} + +} // namespace full_restore +} // namespace chromeos
diff --git a/chrome/browser/chromeos/full_restore/full_restore_data_handler.h b/chrome/browser/chromeos/full_restore/full_restore_data_handler.h new file mode 100644 index 0000000..29267d6 --- /dev/null +++ b/chrome/browser/chromeos/full_restore/full_restore_data_handler.h
@@ -0,0 +1,39 @@ +// 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_FULL_RESTORE_FULL_RESTORE_DATA_HANDLER_H_ +#define CHROME_BROWSER_CHROMEOS_FULL_RESTORE_FULL_RESTORE_DATA_HANDLER_H_ + +#include "components/services/app_service/public/cpp/app_registry_cache.h" + +class Profile; + +namespace chromeos { +namespace full_restore { + +// The FullRestoreDataHandler class observes AppRegistryCache to remove the app +// launching and app windows when the app is removed. +class FullRestoreDataHandler : public apps::AppRegistryCache::Observer { + public: + explicit FullRestoreDataHandler(Profile* profile); + ~FullRestoreDataHandler() override; + + FullRestoreDataHandler(const FullRestoreDataHandler&) = delete; + FullRestoreDataHandler& operator=(const FullRestoreDataHandler&) = delete; + + // apps::AppRegistryCache::Observer: + void OnAppUpdate(const apps::AppUpdate& update) override; + void OnAppRegistryCacheWillBeDestroyed( + apps::AppRegistryCache* cache) override; + + private: + Profile* profile_ = nullptr; + + base::WeakPtrFactory<FullRestoreDataHandler> weak_ptr_factory_{this}; +}; + +} // namespace full_restore +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_FULL_RESTORE_FULL_RESTORE_DATA_HANDLER_H_
diff --git a/chrome/browser/chromeos/full_restore/full_restore_service.cc b/chrome/browser/chromeos/full_restore/full_restore_service.cc index 385a71d..04c01e38 100644 --- a/chrome/browser/chromeos/full_restore/full_restore_service.cc +++ b/chrome/browser/chromeos/full_restore/full_restore_service.cc
@@ -8,6 +8,7 @@ #include "base/strings/string_util.h" #include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/chromeos/full_restore/app_launch_handler.h" +#include "chrome/browser/chromeos/full_restore/full_restore_data_handler.h" #include "chrome/browser/chromeos/full_restore/full_restore_prefs.h" #include "chrome/browser/chromeos/full_restore/full_restore_service_factory.h" #include "chrome/browser/chromeos/full_restore/new_user_restore_pref_handler.h" @@ -40,7 +41,9 @@ FullRestoreService::FullRestoreService(Profile* profile) : profile_(profile), - app_launch_handler_(std::make_unique<AppLaunchHandler>(profile_)) { + app_launch_handler_(std::make_unique<AppLaunchHandler>(profile_)), + restore_data_handler_( + std::make_unique<FullRestoreDataHandler>(profile_)) { // If the system crashed before reboot, show the restore notification. if (profile->GetLastSessionExitType() == Profile::EXIT_CRASHED) { ShowRestoreNotification(kRestoreForCrashNotificationId);
diff --git a/chrome/browser/chromeos/full_restore/full_restore_service.h b/chrome/browser/chromeos/full_restore/full_restore_service.h index cdf64fe7..eed24e4 100644 --- a/chrome/browser/chromeos/full_restore/full_restore_service.h +++ b/chrome/browser/chromeos/full_restore/full_restore_service.h
@@ -18,6 +18,7 @@ namespace full_restore { class AppLaunchHandler; +class FullRestoreDataHandler; class NewUserRestorePrefHandler; extern const char kRestoreForCrashNotificationId[]; @@ -71,6 +72,8 @@ // restore data. std::unique_ptr<AppLaunchHandler> app_launch_handler_; + std::unique_ptr<FullRestoreDataHandler> restore_data_handler_; + base::WeakPtrFactory<FullRestoreService> weak_ptr_factory_{this}; };
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 e155a43..bcac9e9 100644 --- a/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc +++ b/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc
@@ -189,7 +189,8 @@ // If the system is crash, show the crash notification, and verify the restore // flag when click the restore button. -TEST_F(FullRestoreServiceTest, CrashAndRestore) { +// TODO(crbug.com/1046900): Fix this unit test. +TEST_F(FullRestoreServiceTest, DISABLED_CrashAndRestore) { profile()->set_last_session_exited_cleanly(false); CreateFullRestoreServiceForTesting(); @@ -398,8 +399,9 @@ } // If the OS restore setting is 'Ask every time', after reboot, show the restore -// notfication, and verify the restore flag when click the restore button. -TEST_F(FullRestoreServiceTest, AskEveryTimeAndRestore) { +// notification, and verify the restore flag when click the restore button. +// TODO(crbug.com/1046900): Fix this unit test. +TEST_F(FullRestoreServiceTest, DISABLED_AskEveryTimeAndRestore) { profile()->GetPrefs()->SetInteger( kRestoreAppsAndPagesPrefName, static_cast<int>(RestoreOption::kAskEveryTime)); @@ -474,7 +476,8 @@ // If the restore option has been selected 3 times, show the set restore // notification. -TEST_F(FullRestoreServiceTest, SetRestorePrefNotification) { +// TODO(crbug.com/1046900): Fix this unit test. +TEST_F(FullRestoreServiceTest, DISABLED_SetRestorePrefNotification) { profile()->GetPrefs()->SetInteger( kRestoreAppsAndPagesPrefName, static_cast<int>(RestoreOption::kAskEveryTime)); @@ -508,7 +511,8 @@ // When |kRestoreSelectedCountPrefName| = 3, if the restore option is selected // again, |kRestoreSelectedCountPrefName| should not change. -TEST_F(FullRestoreServiceTest, RestoreSelectedCount) { +// TODO(crbug.com/1046900): Fix this unit test. +TEST_F(FullRestoreServiceTest, DISABLED_RestoreSelectedCount) { profile()->GetPrefs()->SetInteger( kRestoreAppsAndPagesPrefName, static_cast<int>(RestoreOption::kAskEveryTime));
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 381c6b3..0c11f4e0 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc
@@ -283,10 +283,10 @@ } // Called after a deleted profile was checked and cleaned up. -void ProfileCleanedUp(const base::Value* profile_path_value) { +void ProfileCleanedUp(base::Value profile_path_value) { ListPrefUpdate deleted_profiles(g_browser_process->local_state(), prefs::kProfilesDeleted); - deleted_profiles->Remove(*profile_path_value, nullptr); + deleted_profiles->Remove(profile_path_value, nullptr); } #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -1040,11 +1040,11 @@ {base::MayBlock(), base::TaskPriority::BEST_EFFORT, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, base::BindOnce(&NukeProfileFromDisk, *profile_path), - base::BindOnce(&ProfileCleanedUp, &value)); + base::BindOnce(&ProfileCleanedUp, value.Clone())); } else { // Everything is fine, the profile was removed on shutdown. content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(&ProfileCleanedUp, &value)); + FROM_HERE, base::BindOnce(&ProfileCleanedUp, value.Clone())); } } else { LOG(ERROR) << "Found invalid profile path in deleted_profiles: "
diff --git a/chrome/browser/resources/chromeos/add_supervision/post_message_api.js b/chrome/browser/resources/chromeos/add_supervision/post_message_api.js index 438e9ccd..c3dbbdc 100644 --- a/chrome/browser/resources/chromeos/add_supervision/post_message_api.js +++ b/chrome/browser/resources/chromeos/add_supervision/post_message_api.js
@@ -172,19 +172,24 @@ return; } - if (this.initialization_timeout_id_) { - // Cancel the current init timeout, and signal to the initialization - // polling process that we have received an init message from the guest - // content, so it doesn't reschedule the timer. - clearTimeout(this.initialization_timeout_id_); - this.initialization_timeout_id_ = 0; - } - if (event.data === 'init') { + if (this.initialization_timeout_id_) { + // Cancel the current init timeout, and signal to the initialization + // polling process that we have received an init message from the guest + // content, so it doesn't reschedule the timer. + clearTimeout(this.initialization_timeout_id_); + this.initialization_timeout_id_ = 0; + } + this.isInitialized_ = true; return; } - + // If we have gotten this far, we have received a message from a trusted + // origin, and we should try to process it. We can't gate this on whether + // the channel is initialized, because we can receive events out of order, + // and method calls can be received before the init event. Essentially, we + // should treat the channel as being potentially as soon as we send 'init' + // to the guest content. const methodId = event.data.methodId; const fn = event.data.fn; const args = event.data.args || [];
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.cc b/chrome/browser/ui/views/profiles/profile_picker_view.cc index db21b6f..5922e02 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view.cc
@@ -11,6 +11,7 @@ #include "base/metrics/histogram_functions.h" #include "build/build_config.h" #include "chrome/app/chrome_command_ids.h" +#include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" #include "chrome/browser/lifetime/application_lifetime.h" @@ -22,11 +23,13 @@ #include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/signin_util.h" +#include "chrome/browser/themes/theme_properties.h" #include "chrome/browser/themes/theme_service.h" #include "chrome/browser/themes/theme_service_factory.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_navigator.h" #include "chrome/browser/ui/browser_navigator_params.h" +#include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/user_manager.h" #include "chrome/browser/ui/views/accelerator_table.h" #include "chrome/browser/ui/views/frame/browser_view.h" @@ -35,6 +38,7 @@ #include "chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h" #include "chrome/browser/ui/views/profiles/profile_customization_bubble_view.h" #include "chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h" +#include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.h" #include "chrome/browser/ui/webui/signin/profile_picker_ui.h" #include "chrome/browser/ui/webui/signin/signin_web_dialog_ui.h" @@ -42,11 +46,13 @@ #include "chrome/common/pref_names.h" #include "chrome/common/webui_url_constants.h" #include "chrome/grit/chromium_strings.h" +#include "chrome/grit/generated_resources.h" #include "chrome/grit/google_chrome_strings.h" #include "components/keep_alive_registry/keep_alive_types.h" #include "components/prefs/pref_service.h" #include "components/signin/public/identity_manager/account_info.h" #include "components/startup_metric_utils/browser/startup_metric_utils.h" +#include "components/vector_icons/vector_icons.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/context_menu_params.h" #include "content/public/browser/render_frame_host.h" @@ -54,6 +60,10 @@ #include "content/public/browser/web_contents.h" #include "google_apis/gaia/gaia_urls.h" #include "net/base/url_util.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/views/accessibility/view_accessibility.h" +#include "ui/views/background.h" +#include "ui/views/controls/webview/web_contents_set_background_color.h" #include "ui/views/controls/webview/webview.h" #include "ui/views/layout/fill_layout.h" #include "ui/views/layout/flex_layout.h" @@ -80,6 +90,9 @@ constexpr int kWindowHeight = 758; constexpr float kMaxRatioOfWorkArea = 0.9; +// Padding of elements in the simple toolbar. +constexpr gfx::Insets kToolbarPadding = gfx::Insets(8); + constexpr base::TimeDelta kExtendedAccountInfoTimeout = base::TimeDelta::FromSeconds(10); @@ -153,6 +166,28 @@ ProfilePickerView* const profile_picker_view_; }; +class SimpleBackButton : public ToolbarButton { + public: + explicit SimpleBackButton(PressedCallback callback) + : ToolbarButton(std::move(callback)) { + SetTriggerableEventFlags(ui::EF_LEFT_MOUSE_BUTTON | + ui::EF_MIDDLE_MOUSE_BUTTON); + SetTooltipText( + l10n_util::GetStringUTF16(IDS_PROFILE_PICKER_BACK_BUTTON_LABEL)); + } + SimpleBackButton(const SimpleBackButton&) = delete; + SimpleBackButton& operator=(const SimpleBackButton&) = delete; + ~SimpleBackButton() override = default; + + // ToolbarButton: + void UpdateIcon() override { + const bool touch_ui = ui::TouchUiController::Get()->touch_ui(); + const gfx::VectorIcon* image = + touch_ui ? &kBackArrowTouchIcon : &vector_icons::kBackArrowIcon; + UpdateIconsWithStandardColors(*image); + } +}; + } // namespace // static @@ -367,6 +402,16 @@ base::OnceCallback<void(bool)> switch_finished_callback) { profile_color_ = profile_color; + if (signed_in_profile_being_created_) { + // The profile is already created (the user went back and forth again). No + // need to create it again. + std::move(switch_finished_callback).Run(true); + // Do not load any url because the desired sign-in screen is still loaded in + // `new_profile_contents_`. + ShowScreen(new_profile_contents_.get(), GURL(), /*show_toolbar=*/true); + return; + } + DCHECK(!switch_finished_callback_); switch_finished_callback_ = std::move(switch_finished_callback); @@ -404,6 +449,10 @@ return; } + // Apply the default theme to get consistent colors for toolbars (this matters + // for linux where the 'system' theme is used for new profiles). + auto* theme_service = ThemeServiceFactory::GetForProfile(profile); + theme_service->UseDefaultTheme(); if (signin_util::IsForceSigninEnabled()) { // Show the embedded sign-in flow if the force signin is enabled. UserManagerProfileDialog::ShowForceSigninDialog( @@ -436,12 +485,28 @@ // make sure the flow does not create multiple profiles simultaneously. signed_in_profile_being_created_ = profile; - // TODO(crbug.com/1126913): Build the simple toolbar with the back button. + // Build the toolbar. Do it as late as here because the elements depend on the + // ThemeProvider which is available only by signed_in_profile_being_created_. + const ui::ThemeProvider* tp = GetThemeProviderForProfileBeingCreated(); + toolbar_->SetBackground(views::CreateSolidBackground( + tp->GetColor(ThemeProperties::COLOR_TOOLBAR))); + + auto back_button = std::make_unique<SimpleBackButton>(base::BindRepeating( + &ProfilePickerView::BackButtonPressed, base::Unretained(this))); + toolbar_->AddChildView(std::move(back_button)); + + // TODO(crbug.com/1126913): Build the read-only omnibox. new_profile_contents_ = content::WebContents::Create( content::WebContents::CreateParams(signed_in_profile_being_created_)); new_profile_contents_->SetDelegate(this); + // Make sure the web contents used for sign-in has proper background (for dark + // mode). + views::WebContentsSetBackgroundColor::CreateForWebContentsWithColor( + new_profile_contents_.get(), + tp->GetColor(ThemeProperties::COLOR_NTP_BACKGROUND)); + ShowScreen(new_profile_contents_.get(), GetSigninURL(), /*show_toolbar=*/true); } @@ -578,6 +643,11 @@ views::MaximumFlexSizeRule::kUnbounded)); auto toolbar = std::make_unique<views::View>(); + toolbar->SetLayoutManager(std::make_unique<views::FlexLayout>()) + ->SetOrientation(views::LayoutOrientation::kHorizontal) + .SetCrossAxisAlignment(views::LayoutAlignment::kCenter) + .SetCollapseMargins(true) + .SetInteriorMargin(kToolbarPadding); toolbar->SetProperty( views::kFlexBehaviorKey, views::FlexSpecification(views::MinimumFlexSizeRule::kPreferred, @@ -592,9 +662,11 @@ void ProfilePickerView::ShowScreen(content::WebContents* contents, const GURL& url, bool show_toolbar) { - contents->GetController().LoadURL(url, content::Referrer(), - ui::PAGE_TRANSITION_AUTO_TOPLEVEL, - std::string()); + if (!url.is_empty()) { + contents->GetController().LoadURL(url, content::Referrer(), + ui::PAGE_TRANSITION_AUTO_TOPLEVEL, + std::string()); + } web_view_->SetWebContents(contents); web_view_->RequestFocus(); @@ -603,6 +675,22 @@ toolbar_->SetVisible(show_toolbar); } +void ProfilePickerView::BackButtonPressed(const ui::Event& event) { + if (web_view_->GetWebContents() != new_profile_contents_.get()) { + return; + } + + if (new_profile_contents_->GetController().CanGoBack()) { + new_profile_contents_->GetController().GoBack(); + return; + } + + // Move from sign-in back to the previous screen of profile creation. + // Do not load any url because the desired screen is still loaded in + // `system_profile_contents_`. + ShowScreen(system_profile_contents_.get(), GURL(), /*show_toolbar=*/false); +} + void ProfilePickerView::OnRefreshTokenUpdatedForAccount( const CoreAccountInfo& account_info) { DCHECK(!account_info.IsEmpty());
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h index 91bb348..a48ce29 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.h +++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -108,11 +108,14 @@ // Builds the views hieararchy. void BuildLayout(); - // Shows a screen with `url` in `contents` and potentially `show_toolbar`. + // Shows a screen with `url` in `contents` and potentially `show_toolbar`. If + // `url` is empty, it only shows `contents` with its currently loaded url. void ShowScreen(content::WebContents* contents, const GURL& url, bool show_toolbar); + void BackButtonPressed(const ui::Event& event); + // Helper functions to deal with the lack of extended account info. void SetExtendedAccountInfoTimeoutForTesting(base::TimeDelta timeout); void OnExtendedAccountInfoTimeout(const CoreAccountInfo& account);
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index be83b691..d9693c2 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1610150355-4a8e87c65afe038c52dde92bd9ad8141fba84ab9.profdata +chrome-linux-master-1610294646-d9496012030808fbbd5c6d71395353a15075c9f2.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 936d42db..3384c90 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1610107094-5d3c24229731decbd402a4499ebb6cac6decdedb.profdata +chrome-win32-master-1610294646-5cd814ecb87ad7a408cdeda7da36a6886e7402c5.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index c151657..089ab8f 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1610161046-8bb47bdff715346cff6fa6c623eb76f6c2e1f1b6.profdata +chrome-win64-master-1610294646-193d19344cbd53e124bebc9434b6d5bafe44fd51.profdata
diff --git a/chrome/common/channel_info.h b/chrome/common/channel_info.h index 5958587..b9e0d89 100644 --- a/chrome/common/channel_info.h +++ b/chrome/common/channel_info.h
@@ -42,6 +42,12 @@ version_info::Channel GetChannel(); #if defined(OS_MAC) +// Because the channel information on the Mac is baked into the Info.plist file, +// and that file may change during an update, this function must be called +// early in startup to cache the channel info so that the correct channel info +// can be returned later. +void CacheChannelInfo(); + // Maps the name of the channel to version_info::Channel, always returning // Channel::UNKNOWN for unbranded builds. For branded builds defaults to // Channel::STABLE, if channel is empty, else matches the name and returns
diff --git a/chrome/common/channel_info_mac.mm b/chrome/common/channel_info_mac.mm index 848ef7e..e9e7931 100644 --- a/chrome/common/channel_info_mac.mm +++ b/chrome/common/channel_info_mac.mm
@@ -7,53 +7,101 @@ #import <Foundation/Foundation.h> #include "base/mac/bundle_locations.h" +#include "base/macros.h" +#include "base/no_destructor.h" #include "base/strings/sys_string_conversions.h" #include "build/branding_buildflags.h" #include "components/version_info/version_info.h" namespace chrome { -std::string GetChannelName() { +namespace { + +std::string ChannelName() { #if BUILDFLAG(GOOGLE_CHROME_BRANDING) - // Use the main Chrome application bundle and not the framework bundle. - // Keystone keys don't live in the framework. - NSBundle* bundle = base::mac::OuterBundle(); - NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"]; + static const base::NoDestructor<std::string> channel([] { + // Use the main Chrome application bundle and not the framework bundle. + // Keystone keys don't live in the framework. + NSBundle* bundle = base::mac::OuterBundle(); + NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"]; - // Only ever return "", "unknown", "beta", "dev", or "canary" in a branded - // build. - // KSProductID is not set (for stable) or "beta", "dev" or "canary" for - // the intel-only build. - // KSProductID is "arm64" (for stable) or "arm64-beta", "arm64-dev" or - // "arm64-canary" for the arm-only build. - // KSProductID is "universal" (for stable) or "universal-beta", - // "universal-dev" or "universal-canary" for the arm+intel universal binary. - if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) { - // This build is not Keystone-enabled, it can't have a channel. - channel = @"unknown"; - } else if (!channel || [channel isEqual:@"arm64"] || - [channel isEqual:@"universal"]) { - // For the intel stable channel, KSChannelID is not set. - channel = @""; - } else { - if ([channel hasPrefix:@"arm64-"]) - channel = [channel substringFromIndex:[@"arm64-" length]]; - else if ([channel hasPrefix:@"universal-"]) - channel = [channel substringFromIndex:[@"universal-" length]]; - if ([channel isEqual:@"beta"] || [channel isEqual:@"dev"] || - [channel isEqual:@"canary"]) { - // do nothing. - } else { + // Only ever return "", "unknown", "beta", "dev", or "canary" in a branded + // build. + // KSProductID is not set (for stable) or "beta", "dev" or "canary" for + // the intel-only build. + // KSProductID is "arm64" (for stable) or "arm64-beta", "arm64-dev" or + // "arm64-canary" for the arm-only build. + // KSProductID is "universal" (for stable) or "universal-beta", + // "universal-dev" or "universal-canary" for the arm+intel universal binary. + if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) { + // This build is not Keystone-enabled, it can't have a channel. channel = @"unknown"; + } else if (!channel || [channel isEqual:@"arm64"] || + [channel isEqual:@"universal"]) { + // For the intel stable channel, KSChannelID is not set. + channel = @""; + } else { + if ([channel hasPrefix:@"arm64-"]) + channel = [channel substringFromIndex:[@"arm64-" length]]; + else if ([channel hasPrefix:@"universal-"]) + channel = [channel substringFromIndex:[@"universal-" length]]; + if ([channel isEqual:@"beta"] || [channel isEqual:@"dev"] || + [channel isEqual:@"canary"]) { + // Do nothing. + } else { + channel = @"unknown"; + } } - } - return base::SysNSStringToUTF8(channel); + return base::SysNSStringToUTF8(channel); + }()); + return *channel; #else return std::string(); #endif } +bool SideBySideCapable() { +#if BUILDFLAG(GOOGLE_CHROME_BRANDING) + static const base::NoDestructor<bool> capable([] { + // Use the main Chrome application bundle and not the framework bundle. + // Keystone keys don't live in the framework. + NSBundle* bundle = base::mac::OuterBundle(); + if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) { + // This build is not Keystone-enabled, and without a channel assume it is + // side-by-side capable. + return true; + } + + if (GetChannelName().empty()) { + // For the stable channel, GetChannelName() returns the empty string. + // Stable Chromes are what side-by-side capable Chromes are running + // side-by-side *to* and by definition are side-by-side capable. + return true; + } + + // If there is a CrProductDirName key, then the user data dir of this + // beta/dev/canary Chrome is separate, and it can run side-by-side to the + // stable Chrome. + return [bundle objectForInfoDictionaryKey:@"CrProductDirName"]; + }()); + return *capable; +#else + return true; +#endif +} + +} // namespace + +void CacheChannelInfo() { + ignore_result(ChannelName()); + ignore_result(SideBySideCapable()); +} + +std::string GetChannelName() { + return ChannelName(); +} + version_info::Channel GetChannelByName(const std::string& channel) { #if BUILDFLAG(GOOGLE_CHROME_BRANDING) if (channel.empty()) @@ -69,34 +117,11 @@ } bool IsSideBySideCapable() { -#if BUILDFLAG(GOOGLE_CHROME_BRANDING) - // Use the main Chrome application bundle and not the framework bundle. - // Keystone keys don't live in the framework. - NSBundle* bundle = base::mac::OuterBundle(); - if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) { - // This build is not Keystone-enabled, and without a channel assume it is - // side-by-side capable. - return true; - } - - if (GetChannelName().empty()) { - // For the stable channel, GetChannelName() returns the empty string. - // Stable Chromes are what side-by-side capable Chromes are running - // side-by-side *to* and by definition are side-by-side capable. - return true; - } - - // If there is a CrProductDirName key, then the user data dir of this - // beta/dev/canary Chrome is separate, and it can run side-by-side to the - // stable Chrome. - return [bundle objectForInfoDictionaryKey:@"CrProductDirName"]; -#else - return true; -#endif + return SideBySideCapable(); } version_info::Channel GetChannel() { - return GetChannelByName(GetChannelName()); + return GetChannelByName(ChannelName()); } } // namespace chrome
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index 396258fb..f696aa7 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -13708.0.0 \ No newline at end of file +13716.0.0 \ No newline at end of file
diff --git a/chromeos/components/scanning/resources/scan_preview.html b/chromeos/components/scanning/resources/scan_preview.html index dbad0f5..23ccf2f 100644 --- a/chromeos/components/scanning/resources/scan_preview.html +++ b/chromeos/components/scanning/resources/scan_preview.html
@@ -58,6 +58,10 @@ width: calc(100% - 2px); } + .scanned-image { + display: block; + } + /* Add top margin to all but the first scanned image. */ .scanned-image:nth-of-type(n+2) { margin-top: 8px;
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index a07ada52..ccd2093 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-89-4367.0-1609757097-benchmark-89.0.4381.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-atom-89-4367.0-1609757097-benchmark-89.0.4383.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index 122eb2b..62663a2 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-89-4367.0-1609764762-benchmark-89.0.4381.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-89-4367.0-1609764762-benchmark-89.0.4383.0-r1-redacted.afdo.xz
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom index 0f87f37a..bc7eaed 100644 --- a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom +++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
@@ -116,6 +116,25 @@ // Unused memory available to the process, in KiB. This will always be // |total_memory_kib| - |resident_memory_kib|. uint32 free_memory_kib; + // The sum of bytes passed to system read calls. This includes terminal + // I/O and is independent of whether the physical disk is accessed. + uint64 bytes_read; + // The sum of bytes passed to system write calls. This includes terminal + // I/O and is independent of whether the physical disk is accessed. + uint64 bytes_written; + // Attempted count of read syscalls. + uint64 read_system_calls; + // Attempted count of write syscalls. + uint64 write_system_calls; + // Attempt to count the number of bytes which this process really did cause + // to be fetched from the storage layer. + uint64 physical_bytes_read; + // Attempt to count the number of bytes which this process caused to be sent + // to the storage layer. + uint64 physical_bytes_written; + // Number of bytes which this process caused to not happen, by truncating + // pagecache. + uint64 cancelled_bytes_written; }; // Battery probe result. Can either be populated with the BatteryInfo or an
diff --git a/components/browser_ui/styles/android/java/res/values/styles.xml b/components/browser_ui/styles/android/java/res/values/styles.xml index b73e81a..92dd5f1 100644 --- a/components/browser_ui/styles/android/java/res/values/styles.xml +++ b/components/browser_ui/styles/android/java/res/values/styles.xml
@@ -9,7 +9,7 @@ <!-- Text colors --> <item name="android:textColorLink">@color/default_text_color_link</item> <item name="android:textColorHighlight">@color/text_highlight_color</item> - <item name="android:textColorHint">@color/default_text_color_secondary</item> + <item name="android:textColorHint">@color/default_text_color_hint_list</item> <!-- Color of checkboxes, switches, buttons, etc. --> <item name="colorAccent">@color/default_control_color_active</item>
diff --git a/components/full_restore/full_restore_read_handler.cc b/components/full_restore/full_restore_read_handler.cc index 07b49fd70..267b3b7 100644 --- a/components/full_restore/full_restore_read_handler.cc +++ b/components/full_restore/full_restore_read_handler.cc
@@ -37,6 +37,15 @@ std::move(callback))); } +void FullRestoreReadHandler::RemoveApp(const base::FilePath& profile_path, + const std::string& app_id) { + auto it = profile_path_to_restore_data_.find(profile_path); + if (it == profile_path_to_restore_data_.end()) + return; + + it->second->RemoveApp(app_id); +} + void FullRestoreReadHandler::OnGetRestoreData( const base::FilePath& profile_path, Callback callback,
diff --git a/components/full_restore/full_restore_read_handler.h b/components/full_restore/full_restore_read_handler.h index 6104189b..f531d39 100644 --- a/components/full_restore/full_restore_read_handler.h +++ b/components/full_restore/full_restore_read_handler.h
@@ -43,6 +43,10 @@ // calls |callback| when the reading operation is done. void ReadFromFile(const base::FilePath& profile_path, Callback callback); + // Removes app launching and app windows for an app with the given |app_id| + // from |profile_path_to_restore_data_| for |profile_path| . + void RemoveApp(const base::FilePath& profile_path, const std::string& app_id); + private: // Invoked when reading the restore data from |profile_path| is finished, and // calls |callback| to notify that the reading operation is done.
diff --git a/components/full_restore/full_restore_save_handler.cc b/components/full_restore/full_restore_save_handler.cc index f6b2ebcc..0c45667 100644 --- a/components/full_restore/full_restore_save_handler.cc +++ b/components/full_restore/full_restore_save_handler.cc
@@ -142,6 +142,19 @@ weak_factory_.GetWeakPtr(), profile_path)); } +void FullRestoreSaveHandler::RemoveApp(const base::FilePath& profile_path, + const std::string& app_id) { + auto it = profile_path_to_restore_data_.find(profile_path); + if (it == profile_path_to_restore_data_.end()) + return; + + it->second.RemoveApp(app_id); + + pending_save_profile_paths_.insert(profile_path); + + MaybeStartSaveTimer(); +} + void FullRestoreSaveHandler::MaybeStartSaveTimer() { if (!save_timer_.IsRunning() && save_running_.empty()) { save_timer_.Start(FROM_HERE, kSaveDelay,
diff --git a/components/full_restore/full_restore_save_handler.h b/components/full_restore/full_restore_save_handler.h index 4e6cc9ff..d1a81bd 100644 --- a/components/full_restore/full_restore_save_handler.h +++ b/components/full_restore/full_restore_save_handler.h
@@ -65,6 +65,10 @@ // data. void Flush(const base::FilePath& profile_path); + // Removes app launching and app windows for an app with the given |app_id| + // from |file_path_to_restore_data_| for |profile_path| . + void RemoveApp(const base::FilePath& profile_path, const std::string& app_id); + base::OneShotTimer* GetTimerForTesting() { return &save_timer_; } private:
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm index f9455f4..018bb9c 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
@@ -298,7 +298,7 @@ changeDiscoverFeedHeaderVisibility:[self.contentSuggestionsVisible value]]; self.suggestionsViewController.contentSuggestionsEnabled = - prefs->FindPreference(prefs::kArticlesForYouEnabled); + contentSuggestionsEnabled; self.suggestionsViewController.handler = self; self.contentSuggestionsMediator.consumer = self.suggestionsViewController;
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 603fb7b..fd5e604 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 @@ -96000536c395a463386e923a7515471c664a5394 \ No newline at end of file +19980861b244b1c9f0c3f389bb8d8a1ef5272dca \ 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 fb3c96e..936790f 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 @@ -27cc14be2139609c7c7da56c525c3bae5cf50d17 \ No newline at end of file +a9906b12ff830faee298d693baea0493d2d8f8c8 \ 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 51f978a..4954a6e 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 @@ -8aa76742ce99c2f6bf9abdf6fd8e1ae5d7c8b833 \ No newline at end of file +01a08f8e8f7482c18d3f9b00a3a5ecdc34d03fd0 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 index cb695ab..fec5239 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -0d6c6bcfbf96031da1e97b6ca45ec1b950c947d8 \ No newline at end of file +01820e63c75a24d32ad4e0f415d3c2ab8e097fb6 \ 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 427084cc..ff692916 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 @@ -ada10ff16fa2b99659bc9a41f13f8dfe50cc6770 \ No newline at end of file +63b933988525e9ed3d348e1a947681aa491b3820 \ 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 56d73bd4..51ca470 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 @@ -c5e26248c1626432705c1dacf39c8ac405462c16 \ No newline at end of file +911143fdb76c9713567da7140dd9a34572052047 \ 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 61c4b9d8..d67b437 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 @@ -721a9c861f3bd1764e506cadc00abad6c6afbbe3 \ No newline at end of file +8e900c2655f9577fdc8a03d798dac807166d789a \ 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 fed1a58..d19efd0 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 @@ -d56e002052ef6e2460cecd84270eee100de66c32 \ No newline at end of file +c4623b87c0e7c17033cfacfb53fd9cf20436d43e \ 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 290ed473..ccf9941 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 @@ -1d2d8d8eb2500924ef44d5567e62b8e999650149 \ No newline at end of file +d124cc513ed5a625cd8f77851e0f8623831cbe21 \ 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 6a907b2..eb1c154 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 @@ -28a50656e0a255bd518dda7ae93dfc68fcac3054 \ No newline at end of file +9f56cf69aaecaac6af268031fdf1909bd79fa6df \ No newline at end of file
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc index 5e1d35d..2f97c51cb 100644 --- a/media/audio/audio_manager_base.cc +++ b/media/audio/audio_manager_base.cc
@@ -343,7 +343,7 @@ std::string output_device_id = AudioDeviceDescription::IsDefaultDevice(device_id) ? -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) // On ChromeOS, it is expected that, if the default device is given, // no specific device ID should be used since the actual output device // should change dynamically if the system default device changes.
diff --git a/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc b/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc index 8037935..28f3ce2 100644 --- a/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc +++ b/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc
@@ -7,9 +7,9 @@ namespace network { OperationTimingRequestHelperWrapper::OperationTimingRequestHelperWrapper( - mojom::TrustTokenOperationType type, + std::unique_ptr<TrustTokenOperationMetricsRecorder> metrics_recorder, std::unique_ptr<TrustTokenRequestHelper> helper) - : type_(type), helper_(std::move(helper)) {} + : recorder_(std::move(metrics_recorder)), helper_(std::move(helper)) {} OperationTimingRequestHelperWrapper::~OperationTimingRequestHelperWrapper() = default; @@ -17,7 +17,7 @@ void OperationTimingRequestHelperWrapper::Begin( net::URLRequest* request, base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done) { - recorder_.BeginBegin(type_); + recorder_->BeginBegin(); helper_->Begin( request, base::BindOnce(&OperationTimingRequestHelperWrapper::FinishBegin, weak_factory_.GetWeakPtr(), std::move(done))); @@ -26,7 +26,7 @@ void OperationTimingRequestHelperWrapper::Finalize( mojom::URLResponseHead* response, base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done) { - recorder_.BeginFinalize(); + recorder_->BeginFinalize(); helper_->Finalize( response, base::BindOnce(&OperationTimingRequestHelperWrapper::FinishFinalize, @@ -36,14 +36,14 @@ void OperationTimingRequestHelperWrapper::FinishBegin( base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done, mojom::TrustTokenOperationStatus status) { - recorder_.FinishBegin(status); + recorder_->FinishBegin(status); std::move(done).Run(status); } void OperationTimingRequestHelperWrapper::FinishFinalize( base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done, mojom::TrustTokenOperationStatus status) { - recorder_.FinishFinalize(status); + recorder_->FinishFinalize(status); std::move(done).Run(status); }
diff --git a/services/network/trust_tokens/operation_timing_request_helper_wrapper.h b/services/network/trust_tokens/operation_timing_request_helper_wrapper.h index bb8e846..b9804f7 100644 --- a/services/network/trust_tokens/operation_timing_request_helper_wrapper.h +++ b/services/network/trust_tokens/operation_timing_request_helper_wrapper.h
@@ -10,6 +10,7 @@ #include "base/memory/weak_ptr.h" #include "services/network/trust_tokens/trust_token_operation_metrics_recorder.h" #include "services/network/trust_tokens/trust_token_request_helper.h" +#include "services/network/trust_tokens/trust_token_request_issuance_helper.h" namespace network { @@ -19,7 +20,7 @@ class OperationTimingRequestHelperWrapper : public TrustTokenRequestHelper { public: explicit OperationTimingRequestHelperWrapper( - mojom::TrustTokenOperationType type, + std::unique_ptr<TrustTokenOperationMetricsRecorder> metrics_recorder, std::unique_ptr<TrustTokenRequestHelper> helper); ~OperationTimingRequestHelperWrapper() override; @@ -46,8 +47,7 @@ base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done, mojom::TrustTokenOperationStatus status); - mojom::TrustTokenOperationType type_; - TrustTokenOperationMetricsRecorder recorder_; + std::unique_ptr<TrustTokenOperationMetricsRecorder> recorder_; std::unique_ptr<TrustTokenRequestHelper> helper_; base::WeakPtrFactory<OperationTimingRequestHelperWrapper> weak_factory_{this};
diff --git a/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc b/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc index 23659efcd..3ec3a9ea 100644 --- a/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc +++ b/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc
@@ -31,6 +31,8 @@ switch (status) { case mojom::TrustTokenOperationStatus::kOk: case mojom::TrustTokenOperationStatus::kAlreadyExists: + case mojom::TrustTokenOperationStatus:: + kOperationSuccessfullyFulfilledLocally: return "Success"; default: return "Failure"; @@ -54,9 +56,13 @@ } // namespace -void TrustTokenOperationMetricsRecorder::BeginBegin( - mojom::TrustTokenOperationType type) { - type_ = type; +TrustTokenOperationMetricsRecorder::TrustTokenOperationMetricsRecorder( + mojom::TrustTokenOperationType type) + : type_(type) {} +TrustTokenOperationMetricsRecorder::~TrustTokenOperationMetricsRecorder() = + default; + +void TrustTokenOperationMetricsRecorder::BeginBegin() { begin_start_ = base::TimeTicks::Now(); }
diff --git a/services/network/trust_tokens/trust_token_operation_metrics_recorder.h b/services/network/trust_tokens/trust_token_operation_metrics_recorder.h index 20ab192..ec1b2ce 100644 --- a/services/network/trust_tokens/trust_token_operation_metrics_recorder.h +++ b/services/network/trust_tokens/trust_token_operation_metrics_recorder.h
@@ -7,6 +7,7 @@ #include "base/time/time.h" #include "services/network/public/mojom/trust_tokens.mojom.h" +#include "services/network/trust_tokens/trust_token_request_issuance_helper.h" namespace network { @@ -29,15 +30,16 @@ // operation. class TrustTokenOperationMetricsRecorder final { public: - TrustTokenOperationMetricsRecorder() = default; - ~TrustTokenOperationMetricsRecorder() = default; + explicit TrustTokenOperationMetricsRecorder( + mojom::TrustTokenOperationType type); + ~TrustTokenOperationMetricsRecorder(); TrustTokenOperationMetricsRecorder( const TrustTokenOperationMetricsRecorder&) = delete; TrustTokenOperationMetricsRecorder& operator=( const TrustTokenOperationMetricsRecorder&) = delete; - void BeginBegin(mojom::TrustTokenOperationType type); + void BeginBegin(); void FinishBegin(mojom::TrustTokenOperationStatus status); void BeginFinalize();
diff --git a/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc b/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc index 3316660..adbdd1e 100644 --- a/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc +++ b/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc
@@ -15,10 +15,11 @@ TEST(TrustTokenOperationMetricsRecorder, Success) { base::test::TaskEnvironment env( base::test::TaskEnvironment::TimeSource::MOCK_TIME); - TrustTokenOperationMetricsRecorder recorder; + TrustTokenOperationMetricsRecorder recorder( + mojom::TrustTokenOperationType::kIssuance); base::HistogramTester histograms; - recorder.BeginBegin(mojom::TrustTokenOperationType::kIssuance); + recorder.BeginBegin(); env.FastForwardBy(base::TimeDelta::FromSeconds(1)); recorder.FinishBegin(mojom::TrustTokenOperationStatus::kOk); @@ -59,10 +60,11 @@ TEST(TrustTokenOperationMetricsRecorder, BeginFailure) { base::test::TaskEnvironment env( base::test::TaskEnvironment::TimeSource::MOCK_TIME); - TrustTokenOperationMetricsRecorder recorder; + TrustTokenOperationMetricsRecorder recorder( + mojom::TrustTokenOperationType::kRedemption); base::HistogramTester histograms; - recorder.BeginBegin(mojom::TrustTokenOperationType::kRedemption); + recorder.BeginBegin(); env.FastForwardBy(base::TimeDelta::FromSeconds(1)); recorder.FinishBegin(mojom::TrustTokenOperationStatus::kUnknownError); @@ -77,10 +79,11 @@ TEST(TrustTokenOperationMetricsRecorder, FinalizeFailure) { base::test::TaskEnvironment env( base::test::TaskEnvironment::TimeSource::MOCK_TIME); - TrustTokenOperationMetricsRecorder recorder; + TrustTokenOperationMetricsRecorder recorder( + mojom::TrustTokenOperationType::kSigning); base::HistogramTester histograms; - recorder.BeginBegin(mojom::TrustTokenOperationType::kSigning); + recorder.BeginBegin(); env.FastForwardBy(base::TimeDelta::FromSeconds(1)); recorder.FinishBegin(mojom::TrustTokenOperationStatus::kOk);
diff --git a/services/network/trust_tokens/trust_token_request_helper_factory.cc b/services/network/trust_tokens/trust_token_request_helper_factory.cc index c5b9d70..8c76ded 100644 --- a/services/network/trust_tokens/trust_token_request_helper_factory.cc +++ b/services/network/trust_tokens/trust_token_request_helper_factory.cc
@@ -25,8 +25,10 @@ #include "services/network/trust_tokens/local_trust_token_operation_delegate.h" #include "services/network/trust_tokens/local_trust_token_operation_delegate_impl.h" #include "services/network/trust_tokens/operating_system_matching.h" +#include "services/network/trust_tokens/operation_timing_request_helper_wrapper.h" #include "services/network/trust_tokens/suitable_trust_token_origin.h" #include "services/network/trust_tokens/trust_token_key_commitment_controller.h" +#include "services/network/trust_tokens/trust_token_operation_metrics_recorder.h" #include "services/network/trust_tokens/trust_token_parameterization.h" #include "services/network/trust_tokens/trust_token_request_canonicalizer.h" #include "services/network/trust_tokens/trust_token_request_redemption_helper.h" @@ -140,31 +142,36 @@ TrustTokenStore* store) { DCHECK(params); + auto metrics_recorder = + std::make_unique<TrustTokenOperationMetricsRecorder>(params->type); + switch (params->type) { case mojom::TrustTokenOperationType::kIssuance: { LogOutcome(net_log, params->type, Outcome::kSuccessfullyCreatedAnIssuanceHelper); - std::move(done).Run(std::unique_ptr<TrustTokenRequestHelper>( - new TrustTokenRequestIssuanceHelper( - std::move(top_frame_origin), store, key_commitment_getter_, - std::make_unique<BoringsslTrustTokenIssuanceCryptographer>(), - std::make_unique<LocalTrustTokenOperationDelegateImpl>( - context_client_provider_), - base::BindRepeating(&IsCurrentOperatingSystem), - std::move(net_log)))); + auto helper = std::make_unique<TrustTokenRequestIssuanceHelper>( + std::move(top_frame_origin), store, key_commitment_getter_, + std::make_unique<BoringsslTrustTokenIssuanceCryptographer>(), + std::make_unique<LocalTrustTokenOperationDelegateImpl>( + context_client_provider_), + base::BindRepeating(&IsCurrentOperatingSystem), std::move(net_log)); + std::move(done).Run(TrustTokenStatusOrRequestHelper( + std::make_unique<OperationTimingRequestHelperWrapper>( + std::move(metrics_recorder), std::move(helper)))); return; } case mojom::TrustTokenOperationType::kRedemption: { LogOutcome(net_log, params->type, Outcome::kSuccessfullyCreatedARedemptionHelper); - std::move(done).Run(std::unique_ptr<TrustTokenRequestHelper>( - new TrustTokenRequestRedemptionHelper( - std::move(top_frame_origin), params->refresh_policy, store, - key_commitment_getter_, - std::make_unique<Ed25519KeyPairGenerator>(), - std::make_unique<BoringsslTrustTokenRedemptionCryptographer>(), - std::move(net_log)))); + auto helper = std::make_unique<TrustTokenRequestRedemptionHelper>( + std::move(top_frame_origin), params->refresh_policy, store, + key_commitment_getter_, std::make_unique<Ed25519KeyPairGenerator>(), + std::make_unique<BoringsslTrustTokenRedemptionCryptographer>(), + std::move(net_log)); + std::move(done).Run(TrustTokenStatusOrRequestHelper( + std::make_unique<OperationTimingRequestHelperWrapper>( + std::move(metrics_recorder), std::move(helper)))); return; } @@ -199,12 +206,14 @@ LogOutcome(net_log, params->type, Outcome::kSuccessfullyCreatedASigningHelper); - std::move(done).Run(std::unique_ptr<TrustTokenRequestHelper>( - new TrustTokenRequestSigningHelper( - store, std::move(signing_params), - std::make_unique<Ed25519TrustTokenRequestSigner>(), - std::make_unique<TrustTokenRequestCanonicalizer>(), - std::move(net_log)))); + auto helper = std::make_unique<TrustTokenRequestSigningHelper>( + store, std::move(signing_params), + std::make_unique<Ed25519TrustTokenRequestSigner>(), + std::make_unique<TrustTokenRequestCanonicalizer>(), + std::move(net_log)); + std::move(done).Run(TrustTokenStatusOrRequestHelper( + std::make_unique<OperationTimingRequestHelperWrapper>( + std::move(metrics_recorder), std::move(helper)))); return; } }
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc index 2a7e0e1..f33e95c 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc
@@ -70,7 +70,6 @@ #include "services/network/resource_scheduler/resource_scheduler_client.h" #include "services/network/sec_header_helpers.h" #include "services/network/throttling/scoped_throttling_token.h" -#include "services/network/trust_tokens/operation_timing_request_helper_wrapper.h" #include "services/network/trust_tokens/trust_token_request_helper.h" #include "url/origin.h" @@ -879,8 +878,7 @@ return; } - trust_token_helper_ = std::make_unique<OperationTimingRequestHelperWrapper>( - type, status_or_helper.TakeOrCrash()); + trust_token_helper_ = status_or_helper.TakeOrCrash(); trust_token_helper_->Begin( url_request_.get(), base::BindOnce(&URLLoader::OnDoneBeginningTrustTokenOperation,
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 18b0327..f98cac5 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -240,11 +240,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -254,7 +254,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -317,11 +317,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -331,7 +331,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -394,11 +394,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -408,7 +408,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -471,11 +471,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -485,7 +485,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -769,11 +769,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -783,7 +783,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -846,11 +846,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -860,7 +860,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -923,11 +923,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -937,7 +937,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1000,11 +1000,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -1014,7 +1014,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1298,11 +1298,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -1312,7 +1312,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1375,11 +1375,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -1389,7 +1389,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1452,11 +1452,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -1466,7 +1466,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1529,11 +1529,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -1543,7 +1543,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1827,11 +1827,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -1841,7 +1841,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1904,11 +1904,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -1918,7 +1918,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1981,11 +1981,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146", "resultdb": { "enable": true }, @@ -1995,7 +1995,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.145" + "revision": "version:87.0.4280.146" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -2058,11 +2058,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83", "resultdb": { "enable": true }, @@ -2072,7 +2072,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M88", - "revision": "version:88.0.4324.82" + "revision": "version:88.0.4324.83" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index f782eb49..ba85f789 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -319,13 +319,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=88', ], - 'identifier': 'Implementation Tests For 88.0.4324.82', + 'identifier': 'Implementation Tests For 88.0.4324.83', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M88', - 'revision': 'version:88.0.4324.82', + 'revision': 'version:88.0.4324.83', } ], }, @@ -342,13 +342,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=87', ], - 'identifier': 'Implementation Tests For 87.0.4280.145', + 'identifier': 'Implementation Tests For 87.0.4280.146', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M87', - 'revision': 'version:87.0.4280.145', + 'revision': 'version:87.0.4280.146', } ], }, @@ -388,13 +388,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--client-version=88', ], - 'identifier': 'Client Tests For 88.0.4324.82', + 'identifier': 'Client Tests For 88.0.4324.83', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M88', - 'revision': 'version:88.0.4324.82', + 'revision': 'version:88.0.4324.83', } ], }, @@ -411,13 +411,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--client-version=87', ], - 'identifier': 'Client Tests For 87.0.4280.145', + 'identifier': 'Client Tests For 87.0.4280.146', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M87', - 'revision': 'version:87.0.4280.145', + 'revision': 'version:87.0.4280.146', } ], },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 40cb89ea1..deda8d35 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -7950,7 +7950,8 @@ "chromeos", "linux", "ios", - "android" + "android", + "android_webview" ], "experiments": [ {
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index fb0c736f..fc1dcaa2 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -10254,6 +10254,13 @@ null, {} ] + ], + "usbDevice_transferIn-manual.https.html": [ + "bd3df7d54ea63b45920d31d5719782ca1f066911", + [ + null, + {} + ] ] }, "xhr": { @@ -52904,6 +52911,19 @@ {} ] ], + "out-of-flow-in-multicolumn-014.html": [ + "b6cede0400fc8c9fdc4ef136a7d3326056bda482", + [ + null, + [ + [ + "/css/css-break/out-of-flow-in-multicolumn-014-ref.html", + "==" + ] + ], + {} + ] + ], "overflowed-block-with-no-room-after-000.html": [ "084e16fb38de072fb83f92ba01302a2e404cdd97", [ @@ -184067,6 +184087,10 @@ "bc6669e466ba0e4e29bf56b889f59e513f9270c4", [] ], + "out-of-flow-in-multicolumn-014-ref.html": [ + "6388a1864443571ea24e6174459c5205440ab030", + [] + ], "parsing": { "box-decoration-break-computed-expected.txt": [ "2bf7d5cfd390f7f989cffa3197643b87699fdefe", @@ -236239,7 +236263,7 @@ [] ], "html.idl": [ - "dfe4e1e586b5a2b5c5ba070f3c73bc55061e999d", + "5b30344ab7db4d3374c07a02a7b9453d18cccdf9", [] ], "idle-detection.tentative.idl": [
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/html.idl b/third_party/blink/web_tests/external/wpt/interfaces/html.idl index dfe4e1e..5b30344a 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -1397,11 +1397,11 @@ interface mixin CanvasImageData { // pixel manipulation - ImageData createImageData(long sw, long sh); + ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh); ImageData createImageData(ImageData imagedata); - ImageData getImageData(long sx, long sy, long sw, long sh); - undefined putImageData(ImageData imagedata, long dx, long dy); - undefined putImageData(ImageData imagedata, long dx, long dy, long dirtyX, long dirtyY, long dirtyWidth, long dirtyHeight); + ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh); + undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy); + undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight); }; enum CanvasLineCap { "butt", "round", "square" };
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index ec0cd5f..3e9044e3 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,8 +1,8 @@ { "trace_processor_shell": { "win": { - "hash": "0104dfe57b4d98879c4238741f712a983facfbd5", - "remote_path": "perfetto_binaries/trace_processor_shell/win/affdce7627b1030441a19608a1bcb321190786da/trace_processor_shell.exe" + "hash": "1b175a93430138b7855ceeb6eb8516c7e66c3684", + "remote_path": "perfetto_binaries/trace_processor_shell/win/35f78f4a4562f61cde3b096492628e1d47acb04e/trace_processor_shell.exe" }, "mac": { "hash": "ad7587bcfdd72883c1e1b1596ddec4f81bbf7736",
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn index fa6f3c8..65c930f4 100644 --- a/ui/android/BUILD.gn +++ b/ui/android/BUILD.gn
@@ -147,6 +147,7 @@ "java/res/color/chip_stroke_color.xml", "java/res/color/chip_text_color.xml", "java/res/color/chip_text_color_secondary.xml", + "java/res/color/default_text_color_hint_list.xml", "java/res/color/default_text_color_inverse_list.xml", "java/res/color/default_text_color_light_list.xml", "java/res/color/default_text_color_list.xml",
diff --git a/ui/android/java/res/color/default_text_color_hint_list.xml b/ui/android/java/res/color/default_text_color_hint_list.xml new file mode 100644 index 0000000..d38c58d --- /dev/null +++ b/ui/android/java/res/color/default_text_color_hint_list.xml
@@ -0,0 +1,9 @@ +<?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. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:color="@color/default_text_color_disabled" android:state_enabled="false"/> + <item android:color="@color/default_text_color_secondary" /> +</selector> \ No newline at end of file
diff --git a/ui/base/ime/win/tsf_text_store.cc b/ui/base/ime/win/tsf_text_store.cc index 31309dd..1f810083 100644 --- a/ui/base/ime/win/tsf_text_store.cc +++ b/ui/base/ime/win/tsf_text_store.cc
@@ -972,8 +972,15 @@ } composition_start_ = selection_.start(); - if (has_composition_range_) - ResetCompositionState(); + if (has_composition_range_) { + has_composition_range_ = false; + composition_range_.set_start(0); + composition_range_.set_end(0); + previous_composition_string_.clear(); + previous_composition_start_ = 0; + previous_composition_selection_range_ = gfx::Range::InvalidRange(); + previous_text_spans_.clear(); + } return S_OK; }